├── .gitignore ├── LICENSE ├── README.md ├── examples ├── LIN_master_background │ └── LIN_master_background.ino ├── LIN_master_blocking │ └── LIN_master_blocking.ino ├── LIN_master_callback │ └── LIN_master_callback.ino └── LIN_master_dual │ └── LIN_master_dual.ino ├── extras ├── Doxyfile ├── Library_Manager.md ├── Library_Manager.png ├── Multiple_LIN.md ├── Operation_Modes.md ├── README.md ├── background_operation.png ├── blocking_operation.png ├── dual_LIN.png ├── html │ ├── Library_Manager.png │ ├── _l_i_n__background_8ino.html │ ├── _l_i_n__background_8ino.js │ ├── _l_i_n__background_8ino_source.html │ ├── _l_i_n__blocking_8ino.html │ ├── _l_i_n__blocking_8ino.js │ ├── _l_i_n__blocking_8ino_source.html │ ├── _l_i_n__callback_8ino.html │ ├── _l_i_n__callback_8ino.js │ ├── _l_i_n__callback_8ino_source.html │ ├── _l_i_n__master0_8cpp.html │ ├── _l_i_n__master0_8cpp.js │ ├── _l_i_n__master0_8cpp_source.html │ ├── _l_i_n__master0_8h.html │ ├── _l_i_n__master0_8h.js │ ├── _l_i_n__master0_8h_source.html │ ├── _l_i_n__master1_8cpp.html │ ├── _l_i_n__master1_8cpp.js │ ├── _l_i_n__master1_8cpp_source.html │ ├── _l_i_n__master1_8h.html │ ├── _l_i_n__master1_8h.js │ ├── _l_i_n__master1_8h_source.html │ ├── _l_i_n__master2_8cpp.html │ ├── _l_i_n__master2_8cpp.js │ ├── _l_i_n__master2_8cpp_source.html │ ├── _l_i_n__master2_8h.html │ ├── _l_i_n__master2_8h.js │ ├── _l_i_n__master2_8h_source.html │ ├── _l_i_n__master3_8cpp.html │ ├── _l_i_n__master3_8cpp.js │ ├── _l_i_n__master3_8cpp_source.html │ ├── _l_i_n__master3_8h.html │ ├── _l_i_n__master3_8h.js │ ├── _l_i_n__master3_8h_source.html │ ├── _l_i_n__master_8cpp.html │ ├── _l_i_n__master_8cpp_source.html │ ├── _l_i_n__master_8h.html │ ├── _l_i_n__master_8h.js │ ├── _l_i_n__master_8h_source.html │ ├── _l_i_n_background_8ino-example.html │ ├── _l_i_n_blocking_8ino-example.html │ ├── _l_i_n_callback_8ino-example.html │ ├── _library___manager_8md_source.html │ ├── _multiple___l_i_n_8md_source.html │ ├── _operation___modes_8md_source.html │ ├── _r_e_a_d_m_e_8md_source.html │ ├── annotated.html │ ├── annotated_dup.js │ ├── background_operation.png │ ├── bc_s.png │ ├── bdwn.png │ ├── blocking_operation.png │ ├── class_l_i_n___master.html │ ├── class_l_i_n___master.js │ ├── class_l_i_n___master.png │ ├── class_l_i_n___master__0.html │ ├── class_l_i_n___master__0.js │ ├── class_l_i_n___master__0.png │ ├── class_l_i_n___master__1.html │ ├── class_l_i_n___master__1.js │ ├── class_l_i_n___master__1.png │ ├── class_l_i_n___master__2.html │ ├── class_l_i_n___master__2.js │ ├── class_l_i_n___master__2.png │ ├── class_l_i_n___master__3.html │ ├── class_l_i_n___master__3.js │ ├── class_l_i_n___master__3.png │ ├── classes.html │ ├── closed.png │ ├── dir_68267d1309a1af8e8297ef4c3efbcdba.html │ ├── dir_a7b87552a5e39c37a5e9fd9a2b0b7bf9.html │ ├── dir_ace7945da06dee3b64b589cdc6cd0f21.html │ ├── dir_d28a4824dc47e487b107a5db32ef43c4.html │ ├── dir_d6971b0f5112b49742efd355f2158b4f.html │ ├── dir_f046fe7c893808c2b56ff99d8390475d.html │ ├── doc.png │ ├── doxygen.css │ ├── doxygen.png │ ├── dual_LIN.png │ ├── dual___l_i_n_8ino.html │ ├── dual___l_i_n_8ino.js │ ├── dual___l_i_n_8ino_source.html │ ├── dual__l_i_n_8ino-example.html │ ├── dynsections.js │ ├── examples.html │ ├── examples.js │ ├── files.html │ ├── files.js │ ├── folderclosed.png │ ├── folderopen.png │ ├── functions.html │ ├── functions_func.html │ ├── functions_vars.html │ ├── globals.html │ ├── globals_defs.html │ ├── globals_enum.html │ ├── globals_eval.html │ ├── globals_func.html │ ├── globals_type.html │ ├── globals_vars.html │ ├── hierarchy.html │ ├── hierarchy.js │ ├── index.html │ ├── jquery.js │ ├── logo_LIN.png │ ├── md__library__manager.html │ ├── md__multiple__l_i_n.html │ ├── md__operation__modes.html │ ├── menu.js │ ├── menudata.js │ ├── nav_f.png │ ├── nav_g.png │ ├── nav_h.png │ ├── navtree.css │ ├── navtree.js │ ├── navtreedata.js │ ├── navtreeindex0.js │ ├── open.png │ ├── pages.html │ ├── resize.js │ ├── search │ │ ├── all_0.html │ │ ├── all_0.js │ │ ├── all_1.html │ │ ├── all_1.js │ │ ├── all_2.html │ │ ├── all_2.js │ │ ├── all_3.html │ │ ├── all_3.js │ │ ├── all_4.html │ │ ├── all_4.js │ │ ├── all_5.html │ │ ├── all_5.js │ │ ├── all_6.html │ │ ├── all_6.js │ │ ├── all_7.html │ │ ├── all_7.js │ │ ├── all_8.html │ │ ├── all_8.js │ │ ├── all_9.html │ │ ├── all_9.js │ │ ├── all_a.html │ │ ├── all_a.js │ │ ├── all_b.html │ │ ├── all_b.js │ │ ├── all_c.html │ │ ├── all_c.js │ │ ├── all_d.html │ │ ├── all_d.js │ │ ├── classes_0.html │ │ ├── classes_0.js │ │ ├── close.png │ │ ├── defines_0.html │ │ ├── defines_0.js │ │ ├── enums_0.html │ │ ├── enums_0.js │ │ ├── enumvalues_0.html │ │ ├── enumvalues_0.js │ │ ├── files_0.html │ │ ├── files_0.js │ │ ├── files_1.html │ │ ├── files_1.js │ │ ├── functions_0.html │ │ ├── functions_0.js │ │ ├── functions_1.html │ │ ├── functions_1.js │ │ ├── functions_2.html │ │ ├── functions_2.js │ │ ├── functions_3.html │ │ ├── functions_3.js │ │ ├── functions_4.html │ │ ├── functions_4.js │ │ ├── functions_5.html │ │ ├── functions_5.js │ │ ├── functions_6.html │ │ ├── functions_6.js │ │ ├── functions_7.html │ │ ├── functions_7.js │ │ ├── functions_8.html │ │ ├── functions_8.js │ │ ├── mag_sel.png │ │ ├── nomatches.html │ │ ├── pages_0.html │ │ ├── pages_0.js │ │ ├── pages_1.html │ │ ├── pages_1.js │ │ ├── pages_2.html │ │ ├── pages_2.js │ │ ├── search.css │ │ ├── search.js │ │ ├── search_l.png │ │ ├── search_m.png │ │ ├── search_r.png │ │ ├── searchdata.js │ │ ├── typedefs_0.html │ │ ├── typedefs_0.js │ │ ├── variables_0.html │ │ ├── variables_0.js │ │ ├── variables_1.html │ │ ├── variables_1.js │ │ ├── variables_2.html │ │ ├── variables_2.js │ │ ├── variables_3.html │ │ ├── variables_3.js │ │ ├── variables_4.html │ │ ├── variables_4.js │ │ ├── variables_5.html │ │ ├── variables_5.js │ │ ├── variables_6.html │ │ ├── variables_6.js │ │ ├── variables_7.html │ │ ├── variables_7.js │ │ ├── variables_8.html │ │ ├── variables_8.js │ │ ├── variables_9.html │ │ └── variables_9.js │ ├── splitbar.png │ ├── sync_off.png │ ├── sync_on.png │ ├── tab_a.png │ ├── tab_b.png │ ├── tab_h.png │ ├── tab_s.png │ └── tabs.css ├── index.html └── logo_LIN.png ├── keywords.txt ├── library.properties └── src ├── LIN_master.cpp ├── LIN_master.h ├── LIN_master0.cpp ├── LIN_master0.h ├── LIN_master1.cpp ├── LIN_master1.h ├── LIN_master2.cpp ├── LIN_master2.h ├── LIN_master3.cpp └── LIN_master3.h /.gitignore: -------------------------------------------------------------------------------- 1 | # example how to ignore files 2 | *.apk 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Georg Icking-Konert 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | LIN Master Node Emulation 2 | ========================= 3 | 4 | 5 | ## This library is no longer actively maintained. It is replaced by [LIN_master_portable_Arduino](https://github.com/gicking/LIN_master_portable_Arduino), which adds more boards and support for [SoftwareSerial](https://docs.arduino.cc/learn/built-in-libraries/software-serial/). 6 | 7 | 8 | 9 | This library implements a Local Interconnect Master node emulation. For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network. 10 | 11 | Supported functionality: 12 | - [blocking and non-blocking operation](../../wiki/Operation-Modes) 13 | - [multiple, simultaneous LIN nodes](../../wiki/Multiple-LIN) with independent baudrates and protocol 14 | - optional callback functions for slave response frames 15 | 16 | For AVR and SAM architectures this library depends on the *Task Scheduler* library for background operation, which is available via the [Arduino IDE library manager](../../wiki/Library-Manager) or directly from https://github.com/kcl93/Tasks. ESP32 and ESP8266 use the built-in *Ticker* library. 17 | 18 | Supported Boards (with additional LIN hardware): 19 | - all boards using the Atmel ATMega328 controller, e.g. Arduino Uno and Nano 20 | - all boards using the Atmel ATMega2560 controller, e.g. Arduino Mega 21 | - all boards using the Atmel SAM3X8E controller, e.g. Arduino Due 22 | - ESP32 and ESP8266 boards 23 | 24 | Notes: 25 | - No device specific tricks are used, so all boards supported by the *Task Scheduler* (AVR, SAM) or *Ticker* (ESP32, ESP8266) libraries should work 26 | - The sender state machine relies on reading back its 1-wire echo. If no LIN or K-Line transceiver is used, connect Rx&Tx (only 1 device!) 27 | 28 | Have fun!, Georg 29 | -------------------------------------------------------------------------------- /examples/LIN_master_blocking/LIN_master_blocking.ino: -------------------------------------------------------------------------------- 1 | /** 2 | \file LIN_blocking.ino 3 | \example LIN_blocking.ino 4 | \brief Simple LIN master node emulation with blocking operation 5 | \details Simple emulation of a LIN master node via Serial1 (+ LIN transceiver) for DAI MRA2 FED1.0 with blocking operation. Status is printed periodically. 6 | \author Georg Icking-Konert 7 | 8 | \note 9 | The sender state machine relies on reading back its 1-wire echo. 10 | If no LIN or K-Line transceiver is used, connect Rx&Tx (only 1 device!) 11 | 12 | \note 13 | As Serial(0) is generally used for USB/console, boards with only 1 Serial interface, e.g. Uno, may not work due to conflict between USB and LIN. 14 | */ 15 | 16 | // include LIN master library 17 | #include "LIN_master1.h" 18 | 19 | // pin to demonstrate background operation 20 | #define PIN_TOGGLE 30 21 | 22 | // pause between LIN frames 23 | #define LIN_PAUSE 250 24 | 25 | 26 | void setup(void) 27 | { 28 | // show background operation 29 | pinMode(PIN_TOGGLE, OUTPUT); 30 | 31 | // for user interaction via console 32 | Serial.begin(115200); while(!Serial); 33 | 34 | // initialize LIN master (blocking operation) 35 | LIN_master1.begin(19200, LIN_V2, false); 36 | 37 | } // setup() 38 | 39 | 40 | 41 | void loop(void) 42 | { 43 | static uint32_t lastCall = LIN_PAUSE; 44 | static uint8_t count = 0; 45 | uint8_t Tx[2] = {0,0}; 46 | uint8_t Rx[8]; 47 | 48 | // toggle pin to show background operation 49 | digitalWrite(PIN_TOGGLE, !digitalRead(PIN_TOGGLE)); 50 | 51 | // simple LIN scheduler 52 | if (millis() - lastCall > LIN_PAUSE) { 53 | lastCall = millis(); 54 | 55 | // send master request 56 | if (count == 0) { 57 | count++; 58 | 59 | // dummy master request (blocking) 60 | LIN_master1.sendMasterRequest(0x3B, 2, Tx); 61 | 62 | } // count == 0 63 | 64 | // receive slave response 65 | else { 66 | count=0; 67 | 68 | // receive slave response (blocking) 69 | LIN_master1.receiveSlaveResponse(0x1B, 8, Rx); 70 | 71 | // print status and data 72 | Serial.print(millis()); Serial.println("ms"); 73 | Serial.print("error: "); Serial.println(LIN_master1.error); 74 | Serial.println("data:"); 75 | for (uint8_t i=0; i<8; i++) 76 | { 77 | Serial.print(" "); Serial.print(i); Serial.print("\t0x"); Serial.println(Rx[i], HEX); 78 | } 79 | Serial.println(); 80 | 81 | // clear pending error and flag for received data 82 | LIN_master1.error = LIN_SUCCESS; 83 | 84 | } // count == 1 85 | 86 | } // scheduler 87 | 88 | } // loop() 89 | -------------------------------------------------------------------------------- /examples/LIN_master_dual/LIN_master_dual.ino: -------------------------------------------------------------------------------- 1 | /** 2 | \file dual_LIN.ino 3 | \example dual_LIN.ino 4 | \brief Dual LIN master node emulation 5 | \details Simple emulation of two LIN master nodes via Serial1 (19.2kBaud) & Serial2 (9.6kBaud). Only master request frames are sent 6 | \author Georg Icking-Konert 7 | 8 | \note 9 | The sender state machine relies on reading back its 1-wire echo. 10 | If no LIN or K-Line transceiver is used, connect Rx&Tx (only 1 device!) 11 | 12 | \note 13 | As Serial(0) is generally used for USB/console, boards with 2 Serial interfaces, may not work due to conflict between USB and LIN. 14 | */ 15 | 16 | // include LIN master library 17 | #include "LIN_master1.h" 18 | #include "LIN_master2.h" 19 | 20 | // task scheduler library. Either "Task Scheduler" library (AVR, SAM), or Ticker (ESP32, ESP8266) 21 | #if defined(__AVR__) || defined(__SAM3X8E__) 22 | #include "Tasks.h" 23 | #elif defined(ESP32) || defined(ESP8266) 24 | #include "Ticker.h" 25 | Ticker ticker_LIN1; 26 | Ticker ticker_LIN2; 27 | #else 28 | #error no supported task library found. Install either "Task Scheduler" library (AVR, SAM), or Ticker (ESP32, ESP8266) 29 | #endif 30 | 31 | 32 | // pin to demonstrate background operation 33 | #define PIN_TOGGLE 30 34 | 35 | // task scheduler periods [ms] 36 | #define LIN1_PERIOD 20 37 | #define LIN2_PERIOD 20 38 | 39 | 40 | void setup(void) 41 | { 42 | // show background operation 43 | pinMode(PIN_TOGGLE, OUTPUT); 44 | 45 | // for debug 46 | Serial.begin(115200); while(!Serial); 47 | 48 | // initialize LIN master (background operation) 49 | LIN_master1.begin(19200, LIN_V2, true); 50 | LIN_master2.begin(9600, LIN_V1, true); 51 | 52 | // init task scheduler (also required for LIN master emulation!) 53 | #if defined(__AVR__) || defined(__SAM3X8E__) 54 | Tasks_Init(); 55 | Tasks_Add((Task) sendMasterRequest1, LIN1_PERIOD, 0); 56 | Tasks_Add((Task) sendMasterRequest2, LIN2_PERIOD, LIN1_PERIOD/2); 57 | Tasks_Start(); 58 | #else // ESP32 / ESP8266 59 | ticker_LIN1.attach_ms(LIN1_PERIOD, sendMasterRequest1); 60 | delay(LIN1_PERIOD/2); 61 | ticker_LIN2.attach_ms(LIN2_PERIOD, sendMasterRequest2); 62 | #endif 63 | 64 | } // setup() 65 | 66 | 67 | 68 | void loop(void) 69 | { 70 | // toggle pin to show background operation 71 | digitalWrite(PIN_TOGGLE, !digitalRead(PIN_TOGGLE)); 72 | 73 | } // loop() 74 | 75 | 76 | 77 | // send master request via Serial1 78 | void sendMasterRequest1(void) 79 | { 80 | // assert that LIN state is idle 81 | if (LIN_master1.getState() != LIN_STATE_IDLE) 82 | return; 83 | 84 | // assemble frame data 85 | static uint8_t count=0; 86 | uint8_t id = 0x05; 87 | uint8_t lenData = 8; 88 | uint8_t data[8]; 89 | memset(data, count++, lenData); 90 | 91 | // send master request 92 | LIN_master1.sendMasterRequest(id, lenData, data); 93 | 94 | } // sendMasterRequest1() 95 | 96 | 97 | 98 | // send master request via Serial2 99 | void sendMasterRequest2(void) 100 | { 101 | // assert that LIN state is idle 102 | if (LIN_master2.getState() != LIN_STATE_IDLE) 103 | return; 104 | 105 | // assemble frame data 106 | static uint8_t count=127; 107 | uint8_t id = 0x11; 108 | uint8_t lenData = 8; 109 | uint8_t data[8]; 110 | memset(data, count++, lenData); 111 | 112 | // send master request 113 | LIN_master2.sendMasterRequest(id, lenData, data); 114 | 115 | } // sendMasterRequest2() 116 | -------------------------------------------------------------------------------- /extras/Library_Manager.md: -------------------------------------------------------------------------------- 1 | Library Manager 2 | ==================== 3 | 4 | ![\"Task Scheduler\" in Arduino IDE library manager](Library_Manager.png) 5 | -------------------------------------------------------------------------------- /extras/Library_Manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/Library_Manager.png -------------------------------------------------------------------------------- /extras/Multiple_LIN.md: -------------------------------------------------------------------------------- 1 | Multiple LIN 2 | ==================== 3 | 4 | The below trace shows the LIN pins for 2 master nodes (V1 @ 9.6kBaud and V2 @ 19.2kBaud), and a test pin which is toggled in *loop()* to indicate the CPU load. 5 | The example was run on on an Arduino Mega 2560 @ 16MHz. 6 | 7 | 8 | ![ ](dual_LIN.png) 9 | -------------------------------------------------------------------------------- /extras/Operation_Modes.md: -------------------------------------------------------------------------------- 1 | Operation Modes 2 | ==================== 3 | 4 | The below traces show the LIN pin for a master request (2 data bytes) and slave respone (8 data bytes), and a test pin which is toggled in *loop()* to indicate the CPU load. 5 | The examples were run on on an Arduino Mega 2560 @ 16MHz. 6 | 7 | 8 | Background Operation 9 | -------------------- 10 | 11 | ![ ](background_operation.png) 12 | 13 | ==================================== 14 | 15 | Blocking Operation 16 | ------------------ 17 | 18 | ![ ](blocking_operation.png) 19 | -------------------------------------------------------------------------------- /extras/README.md: -------------------------------------------------------------------------------- 1 | LIN Master Node Emulation 2 | ========================= 3 | 4 | This library implements a Local Interconnect Master node emulation. For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network. 5 | 6 | Supported functionality: 7 | - [blocking and non-blocking operation](Operation_Modes.md) 8 | - [multiple, simultaneous LIN nodes](Multiple_LIN.md) with independent baudrates and protocol 9 | - optional callback functions for slave response frames 10 | 11 | This library depends on the *Task Scheduler* library for background operation, which is available via the [Arduino IDE library manager](Library_Manager.md) or directly from https://github.com/kcl93/Tasks 12 | 13 | Supported Boards (with additional LIN hardware): 14 | - all boards using the Atmel ATMega328 controller, e.g. Arduino Uno and Nano 15 | - all boards using the Atmel ATMega2560 controller, e.g. Arduino Mega 16 | - all boards using the Atmel SAM3X8E controller, e.g. Arduino Due 17 | 18 | As no device specific tricks are used, other boards should also work, if they are supported by the *Task Scheduler* library. 19 | 20 | Have fun, Georg -------------------------------------------------------------------------------- /extras/background_operation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/background_operation.png -------------------------------------------------------------------------------- /extras/blocking_operation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/blocking_operation.png -------------------------------------------------------------------------------- /extras/dual_LIN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/dual_LIN.png -------------------------------------------------------------------------------- /extras/html/Library_Manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/Library_Manager.png -------------------------------------------------------------------------------- /extras/html/_l_i_n__background_8ino.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__background_8ino = 2 | [ 3 | [ "LIN_PERIOD", "_l_i_n__background_8ino.html#aaa57eecaf12b9dd7d451ce692bfdfc6b", null ], 4 | [ "PIN_TOGGLE", "_l_i_n__background_8ino.html#aa1d7d3fe7a3b1fd2599b4b672813cdb5", null ], 5 | [ "PRINT_PERIOD", "_l_i_n__background_8ino.html#ab8fb7d5aecd38e0e7d6106a400e10388", null ], 6 | [ "LIN_scheduler", "_l_i_n__background_8ino.html#a73642116bce660063e2d2fe84de3512b", null ], 7 | [ "loop", "_l_i_n__background_8ino.html#a0b33edabd7f1c4e4a0bf32c67269be2f", null ], 8 | [ "printStatus", "_l_i_n__background_8ino.html#aaf090dbb73ff05ddbd763653427c49ee", null ], 9 | [ "setup", "_l_i_n__background_8ino.html#a7dfd9b79bc5a37d7df40207afbc5431f", null ], 10 | [ "Rx", "_l_i_n__background_8ino.html#ae2ae0524e9a6b2974127c932e4bb9a08", null ] 11 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__blocking_8ino.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__blocking_8ino = 2 | [ 3 | [ "LIN_PAUSE", "_l_i_n__blocking_8ino.html#acb6327ed4a1c3b8b716cb5517956b708", null ], 4 | [ "PIN_TOGGLE", "_l_i_n__blocking_8ino.html#aa1d7d3fe7a3b1fd2599b4b672813cdb5", null ], 5 | [ "loop", "_l_i_n__blocking_8ino.html#a0b33edabd7f1c4e4a0bf32c67269be2f", null ], 6 | [ "setup", "_l_i_n__blocking_8ino.html#a7dfd9b79bc5a37d7df40207afbc5431f", null ] 7 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__callback_8ino.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__callback_8ino = 2 | [ 3 | [ "LIN_PERIOD", "_l_i_n__callback_8ino.html#aaa57eecaf12b9dd7d451ce692bfdfc6b", null ], 4 | [ "PIN_TOGGLE", "_l_i_n__callback_8ino.html#aa1d7d3fe7a3b1fd2599b4b672813cdb5", null ], 5 | [ "PRINT_PERIOD", "_l_i_n__callback_8ino.html#ab8fb7d5aecd38e0e7d6106a400e10388", null ], 6 | [ "LIN_scheduler", "_l_i_n__callback_8ino.html#a73642116bce660063e2d2fe84de3512b", null ], 7 | [ "loop", "_l_i_n__callback_8ino.html#a0b33edabd7f1c4e4a0bf32c67269be2f", null ], 8 | [ "printStatus", "_l_i_n__callback_8ino.html#aaf090dbb73ff05ddbd763653427c49ee", null ], 9 | [ "setup", "_l_i_n__callback_8ino.html#a7dfd9b79bc5a37d7df40207afbc5431f", null ], 10 | [ "statusDecode", "_l_i_n__callback_8ino.html#a6683a8e9bed6decdf21ad71cf16c5862", null ], 11 | [ "CoolFan_Blocking_Stat", "_l_i_n__callback_8ino.html#a0b06b4b3c387e6e9399ffe5c7b7a4100", null ], 12 | [ "CoolFan_cur_Temp", "_l_i_n__callback_8ino.html#a52266875296a2a20d98dd1f9172fc14e", null ], 13 | [ "CoolFan_Current_Avg", "_l_i_n__callback_8ino.html#a5d24ae2caf51680f6140508eb409ecb0", null ], 14 | [ "CoolFan_Electr_Err", "_l_i_n__callback_8ino.html#a8ccb945a4842dacc2bd70dc5ac744b53", null ], 15 | [ "CoolFan_EmAct_Stat", "_l_i_n__callback_8ino.html#ae605b5616ee9c3129bf3fc883696a8e3", null ], 16 | [ "CoolFan_Err_Group_ERR_Stat", "_l_i_n__callback_8ino.html#a95bddd4a8f90fb508f6f8e83867fe0bd", null ], 17 | [ "CoolFan_Err_Group_SNA_Stat", "_l_i_n__callback_8ino.html#ac5233206ae08e5188415ff6ed0f852f5", null ], 18 | [ "CoolFan_Mech_Err", "_l_i_n__callback_8ino.html#a0b6b6f3516bfb6edc14fdd4c6295581b", null ], 19 | [ "CoolFan_OvrTemp_Err", "_l_i_n__callback_8ino.html#ae284558de1dff637e50a224ad896c866", null ], 20 | [ "CoolFan_OvrVolt_Stat", "_l_i_n__callback_8ino.html#ab281546102d1b209a07c9ce13d70b8e4", null ], 21 | [ "CoolFan_RPM", "_l_i_n__callback_8ino.html#a8d1af40dc2513e23f5871459391ca0dd", null ], 22 | [ "CoolFan_RPM_Ack", "_l_i_n__callback_8ino.html#a8b642aae22ac93221e7e6671a747ffe0", null ], 23 | [ "CoolFan_RPM_Avg", "_l_i_n__callback_8ino.html#af27db14eccf7b205cd1fcad0c4a2a514", null ], 24 | [ "CoolFan_Stiff_Stat", "_l_i_n__callback_8ino.html#ab313efe5c95e21d6a12db8c29a9ad6ad", null ], 25 | [ "CoolFan_TempDerat_Stat", "_l_i_n__callback_8ino.html#a1524d8e5cdd541de3f1b85c8b331d7c2", null ], 26 | [ "CoolFan_Type", "_l_i_n__callback_8ino.html#a7410cf7cae74af10549d73c788e31c3b", null ], 27 | [ "CoolFan_UnderVolt_Stat", "_l_i_n__callback_8ino.html#a27a86df5b053591f8ab040b0f472bd8a", null ], 28 | [ "CoolFan_Voltage_Avg", "_l_i_n__callback_8ino.html#ae7a6796a8dd87005c56e3d08c0c2a2d1", null ], 29 | [ "CoolFan_VoltDerat_Stat", "_l_i_n__callback_8ino.html#ab595dbc3249d50fad67c862b52d34502", null ], 30 | [ "RsErr_CF", "_l_i_n__callback_8ino.html#a970c23327d402c6916a498018d456fd5", null ], 31 | [ "WakeupStat_CF", "_l_i_n__callback_8ino.html#a1fd01f82c2ee0ca5da4d30be5ed8f949", null ] 32 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__master0_8cpp.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__master0_8cpp = 2 | [ 3 | [ "LIN_master0_copy", "_l_i_n__master0_8cpp.html#ae0896b8a1edd32b42f1fc88e54f0bab1", null ], 4 | [ "LIN_master0_receive", "_l_i_n__master0_8cpp.html#a7cdad4685cb5cc388e70f05435399dd0", null ], 5 | [ "LIN_master0_send", "_l_i_n__master0_8cpp.html#afb9f8cffb98d27e814ba538ceecc08cb", null ], 6 | [ "LIN_master0", "_l_i_n__master0_8cpp.html#ac39aac4c85ad44c2295a960af1887314", null ] 7 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__master0_8h.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__master0_8h = 2 | [ 3 | [ "LIN_Master_0", "class_l_i_n___master__0.html", "class_l_i_n___master__0" ], 4 | [ "LIN_master0_copy", "_l_i_n__master0_8h.html#ae0896b8a1edd32b42f1fc88e54f0bab1", null ], 5 | [ "LIN_master0_receive", "_l_i_n__master0_8h.html#a7cdad4685cb5cc388e70f05435399dd0", null ], 6 | [ "LIN_master0_send", "_l_i_n__master0_8h.html#afb9f8cffb98d27e814ba538ceecc08cb", null ], 7 | [ "LIN_master0", "_l_i_n__master0_8h.html#ac39aac4c85ad44c2295a960af1887314", null ] 8 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__master1_8cpp.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__master1_8cpp = 2 | [ 3 | [ "LIN_master1_copy", "_l_i_n__master1_8cpp.html#a9ef046b6c52ebc36a6f9f039f673ac85", null ], 4 | [ "LIN_master1_receive", "_l_i_n__master1_8cpp.html#a3e25c19e01e41ac4fabb29a7b7af8cd5", null ], 5 | [ "LIN_master1_send", "_l_i_n__master1_8cpp.html#abe737fa0dd0f58a2e9a5db7993abecd0", null ], 6 | [ "LIN_master1", "_l_i_n__master1_8cpp.html#a8f49bda42871b7605cacb83dafd0e4ca", null ] 7 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__master1_8h.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__master1_8h = 2 | [ 3 | [ "LIN_Master_1", "class_l_i_n___master__1.html", "class_l_i_n___master__1" ], 4 | [ "LIN_master1_copy", "_l_i_n__master1_8h.html#a9ef046b6c52ebc36a6f9f039f673ac85", null ], 5 | [ "LIN_master1_receive", "_l_i_n__master1_8h.html#a3e25c19e01e41ac4fabb29a7b7af8cd5", null ], 6 | [ "LIN_master1_send", "_l_i_n__master1_8h.html#abe737fa0dd0f58a2e9a5db7993abecd0", null ], 7 | [ "LIN_master1", "_l_i_n__master1_8h.html#a8f49bda42871b7605cacb83dafd0e4ca", null ] 8 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__master2_8cpp.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__master2_8cpp = 2 | [ 3 | [ "LIN_master2_copy", "_l_i_n__master2_8cpp.html#a5772db910b0d8b9d93dcee85211b5a4e", null ], 4 | [ "LIN_master2_receive", "_l_i_n__master2_8cpp.html#a0f1e230b8bc4d2014b846fae97b6e012", null ], 5 | [ "LIN_master2_send", "_l_i_n__master2_8cpp.html#a8a61f3290d3f816cd1054ffe763b95a6", null ], 6 | [ "LIN_master2", "_l_i_n__master2_8cpp.html#ae06038c2dba5ba500d220e830d80cd5b", null ] 7 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__master2_8h.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__master2_8h = 2 | [ 3 | [ "LIN_Master_2", "class_l_i_n___master__2.html", "class_l_i_n___master__2" ], 4 | [ "LIN_master2_copy", "_l_i_n__master2_8h.html#a5772db910b0d8b9d93dcee85211b5a4e", null ], 5 | [ "LIN_master2_receive", "_l_i_n__master2_8h.html#a0f1e230b8bc4d2014b846fae97b6e012", null ], 6 | [ "LIN_master2_send", "_l_i_n__master2_8h.html#a8a61f3290d3f816cd1054ffe763b95a6", null ], 7 | [ "LIN_master2", "_l_i_n__master2_8h.html#ae06038c2dba5ba500d220e830d80cd5b", null ] 8 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__master3_8cpp.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__master3_8cpp = 2 | [ 3 | [ "LIN_master3_copy", "_l_i_n__master3_8cpp.html#a739aec5018522aa94a63fcaab0cbbd35", null ], 4 | [ "LIN_master3_receive", "_l_i_n__master3_8cpp.html#a91c2a1f0f8f4b3c0e2cb690b66fb998c", null ], 5 | [ "LIN_master3_send", "_l_i_n__master3_8cpp.html#acca9ceb9aacbde72e51f5a98aaf90f9f", null ], 6 | [ "LIN_master3", "_l_i_n__master3_8cpp.html#a2cfb68ff1972539800fa2e61a988ded4", null ] 7 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__master3_8h.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__master3_8h = 2 | [ 3 | [ "LIN_Master_3", "class_l_i_n___master__3.html", "class_l_i_n___master__3" ], 4 | [ "LIN_master3_copy", "_l_i_n__master3_8h.html#a739aec5018522aa94a63fcaab0cbbd35", null ], 5 | [ "LIN_master3_receive", "_l_i_n__master3_8h.html#a91c2a1f0f8f4b3c0e2cb690b66fb998c", null ], 6 | [ "LIN_master3_send", "_l_i_n__master3_8h.html#acca9ceb9aacbde72e51f5a98aaf90f9f", null ], 7 | [ "LIN_master3", "_l_i_n__master3_8h.html#a2cfb68ff1972539800fa2e61a988ded4", null ] 8 | ]; -------------------------------------------------------------------------------- /extras/html/_l_i_n__master_8h.js: -------------------------------------------------------------------------------- 1 | var _l_i_n__master_8h = 2 | [ 3 | [ "LIN_Master", "class_l_i_n___master.html", "class_l_i_n___master" ], 4 | [ "LIN_DEBUG_LEVEL", "_l_i_n__master_8h.html#a0fbe1a3d7a57e4c454c5edb9c8d3b589", null ], 5 | [ "LIN_DEBUG_SERIAL", "_l_i_n__master_8h.html#a623b94c96f1a4ce4f486b8fc8fe9eca3", null ], 6 | [ "decoder_t", "_l_i_n__master_8h.html#addd910faf05c9e05b99a74296c256b5d", null ], 7 | [ "LIN_error_t", "_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82", [ 8 | [ "LIN_SUCCESS", "_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a010afccb5aaad11212ae8dac6dfa8dba", null ], 9 | [ "LIN_ERROR_STATE", "_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a97ab0e3ea0591d39bc87226901d02631", null ], 10 | [ "LIN_ERROR_ECHO", "_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a1c0c655b966de71875c5478717ca14a2", null ], 11 | [ "LIN_ERROR_TIMEOUT", "_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a4ca746a3a0f8da2a50f333302d83f5be", null ], 12 | [ "LIN_ERROR_CHK", "_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82aef44ca97d5ffb77a6481fed83b4e5985", null ], 13 | [ "LIN_ERROR_MISC", "_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a3c7b058a398e8f04a617b9cf8375670f", null ] 14 | ] ], 15 | [ "LIN_frame_t", "_l_i_n__master_8h.html#aacaac6776bc917200d73dd6879ae75c9", [ 16 | [ "LIN_MASTER_REQUEST", "_l_i_n__master_8h.html#aacaac6776bc917200d73dd6879ae75c9a4fce02374593f5987c183b1c78cca358", null ], 17 | [ "LIN_SLAVE_RESPONSE", "_l_i_n__master_8h.html#aacaac6776bc917200d73dd6879ae75c9a725438a2997419584635a330d5822004", null ] 18 | ] ], 19 | [ "LIN_status_t", "_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4e", [ 20 | [ "LIN_STATE_OFF", "_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4eae5e8d34cb75b59211410a4ac45675462", null ], 21 | [ "LIN_STATE_IDLE", "_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4ea913fda3508d7a9ae23f417ebdc324ec9", null ], 22 | [ "LIN_STATE_BREAK", "_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4ea15a306cd9878520342fbd26a4518625b", null ], 23 | [ "LIN_STATE_FRAME", "_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4ea58b8570ab5a7e878e09d05ff801f0ed6", null ] 24 | ] ], 25 | [ "LIN_version_t", "_l_i_n__master_8h.html#a427c734468913aa0f13d50a58117893b", [ 26 | [ "LIN_V1", "_l_i_n__master_8h.html#a427c734468913aa0f13d50a58117893ba18a7a808bc54a5e6f3f9a46ad75e195e", null ], 27 | [ "LIN_V2", "_l_i_n__master_8h.html#a427c734468913aa0f13d50a58117893badaafb18f79967a0b12868b40cf345ed8", null ] 28 | ] ] 29 | ]; -------------------------------------------------------------------------------- /extras/html/_library___manager_8md_source.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: Library_Manager.md Source File 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
Library_Manager.md
87 |
88 |
89 |
1 Library Manager
2 ====================
3 
4 ![\"Task Scheduler\" in Arduino IDE library manager](Library_Manager.png)
90 |
91 | 92 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /extras/html/annotated_dup.js: -------------------------------------------------------------------------------- 1 | var annotated_dup = 2 | [ 3 | [ "LIN_Master", "class_l_i_n___master.html", "class_l_i_n___master" ], 4 | [ "LIN_Master_0", "class_l_i_n___master__0.html", "class_l_i_n___master__0" ], 5 | [ "LIN_Master_1", "class_l_i_n___master__1.html", "class_l_i_n___master__1" ], 6 | [ "LIN_Master_2", "class_l_i_n___master__2.html", "class_l_i_n___master__2" ], 7 | [ "LIN_Master_3", "class_l_i_n___master__3.html", "class_l_i_n___master__3" ] 8 | ]; -------------------------------------------------------------------------------- /extras/html/background_operation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/background_operation.png -------------------------------------------------------------------------------- /extras/html/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/bc_s.png -------------------------------------------------------------------------------- /extras/html/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/bdwn.png -------------------------------------------------------------------------------- /extras/html/blocking_operation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/blocking_operation.png -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master.js: -------------------------------------------------------------------------------- 1 | var class_l_i_n___master = 2 | [ 3 | [ "begin", "class_l_i_n___master.html#aed83f496028e02bf528d400f0a43a34c", null ], 4 | [ "checksum", "class_l_i_n___master.html#a7fc6731a40815396cabf732ae16b0796", null ], 5 | [ "defaultCallback", "class_l_i_n___master.html#aa2fcef7c3c5153826b678e3769b2d2c9", null ], 6 | [ "end", "class_l_i_n___master.html#a00fd4fce48f6237cea87825e937aa688", null ], 7 | [ "handlerReceive", "class_l_i_n___master.html#ab6bb1a6aeff905ec97ab0b82de76d528", null ], 8 | [ "handlerSend", "class_l_i_n___master.html#ac71e26533db11256cffae3588dd94071", null ], 9 | [ "protectID", "class_l_i_n___master.html#a82ff96ca4e2f2a2632419336cd5ed3df", null ], 10 | [ "receiveSlaveResponse", "class_l_i_n___master.html#ae1d1f965294aa35dbc722e7393a77315", null ], 11 | [ "receiveSlaveResponse", "class_l_i_n___master.html#af0fdc1f5516feafe02e03a44167383c4", null ], 12 | [ "sendMasterRequest", "class_l_i_n___master.html#a4cf186b50edda679927471ef1c47efaf", null ], 13 | [ "background", "class_l_i_n___master.html#ac5bdc52e6924094e821cfc23ffb7344b", null ], 14 | [ "baudrate", "class_l_i_n___master.html#a9a7b5c9604d002f1ca9214e9e0db4d31", null ], 15 | [ "bufRx", "class_l_i_n___master.html#a190a766767fab1821783d85ba91ab3e7", null ], 16 | [ "bufTx", "class_l_i_n___master.html#ae0ffa16776d32ef81e3801a0526834cb", null ], 17 | [ "dataPtr", "class_l_i_n___master.html#aa57d23aad8583a8a0c7e93ba995e3bbc", null ], 18 | [ "durationBreak", "class_l_i_n___master.html#a6032c445b26138423510da70f568c8ab", null ], 19 | [ "durationFrame", "class_l_i_n___master.html#a2f98698c7cfd4ebdb320604606bffea2", null ], 20 | [ "error", "class_l_i_n___master.html#a136305d6a96d707caa11698f9cc813a0", null ], 21 | [ "flagRxComplete", "class_l_i_n___master.html#a551d6040e9de16538aa5340325af8a0a", null ], 22 | [ "flagTxComplete", "class_l_i_n___master.html#aa36aa22315b364f7f0fecec6f37f2212", null ], 23 | [ "frameType", "class_l_i_n___master.html#ad21f2a01f28142ce4ec039f1da3f72aa", null ], 24 | [ "lenRx", "class_l_i_n___master.html#ab5068b1197d717b16d63d36e6ed59f76", null ], 25 | [ "lenTx", "class_l_i_n___master.html#a548cb1ad18cf4c509de0217dba9aa044", null ], 26 | [ "pSerial", "class_l_i_n___master.html#a0fcdb86f5ff745116638731630e588a1", null ], 27 | [ "rx_handler", "class_l_i_n___master.html#ae393334505b9c28d6a1fdedc4b5b3560", null ], 28 | [ "state", "class_l_i_n___master.html#a7369d1273bb45d8d1cee372bb32a97df", null ], 29 | [ "version", "class_l_i_n___master.html#ac9bf76b671f32f5f18c41585e7b06abe", null ], 30 | [ "wrapperDefaultCallback", "class_l_i_n___master.html#aec46720f74bc65b61f58520c6b75a7ab", null ], 31 | [ "wrapperReceive", "class_l_i_n___master.html#a93c6225aa9bcc2701b4d918d6be3ab85", null ], 32 | [ "wrapperSend", "class_l_i_n___master.html#a3da83c78312e160d6d74ad76ff4e276c", null ] 33 | ]; -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/class_l_i_n___master.png -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master__0.js: -------------------------------------------------------------------------------- 1 | var class_l_i_n___master__0 = 2 | [ 3 | [ "LIN_Master_0", "class_l_i_n___master__0.html#a5090c80837e719bf02bbdcd733452539", null ] 4 | ]; -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master__0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/class_l_i_n___master__0.png -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master__1.js: -------------------------------------------------------------------------------- 1 | var class_l_i_n___master__1 = 2 | [ 3 | [ "LIN_Master_1", "class_l_i_n___master__1.html#aa77c5bc5b170c5183ccda5a7fce3414c", null ] 4 | ]; -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master__1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/class_l_i_n___master__1.png -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master__2.js: -------------------------------------------------------------------------------- 1 | var class_l_i_n___master__2 = 2 | [ 3 | [ "LIN_Master_2", "class_l_i_n___master__2.html#a017431162425068a7172b66837da983e", null ] 4 | ]; -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master__2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/class_l_i_n___master__2.png -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master__3.js: -------------------------------------------------------------------------------- 1 | var class_l_i_n___master__3 = 2 | [ 3 | [ "LIN_Master_3", "class_l_i_n___master__3.html#a400627c49e6cbb787beb4303b69f6883", null ] 4 | ]; -------------------------------------------------------------------------------- /extras/html/class_l_i_n___master__3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/class_l_i_n___master__3.png -------------------------------------------------------------------------------- /extras/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/closed.png -------------------------------------------------------------------------------- /extras/html/dir_a7b87552a5e39c37a5e9fd9a2b0b7bf9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: dual_LIN Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
dual_LIN Directory Reference
87 |
88 |
89 | 90 | 92 | 93 | 94 |

91 | Files

file  dual_LIN.ino [code]
 
95 |
96 |
97 | 98 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /extras/html/dir_ace7945da06dee3b64b589cdc6cd0f21.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: LIN_background Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
LIN_background Directory Reference
87 |
88 |
89 | 90 | 92 | 93 | 94 |

91 | Files

file  LIN_background.ino [code]
 
95 |
96 |
97 | 98 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /extras/html/dir_d28a4824dc47e487b107a5db32ef43c4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: examples Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
examples Directory Reference
87 |
88 |
89 | 90 | 92 |

91 | Directories

93 |
94 |
95 | 96 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /extras/html/dir_d6971b0f5112b49742efd355f2158b4f.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: LIN_blocking Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
LIN_blocking Directory Reference
87 |
88 |
89 | 90 | 92 | 93 | 94 |

91 | Files

file  LIN_blocking.ino [code]
 
95 |
96 |
97 | 98 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /extras/html/dir_f046fe7c893808c2b56ff99d8390475d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: LIN_callback Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
LIN_callback Directory Reference
87 |
88 |
89 | 90 | 92 | 93 | 94 |

91 | Files

file  LIN_callback.ino [code]
 
95 |
96 |
97 | 98 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /extras/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/doc.png -------------------------------------------------------------------------------- /extras/html/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/doxygen.png -------------------------------------------------------------------------------- /extras/html/dual_LIN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/dual_LIN.png -------------------------------------------------------------------------------- /extras/html/dual___l_i_n_8ino.js: -------------------------------------------------------------------------------- 1 | var dual___l_i_n_8ino = 2 | [ 3 | [ "LIN1_PERIOD", "dual___l_i_n_8ino.html#adf343e27255808cbe40ebb40bd2d122c", null ], 4 | [ "LIN2_PERIOD", "dual___l_i_n_8ino.html#a3de3348ec7cede9d03017042e529c0c0", null ], 5 | [ "PIN_TOGGLE", "dual___l_i_n_8ino.html#aa1d7d3fe7a3b1fd2599b4b672813cdb5", null ], 6 | [ "loop", "dual___l_i_n_8ino.html#a0b33edabd7f1c4e4a0bf32c67269be2f", null ], 7 | [ "sendMasterRequest1", "dual___l_i_n_8ino.html#a416e09a0eaa1dbbc86909006b3f2ea2c", null ], 8 | [ "sendMasterRequest2", "dual___l_i_n_8ino.html#aaf7dae8b7c65528fd81d26b8169609a1", null ], 9 | [ "setup", "dual___l_i_n_8ino.html#a7dfd9b79bc5a37d7df40207afbc5431f", null ] 10 | ]; -------------------------------------------------------------------------------- /extras/html/dynsections.js: -------------------------------------------------------------------------------- 1 | function toggleVisibility(linkObj) 2 | { 3 | var base = $(linkObj).attr('id'); 4 | var summary = $('#'+base+'-summary'); 5 | var content = $('#'+base+'-content'); 6 | var trigger = $('#'+base+'-trigger'); 7 | var src=$(trigger).attr('src'); 8 | if (content.is(':visible')===true) { 9 | content.hide(); 10 | summary.show(); 11 | $(linkObj).addClass('closed').removeClass('opened'); 12 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); 13 | } else { 14 | content.show(); 15 | summary.hide(); 16 | $(linkObj).removeClass('closed').addClass('opened'); 17 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); 18 | } 19 | return false; 20 | } 21 | 22 | function updateStripes() 23 | { 24 | $('table.directory tr'). 25 | removeClass('even').filter(':visible:even').addClass('even'); 26 | } 27 | 28 | function toggleLevel(level) 29 | { 30 | $('table.directory tr').each(function() { 31 | var l = this.id.split('_').length-1; 32 | var i = $('#img'+this.id.substring(3)); 33 | var a = $('#arr'+this.id.substring(3)); 34 | if (l 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: Examples 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
Examples
87 |
88 |
89 |
Here is a list of all examples:
99 |
100 |
101 | 102 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /extras/html/examples.js: -------------------------------------------------------------------------------- 1 | var examples = 2 | [ 3 | [ "dual_LIN.ino", "dual__l_i_n_8ino-example.html", null ], 4 | [ "LIN_background.ino", "_l_i_n_background_8ino-example.html", null ], 5 | [ "LIN_blocking.ino", "_l_i_n_blocking_8ino-example.html", null ], 6 | [ "LIN_callback.ino", "_l_i_n_callback_8ino-example.html", null ] 7 | ]; -------------------------------------------------------------------------------- /extras/html/files.js: -------------------------------------------------------------------------------- 1 | var files = 2 | [ 3 | [ "dual_LIN.ino", "dual___l_i_n_8ino.html", "dual___l_i_n_8ino" ], 4 | [ "LIN_background.ino", "_l_i_n__background_8ino.html", "_l_i_n__background_8ino" ], 5 | [ "LIN_blocking.ino", "_l_i_n__blocking_8ino.html", "_l_i_n__blocking_8ino" ], 6 | [ "LIN_callback.ino", "_l_i_n__callback_8ino.html", "_l_i_n__callback_8ino" ], 7 | [ "LIN_master.cpp", "_l_i_n__master_8cpp.html", null ], 8 | [ "LIN_master.h", "_l_i_n__master_8h.html", "_l_i_n__master_8h" ], 9 | [ "LIN_master0.cpp", "_l_i_n__master0_8cpp.html", "_l_i_n__master0_8cpp" ], 10 | [ "LIN_master0.h", "_l_i_n__master0_8h.html", "_l_i_n__master0_8h" ], 11 | [ "LIN_master1.cpp", "_l_i_n__master1_8cpp.html", "_l_i_n__master1_8cpp" ], 12 | [ "LIN_master1.h", "_l_i_n__master1_8h.html", "_l_i_n__master1_8h" ], 13 | [ "LIN_master2.cpp", "_l_i_n__master2_8cpp.html", "_l_i_n__master2_8cpp" ], 14 | [ "LIN_master2.h", "_l_i_n__master2_8h.html", "_l_i_n__master2_8h" ], 15 | [ "LIN_master3.cpp", "_l_i_n__master3_8cpp.html", "_l_i_n__master3_8cpp" ], 16 | [ "LIN_master3.h", "_l_i_n__master3_8h.html", "_l_i_n__master3_8h" ] 17 | ]; -------------------------------------------------------------------------------- /extras/html/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/folderclosed.png -------------------------------------------------------------------------------- /extras/html/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/folderopen.png -------------------------------------------------------------------------------- /extras/html/globals_defs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: Globals 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |   93 |
94 |
95 | 96 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /extras/html/globals_enum.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: Globals 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |   99 |
100 |
101 | 102 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /extras/html/globals_type.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: Globals 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |   90 |
91 |
92 | 93 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /extras/html/hierarchy.js: -------------------------------------------------------------------------------- 1 | var hierarchy = 2 | [ 3 | [ "LIN_Master", "class_l_i_n___master.html", [ 4 | [ "LIN_Master_0", "class_l_i_n___master__0.html", null ], 5 | [ "LIN_Master_1", "class_l_i_n___master__1.html", null ], 6 | [ "LIN_Master_2", "class_l_i_n___master__2.html", null ], 7 | [ "LIN_Master_3", "class_l_i_n___master__3.html", null ] 8 | ] ] 9 | ]; -------------------------------------------------------------------------------- /extras/html/logo_LIN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/logo_LIN.png -------------------------------------------------------------------------------- /extras/html/md__library__manager.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: Library Manager 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
Library Manager
87 |
88 |
89 |
90 | Library_Manager.png 91 |
92 | "Task Scheduler" in Arduino IDE library manager
93 |
94 |
95 | 96 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /extras/html/md__multiple__l_i_n.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: Multiple LIN 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
Multiple LIN
87 |
88 |
89 |

The below trace shows the LIN pins for 2 master nodes (V1 @ 9.6kBaud and V2 @ 19.2kBaud), and a test pin which is toggled in loop() to indicate the CPU load. The example was run on on an Arduino Mega 2560 @ 16MHz.

90 |
91 | dual_LIN.png 92 |
93 |
94 |
95 | 96 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /extras/html/md__operation__modes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: Operation Modes 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
32 |
LIN_master 33 |  0.1 34 |
35 |
Arduino LIN master emulation with preemptive background operation
36 |
40 |
41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
56 |
57 | 62 |
64 |
65 |
66 | 69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 | 82 |
83 | 84 |
85 |
86 |
Operation Modes
87 |
88 |
89 |

The below traces show the LIN pin for a master request (2 data bytes) and slave respone (8 data bytes), and a test pin which is toggled in loop() to indicate the CPU load. The examples were run on on an Arduino Mega 2560 @ 16MHz.

90 |

Background Operation

91 |
92 | background_operation.png 93 |
94 |
95 |

Blocking Operation

96 |
97 | blocking_operation.png 98 |
99 |
100 |
101 | 102 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /extras/html/menu.js: -------------------------------------------------------------------------------- 1 | function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { 2 | function makeTree(data,relPath) { 3 | var result=''; 4 | if ('children' in data) { 5 | result+=''; 12 | } 13 | return result; 14 | } 15 | 16 | $('#main-nav').append(makeTree(menudata,relPath)); 17 | $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); 18 | if (searchEnabled) { 19 | if (serverSide) { 20 | $('#main-menu').append('
  • '); 21 | } else { 22 | $('#main-menu').append('
  • '); 23 | } 24 | } 25 | $('#main-menu').smartmenus(); 26 | } 27 | -------------------------------------------------------------------------------- /extras/html/menudata.js: -------------------------------------------------------------------------------- 1 | var menudata={children:[ 2 | {text:"Main Page",url:"index.html"}, 3 | {text:"Related Pages",url:"pages.html"}, 4 | {text:"Data Structures",url:"annotated.html",children:[ 5 | {text:"Data Structures",url:"annotated.html"}, 6 | {text:"Data Structure Index",url:"classes.html"}, 7 | {text:"Class Hierarchy",url:"hierarchy.html"}, 8 | {text:"Data Fields",url:"functions.html",children:[ 9 | {text:"All",url:"functions.html",children:[ 10 | {text:"b",url:"functions.html#index_b"}, 11 | {text:"c",url:"functions.html#index_c"}, 12 | {text:"d",url:"functions.html#index_d"}, 13 | {text:"e",url:"functions.html#index_e"}, 14 | {text:"f",url:"functions.html#index_f"}, 15 | {text:"h",url:"functions.html#index_h"}, 16 | {text:"l",url:"functions.html#index_l"}, 17 | {text:"p",url:"functions.html#index_p"}, 18 | {text:"r",url:"functions.html#index_r"}, 19 | {text:"s",url:"functions.html#index_s"}, 20 | {text:"v",url:"functions.html#index_v"}, 21 | {text:"w",url:"functions.html#index_w"}]}, 22 | {text:"Functions",url:"functions_func.html"}, 23 | {text:"Variables",url:"functions_vars.html"}]}]}, 24 | {text:"Files",url:"files.html",children:[ 25 | {text:"File List",url:"files.html"}, 26 | {text:"Globals",url:"globals.html",children:[ 27 | {text:"All",url:"globals.html",children:[ 28 | {text:"d",url:"globals.html#index_d"}, 29 | {text:"l",url:"globals.html#index_l"}]}, 30 | {text:"Functions",url:"globals_func.html"}, 31 | {text:"Variables",url:"globals_vars.html"}, 32 | {text:"Typedefs",url:"globals_type.html"}, 33 | {text:"Enumerations",url:"globals_enum.html"}, 34 | {text:"Enumerator",url:"globals_eval.html"}, 35 | {text:"Macros",url:"globals_defs.html"}]}]}, 36 | {text:"Examples",url:"examples.html"}]} 37 | -------------------------------------------------------------------------------- /extras/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/nav_f.png -------------------------------------------------------------------------------- /extras/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/nav_g.png -------------------------------------------------------------------------------- /extras/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/nav_h.png -------------------------------------------------------------------------------- /extras/html/navtree.css: -------------------------------------------------------------------------------- 1 | #nav-tree .children_ul { 2 | margin:0; 3 | padding:4px; 4 | } 5 | 6 | #nav-tree ul { 7 | list-style:none outside none; 8 | margin:0px; 9 | padding:0px; 10 | } 11 | 12 | #nav-tree li { 13 | white-space:nowrap; 14 | margin:0px; 15 | padding:0px; 16 | } 17 | 18 | #nav-tree .plus { 19 | margin:0px; 20 | } 21 | 22 | #nav-tree .selected { 23 | background-image: url('tab_a.png'); 24 | background-repeat:repeat-x; 25 | color: #fff; 26 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 27 | } 28 | 29 | #nav-tree img { 30 | margin:0px; 31 | padding:0px; 32 | border:0px; 33 | vertical-align: middle; 34 | } 35 | 36 | #nav-tree a { 37 | text-decoration:none; 38 | padding:0px; 39 | margin:0px; 40 | outline:none; 41 | } 42 | 43 | #nav-tree .label { 44 | margin:0px; 45 | padding:0px; 46 | font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; 47 | } 48 | 49 | #nav-tree .label a { 50 | padding:2px; 51 | } 52 | 53 | #nav-tree .selected a { 54 | text-decoration:none; 55 | color:#fff; 56 | } 57 | 58 | #nav-tree .children_ul { 59 | margin:0px; 60 | padding:0px; 61 | } 62 | 63 | #nav-tree .item { 64 | margin:0px; 65 | padding:0px; 66 | } 67 | 68 | #nav-tree { 69 | padding: 0px 0px; 70 | background-color: #FAFAFF; 71 | font-size:14px; 72 | overflow:auto; 73 | } 74 | 75 | #doc-content { 76 | overflow:auto; 77 | display:block; 78 | padding:0px; 79 | margin:0px; 80 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 81 | } 82 | 83 | #side-nav { 84 | padding:0 6px 0 0; 85 | margin: 0px; 86 | display:block; 87 | position: absolute; 88 | left: 0px; 89 | width: 250px; 90 | } 91 | 92 | .ui-resizable .ui-resizable-handle { 93 | display:block; 94 | } 95 | 96 | .ui-resizable-e { 97 | background-image:url("splitbar.png"); 98 | background-size:100%; 99 | background-repeat:no-repeat; 100 | background-attachment: scroll; 101 | cursor:ew-resize; 102 | height:100%; 103 | right:0; 104 | top:0; 105 | width:6px; 106 | } 107 | 108 | .ui-resizable-handle { 109 | display:none; 110 | font-size:0.1px; 111 | position:absolute; 112 | z-index:1; 113 | } 114 | 115 | #nav-tree-contents { 116 | margin: 6px 0px 0px 0px; 117 | } 118 | 119 | #nav-tree { 120 | background-image:url('nav_h.png'); 121 | background-repeat:repeat-x; 122 | background-color: #F9FAFC; 123 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 124 | } 125 | 126 | #nav-sync { 127 | position:absolute; 128 | top:5px; 129 | right:24px; 130 | z-index:0; 131 | } 132 | 133 | #nav-sync img { 134 | opacity:0.3; 135 | } 136 | 137 | #nav-sync img:hover { 138 | opacity:0.9; 139 | } 140 | 141 | @media print 142 | { 143 | #nav-tree { display: none; } 144 | div.ui-resizable-handle { display: none; position: relative; } 145 | } 146 | 147 | -------------------------------------------------------------------------------- /extras/html/navtreedata.js: -------------------------------------------------------------------------------- 1 | var NAVTREE = 2 | [ 3 | [ "LIN_master", "index.html", [ 4 | [ "LIN Master Node Emulation", "index.html", null ], 5 | [ "Library Manager", "md__library__manager.html", null ], 6 | [ "Multiple LIN", "md__multiple__l_i_n.html", null ], 7 | [ "Operation Modes", "md__operation__modes.html", null ], 8 | [ "Data Structures", "annotated.html", [ 9 | [ "Data Structures", "annotated.html", "annotated_dup" ], 10 | [ "Data Structure Index", "classes.html", null ], 11 | [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], 12 | [ "Data Fields", "functions.html", [ 13 | [ "All", "functions.html", null ], 14 | [ "Functions", "functions_func.html", null ], 15 | [ "Variables", "functions_vars.html", null ] 16 | ] ] 17 | ] ], 18 | [ "Files", null, [ 19 | [ "File List", "files.html", "files" ], 20 | [ "Globals", "globals.html", [ 21 | [ "All", "globals.html", null ], 22 | [ "Functions", "globals_func.html", null ], 23 | [ "Variables", "globals_vars.html", null ], 24 | [ "Typedefs", "globals_type.html", null ], 25 | [ "Enumerations", "globals_enum.html", null ], 26 | [ "Enumerator", "globals_eval.html", null ], 27 | [ "Macros", "globals_defs.html", null ] 28 | ] ] 29 | ] ], 30 | [ "Examples", "examples.html", "examples" ] 31 | ] ] 32 | ]; 33 | 34 | var NAVTREEINDEX = 35 | [ 36 | "_l_i_n__background_8ino.html" 37 | ]; 38 | 39 | var SYNCONMSG = 'click to disable panel synchronisation'; 40 | var SYNCOFFMSG = 'click to enable panel synchronisation'; -------------------------------------------------------------------------------- /extras/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/open.png -------------------------------------------------------------------------------- /extras/html/pages.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LIN_master: Related Pages 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
    26 |
    27 | 28 | 29 | 30 | 31 | 37 | 38 | 39 |
    32 |
    LIN_master 33 |  0.1 34 |
    35 |
    Arduino LIN master emulation with preemptive background operation
    36 |
    40 |
    41 | 42 | 43 | 46 | 47 | 48 | 54 | 55 |
    56 |
    57 | 62 |
    64 |
    65 |
    66 | 69 |
    70 | 71 |
    75 |
    76 | 77 | 78 |
    79 | 82 |
    83 | 84 |
    85 |
    86 |
    Related Pages
    87 |
    88 |
    89 |
    Here is a list of all related documentation pages:
    90 | 91 | 92 | 93 | 94 |
     Library Manager
     Multiple LIN
     Operation Modes
    95 |
    96 |
    97 |
    98 | 99 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /extras/html/resize.js: -------------------------------------------------------------------------------- 1 | function initResizable() 2 | { 3 | var cookie_namespace = 'doxygen'; 4 | var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; 5 | 6 | function readCookie(cookie) 7 | { 8 | var myCookie = cookie_namespace+"_"+cookie+"="; 9 | if (document.cookie) { 10 | var index = document.cookie.indexOf(myCookie); 11 | if (index != -1) { 12 | var valStart = index + myCookie.length; 13 | var valEnd = document.cookie.indexOf(";", valStart); 14 | if (valEnd == -1) { 15 | valEnd = document.cookie.length; 16 | } 17 | var val = document.cookie.substring(valStart, valEnd); 18 | return val; 19 | } 20 | } 21 | return 0; 22 | } 23 | 24 | function writeCookie(cookie, val, expiration) 25 | { 26 | if (val==undefined) return; 27 | if (expiration == null) { 28 | var date = new Date(); 29 | date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week 30 | expiration = date.toGMTString(); 31 | } 32 | document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; 33 | } 34 | 35 | function resizeWidth() 36 | { 37 | var windowWidth = $(window).width() + "px"; 38 | var sidenavWidth = $(sidenav).outerWidth(); 39 | content.css({marginLeft:parseInt(sidenavWidth)+"px"}); 40 | writeCookie('width',sidenavWidth-barWidth, null); 41 | } 42 | 43 | function restoreWidth(navWidth) 44 | { 45 | var windowWidth = $(window).width() + "px"; 46 | content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); 47 | sidenav.css({width:navWidth + "px"}); 48 | } 49 | 50 | function resizeHeight() 51 | { 52 | var headerHeight = header.outerHeight(); 53 | var footerHeight = footer.outerHeight(); 54 | var windowHeight = $(window).height() - headerHeight - footerHeight; 55 | content.css({height:windowHeight + "px"}); 56 | navtree.css({height:windowHeight + "px"}); 57 | sidenav.css({height:windowHeight + "px"}); 58 | var width=$(window).width(); 59 | if (width!=collapsedWidth) { 60 | if (width=desktop_vp) { 61 | if (!collapsed) { 62 | collapseExpand(); 63 | } 64 | } else if (width>desktop_vp && collapsedWidth0) { 76 | restoreWidth(0); 77 | collapsed=true; 78 | } 79 | else { 80 | var width = readCookie('width'); 81 | if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } 82 | collapsed=false; 83 | } 84 | } 85 | 86 | header = $("#top"); 87 | sidenav = $("#side-nav"); 88 | content = $("#doc-content"); 89 | navtree = $("#nav-tree"); 90 | footer = $("#nav-path"); 91 | $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); 92 | $(sidenav).resizable({ minWidth: 0 }); 93 | $(window).resize(function() { resizeHeight(); }); 94 | var device = navigator.userAgent.toLowerCase(); 95 | var touch_device = device.match(/(iphone|ipod|ipad|android)/); 96 | if (touch_device) { /* wider split bar for touch only devices */ 97 | $(sidenav).css({ paddingRight:'20px' }); 98 | $('.ui-resizable-e').css({ width:'20px' }); 99 | $('#nav-sync').css({ right:'34px' }); 100 | barWidth=20; 101 | } 102 | var width = readCookie('width'); 103 | if (width) { restoreWidth(width); } else { resizeWidth(); } 104 | resizeHeight(); 105 | var url = location.href; 106 | var i=url.indexOf("#"); 107 | if (i>=0) window.location.hash=url.substr(i); 108 | var _preventDefault = function(evt) { evt.preventDefault(); }; 109 | $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); 110 | $(".ui-resizable-handle").dblclick(collapseExpand); 111 | $(window).load(resizeHeight); 112 | } 113 | 114 | 115 | -------------------------------------------------------------------------------- /extras/html/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['background',['background',['../class_l_i_n___master.html#ac5bdc52e6924094e821cfc23ffb7344b',1,'LIN_Master']]], 4 | ['baudrate',['baudrate',['../class_l_i_n___master.html#a9a7b5c9604d002f1ca9214e9e0db4d31',1,'LIN_Master']]], 5 | ['begin',['begin',['../class_l_i_n___master.html#aed83f496028e02bf528d400f0a43a34c',1,'LIN_Master']]], 6 | ['bufrx',['bufRx',['../class_l_i_n___master.html#a190a766767fab1821783d85ba91ab3e7',1,'LIN_Master']]], 7 | ['buftx',['bufTx',['../class_l_i_n___master.html#ae0ffa16776d32ef81e3801a0526834cb',1,'LIN_Master']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /extras/html/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['checksum',['checksum',['../class_l_i_n___master.html#a7fc6731a40815396cabf732ae16b0796',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['dataptr',['dataPtr',['../class_l_i_n___master.html#aa57d23aad8583a8a0c7e93ba995e3bbc',1,'LIN_Master']]], 4 | ['decoder_5ft',['decoder_t',['../_l_i_n__master_8h.html#addd910faf05c9e05b99a74296c256b5d',1,'LIN_master.h']]], 5 | ['defaultcallback',['defaultCallback',['../class_l_i_n___master.html#aa2fcef7c3c5153826b678e3769b2d2c9',1,'LIN_Master']]], 6 | ['dual_5flin_2eino',['dual_LIN.ino',['../dual___l_i_n_8ino.html',1,'']]], 7 | ['durationbreak',['durationBreak',['../class_l_i_n___master.html#a6032c445b26138423510da70f568c8ab',1,'LIN_Master']]], 8 | ['durationframe',['durationFrame',['../class_l_i_n___master.html#a2f98698c7cfd4ebdb320604606bffea2',1,'LIN_Master']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /extras/html/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['end',['end',['../class_l_i_n___master.html#a00fd4fce48f6237cea87825e937aa688',1,'LIN_Master']]], 4 | ['error',['error',['../class_l_i_n___master.html#a136305d6a96d707caa11698f9cc813a0',1,'LIN_Master']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/html/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['flagrxcomplete',['flagRxComplete',['../class_l_i_n___master.html#a551d6040e9de16538aa5340325af8a0a',1,'LIN_Master']]], 4 | ['flagtxcomplete',['flagTxComplete',['../class_l_i_n___master.html#aa36aa22315b364f7f0fecec6f37f2212',1,'LIN_Master']]], 5 | ['frametype',['frameType',['../class_l_i_n___master.html#ad21f2a01f28142ce4ec039f1da3f72aa',1,'LIN_Master']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /extras/html/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['handlerreceive',['handlerReceive',['../class_l_i_n___master.html#ab6bb1a6aeff905ec97ab0b82de76d528',1,'LIN_Master']]], 4 | ['handlersend',['handlerSend',['../class_l_i_n___master.html#ac71e26533db11256cffae3588dd94071',1,'LIN_Master']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/html/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['multiple_20lin',['Multiple LIN',['../md__multiple__l_i_n.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['operation_20modes',['Operation Modes',['../md__operation__modes.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['protectid',['protectID',['../class_l_i_n___master.html#a82ff96ca4e2f2a2632419336cd5ed3df',1,'LIN_Master']]], 4 | ['pserial',['pSerial',['../class_l_i_n___master.html#a0fcdb86f5ff745116638731630e588a1',1,'LIN_Master']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/html/search/all_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['receiveslaveresponse',['receiveSlaveResponse',['../class_l_i_n___master.html#ae1d1f965294aa35dbc722e7393a77315',1,'LIN_Master::receiveSlaveResponse(uint8_t id, uint8_t numData, void(*Rx_handler)(uint8_t, uint8_t *))'],['../class_l_i_n___master.html#af0fdc1f5516feafe02e03a44167383c4',1,'LIN_Master::receiveSlaveResponse(uint8_t id, uint8_t numData, uint8_t *data)']]], 4 | ['rx_5fhandler',['rx_handler',['../class_l_i_n___master.html#ae393334505b9c28d6a1fdedc4b5b3560',1,'LIN_Master']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/html/search/all_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['sendmasterrequest',['sendMasterRequest',['../class_l_i_n___master.html#a4cf186b50edda679927471ef1c47efaf',1,'LIN_Master']]], 4 | ['state',['state',['../class_l_i_n___master.html#a7369d1273bb45d8d1cee372bb32a97df',1,'LIN_Master']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/html/search/all_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['version',['version',['../class_l_i_n___master.html#ac9bf76b671f32f5f18c41585e7b06abe',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/all_d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wrapperdefaultcallback',['wrapperDefaultCallback',['../class_l_i_n___master.html#aec46720f74bc65b61f58520c6b75a7ab',1,'LIN_Master']]], 4 | ['wrapperreceive',['wrapperReceive',['../class_l_i_n___master.html#a93c6225aa9bcc2701b4d918d6be3ab85',1,'LIN_Master']]], 5 | ['wrappersend',['wrapperSend',['../class_l_i_n___master.html#a3da83c78312e160d6d74ad76ff4e276c',1,'LIN_Master']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /extras/html/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lin_5fmaster',['LIN_Master',['../class_l_i_n___master.html',1,'']]], 4 | ['lin_5fmaster_5f0',['LIN_Master_0',['../class_l_i_n___master__0.html',1,'']]], 5 | ['lin_5fmaster_5f1',['LIN_Master_1',['../class_l_i_n___master__1.html',1,'']]], 6 | ['lin_5fmaster_5f2',['LIN_Master_2',['../class_l_i_n___master__2.html',1,'']]], 7 | ['lin_5fmaster_5f3',['LIN_Master_3',['../class_l_i_n___master__3.html',1,'']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /extras/html/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/search/close.png -------------------------------------------------------------------------------- /extras/html/search/defines_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/defines_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lin_5fdebug_5flevel',['LIN_DEBUG_LEVEL',['../_l_i_n__master_8h.html#a0fbe1a3d7a57e4c454c5edb9c8d3b589',1,'LIN_master.h']]], 4 | ['lin_5fdebug_5fserial',['LIN_DEBUG_SERIAL',['../_l_i_n__master_8h.html#a623b94c96f1a4ce4f486b8fc8fe9eca3',1,'LIN_master.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/html/search/enums_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/enums_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lin_5ferror_5ft',['LIN_error_t',['../_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82',1,'LIN_master.h']]], 4 | ['lin_5fframe_5ft',['LIN_frame_t',['../_l_i_n__master_8h.html#aacaac6776bc917200d73dd6879ae75c9',1,'LIN_master.h']]], 5 | ['lin_5fstatus_5ft',['LIN_status_t',['../_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4e',1,'LIN_master.h']]], 6 | ['lin_5fversion_5ft',['LIN_version_t',['../_l_i_n__master_8h.html#a427c734468913aa0f13d50a58117893b',1,'LIN_master.h']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /extras/html/search/enumvalues_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/enumvalues_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lin_5ferror_5fchk',['LIN_ERROR_CHK',['../_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82aef44ca97d5ffb77a6481fed83b4e5985',1,'LIN_master.h']]], 4 | ['lin_5ferror_5fecho',['LIN_ERROR_ECHO',['../_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a1c0c655b966de71875c5478717ca14a2',1,'LIN_master.h']]], 5 | ['lin_5ferror_5fmisc',['LIN_ERROR_MISC',['../_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a3c7b058a398e8f04a617b9cf8375670f',1,'LIN_master.h']]], 6 | ['lin_5ferror_5fstate',['LIN_ERROR_STATE',['../_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a97ab0e3ea0591d39bc87226901d02631',1,'LIN_master.h']]], 7 | ['lin_5ferror_5ftimeout',['LIN_ERROR_TIMEOUT',['../_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a4ca746a3a0f8da2a50f333302d83f5be',1,'LIN_master.h']]], 8 | ['lin_5fmaster_5frequest',['LIN_MASTER_REQUEST',['../_l_i_n__master_8h.html#aacaac6776bc917200d73dd6879ae75c9a4fce02374593f5987c183b1c78cca358',1,'LIN_master.h']]], 9 | ['lin_5fslave_5fresponse',['LIN_SLAVE_RESPONSE',['../_l_i_n__master_8h.html#aacaac6776bc917200d73dd6879ae75c9a725438a2997419584635a330d5822004',1,'LIN_master.h']]], 10 | ['lin_5fstate_5fbreak',['LIN_STATE_BREAK',['../_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4ea15a306cd9878520342fbd26a4518625b',1,'LIN_master.h']]], 11 | ['lin_5fstate_5fframe',['LIN_STATE_FRAME',['../_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4ea58b8570ab5a7e878e09d05ff801f0ed6',1,'LIN_master.h']]], 12 | ['lin_5fstate_5fidle',['LIN_STATE_IDLE',['../_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4ea913fda3508d7a9ae23f417ebdc324ec9',1,'LIN_master.h']]], 13 | ['lin_5fstate_5foff',['LIN_STATE_OFF',['../_l_i_n__master_8h.html#a34ad22d0b15300d9309c806433a4fc4eae5e8d34cb75b59211410a4ac45675462',1,'LIN_master.h']]], 14 | ['lin_5fsuccess',['LIN_SUCCESS',['../_l_i_n__master_8h.html#a6d33f951db594969c82d91e4ce793b82a010afccb5aaad11212ae8dac6dfa8dba',1,'LIN_master.h']]], 15 | ['lin_5fv1',['LIN_V1',['../_l_i_n__master_8h.html#a427c734468913aa0f13d50a58117893ba18a7a808bc54a5e6f3f9a46ad75e195e',1,'LIN_master.h']]], 16 | ['lin_5fv2',['LIN_V2',['../_l_i_n__master_8h.html#a427c734468913aa0f13d50a58117893badaafb18f79967a0b12868b40cf345ed8',1,'LIN_master.h']]] 17 | ]; 18 | -------------------------------------------------------------------------------- /extras/html/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['dual_5flin_2eino',['dual_LIN.ino',['../dual___l_i_n_8ino.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/files_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lin_5fbackground_2eino',['LIN_background.ino',['../_l_i_n__background_8ino.html',1,'']]], 4 | ['lin_5fblocking_2eino',['LIN_blocking.ino',['../_l_i_n__blocking_8ino.html',1,'']]], 5 | ['lin_5fcallback_2eino',['LIN_callback.ino',['../_l_i_n__callback_8ino.html',1,'']]], 6 | ['lin_5fmaster_2ecpp',['LIN_master.cpp',['../_l_i_n__master_8cpp.html',1,'']]], 7 | ['lin_5fmaster_2eh',['LIN_master.h',['../_l_i_n__master_8h.html',1,'']]], 8 | ['lin_5fmaster0_2ecpp',['LIN_master0.cpp',['../_l_i_n__master0_8cpp.html',1,'']]], 9 | ['lin_5fmaster0_2eh',['LIN_master0.h',['../_l_i_n__master0_8h.html',1,'']]], 10 | ['lin_5fmaster1_2ecpp',['LIN_master1.cpp',['../_l_i_n__master1_8cpp.html',1,'']]], 11 | ['lin_5fmaster1_2eh',['LIN_master1.h',['../_l_i_n__master1_8h.html',1,'']]], 12 | ['lin_5fmaster2_2ecpp',['LIN_master2.cpp',['../_l_i_n__master2_8cpp.html',1,'']]], 13 | ['lin_5fmaster2_2eh',['LIN_master2.h',['../_l_i_n__master2_8h.html',1,'']]], 14 | ['lin_5fmaster3_2ecpp',['LIN_master3.cpp',['../_l_i_n__master3_8cpp.html',1,'']]], 15 | ['lin_5fmaster3_2eh',['LIN_master3.h',['../_l_i_n__master3_8h.html',1,'']]] 16 | ]; 17 | -------------------------------------------------------------------------------- /extras/html/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['begin',['begin',['../class_l_i_n___master.html#aed83f496028e02bf528d400f0a43a34c',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/functions_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['checksum',['checksum',['../class_l_i_n___master.html#a7fc6731a40815396cabf732ae16b0796',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/functions_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['defaultcallback',['defaultCallback',['../class_l_i_n___master.html#aa2fcef7c3c5153826b678e3769b2d2c9',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/functions_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['end',['end',['../class_l_i_n___master.html#a00fd4fce48f6237cea87825e937aa688',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/functions_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['handlerreceive',['handlerReceive',['../class_l_i_n___master.html#ab6bb1a6aeff905ec97ab0b82de76d528',1,'LIN_Master']]], 4 | ['handlersend',['handlerSend',['../class_l_i_n___master.html#ac71e26533db11256cffae3588dd94071',1,'LIN_Master']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/html/search/functions_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lin_5fmaster0_5fcopy',['LIN_master0_copy',['../_l_i_n__master0_8cpp.html#ae0896b8a1edd32b42f1fc88e54f0bab1',1,'LIN_master0_copy(uint8_t numData, uint8_t *data): LIN_master0.cpp'],['../_l_i_n__master0_8h.html#ae0896b8a1edd32b42f1fc88e54f0bab1',1,'LIN_master0_copy(uint8_t numData, uint8_t *data): LIN_master0.cpp']]], 4 | ['lin_5fmaster0_5freceive',['LIN_master0_receive',['../_l_i_n__master0_8cpp.html#a7cdad4685cb5cc388e70f05435399dd0',1,'LIN_master0_receive(void): LIN_master0.cpp'],['../_l_i_n__master0_8h.html#a7cdad4685cb5cc388e70f05435399dd0',1,'LIN_master0_receive(void): LIN_master0.cpp']]], 5 | ['lin_5fmaster0_5fsend',['LIN_master0_send',['../_l_i_n__master0_8cpp.html#afb9f8cffb98d27e814ba538ceecc08cb',1,'LIN_master0_send(void): LIN_master0.cpp'],['../_l_i_n__master0_8h.html#afb9f8cffb98d27e814ba538ceecc08cb',1,'LIN_master0_send(void): LIN_master0.cpp']]], 6 | ['lin_5fmaster1_5fcopy',['LIN_master1_copy',['../_l_i_n__master1_8cpp.html#a9ef046b6c52ebc36a6f9f039f673ac85',1,'LIN_master1_copy(uint8_t numData, uint8_t *data): LIN_master1.cpp'],['../_l_i_n__master1_8h.html#a9ef046b6c52ebc36a6f9f039f673ac85',1,'LIN_master1_copy(uint8_t numData, uint8_t *data): LIN_master1.cpp']]], 7 | ['lin_5fmaster1_5freceive',['LIN_master1_receive',['../_l_i_n__master1_8cpp.html#a3e25c19e01e41ac4fabb29a7b7af8cd5',1,'LIN_master1_receive(void): LIN_master1.cpp'],['../_l_i_n__master1_8h.html#a3e25c19e01e41ac4fabb29a7b7af8cd5',1,'LIN_master1_receive(void): LIN_master1.cpp']]], 8 | ['lin_5fmaster1_5fsend',['LIN_master1_send',['../_l_i_n__master1_8cpp.html#abe737fa0dd0f58a2e9a5db7993abecd0',1,'LIN_master1_send(void): LIN_master1.cpp'],['../_l_i_n__master1_8h.html#abe737fa0dd0f58a2e9a5db7993abecd0',1,'LIN_master1_send(void): LIN_master1.cpp']]], 9 | ['lin_5fmaster2_5fcopy',['LIN_master2_copy',['../_l_i_n__master2_8cpp.html#a5772db910b0d8b9d93dcee85211b5a4e',1,'LIN_master2_copy(uint8_t numData, uint8_t *data): LIN_master2.cpp'],['../_l_i_n__master2_8h.html#a5772db910b0d8b9d93dcee85211b5a4e',1,'LIN_master2_copy(uint8_t numData, uint8_t *data): LIN_master2.cpp']]], 10 | ['lin_5fmaster2_5freceive',['LIN_master2_receive',['../_l_i_n__master2_8cpp.html#a0f1e230b8bc4d2014b846fae97b6e012',1,'LIN_master2_receive(void): LIN_master2.cpp'],['../_l_i_n__master2_8h.html#a0f1e230b8bc4d2014b846fae97b6e012',1,'LIN_master2_receive(void): LIN_master2.cpp']]], 11 | ['lin_5fmaster2_5fsend',['LIN_master2_send',['../_l_i_n__master2_8cpp.html#a8a61f3290d3f816cd1054ffe763b95a6',1,'LIN_master2_send(void): LIN_master2.cpp'],['../_l_i_n__master2_8h.html#a8a61f3290d3f816cd1054ffe763b95a6',1,'LIN_master2_send(void): LIN_master2.cpp']]], 12 | ['lin_5fmaster3_5fcopy',['LIN_master3_copy',['../_l_i_n__master3_8cpp.html#a739aec5018522aa94a63fcaab0cbbd35',1,'LIN_master3_copy(uint8_t numData, uint8_t *data): LIN_master3.cpp'],['../_l_i_n__master3_8h.html#a739aec5018522aa94a63fcaab0cbbd35',1,'LIN_master3_copy(uint8_t numData, uint8_t *data): LIN_master3.cpp']]], 13 | ['lin_5fmaster3_5freceive',['LIN_master3_receive',['../_l_i_n__master3_8cpp.html#a91c2a1f0f8f4b3c0e2cb690b66fb998c',1,'LIN_master3_receive(void): LIN_master3.cpp'],['../_l_i_n__master3_8h.html#a91c2a1f0f8f4b3c0e2cb690b66fb998c',1,'LIN_master3_receive(void): LIN_master3.cpp']]], 14 | ['lin_5fmaster3_5fsend',['LIN_master3_send',['../_l_i_n__master3_8cpp.html#acca9ceb9aacbde72e51f5a98aaf90f9f',1,'LIN_master3_send(void): LIN_master3.cpp'],['../_l_i_n__master3_8h.html#acca9ceb9aacbde72e51f5a98aaf90f9f',1,'LIN_master3_send(void): LIN_master3.cpp']]], 15 | ['lin_5fmaster_5f0',['LIN_Master_0',['../class_l_i_n___master__0.html#a5090c80837e719bf02bbdcd733452539',1,'LIN_Master_0']]], 16 | ['lin_5fmaster_5f1',['LIN_Master_1',['../class_l_i_n___master__1.html#aa77c5bc5b170c5183ccda5a7fce3414c',1,'LIN_Master_1']]], 17 | ['lin_5fmaster_5f2',['LIN_Master_2',['../class_l_i_n___master__2.html#a017431162425068a7172b66837da983e',1,'LIN_Master_2']]], 18 | ['lin_5fmaster_5f3',['LIN_Master_3',['../class_l_i_n___master__3.html#a400627c49e6cbb787beb4303b69f6883',1,'LIN_Master_3']]] 19 | ]; 20 | -------------------------------------------------------------------------------- /extras/html/search/functions_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['protectid',['protectID',['../class_l_i_n___master.html#a82ff96ca4e2f2a2632419336cd5ed3df',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/functions_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['receiveslaveresponse',['receiveSlaveResponse',['../class_l_i_n___master.html#ae1d1f965294aa35dbc722e7393a77315',1,'LIN_Master::receiveSlaveResponse(uint8_t id, uint8_t numData, void(*Rx_handler)(uint8_t, uint8_t *))'],['../class_l_i_n___master.html#af0fdc1f5516feafe02e03a44167383c4',1,'LIN_Master::receiveSlaveResponse(uint8_t id, uint8_t numData, uint8_t *data)']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/functions_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/functions_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['sendmasterrequest',['sendMasterRequest',['../class_l_i_n___master.html#a4cf186b50edda679927471ef1c47efaf',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/search/mag_sel.png -------------------------------------------------------------------------------- /extras/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
    9 |
    No Matches
    10 |
    11 | 12 | 13 | -------------------------------------------------------------------------------- /extras/html/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lin_20master_20node_20emulation',['LIN Master Node Emulation',['../index.html',1,'']]], 4 | ['library_20manager',['Library Manager',['../md__library__manager.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /extras/html/search/pages_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/pages_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['multiple_20lin',['Multiple LIN',['../md__multiple__l_i_n.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/pages_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/pages_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['operation_20modes',['Operation Modes',['../md__operation__modes.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/search/search_l.png -------------------------------------------------------------------------------- /extras/html/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/search/search_m.png -------------------------------------------------------------------------------- /extras/html/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/search/search_r.png -------------------------------------------------------------------------------- /extras/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "bcdefhlmoprsvw", 4 | 1: "l", 5 | 2: "dl", 6 | 3: "bcdehlprs", 7 | 4: "bdeflprsvw", 8 | 5: "d", 9 | 6: "l", 10 | 7: "l", 11 | 8: "l", 12 | 9: "lmo" 13 | }; 14 | 15 | var indexSectionNames = 16 | { 17 | 0: "all", 18 | 1: "classes", 19 | 2: "files", 20 | 3: "functions", 21 | 4: "variables", 22 | 5: "typedefs", 23 | 6: "enums", 24 | 7: "enumvalues", 25 | 8: "defines", 26 | 9: "pages" 27 | }; 28 | 29 | var indexSectionLabels = 30 | { 31 | 0: "All", 32 | 1: "Data Structures", 33 | 2: "Files", 34 | 3: "Functions", 35 | 4: "Variables", 36 | 5: "Typedefs", 37 | 6: "Enumerations", 38 | 7: "Enumerator", 39 | 8: "Macros", 40 | 9: "Pages" 41 | }; 42 | 43 | -------------------------------------------------------------------------------- /extras/html/search/typedefs_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/typedefs_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['decoder_5ft',['decoder_t',['../_l_i_n__master_8h.html#addd910faf05c9e05b99a74296c256b5d',1,'LIN_master.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/variables_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['background',['background',['../class_l_i_n___master.html#ac5bdc52e6924094e821cfc23ffb7344b',1,'LIN_Master']]], 4 | ['baudrate',['baudrate',['../class_l_i_n___master.html#a9a7b5c9604d002f1ca9214e9e0db4d31',1,'LIN_Master']]], 5 | ['bufrx',['bufRx',['../class_l_i_n___master.html#a190a766767fab1821783d85ba91ab3e7',1,'LIN_Master']]], 6 | ['buftx',['bufTx',['../class_l_i_n___master.html#ae0ffa16776d32ef81e3801a0526834cb',1,'LIN_Master']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /extras/html/search/variables_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['dataptr',['dataPtr',['../class_l_i_n___master.html#aa57d23aad8583a8a0c7e93ba995e3bbc',1,'LIN_Master']]], 4 | ['durationbreak',['durationBreak',['../class_l_i_n___master.html#a6032c445b26138423510da70f568c8ab',1,'LIN_Master']]], 5 | ['durationframe',['durationFrame',['../class_l_i_n___master.html#a2f98698c7cfd4ebdb320604606bffea2',1,'LIN_Master']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /extras/html/search/variables_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['error',['error',['../class_l_i_n___master.html#a136305d6a96d707caa11698f9cc813a0',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/variables_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['flagrxcomplete',['flagRxComplete',['../class_l_i_n___master.html#a551d6040e9de16538aa5340325af8a0a',1,'LIN_Master']]], 4 | ['flagtxcomplete',['flagTxComplete',['../class_l_i_n___master.html#aa36aa22315b364f7f0fecec6f37f2212',1,'LIN_Master']]], 5 | ['frametype',['frameType',['../class_l_i_n___master.html#ad21f2a01f28142ce4ec039f1da3f72aa',1,'LIN_Master']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /extras/html/search/variables_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lenrx',['lenRx',['../class_l_i_n___master.html#ab5068b1197d717b16d63d36e6ed59f76',1,'LIN_Master']]], 4 | ['lentx',['lenTx',['../class_l_i_n___master.html#a548cb1ad18cf4c509de0217dba9aa044',1,'LIN_Master']]], 5 | ['lin_5fmaster0',['LIN_master0',['../_l_i_n__master0_8cpp.html#ac39aac4c85ad44c2295a960af1887314',1,'LIN_master0(): LIN_master0.cpp'],['../_l_i_n__master0_8h.html#ac39aac4c85ad44c2295a960af1887314',1,'LIN_master0(): LIN_master0.cpp']]], 6 | ['lin_5fmaster1',['LIN_master1',['../_l_i_n__master1_8cpp.html#a8f49bda42871b7605cacb83dafd0e4ca',1,'LIN_master1(): LIN_master1.cpp'],['../_l_i_n__master1_8h.html#a8f49bda42871b7605cacb83dafd0e4ca',1,'LIN_master1(): LIN_master1.cpp']]], 7 | ['lin_5fmaster2',['LIN_master2',['../_l_i_n__master2_8cpp.html#ae06038c2dba5ba500d220e830d80cd5b',1,'LIN_master2(): LIN_master2.cpp'],['../_l_i_n__master2_8h.html#ae06038c2dba5ba500d220e830d80cd5b',1,'LIN_master2(): LIN_master2.cpp']]], 8 | ['lin_5fmaster3',['LIN_master3',['../_l_i_n__master3_8cpp.html#a2cfb68ff1972539800fa2e61a988ded4',1,'LIN_master3(): LIN_master3.cpp'],['../_l_i_n__master3_8h.html#a2cfb68ff1972539800fa2e61a988ded4',1,'LIN_master3(): LIN_master3.cpp']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /extras/html/search/variables_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['pserial',['pSerial',['../class_l_i_n___master.html#a0fcdb86f5ff745116638731630e588a1',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/variables_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['rx_5fhandler',['rx_handler',['../class_l_i_n___master.html#ae393334505b9c28d6a1fdedc4b5b3560',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/variables_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['state',['state',['../class_l_i_n___master.html#a7369d1273bb45d8d1cee372bb32a97df',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/variables_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['version',['version',['../class_l_i_n___master.html#ac9bf76b671f32f5f18c41585e7b06abe',1,'LIN_Master']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /extras/html/search/variables_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /extras/html/search/variables_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wrapperdefaultcallback',['wrapperDefaultCallback',['../class_l_i_n___master.html#aec46720f74bc65b61f58520c6b75a7ab',1,'LIN_Master']]], 4 | ['wrapperreceive',['wrapperReceive',['../class_l_i_n___master.html#a93c6225aa9bcc2701b4d918d6be3ab85',1,'LIN_Master']]], 5 | ['wrappersend',['wrapperSend',['../class_l_i_n___master.html#a3da83c78312e160d6d74ad76ff4e276c',1,'LIN_Master']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /extras/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/splitbar.png -------------------------------------------------------------------------------- /extras/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/sync_off.png -------------------------------------------------------------------------------- /extras/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/sync_on.png -------------------------------------------------------------------------------- /extras/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/tab_a.png -------------------------------------------------------------------------------- /extras/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/tab_b.png -------------------------------------------------------------------------------- /extras/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/tab_h.png -------------------------------------------------------------------------------- /extras/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/html/tab_s.png -------------------------------------------------------------------------------- /extras/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Redirecting to reference... 4 | 5 | 6 | 7 |

    Redirecting to reference... Link

    8 | 9 | 10 | -------------------------------------------------------------------------------- /extras/logo_LIN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gicking/LIN_master_Arduino/8aa039a9a3a0b898e844f1a5e5f13defbf17e197/extras/logo_LIN.png -------------------------------------------------------------------------------- /keywords.txt: -------------------------------------------------------------------------------- 1 | ############################################### 2 | # Syntax coloring Map For LIN Master library 3 | ############################################### 4 | 5 | ################################### 6 | # Classes and Datatypes (KEYWORD1) 7 | ################################### 8 | 9 | # instances 10 | LIN_master0 KEYWORD1 11 | LIN_master1 KEYWORD1 12 | LIN_master2 KEYWORD1 13 | LIN_master3 KEYWORD1 14 | 15 | 16 | ################################### 17 | # Methods and Functions (KEYWORD2) 18 | ################################### 19 | 20 | # class variables 21 | baudrate KEYWORD2 22 | version KEYWORD2 23 | background KEYWORD2 24 | state KEYWORD2 25 | error KEYWORD2 26 | 27 | 28 | # class methods 29 | begin KEYWORD2 30 | end KEYWORD2 31 | sendMasterRequest KEYWORD2 32 | receiveSlaveResponse KEYWORD2 33 | receiveFrame KEYWORD2 34 | getState KEYWORD2 35 | 36 | 37 | ################################### 38 | # Constants (LITERAL1) 39 | ################################### 40 | 41 | LIN_V1 LITERAL1 42 | LIN_V2 LITERAL1 43 | 44 | LIN_MASTER_REQUEST LITERAL1 45 | LIN_SLAVE_RESPONSE LITERAL1 46 | 47 | LIN_SUCCESS LITERAL1 48 | LIN_ERROR_STATE LITERAL1 49 | LIN_ERROR_ECHO LITERAL1 50 | LIN_ERROR_TIMEOUT LITERAL1 51 | LIN_ERROR_CHK LITERAL1 52 | LIN_ERROR_MISC LITERAL1 53 | 54 | LIN_STATE_OFF LITERAL1 55 | LIN_STATE_IDLE LITERAL1 56 | LIN_STATE_BREAK LITERAL1 57 | LIN_STATE_FRAME LITERAL1 58 | 59 | ##################### END ##################### 60 | -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=LIN master emulation with background operation 2 | version=1.7 3 | author=Georg Icking-Konert 4 | maintainer=Georg Icking-Konert (gicking) 5 | sentence=LIN master node emulation with preemptive background operation 6 | paragraph=Provide a class to emulate a Local Interconnect Network (LIN) master node with preemptive background operation 7 | category=Communication 8 | url=https://github.com/gicking/LIN_master_Arduino 9 | architectures=avr,sam,esp32,esp8266 10 | depends=Task Scheduler (>=1.3.0) 11 | -------------------------------------------------------------------------------- /src/LIN_master0.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | \file LIN_master0.cpp 3 | \brief LIN master emulation library for Serial 4 | \details This library provides a master node emulation for a LIN bus via Serial. 5 | For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network 6 | \author Georg Icking-Konert 7 | */ 8 | 9 | // include files 10 | #include "Arduino.h" 11 | #include "LIN_master0.h" 12 | 13 | // only compile if controller supports Serial 14 | #if defined(HAVE_HWSERIAL0) || defined(SERIAL_PORT_HARDWARE) || (SOC_UART_NUM > 0) 15 | 16 | 17 | /// instance of LIN master via Serial 18 | LIN_Master_0 LIN_master0; 19 | 20 | 21 | /** 22 | \brief Constructor for LIN node class for Serial 23 | \details Constructor for LIN node class for Serial. Store pointers used serial interface. 24 | */ 25 | LIN_Master_0::LIN_Master_0() 26 | { 27 | // store used serial interface 28 | pSerial = &Serial; // store pointer to used serial 29 | #if defined(__AVR__) // on AVR also store "double baudrate" control register (for sync break) 30 | UCSRA = &UCSR0A; 31 | #endif 32 | 33 | // store callback functions for task scheduler 34 | wrapperSend = LIN_master0_send; 35 | wrapperReceive = LIN_master0_receive; 36 | wrapperDefaultCallback = LIN_master0_copy; 37 | 38 | // for debug store class name for convenience 39 | #if (LIN_DEBUG_LEVEL != 0) 40 | sprintf(serialName, "LIN_Master_0"); 41 | #endif 42 | 43 | } // LIN_Master_0::LIN_Master_0() 44 | 45 | 46 | 47 | /** 48 | \brief Wrapper for LIN_master0 transmission handler 49 | \details Wrapper for LIN_master0 transmission handler. This is required for 50 | task scheduler access to non-static member functions. 51 | */ 52 | void LIN_master0_send(void) 53 | { 54 | // call class method 55 | LIN_master0.handlerSend(); 56 | 57 | } // LIN_master0_send 58 | 59 | 60 | 61 | /** 62 | \brief Wrapper for LIN_master0 reception handler 63 | \details Wrapper for LIN_master0 reception handler. This is required for 64 | task scheduler access to non-static member functions. 65 | */ 66 | void LIN_master0_receive(void) 67 | { 68 | // call class method 69 | LIN_master0.handlerReceive(); 70 | 71 | } // LIN_master0_receive 72 | 73 | 74 | 75 | /** 76 | \brief Wrapper for LIN_master0 default receive callback function 77 | \details Wrapper for LIN_master0 default receive callback function for receiveSlaveResponse(). 78 | Just copies data to a specified buffer. 79 | */ 80 | void LIN_master0_copy(uint8_t numData, uint8_t *data) 81 | { 82 | // copy received data to user buffer 83 | LIN_master0.defaultCallback(numData, data); 84 | 85 | } // LIN_master0_copy 86 | 87 | #endif // HAVE_HWSERIAL0 || SERIAL_PORT_HARDWARE 88 | -------------------------------------------------------------------------------- /src/LIN_master0.h: -------------------------------------------------------------------------------- 1 | /** 2 | \file LIN_master0.h 3 | \brief LIN master emulation library for Serial 4 | \details This library provides a master node emulation for a LIN bus via Serial. 5 | For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network 6 | \author Georg Icking-Konert 7 | */ 8 | 9 | /*----------------------------------------------------------------------------- 10 | MODULE DEFINITION FOR MULTIPLE INCLUSION 11 | -----------------------------------------------------------------------------*/ 12 | #ifndef _LIN_MASTER0_H_ 13 | #define _LIN_MASTER0_H_ 14 | 15 | 16 | /*----------------------------------------------------------------------------- 17 | INCLUDE FILES 18 | -----------------------------------------------------------------------------*/ 19 | 20 | // include required libraries 21 | #include "Arduino.h" 22 | #include "LIN_master.h" 23 | 24 | 25 | // only compile if controller supports Serial 26 | #if defined(HAVE_HWSERIAL0) || defined(SERIAL_PORT_HARDWARE) || (SOC_UART_NUM > 0) 27 | 28 | 29 | /*----------------------------------------------------------------------------- 30 | GLOBAL CLASS 31 | -----------------------------------------------------------------------------*/ 32 | /** 33 | \brief LIN master node class 34 | 35 | \details LIN master node class. For background operation use wrapper functions. 36 | */ 37 | class LIN_Master_0 : public LIN_Master 38 | { 39 | public: 40 | 41 | // public methods 42 | LIN_Master_0(); //!< class constructor 43 | }; 44 | 45 | // external reference to LIN_master0 46 | extern LIN_Master_0 LIN_master0; 47 | 48 | /// Wrapper for LIN_master0 transmission handler 49 | void LIN_master0_send(void); 50 | 51 | /// Wrapper for LIN_master0 reception handler 52 | void LIN_master0_receive(void); 53 | 54 | /// Wrapper for LIN_master0 default receive callback function 55 | void LIN_master0_copy(uint8_t numData, uint8_t *data); 56 | 57 | #endif // HAVE_HWSERIAL0 || SERIAL_PORT_HARDWARE 58 | 59 | /*----------------------------------------------------------------------------- 60 | END OF MODULE DEFINITION FOR MULTIPLE INLUSION 61 | -----------------------------------------------------------------------------*/ 62 | #endif // _LIN_MASTER0_H_ 63 | -------------------------------------------------------------------------------- /src/LIN_master1.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | \file LIN_master1.cpp 3 | \brief LIN master emulation library for Serial1 4 | \details This library provides a master node emulation for a LIN bus via Serial1. 5 | For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network 6 | \author Georg Icking-Konert 7 | */ 8 | 9 | // include files 10 | #include "Arduino.h" 11 | #include "LIN_master1.h" 12 | 13 | // only compile if controller supports Serial1 14 | #if defined(HAVE_HWSERIAL1) || defined(SERIAL_PORT_HARDWARE1) || (SOC_UART_NUM > 1) 15 | 16 | 17 | /// instance of LIN master via Serial1 18 | LIN_Master_1 LIN_master1; 19 | 20 | 21 | /** 22 | \brief Constructor for LIN node class for Serial1 23 | \details Constructor for LIN node class for Serial1. Store pointers used serial interface. 24 | */ 25 | LIN_Master_1::LIN_Master_1() 26 | { 27 | // store used serial interface 28 | pSerial = &Serial1; // store pointer to used serial 29 | #if defined(__AVR__) // on AVR also store "double baudrate" control register (for sync break) 30 | UCSRA = &UCSR1A; 31 | #endif 32 | 33 | // store callback functions for task scheduler 34 | wrapperSend = LIN_master1_send; 35 | wrapperReceive = LIN_master1_receive; 36 | wrapperDefaultCallback = LIN_master1_copy; 37 | 38 | // for debug store class name for convenience 39 | #if (LIN_DEBUG_LEVEL != 0) 40 | sprintf(serialName, "LIN_Master_1"); 41 | #endif 42 | 43 | } // LIN_Master_1::LIN_Master_1() 44 | 45 | 46 | 47 | /** 48 | \brief Wrapper for LIN_master1 transmission handler 49 | \details Wrapper for LIN_master1 transmission handler. This is required for 50 | task scheduler access to non-static member functions. 51 | */ 52 | void LIN_master1_send(void) 53 | { 54 | // call class method 55 | LIN_master1.handlerSend(); 56 | 57 | } // LIN_master1_send 58 | 59 | 60 | 61 | /** 62 | \brief Wrapper for LIN_master1 reception handler 63 | \details Wrapper for LIN_master1 reception handler. This is required for 64 | task scheduler access to non-static member functions. 65 | */ 66 | void LIN_master1_receive(void) 67 | { 68 | // call class method 69 | LIN_master1.handlerReceive(); 70 | 71 | } // LIN_master1_receive 72 | 73 | 74 | 75 | /** 76 | \brief Wrapper for LIN_master1 default receive callback function 77 | \details Wrapper for LIN_master1 default receive callback function for receiveSlaveResponse(). 78 | Just copies data to a specified buffer. 79 | */ 80 | void LIN_master1_copy(uint8_t numData, uint8_t *data) 81 | { 82 | // copy received data to user buffer 83 | LIN_master1.defaultCallback(numData, data); 84 | 85 | } // LIN_master1_copy 86 | 87 | #endif // HAVE_HWSERIAL1 || SERIAL_PORT_HARDWARE1 88 | -------------------------------------------------------------------------------- /src/LIN_master1.h: -------------------------------------------------------------------------------- 1 | /** 2 | \file LIN_master1.h 3 | \brief LIN master emulation library for Serial1 4 | \details This library provides a master node emulation for a LIN bus via Serial1. 5 | For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network 6 | \author Georg Icking-Konert 7 | */ 8 | 9 | /*----------------------------------------------------------------------------- 10 | MODULE DEFINITION FOR MULTIPLE INCLUSION 11 | -----------------------------------------------------------------------------*/ 12 | #ifndef _LIN_MASTER1_H_ 13 | #define _LIN_MASTER1_H_ 14 | 15 | 16 | /*----------------------------------------------------------------------------- 17 | INCLUDE FILES 18 | -----------------------------------------------------------------------------*/ 19 | 20 | // include required libraries 21 | #include "Arduino.h" 22 | #include "LIN_master.h" 23 | 24 | 25 | // only compile if controller supports Serial1 26 | #if defined(HAVE_HWSERIAL1) || defined(SERIAL_PORT_HARDWARE1) || (SOC_UART_NUM > 1) 27 | 28 | /*----------------------------------------------------------------------------- 29 | GLOBAL CLASS 30 | -----------------------------------------------------------------------------*/ 31 | /** 32 | \brief LIN master node class 33 | 34 | \details LIN master node class. For background operation use wrapper functions. 35 | */ 36 | class LIN_Master_1 : public LIN_Master 37 | { 38 | public: 39 | 40 | // public methods 41 | LIN_Master_1(); //!< class constructor 42 | }; 43 | 44 | // external reference to LIN_master1 45 | extern LIN_Master_1 LIN_master1; 46 | 47 | /// Wrapper for LIN_master1 transmission handler 48 | void LIN_master1_send(void); 49 | 50 | /// Wrapper for LIN_master1 reception handler 51 | void LIN_master1_receive(void); 52 | 53 | /// Wrapper for LIN_master1 default receive callback function 54 | void LIN_master1_copy(uint8_t numData, uint8_t *data); 55 | 56 | #endif // HAVE_HWSERIAL1 || SERIAL_PORT_HARDWARE1 57 | 58 | /*----------------------------------------------------------------------------- 59 | END OF MODULE DEFINITION FOR MULTIPLE INLUSION 60 | -----------------------------------------------------------------------------*/ 61 | #endif // _LIN_MASTER1_H_ 62 | -------------------------------------------------------------------------------- /src/LIN_master2.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | \file LIN_master2.cpp 3 | \brief LIN master emulation library for Serial2 4 | \details This library provides a master node emulation for a LIN bus via Serial2. 5 | For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network 6 | \author Georg Icking-Konert 7 | */ 8 | 9 | // include files 10 | #include "Arduino.h" 11 | #include "LIN_master2.h" 12 | 13 | // only compile if controller supports Serial2 14 | #if defined(HAVE_HWSERIAL2) || defined(SERIAL_PORT_HARDWARE2) || (SOC_UART_NUM > 2) 15 | 16 | 17 | /// instance of LIN master via Serial2 18 | LIN_Master_2 LIN_master2; 19 | 20 | 21 | /** 22 | \brief Constructor for LIN node class for Serial2 23 | \details Constructor for LIN node class for Serial2. Store pointers used serial interface. 24 | */ 25 | LIN_Master_2::LIN_Master_2() 26 | { 27 | // store used serial interface 28 | pSerial = &Serial2; // store pointer to used serial 29 | #if defined(__AVR__) // on AVR also store "double baudrate" control register (for sync break) 30 | UCSRA = &UCSR2A; 31 | #endif 32 | 33 | // store callback functions for task scheduler 34 | wrapperSend = LIN_master2_send; 35 | wrapperReceive = LIN_master2_receive; 36 | wrapperDefaultCallback = LIN_master2_copy; 37 | 38 | // for debug store class name for convenience 39 | #if (LIN_DEBUG_LEVEL != 0) 40 | sprintf(serialName, "LIN_Master_2"); 41 | #endif 42 | 43 | } // LIN_Master_2::LIN_Master_2() 44 | 45 | 46 | 47 | /** 48 | \brief Wrapper for LIN_master2 transmission handler 49 | \details Wrapper for LIN_master2 transmission handler. This is required for 50 | task scheduler access to non-static member functions. 51 | */ 52 | void LIN_master2_send(void) 53 | { 54 | // call class method 55 | LIN_master2.handlerSend(); 56 | 57 | } // LIN_master2_send 58 | 59 | 60 | 61 | /** 62 | \brief Wrapper for LIN_master2 reception handler 63 | \details Wrapper for LIN_master2 reception handler. This is required for 64 | task scheduler access to non-static member functions. 65 | */ 66 | void LIN_master2_receive(void) 67 | { 68 | // call class method 69 | LIN_master2.handlerReceive(); 70 | 71 | } // LIN_master2_receive 72 | 73 | 74 | 75 | /** 76 | \brief Wrapper for LIN_master2 default receive callback function 77 | \details Wrapper for LIN_master2 default receive callback function for receiveSlaveResponse(). 78 | Just copies data to a specified buffer. 79 | */ 80 | void LIN_master2_copy(uint8_t numData, uint8_t *data) 81 | { 82 | // copy received data to user buffer 83 | LIN_master2.defaultCallback(numData, data); 84 | 85 | } // LIN_master2_copy 86 | 87 | #endif // HAVE_HWSERIAL2 || SERIAL_PORT_HARDWARE2 88 | -------------------------------------------------------------------------------- /src/LIN_master2.h: -------------------------------------------------------------------------------- 1 | /** 2 | \file LIN_master2.h 3 | \brief LIN master emulation library for Serial2 4 | \details This library provides a master node emulation for a LIN bus via Serial2. 5 | For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network 6 | \author Georg Icking-Konert 7 | */ 8 | 9 | /*----------------------------------------------------------------------------- 10 | MODULE DEFINITION FOR MULTIPLE INCLUSION 11 | -----------------------------------------------------------------------------*/ 12 | #ifndef _LIN_MASTER2_H_ 13 | #define _LIN_MASTER2_H_ 14 | 15 | 16 | /*----------------------------------------------------------------------------- 17 | INCLUDE FILES 18 | -----------------------------------------------------------------------------*/ 19 | 20 | // include required libraries 21 | #include "Arduino.h" 22 | #include "LIN_master.h" 23 | 24 | 25 | // only compile if controller supports Serial2 26 | #if defined(HAVE_HWSERIAL2) || defined(SERIAL_PORT_HARDWARE2) || (SOC_UART_NUM > 2) 27 | 28 | 29 | /*----------------------------------------------------------------------------- 30 | GLOBAL CLASS 31 | -----------------------------------------------------------------------------*/ 32 | /** 33 | \brief LIN master node class 34 | 35 | \details LIN master node class. For background operation use wrapper functions. 36 | */ 37 | class LIN_Master_2 : public LIN_Master 38 | { 39 | public: 40 | 41 | // public methods 42 | LIN_Master_2(); //!< class constructor 43 | }; 44 | 45 | // external reference to LIN_master2 46 | extern LIN_Master_2 LIN_master2; 47 | 48 | /// Wrapper for LIN_master2 transmission handler 49 | void LIN_master2_send(void); 50 | 51 | /// Wrapper for LIN_master2 reception handler 52 | void LIN_master2_receive(void); 53 | 54 | /// Wrapper for LIN_master2 default receive callback function 55 | void LIN_master2_copy(uint8_t numData, uint8_t *data); 56 | 57 | #endif // HAVE_HWSERIAL2 || SERIAL_PORT_HARDWARE2 58 | 59 | /*----------------------------------------------------------------------------- 60 | END OF MODULE DEFINITION FOR MULTIPLE INLUSION 61 | -----------------------------------------------------------------------------*/ 62 | #endif // _LIN_MASTER2_H_ 63 | -------------------------------------------------------------------------------- /src/LIN_master3.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | \file LIN_master3.cpp 3 | \brief LIN master emulation library for Serial3 4 | \details This library provides a master node emulation for a LIN bus via Serial3. 5 | For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network 6 | \author Georg Icking-Konert 7 | */ 8 | 9 | // include files 10 | #include "Arduino.h" 11 | #include "LIN_master3.h" 12 | 13 | // only compile if controller supports Serial3 14 | #if defined(HAVE_HWSERIAL3) || defined(SERIAL_PORT_HARDWARE3) || (SOC_UART_NUM > 3) 15 | 16 | 17 | /// instance of LIN master via Serial3 18 | LIN_Master_3 LIN_master3; 19 | 20 | 21 | /** 22 | \brief Constructor for LIN node class for Serial3 23 | \details Constructor for LIN node class for Serial3. Store pointers used serial interface. 24 | */ 25 | LIN_Master_3::LIN_Master_3() 26 | { 27 | // store used serial interface 28 | pSerial = &Serial3; // store pointer to used serial 29 | #if defined(__AVR__) // on AVR also store "double baudrate" control register (for sync break) 30 | UCSRA = &UCSR3A; 31 | #endif 32 | 33 | // store callback functions for task scheduler 34 | wrapperSend = LIN_master3_send; 35 | wrapperReceive = LIN_master3_receive; 36 | wrapperDefaultCallback = LIN_master3_copy; 37 | 38 | // for debug store class name for convenience 39 | #if (LIN_DEBUG_LEVEL != 0) 40 | sprintf(serialName, "LIN_Master_3"); 41 | #endif 42 | 43 | } // LIN_Master_3::LIN_Master_3() 44 | 45 | 46 | 47 | /** 48 | \brief Wrapper for LIN_master3 transmission handler 49 | \details Wrapper for LIN_master3 transmission handler. This is required for 50 | task scheduler access to non-static member functions. 51 | */ 52 | void LIN_master3_send(void) 53 | { 54 | // call class method 55 | LIN_master3.handlerSend(); 56 | 57 | } // LIN_master3_send 58 | 59 | 60 | 61 | /** 62 | \brief Wrapper for LIN_master3 reception handler 63 | \details Wrapper for LIN_master3 reception handler. This is required for 64 | task scheduler access to non-static member functions. 65 | */ 66 | void LIN_master3_receive(void) 67 | { 68 | // call class method 69 | LIN_master3.handlerReceive(); 70 | 71 | } // LIN_master3_receive 72 | 73 | 74 | 75 | /** 76 | \brief Wrapper for LIN_master3 default receive callback function 77 | \details Wrapper for LIN_master3 default receive callback function for receiveSlaveResponse(). 78 | Just copies data to a specified buffer. 79 | */ 80 | void LIN_master3_copy(uint8_t numData, uint8_t *data) 81 | { 82 | // copy received data to user buffer 83 | LIN_master3.defaultCallback(numData, data); 84 | 85 | } // LIN_master3_copy 86 | 87 | #endif // HAVE_HWSERIAL3 || SERIAL_PORT_HARDWARE3 88 | -------------------------------------------------------------------------------- /src/LIN_master3.h: -------------------------------------------------------------------------------- 1 | /** 2 | \file LIN_master3.h 3 | \brief LIN master emulation library for Serial3 4 | \details This library provides a master node emulation for a LIN bus via Serial3. 5 | For an explanation of the LIN bus and protocol e.g. see https://en.wikipedia.org/wiki/Local_Interconnect_Network 6 | \author Georg Icking-Konert 7 | */ 8 | 9 | /*----------------------------------------------------------------------------- 10 | MODULE DEFINITION FOR MULTIPLE INCLUSION 11 | -----------------------------------------------------------------------------*/ 12 | #ifndef _LIN_MASTER3_H_ 13 | #define _LIN_MASTER3_H_ 14 | 15 | 16 | /*----------------------------------------------------------------------------- 17 | INCLUDE FILES 18 | -----------------------------------------------------------------------------*/ 19 | 20 | // include required libraries 21 | #include "Arduino.h" 22 | #include "LIN_master.h" 23 | 24 | 25 | // only compile if controller supports Serial3 26 | #if defined(HAVE_HWSERIAL3) || defined(SERIAL_PORT_HARDWARE3) || (SOC_UART_NUM > 3) 27 | 28 | 29 | /*----------------------------------------------------------------------------- 30 | GLOBAL CLASS 31 | -----------------------------------------------------------------------------*/ 32 | /** 33 | \brief LIN master node class 34 | 35 | \details LIN master node class. For background operation use wrapper functions. 36 | */ 37 | class LIN_Master_3 : public LIN_Master 38 | { 39 | public: 40 | 41 | // public methods 42 | LIN_Master_3(); //!< class constructor 43 | }; 44 | 45 | // external reference to LIN_master3 46 | extern LIN_Master_3 LIN_master3; 47 | 48 | /// Wrapper for LIN_master3 transmission handler 49 | void LIN_master3_send(void); 50 | 51 | /// Wrapper for LIN_master3 reception handler 52 | void LIN_master3_receive(void); 53 | 54 | /// Wrapper for LIN_master3 default receive callback function 55 | void LIN_master3_copy(uint8_t numData, uint8_t *data); 56 | 57 | #endif // HAVE_HWSERIAL3 || SERIAL_PORT_HARDWARE3 58 | 59 | /*----------------------------------------------------------------------------- 60 | END OF MODULE DEFINITION FOR MULTIPLE INLUSION 61 | -----------------------------------------------------------------------------*/ 62 | #endif // _LIN_MASTER3_H_ 63 | --------------------------------------------------------------------------------