From b62f943bb340de45be584a0ea12be9cddabda82a Mon Sep 17 00:00:00 2001 From: darren siepka Date: Tue, 13 Jun 2017 02:58:00 +0100 Subject: [PATCH 1/4] changes to serial3 protocol and further tidyng with new canserial use --- reference/Speeduino base tune.msq | 123 ++++++++++++++++-------------- reference/speeduino.ini | 18 ++--- speeduino/cancomms.ino | 11 ++- speeduino/comms.h | 2 +- speeduino/comms.ino | 37 +++++---- speeduino/speeduino.ino | 4 +- 6 files changed, 100 insertions(+), 95 deletions(-) diff --git a/reference/Speeduino base tune.msq b/reference/Speeduino base tune.msq index 39e40999..97f2da6a 100644 --- a/reference/Speeduino base tune.msq +++ b/reference/Speeduino base tune.msq @@ -1,7 +1,7 @@ - - + + "CAN ID 0" @@ -216,7 +216,7 @@ "No" 25.5 3200.0 --21.0 +-5.814 38.0 2.0 "Dwell control" @@ -247,17 +247,17 @@ 74.0 85.0 - - -40.0 - -26.0 - -8.0 - 9.0 - 26.0 - 38.0 - 49.0 - 60.0 - 69.0 - 80.0 + + -40.014 + -14.814 + 17.586 + 48.186 + 78.786 + 100.386 + 120.186 + 139.986 + 156.186 + 175.986 8.0 @@ -268,13 +268,13 @@ 91.0 85.0 - - 58.0 - 82.0 - 93.0 - 104.0 - 116.0 - 140.0 + + 136.386 + 179.586 + 199.386 + 219.186 + 240.786 + 283.986 0.0 @@ -356,7 +356,7 @@ 100.0 20.0 0.0 -70.0 +157.986 16.0 1.0 15.0 @@ -387,16 +387,16 @@ 100.0 98.0 - - -40.0 - -20.0 - 0.0 - 20.0 - 35.0 - 50.0 - 60.0 - 90.0 - 120.0 + + -40.014 + -4.014 + 31.986 + 67.986 + 94.986 + 121.986 + 139.986 + 193.986 + 247.986 126.0 @@ -474,17 +474,17 @@ 16.0 9.0 - - -38.0 - -19.0 - 1.0 - 17.0 - 34.0 - 50.0 - 63.0 - 79.0 - 98.0 - 143.0 + + -36.414 + -2.214 + 33.786 + 62.586 + 93.186 + 121.986 + 145.386 + 174.186 + 208.386 + 289.386 123.0 @@ -498,30 +498,30 @@ 44.0 60.0 - - -28.0 - 6.0 - 44.0 - 76.0 + + -18.414 + 42.786 + 111.186 + 168.786 "None" "3" "1" "Normal" -20.0 +67.986 240.0 4.0 "No" "Off" "Board Default" -75.0 -2.0 +166.986 +36.0 6.0 - - 60.0 - -20.0 - -40.0 - 158.0 + + 139.986 + -4.014 + -40.014 + 316.386 @@ -713,6 +713,14 @@ "8" "8" "8" +"1" +"1" +"1" +"1" +"1" +"1" +"1" +"1" 255.0 255.0 255.0 @@ -772,6 +780,7 @@ 255.0 255.0 255.0 +"CAN ID 0" 255.0 255.0 255.0 @@ -799,9 +808,9 @@ + - diff --git a/reference/speeduino.ini b/reference/speeduino.ini index b4d142c8..d7958f07 100644 --- a/reference/speeduino.ini +++ b/reference/speeduino.ini @@ -738,9 +738,9 @@ page = 10 defaultValue = boostMaxDuty,100 defaultValue = sparkDur, 1.0 defaultValue = speeduino_tsCanId, 0 - ;defaultValue = true_address, 0 - ;defaultValue = realtime_base_address, 0 - ;defaultValue = obd_address, 0 + ; defaultValue = true_address, 0 + ; defaultValue = realtime_base_address, 0 + ; defaultValue = obd_address, 0 ;Default pins defaultValue = fanPin, 0 @@ -949,9 +949,9 @@ menuDialog = main #else enable_canbus = "This Enables the IO on the secondary serial port. This is serial3 on mega2560 processor, and Serial2 on STM32 and Teensy processor " #endif - speeduino_tsCanId = "This is the TsCanId that the Speeduino ECU will respond to. This should match the main controller CAN ID in project properties if it is connected directy to TunerStudio, Otherwise the device ID if connected via CAN passthrough" - true_address = "This is the 11bit Can address of the Speeduino ECU " - obd_address = "The 11bit Can address that the Speeduino ECU responds to for OBD2 diagnostic requests" + ;speeduino_tsCanId = "This is the TsCanId that the Speeduino ECU will respond to. This should match the main controller CAN ID in project properties if it is connected directy to TunerStudio, Otherwise the device ID if connected via CAN passthrough" + ;true_address = "This is the 11bit Can address of the Speeduino ECU " + ;obd_address = "The 11bit Can address that the Speeduino ECU responds to for OBD2 diagnostic requests" caninput_sel1 = "This Enables CAN data input channel 1 " caninput_sel2 = "This Enables CAN data input channel 2 " caninput_sel3 = "This Enables CAN data input channel 3 " @@ -1588,9 +1588,9 @@ menuDialog = main dialog = can_serial3IO, "CanBus/Serial3 IO interface" topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface" field = "Enable CanBus/Second Serial", enable_canbus - field = "Speeduino TsCanId", speeduino_tsCanId - field = "Realtime Data Base Can Address", realtime_base_address - field = "Speeduino OBD address", obd_address + ; field = "Speeduino TsCanId", speeduino_tsCanId + ; field = "Realtime Data Base Can Address", realtime_base_address + ; field = "Speeduino OBD address", obd_address dialog = serial3IO, "Serial3 IO interface" topicHelp = "http://speeduino.com/wiki/index.php/Serial3_IO_interface" diff --git a/speeduino/cancomms.ino b/speeduino/cancomms.ino index cac44fdc..77902ed4 100644 --- a/speeduino/cancomms.ino +++ b/speeduino/cancomms.ino @@ -18,7 +18,7 @@ void canCommand() switch (currentcanCommand) { case 'A': // sends the bytes of realtime values - sendValues(0, packetSize,3); //send values to serial3 + sendValues(0, packetSize,0x30,3); //send values to serial3 break; case 'G': // this is the reply command sent by the Can interface @@ -86,23 +86,22 @@ void canCommand() break; case 'r': //New format for the optimised OutputChannels - byte cmd; - + byte Cmd; if (CANSerial.available() >= 6) { CANSerial.read(); //Read the $tsCanId - cmd = CANSerial.read(); + Cmd = CANSerial.read(); uint16_t offset, length; - if(cmd == 0x30) //Send output channels command 0x30 is 48dec + if((Cmd == 0x30) || (Cmd >= 0x40 && Cmd <0x50) ) //Send output channels command 0x30 is 48dec, 0x40(64dec)-0x4F are external can request { byte tmp; tmp = CANSerial.read(); offset = word(CANSerial.read(), tmp); tmp = CANSerial.read(); length = word(CANSerial.read(), tmp); + sendValues(offset, length,Cmd, 3); - sendValues(offset, length, 3); } else { diff --git a/speeduino/comms.h b/speeduino/comms.h index 81e1016e..223333dc 100644 --- a/speeduino/comms.h +++ b/speeduino/comms.h @@ -40,7 +40,7 @@ const char pageTitles[] PROGMEM //This is being stored in the avr flash instead }; void command();//This is the heart of the Command Line Interpeter. All that needed to be done was to make it human readable. -void sendValues(uint16_t offset, uint16_t packetlength, byte portnum); +void sendValues(uint16_t offset, uint16_t packetlength,byte cmd, byte portnum); void receiveValue(int offset, byte newValue); void saveConfig(); void sendPage(bool useChar); diff --git a/speeduino/comms.ino b/speeduino/comms.ino index f81df42d..d80a27a1 100644 --- a/speeduino/comms.ino +++ b/speeduino/comms.ino @@ -21,7 +21,7 @@ void command() { case 'A': // send x bytes of realtime values - sendValues(0, packetSize, 0); //send values to serial0 + sendValues(0, packetSize,0x30, 0); //send values to serial0 break; @@ -190,7 +190,7 @@ void command() offset = word(Serial.read(), tmp); tmp = Serial.read(); length = word(Serial.read(), tmp); - sendValues(offset, length, 0); + sendValues(offset, length,cmd, 0); } else { @@ -244,33 +244,23 @@ void command() This function returns the current values of a fixed group of variables */ //void sendValues(int packetlength, byte portNum) -void sendValues(uint16_t offset, uint16_t packetLength, byte portNum) +void sendValues(uint16_t offset, uint16_t packetLength, byte cmd, byte portNum) { byte fullStatus[packetSize]; if (portNum == 3) { //CAN serial - #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) //ATmega2561 does not have Serial3 + #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)|| defined(CORE_STM32) || defined (CORE_TEENSY) //ATmega2561 does not have Serial3 if (offset == 0) { - Serial3.write("A"); //confirm cmd type + CANSerial.write("A"); //confirm cmd type } else { - Serial3.write("r"); //confirm cmd type + CANSerial.write("r"); //confirm cmd type + CANSerial.write(cmd); } - Serial3.write(packetLength); //confirm no of byte to be sent - #elif defined(CORE_STM32) || defined (CORE_TEENSY) - if (offset == 0) - { - Serial2.write("A"); //confirm cmd type - } - else - { - Serial2.write("r"); //confirm cmd type - } - Serial2.write(packetLength); //confirm no of byte to be sent #endif } else @@ -289,8 +279,8 @@ void sendValues(uint16_t offset, uint16_t packetLength, byte portNum) fullStatus[5] = (byte)(currentStatus.IAT + CALIBRATION_TEMPERATURE_OFFSET); //mat fullStatus[6] = (byte)(currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET); //Coolant ADC fullStatus[7] = currentStatus.tpsADC; //TPS (Raw 0-255) - fullStatus[8] = currentStatus.battery10; //battery voltage - fullStatus[9] = currentStatus.O2; //O2 + fullStatus[8] = 121;//currentStatus.battery10; //battery voltage + fullStatus[9] = 54;//currentStatus.O2; //O2 fullStatus[10] = currentStatus.egoCorrection; //Exhaust gas correction (%) fullStatus[11] = currentStatus.iatCorrection; //Air temperature Correction (%) fullStatus[12] = currentStatus.wueCorrection; //Warmup enrichment (%) @@ -350,7 +340,14 @@ void sendValues(uint16_t offset, uint16_t packetLength, byte portNum) for(byte x=0; x SERIAL_BUFFER_THRESHOLD) ) + if ( ((mainLoopCount & 31) == 1) or (CANSerial.available() > SERIAL_BUFFER_THRESHOLD) ) { - if (Serial3.available() > 0) + if (CANSerial.available() > 0) { canCommand(); } From 0296f064386f916b59240d8cc70c4a01cafbd024 Mon Sep 17 00:00:00 2001 From: darren siepka Date: Tue, 13 Jun 2017 02:58:00 +0100 Subject: [PATCH 2/4] changes to serial3 protocol and further tidyng with new canserial use --- reference/Speeduino base tune.msq | 123 ++++++++++++++++-------------- reference/speeduino.ini | 18 ++--- speeduino/cancomms.ino | 11 ++- speeduino/comms.h | 2 +- speeduino/comms.ino | 33 ++++---- speeduino/speeduino.ino | 4 +- 6 files changed, 98 insertions(+), 93 deletions(-) diff --git a/reference/Speeduino base tune.msq b/reference/Speeduino base tune.msq index 39e40999..97f2da6a 100644 --- a/reference/Speeduino base tune.msq +++ b/reference/Speeduino base tune.msq @@ -1,7 +1,7 @@ - - + + "CAN ID 0" @@ -216,7 +216,7 @@ "No" 25.5 3200.0 --21.0 +-5.814 38.0 2.0 "Dwell control" @@ -247,17 +247,17 @@ 74.0 85.0 - - -40.0 - -26.0 - -8.0 - 9.0 - 26.0 - 38.0 - 49.0 - 60.0 - 69.0 - 80.0 + + -40.014 + -14.814 + 17.586 + 48.186 + 78.786 + 100.386 + 120.186 + 139.986 + 156.186 + 175.986 8.0 @@ -268,13 +268,13 @@ 91.0 85.0 - - 58.0 - 82.0 - 93.0 - 104.0 - 116.0 - 140.0 + + 136.386 + 179.586 + 199.386 + 219.186 + 240.786 + 283.986 0.0 @@ -356,7 +356,7 @@ 100.0 20.0 0.0 -70.0 +157.986 16.0 1.0 15.0 @@ -387,16 +387,16 @@ 100.0 98.0 - - -40.0 - -20.0 - 0.0 - 20.0 - 35.0 - 50.0 - 60.0 - 90.0 - 120.0 + + -40.014 + -4.014 + 31.986 + 67.986 + 94.986 + 121.986 + 139.986 + 193.986 + 247.986 126.0 @@ -474,17 +474,17 @@ 16.0 9.0 - - -38.0 - -19.0 - 1.0 - 17.0 - 34.0 - 50.0 - 63.0 - 79.0 - 98.0 - 143.0 + + -36.414 + -2.214 + 33.786 + 62.586 + 93.186 + 121.986 + 145.386 + 174.186 + 208.386 + 289.386 123.0 @@ -498,30 +498,30 @@ 44.0 60.0 - - -28.0 - 6.0 - 44.0 - 76.0 + + -18.414 + 42.786 + 111.186 + 168.786 "None" "3" "1" "Normal" -20.0 +67.986 240.0 4.0 "No" "Off" "Board Default" -75.0 -2.0 +166.986 +36.0 6.0 - - 60.0 - -20.0 - -40.0 - 158.0 + + 139.986 + -4.014 + -40.014 + 316.386 @@ -713,6 +713,14 @@ "8" "8" "8" +"1" +"1" +"1" +"1" +"1" +"1" +"1" +"1" 255.0 255.0 255.0 @@ -772,6 +780,7 @@ 255.0 255.0 255.0 +"CAN ID 0" 255.0 255.0 255.0 @@ -799,9 +808,9 @@ + - diff --git a/reference/speeduino.ini b/reference/speeduino.ini index b4d142c8..d7958f07 100644 --- a/reference/speeduino.ini +++ b/reference/speeduino.ini @@ -738,9 +738,9 @@ page = 10 defaultValue = boostMaxDuty,100 defaultValue = sparkDur, 1.0 defaultValue = speeduino_tsCanId, 0 - ;defaultValue = true_address, 0 - ;defaultValue = realtime_base_address, 0 - ;defaultValue = obd_address, 0 + ; defaultValue = true_address, 0 + ; defaultValue = realtime_base_address, 0 + ; defaultValue = obd_address, 0 ;Default pins defaultValue = fanPin, 0 @@ -949,9 +949,9 @@ menuDialog = main #else enable_canbus = "This Enables the IO on the secondary serial port. This is serial3 on mega2560 processor, and Serial2 on STM32 and Teensy processor " #endif - speeduino_tsCanId = "This is the TsCanId that the Speeduino ECU will respond to. This should match the main controller CAN ID in project properties if it is connected directy to TunerStudio, Otherwise the device ID if connected via CAN passthrough" - true_address = "This is the 11bit Can address of the Speeduino ECU " - obd_address = "The 11bit Can address that the Speeduino ECU responds to for OBD2 diagnostic requests" + ;speeduino_tsCanId = "This is the TsCanId that the Speeduino ECU will respond to. This should match the main controller CAN ID in project properties if it is connected directy to TunerStudio, Otherwise the device ID if connected via CAN passthrough" + ;true_address = "This is the 11bit Can address of the Speeduino ECU " + ;obd_address = "The 11bit Can address that the Speeduino ECU responds to for OBD2 diagnostic requests" caninput_sel1 = "This Enables CAN data input channel 1 " caninput_sel2 = "This Enables CAN data input channel 2 " caninput_sel3 = "This Enables CAN data input channel 3 " @@ -1588,9 +1588,9 @@ menuDialog = main dialog = can_serial3IO, "CanBus/Serial3 IO interface" topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface" field = "Enable CanBus/Second Serial", enable_canbus - field = "Speeduino TsCanId", speeduino_tsCanId - field = "Realtime Data Base Can Address", realtime_base_address - field = "Speeduino OBD address", obd_address + ; field = "Speeduino TsCanId", speeduino_tsCanId + ; field = "Realtime Data Base Can Address", realtime_base_address + ; field = "Speeduino OBD address", obd_address dialog = serial3IO, "Serial3 IO interface" topicHelp = "http://speeduino.com/wiki/index.php/Serial3_IO_interface" diff --git a/speeduino/cancomms.ino b/speeduino/cancomms.ino index cac44fdc..77902ed4 100644 --- a/speeduino/cancomms.ino +++ b/speeduino/cancomms.ino @@ -18,7 +18,7 @@ void canCommand() switch (currentcanCommand) { case 'A': // sends the bytes of realtime values - sendValues(0, packetSize,3); //send values to serial3 + sendValues(0, packetSize,0x30,3); //send values to serial3 break; case 'G': // this is the reply command sent by the Can interface @@ -86,23 +86,22 @@ void canCommand() break; case 'r': //New format for the optimised OutputChannels - byte cmd; - + byte Cmd; if (CANSerial.available() >= 6) { CANSerial.read(); //Read the $tsCanId - cmd = CANSerial.read(); + Cmd = CANSerial.read(); uint16_t offset, length; - if(cmd == 0x30) //Send output channels command 0x30 is 48dec + if((Cmd == 0x30) || (Cmd >= 0x40 && Cmd <0x50) ) //Send output channels command 0x30 is 48dec, 0x40(64dec)-0x4F are external can request { byte tmp; tmp = CANSerial.read(); offset = word(CANSerial.read(), tmp); tmp = CANSerial.read(); length = word(CANSerial.read(), tmp); + sendValues(offset, length,Cmd, 3); - sendValues(offset, length, 3); } else { diff --git a/speeduino/comms.h b/speeduino/comms.h index 81e1016e..223333dc 100644 --- a/speeduino/comms.h +++ b/speeduino/comms.h @@ -40,7 +40,7 @@ const char pageTitles[] PROGMEM //This is being stored in the avr flash instead }; void command();//This is the heart of the Command Line Interpeter. All that needed to be done was to make it human readable. -void sendValues(uint16_t offset, uint16_t packetlength, byte portnum); +void sendValues(uint16_t offset, uint16_t packetlength,byte cmd, byte portnum); void receiveValue(int offset, byte newValue); void saveConfig(); void sendPage(bool useChar); diff --git a/speeduino/comms.ino b/speeduino/comms.ino index f81df42d..48ebd4c8 100644 --- a/speeduino/comms.ino +++ b/speeduino/comms.ino @@ -21,7 +21,7 @@ void command() { case 'A': // send x bytes of realtime values - sendValues(0, packetSize, 0); //send values to serial0 + sendValues(0, packetSize,0x30, 0); //send values to serial0 break; @@ -190,7 +190,7 @@ void command() offset = word(Serial.read(), tmp); tmp = Serial.read(); length = word(Serial.read(), tmp); - sendValues(offset, length, 0); + sendValues(offset, length,cmd, 0); } else { @@ -244,33 +244,23 @@ void command() This function returns the current values of a fixed group of variables */ //void sendValues(int packetlength, byte portNum) -void sendValues(uint16_t offset, uint16_t packetLength, byte portNum) +void sendValues(uint16_t offset, uint16_t packetLength, byte cmd, byte portNum) { byte fullStatus[packetSize]; if (portNum == 3) { //CAN serial - #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) //ATmega2561 does not have Serial3 + #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)|| defined(CORE_STM32) || defined (CORE_TEENSY) //ATmega2561 does not have Serial3 if (offset == 0) { - Serial3.write("A"); //confirm cmd type + CANSerial.write("A"); //confirm cmd type } else { - Serial3.write("r"); //confirm cmd type + CANSerial.write("r"); //confirm cmd type + CANSerial.write(cmd); } - Serial3.write(packetLength); //confirm no of byte to be sent - #elif defined(CORE_STM32) || defined (CORE_TEENSY) - if (offset == 0) - { - Serial2.write("A"); //confirm cmd type - } - else - { - Serial2.write("r"); //confirm cmd type - } - Serial2.write(packetLength); //confirm no of byte to be sent #endif } else @@ -350,7 +340,14 @@ void sendValues(uint16_t offset, uint16_t packetLength, byte portNum) for(byte x=0; x SERIAL_BUFFER_THRESHOLD) ) + if ( ((mainLoopCount & 31) == 1) or (CANSerial.available() > SERIAL_BUFFER_THRESHOLD) ) { - if (Serial3.available() > 0) + if (CANSerial.available() > 0) { canCommand(); } From 94f67f6a49e60858f845c297a6af1524d2c8deab Mon Sep 17 00:00:00 2001 From: darren siepka Date: Tue, 13 Jun 2017 03:12:32 +0100 Subject: [PATCH 3/4] removed test code --- speeduino/comms.ino | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/speeduino/comms.ino b/speeduino/comms.ino index ffd3cc2f..86e9562a 100644 --- a/speeduino/comms.ino +++ b/speeduino/comms.ino @@ -279,8 +279,8 @@ void sendValues(uint16_t offset, uint16_t packetLength, byte cmd, byte portNum) fullStatus[5] = (byte)(currentStatus.IAT + CALIBRATION_TEMPERATURE_OFFSET); //mat fullStatus[6] = (byte)(currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET); //Coolant ADC fullStatus[7] = currentStatus.tpsADC; //TPS (Raw 0-255) - fullStatus[8] = 121;//currentStatus.battery10; //battery voltage - fullStatus[9] = 54;//currentStatus.O2; //O2 + fullStatus[8] = currentStatus.battery10; //battery voltage + fullStatus[9] = currentStatus.O2; //O2 fullStatus[10] = currentStatus.egoCorrection; //Exhaust gas correction (%) fullStatus[11] = currentStatus.iatCorrection; //Air temperature Correction (%) fullStatus[12] = currentStatus.wueCorrection; //Warmup enrichment (%) @@ -341,22 +341,6 @@ void sendValues(uint16_t offset, uint16_t packetLength, byte cmd, byte portNum) { if (portNum == 0) { Serial.write(fullStatus[offset+x]); } else if (portNum == 3){ CANSerial.write(fullStatus[offset+x]); } - -<<<<<<< HEAD - //if (portNum == 3) //TESTING USE! - //{ - // Serial.print("r"); //confirm cmd type - // Serial.print(cmd); - // Serial.print(fullStatus[offset+x]); - //} -======= - if (portNum == 3) //TESTING USE! - { - Serial.print("r"); //confirm cmd type - Serial.print(cmd); - Serial.print(fullStatus[offset+x]); - } ->>>>>>> b62f943bb340de45be584a0ea12be9cddabda82a } } From 35dfa6395d55db7726c537f6859665ce4f70679a Mon Sep 17 00:00:00 2001 From: darren siepka Date: Tue, 20 Jun 2017 02:29:55 +0100 Subject: [PATCH 4/4] support read values(16channel) from gpio or other external device . other device can also access the speeduino data values(realtime) all via serial3 --- reference/speeduino.ini | 393 +++++++++++++++++++++++++--------------- speeduino/cancomms.ino | 66 +++---- speeduino/comms.h | 2 +- speeduino/comms.ino | 18 +- speeduino/globals.h | 43 +---- speeduino/speeduino.ino | 20 +- 6 files changed, 317 insertions(+), 225 deletions(-) diff --git a/reference/speeduino.ini b/reference/speeduino.ini index d7958f07..b647e9b0 100644 --- a/reference/speeduino.ini +++ b/reference/speeduino.ini @@ -118,18 +118,18 @@ ;New for TS 3.0.08ish upwards, define lists of standard I/O options + #define PIN_OUT10inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + #define PIN_OUT16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + #define tsCanId_list = "CAN ID 0", "CAN ID 1", "CAN ID 2", "CAN ID 3", "CAN ID 4", "CAN ID 5", "CAN ID 6", "CAN ID 7", "CAN ID 8", "CAN ID 9", "CAN ID 10","CAN ID 11","CAN ID 12","CAN ID 13","CAN ID 14","INVALID" + #define CAN_ADDRESS_HEX_01XX = "0x100", "0x101", "0x102", "0x103", "0x104", "0x105", "0x106", "0x107", "0x108", "0x109", "0x10A", "0x10B", "0x10C", "0x10D", "0x10E", "0x10F", "0x110", "0x111", "0x112", "0x113", "0x114", "0x115", "0x116", "0x117", "0x118", "0x119", "0x11A", "0x11B", "0x11C", "0x11D", "0x11E", "0x11F", "0x120", "0x121", "0x122", "0x123", "0x124", "0x125", "0x126", "0x127", "0x128", "0x129", "0x12A", "0x12B", "0x12C", "0x12D", "0x12E", "0x12F", "0x130", "0x131", "0x132", "0x133", "0x134", "0x135", "0x136", "0x137", "0x138", "0x139", "0x13A", "0x13B", "0x13C", "0x13D", "0x13E", "0x13F", "0x140", "0x141", "0x142", "0x143", "0x144", "0x145", "0x146", "0x147", "0x148", "0x149", "0x14A", "0x14B", "0x14C", "0x14D", "0x14E", "0x14F", "0x150", "0x151", "0x152", "0x153", "0x154", "0x155", "0x156", "0x157", "0x158", "0x159", "0x15A", "0x15B", "0x15C", "0x15D", "0x15E", "0x15F" ,"0x160", "0x161", "0x162", "0x163", "0x164", "0x165", "0x166", "0x167", "0x168", "0x169", "0x16A", "0x16B", "0x16C", "0x16D", "0x16E", "0x16F", "0x170", "0x171", "0x172", "0x173", "0x174", "0x175", "0x176", "0x177", "0x178", "0x179", "0x17A", "0x17B", "0x17C", "0x17D", "0x17E", "0x17F", "0x180", "0x181", "0x182", "0x183", "0x184", "0x185", "0x186", "0x187", "0x188", "0x189", "0x18A", "0x18B", "0x18C", "0x18D", "0x18E", "0x18F" ,"0x190", "0x191", "0x192", "0x193", "0x194", "0x195", "0x196", "0x197", "0x198", "0x199", "0x19A", "0x19B", "0x19C", "0x19D", "0x19E", "0x19F", "0x1A0", "0x1A1", "0x1A2", "0x1A3", "0x1A4", "0x1A5", "0x1A6", "0x1A7", "0x1A8", "0x1A9", "0x1AA", "0x1AB", "0x1AC", "0x1AD", "0x1AE", "0x1AF", "0x1B0", "0x1B1", "0x1B2", "0x1B3", "0x1B4", "0x1B5", "0x1B6", "0x1B7", "0x1B8", "0x1B9", "0x1BA", "0x1BB", "0x1BC", "0x1BD", "0x1BE", "0x1BF" ,"0x1C0", "0x1C1", "0x1C2", "0x1C3", "0x1C4", "0x1C5", "0x1C6", "0x1C7", "0x1C8", "0x1C9", "0x1CA", "0x1CB", "0x1CC", "0x1CD", "0x1CE", "0x1CF", "0x1D0", "0x1D1", "0x1D2", "0x1D3", "0x1D4", "0x1D5", "0x1D6", "0x1D7", "0x1D8", "0x1D9", "0x1DA", "0x1DB", "0x1DC", "0x1DD", "0x1DE", "0x1DF", "0x1E0", "0x1E1", "0x1E2", "0x1E3", "0x1E4", "0x1E5", "0x1E6", "0x1E7", "0x1E8", "0x1E9", "0x1EA", "0x1EB", "0x1EC", "0x1ED", "0x1EE", "0x1EF" ,"0x1F0", "0x1F1", "0x1F2", "0x1F3", "0x1F4", "0x1F5", "0x1F6", "0x1F7", "0x1F8", "0x1F9", "0x1FA", "0x1FB", "0x1FC", "0x1FD", "0x1FE", "0x1FF" #define CAN_ADDRESS_HEX_02XX = "0x200", "0x201", "0x202", "0x203", "0x204", "0x205", "0x206", "0x207", "0x208", "0x209", "0x20A", "0x20B", "0x20C", "0x20D", "0x20E", "0x20F", "0x210", "0x211", "0x212", "0x213", "0x214", "0x215", "0x216", "0x217", "0x218", "0x219", "0x21A", "0x21B", "0x21C", "0x21D", "0x21E", "0x21F", "0x220", "0x221", "0x222", "0x223", "0x224", "0x225", "0x226", "0x227", "0x228", "0x229", "0x22A", "0x22B", "0x22C", "0x22D", "0x22E", "0x22F", "0x230", "0x231", "0x232", "0x233", "0x234", "0x235", "0x236", "0x237", "0x238", "0x239", "0x23A", "0x23B", "0x23C", "0x23D", "0x23E", "0x23F", "0x240", "0x241", "0x242", "0x243", "0x244", "0x245", "0x246", "0x247", "0x248", "0x249", "0x24A", "0x24B", "0x24C", "0x24D", "0x24E", "0x24F", "0x250", "0x251", "0x252", "0x253", "0x254", "0x255", "0x256", "0x257", "0x258", "0x259", "0x25A", "0x25B", "0x25C", "0x25D", "0x25E", "0x25F" ,"0x260", "0x261", "0x262", "0x263", "0x264", "0x265", "0x266", "0x267", "0x268", "0x269", "0x26A", "0x26B", "0x26C", "0x26D", "0x26E", "0x26F", "0x270", "0x271", "0x272", "0x273", "0x274", "0x275", "0x276", "0x277", "0x278", "0x279", "0x27A", "0x27B", "0x27C", "0x27D", "0x27E", "0x27F", "0x280", "0x281", "0x282", "0x283", "0x284", "0x285", "0x286", "0x287", "0x288", "0x289", "0x28A", "0x28B", "0x28C", "0x28D", "0x28E", "0x28F" ,"0x290", "0x291", "0x292", "0x293", "0x294", "0x295", "0x296", "0x297", "0x298", "0x299", "0x29A", "0x29B", "0x29C", "0x29D", "0x29E", "0x29F", "0x2A0", "0x2A1", "0x2A2", "0x2A3", "0x2A4", "0x2A5", "0x2A6", "0x2A7", "0x2A8", "0x2A9", "0x2AA", "0x2AB", "0x2AC", "0x2AD", "0x2AE", "0x2AF", "0x2B0", "0x2B1", "0x2B2", "0x2B3", "0x2B4", "0x2B5", "0x2B6", "0x2B7", "0x2B8", "0x2B9", "0x2BA", "0x2BB", "0x2BC", "0x2BD", "0x2BE", "0x2BF" ,"0x2C0", "0x2C1", "0x2C2", "0x2C3", "0x2C4", "0x2C5", "0x2C6", "0x2C7", "0x2C8", "0x2C9", "0x2CA", "0x2CB", "0x2CC", "0x2CD", "0x2CE", "0x2CF", "0x2D0", "0x2D1", "0x2D2", "0x2D3", "0x2D4", "0x2D5", "0x2D6", "0x2D7", "0x2D8", "0x2D9", "0x2DA", "0x2DB", "0x2DC", "0x2DD", "0x2DE", "0x2DF", "0x2E0", "0x2E1", "0x2E2", "0x2E3", "0x2E4", "0x2E5", "0x2E6", "0x2E7", "0x2E8", "0x2E9", "0x2EA", "0x2EB", "0x2EC", "0x2ED", "0x2EE", "0x2EF" ,"0x2F0", "0x2F1", "0x2F2", "0x2F3", "0x2F4", "0x2F5", "0x2F6", "0x2F7", "0x2F8", "0x2F9", "0x2FA", "0x2FB", "0x2FC", "0x2FD", "0x2FE", "0x2FF" #define CAN_ADDRESS_HEX_03XX = "0x300", "0x301", "0x302", "0x303", "0x304", "0x305", "0x306", "0x307", "0x308", "0x309", "0x30A", "0x30B", "0x30C", "0x30D", "0x30E", "0x30F", "0x310", "0x311", "0x312", "0x313", "0x314", "0x315", "0x316", "0x317", "0x318", "0x319", "0x31A", "0x31B", "0x31C", "0x31D", "0x31E", "0x31F", "0x320", "0x321", "0x322", "0x323", "0x324", "0x325", "0x326", "0x327", "0x328", "0x329", "0x32A", "0x32B", "0x32C", "0x32D", "0x32E", "0x32F", "0x330", "0x331", "0x332", "0x333", "0x334", "0x335", "0x336", "0x337", "0x338", "0x339", "0x33A", "0x33B", "0x33C", "0x33D", "0x33E", "0x33F", "0x340", "0x341", "0x342", "0x343", "0x344", "0x345", "0x346", "0x347", "0x348", "0x349", "0x34A", "0x34B", "0x34C", "0x34D", "0x34E", "0x34F", "0x350", "0x351", "0x352", "0x353", "0x354", "0x355", "0x356", "0x357", "0x358", "0x359", "0x35A", "0x35B", "0x35C", "0x35D", "0x35E", "0x35F" ,"0x360", "0x361", "0x362", "0x363", "0x364", "0x365", "0x366", "0x367", "0x368", "0x369", "0x36A", "0x36B", "0x36C", "0x36D", "0x36E", "0x36F", "0x370", "0x371", "0x372", "0x373", "0x374", "0x375", "0x376", "0x377", "0x378", "0x379", "0x37A", "0x37B", "0x37C", "0x37D", "0x37E", "0x37F", "0x380", "0x381", "0x382", "0x383", "0x384", "0x385", "0x386", "0x387", "0x388", "0x389", "0x38A", "0x38B", "0x38C", "0x38D", "0x38E", "0x38F" ,"0x390", "0x391", "0x392", "0x393", "0x394", "0x395", "0x396", "0x397", "0x398", "0x399", "0x39A", "0x39B", "0x39C", "0x39D", "0x39E", "0x39F", "0x3A0", "0x3A1", "0x3A2", "0x3A3", "0x3A4", "0x3A5", "0x3A6", "0x3A7", "0x3A8", "0x3A9", "0x3AA", "0x3AB", "0x3AC", "0x3AD", "0x3AE", "0x3AF", "0x3B0", "0x3B1", "0x3B2", "0x3B3", "0x3B4", "0x3B5", "0x3B6", "0x3B7", "0x3B8", "0x3B9", "0x3BA", "0x3BB", "0x3BC", "0x3BD", "0x3BE", "0x3BF" ,"0x3C0", "0x3C1", "0x3C2", "0x3C3", "0x3C4", "0x3C5", "0x3C6", "0x3C7", "0x3C8", "0x3C9", "0x3CA", "0x3CB", "0x3CC", "0x3CD", "0x3CE", "0x3CF", "0x3D0", "0x3D1", "0x3D2", "0x3D3", "0x3D4", "0x3D5", "0x3D6", "0x3D7", "0x3D8", "0x3D9", "0x3DA", "0x3DB", "0x3DC", "0x3DD", "0x3DE", "0x3DF", "0x3E0", "0x3E1", "0x3E2", "0x3E3", "0x3E4", "0x3E5", "0x3E6", "0x3E7", "0x3E8", "0x3E9", "0x3EA", "0x3EB", "0x3EC", "0x3ED", "0x3EE", "0x3EF" ,"0x3F0", "0x3F1", "0x3F2", "0x3F3", "0x3F4", "0x3F5", "0x3F6", "0x3F7", "0x3F8", "0x3F9", "0x3FA", "0x3FB", "0x3FC", "0x3FD", "0x3FE", "0x3FF" #define CAN_ADDRESS_HEX_04XX = "0x400", "0x401", "0x402", "0x403", "0x404", "0x405", "0x406", "0x407", "0x408", "0x409", "0x40A", "0x40B", "0x40C", "0x40D", "0x40E", "0x40F", "0x410", "0x411", "0x412", "0x413", "0x414", "0x415", "0x416", "0x417", "0x418", "0x419", "0x41A", "0x41B", "0x41C", "0x41D", "0x41E", "0x41F", "0x420", "0x421", "0x422", "0x423", "0x424", "0x425", "0x426", "0x427", "0x428", "0x429", "0x42A", "0x42B", "0x42C", "0x42D", "0x42E", "0x42F", "0x430", "0x431", "0x432", "0x433", "0x434", "0x435", "0x436", "0x437", "0x438", "0x439", "0x43A", "0x43B", "0x43C", "0x43D", "0x43E", "0x43F", "0x440", "0x441", "0x442", "0x443", "0x444", "0x445", "0x446", "0x447", "0x448", "0x449", "0x44A", "0x44B", "0x44C", "0x44D", "0x44E", "0x44F", "0x450", "0x451", "0x452", "0x453", "0x454", "0x455", "0x456", "0x457", "0x458", "0x459", "0x45A", "0x45B", "0x45C", "0x45D", "0x45E", "0x45F" ,"0x460", "0x461", "0x462", "0x463", "0x464", "0x465", "0x466", "0x467", "0x468", "0x469", "0x46A", "0x46B", "0x46C", "0x46D", "0x46E", "0x46F", "0x470", "0x471", "0x472", "0x473", "0x474", "0x475", "0x476", "0x477", "0x478", "0x479", "0x47A", "0x47B", "0x47C", "0x47D", "0x47E", "0x47F", "0x480", "0x481", "0x482", "0x483", "0x484", "0x485", "0x486", "0x487", "0x488", "0x489", "0x48A", "0x48B", "0x48C", "0x48D", "0x48E", "0x48F" ,"0x490", "0x491", "0x492", "0x493", "0x494", "0x495", "0x496", "0x497", "0x498", "0x499", "0x49A", "0x49B", "0x49C", "0x49D", "0x49E", "0x49F", "0x4A0", "0x4A1", "0x4A2", "0x4A3", "0x4A4", "0x4A5", "0x4A6", "0x4A7", "0x4A8", "0x4A9", "0x4AA", "0x4AB", "0x4AC", "0x4AD", "0x4AE", "0x4AF", "0x4B0", "0x4B1", "0x4B2", "0x4B3", "0x4B4", "0x4B5", "0x4B6", "0x4B7", "0x4B8", "0x4B9", "0x4BA", "0x4BB", "0x4BC", "0x4BD", "0x4BE", "0x4BF" ,"0x4C0", "0x4C1", "0x4C2", "0x4C3", "0x4C4", "0x4C5", "0x4C6", "0x4C7", "0x4C8", "0x4C9", "0x4CA", "0x4CB", "0x4CC", "0x4CD", "0x4CE", "0x4CF", "0x4D0", "0x4D1", "0x4D2", "0x4D3", "0x4D4", "0x4D5", "0x4D6", "0x4D7", "0x4D8", "0x4D9", "0x4DA", "0x4DB", "0x4DC", "0x4DD", "0x4DE", "0x4DF", "0x4E0", "0x4E1", "0x4E2", "0x4E3", "0x4E4", "0x4E5", "0x4E6", "0x4E7", "0x4E8", "0x4E9", "0x4EA", "0x4EB", "0x4EC", "0x4ED", "0x4EE", "0x4EF" ,"0x4F0", "0x4F1", "0x4F2", "0x4F3", "0x4F4", "0x4F5", "0x4F6", "0x4F7", "0x4F8", "0x4F9", "0x4FA", "0x4FB", "0x4FC", "0x4FD", "0x4FE", "0x4FF" #define CAN_ADDRESS_HEX_05XX = "0x500", "0x501", "0x502", "0x503", "0x504", "0x505", "0x506", "0x507", "0x508", "0x509", "0x50A", "0x50B", "0x50C", "0x50D", "0x50E", "0x50F", "0x510", "0x511", "0x512", "0x513", "0x514", "0x515", "0x516", "0x517", "0x518", "0x519", "0x51A", "0x51B", "0x51C", "0x51D", "0x51E", "0x51F", "0x520", "0x521", "0x522", "0x523", "0x524", "0x525", "0x526", "0x527", "0x528", "0x529", "0x52A", "0x52B", "0x52C", "0x52D", "0x52E", "0x52F", "0x530", "0x531", "0x532", "0x533", "0x534", "0x535", "0x536", "0x537", "0x538", "0x539", "0x53A", "0x53B", "0x53C", "0x53D", "0x53E", "0x53F", "0x540", "0x541", "0x542", "0x543", "0x544", "0x545", "0x546", "0x547", "0x548", "0x549", "0x54A", "0x54B", "0x54C", "0x54D", "0x54E", "0x54F", "0x550", "0x551", "0x552", "0x553", "0x554", "0x555", "0x556", "0x557", "0x558", "0x559", "0x55A", "0x55B", "0x55C", "0x55D", "0x55E", "0x55F" ,"0x560", "0x561", "0x562", "0x563", "0x564", "0x565", "0x566", "0x567", "0x568", "0x569", "0x56A", "0x56B", "0x56C", "0x56D", "0x56E", "0x56F", "0x570", "0x571", "0x572", "0x573", "0x574", "0x575", "0x576", "0x577", "0x578", "0x579", "0x57A", "0x57B", "0x57C", "0x57D", "0x57E", "0x57F", "0x580", "0x581", "0x582", "0x583", "0x584", "0x585", "0x586", "0x587", "0x588", "0x589", "0x58A", "0x58B", "0x58C", "0x58D", "0x58E", "0x58F" ,"0x590", "0x591", "0x592", "0x593", "0x594", "0x595", "0x596", "0x597", "0x598", "0x599", "0x59A", "0x59B", "0x59C", "0x59D", "0x59E", "0x59F", "0x5A0", "0x5A1", "0x5A2", "0x5A3", "0x5A4", "0x5A5", "0x5A6", "0x5A7", "0x5A8", "0x5A9", "0x5AA", "0x5AB", "0x5AC", "0x5AD", "0x5AE", "0x5AF", "0x5B0", "0x5B1", "0x5B2", "0x5B3", "0x5B4", "0x5B5", "0x5B6", "0x5B7", "0x5B8", "0x5B9", "0x5BA", "0x5BB", "0x5BC", "0x5BD", "0x5BE", "0x5BF" ,"0x5C0", "0x5C1", "0x5C2", "0x5C3", "0x5C4", "0x5C5", "0x5C6", "0x5C7", "0x5C8", "0x5C9", "0x5CA", "0x5CB", "0x5CC", "0x5CD", "0x5CE", "0x5CF", "0x5D0", "0x5D1", "0x5D2", "0x5D3", "0x5D4", "0x5D5", "0x5D6", "0x5D7", "0x5D8", "0x5D9", "0x5DA", "0x5DB", "0x5DC", "0x5DD", "0x5DE", "0x5DF", "0x5E0", "0x5E1", "0x5E2", "0x5E3", "0x5E4", "0x5E5", "0x5E6", "0x5E7", "0x5E8", "0x5E9", "0x5EA", "0x5EB", "0x5EC", "0x5ED", "0x5EE", "0x5EF" ,"0x5F0", "0x5F1", "0x5F2", "0x5F3", "0x5F4", "0x5F5", "0x5F6", "0x5F7", "0x5F8", "0x5F9", "0x5FA", "0x5FB", "0x5FC", "0x5FD", "0x5FE", "0x5FF" #define CAN_ADDRESS_HEX_06XX = "0x600", "0x601", "0x602", "0x603", "0x604", "0x605", "0x606", "0x607", "0x608", "0x609", "0x60A", "0x60B", "0x60C", "0x60D", "0x60E", "0x60F", "0x610", "0x611", "0x612", "0x613", "0x614", "0x615", "0x616", "0x617", "0x618", "0x619", "0x61A", "0x61B", "0x61C", "0x61D", "0x61E", "0x61F", "0x620", "0x621", "0x622", "0x623", "0x624", "0x625", "0x626", "0x627", "0x628", "0x629", "0x62A", "0x62B", "0x62C", "0x62D", "0x62E", "0x62F", "0x630", "0x631", "0x632", "0x633", "0x634", "0x635", "0x636", "0x637", "0x638", "0x639", "0x63A", "0x63B", "0x63C", "0x63D", "0x63E", "0x63F", "0x640", "0x641", "0x642", "0x643", "0x644", "0x645", "0x646", "0x647", "0x648", "0x649", "0x64A", "0x64B", "0x64C", "0x64D", "0x64E", "0x64F", "0x650", "0x651", "0x652", "0x653", "0x654", "0x655", "0x656", "0x657", "0x658", "0x659", "0x65A", "0x65B", "0x65C", "0x65D", "0x65E", "0x65F" ,"0x660", "0x661", "0x662", "0x663", "0x664", "0x665", "0x666", "0x667", "0x668", "0x669", "0x66A", "0x66B", "0x66C", "0x66D", "0x66E", "0x66F", "0x670", "0x671", "0x672", "0x673", "0x674", "0x675", "0x676", "0x677", "0x678", "0x679", "0x67A", "0x67B", "0x67C", "0x67D", "0x67E", "0x67F", "0x680", "0x681", "0x682", "0x683", "0x684", "0x685", "0x686", "0x687", "0x688", "0x689", "0x68A", "0x68B", "0x68C", "0x68D", "0x68E", "0x68F" ,"0x690", "0x691", "0x692", "0x693", "0x694", "0x695", "0x696", "0x697", "0x698", "0x699", "0x69A", "0x69B", "0x69C", "0x69D", "0x69E", "0x69F", "0x6A0", "0x6A1", "0x6A2", "0x6A3", "0x6A4", "0x6A5", "0x6A6", "0x6A7", "0x6A8", "0x6A9", "0x6AA", "0x6AB", "0x6AC", "0x6AD", "0x6AE", "0x6AF", "0x6B0", "0x6B1", "0x6B2", "0x6B3", "0x6B4", "0x6B5", "0x6B6", "0x6B7", "0x6B8", "0x6B9", "0x6BA", "0x6BB", "0x6BC", "0x6BD", "0x6BE", "0x6BF" ,"0x6C0", "0x6C1", "0x6C2", "0x6C3", "0x6C4", "0x6C5", "0x6C6", "0x6C7", "0x6C8", "0x6C9", "0x6CA", "0x6CB", "0x6CC", "0x6CD", "0x6CE", "0x6CF", "0x6D0", "0x6D1", "0x6D2", "0x6D3", "0x6D4", "0x6D5", "0x6D6", "0x6D7", "0x6D8", "0x6D9", "0x6DA", "0x6DB", "0x6DC", "0x6DD", "0x6DE", "0x6DF", "0x6E0", "0x6E1", "0x6E2", "0x6E3", "0x6E4", "0x6E5", "0x6E6", "0x6E7", "0x6E8", "0x6E9", "0x6EA", "0x6EB", "0x6EC", "0x6ED", "0x6EE", "0x6EF" ,"0x6F0", "0x6F1", "0x6F2", "0x6F3", "0x6F4", "0x6F5", "0x6F6", "0x6F7", "0x6F8", "0x6F9", "0x6FA", "0x6FB", "0x6FC", "0x6FD", "0x6FE", "0x6FF" #define CAN_ADDRESS_HEX_07XX = "0x700", "0x701", "0x702", "0x703", "0x704", "0x705", "0x706", "0x707", "0x708", "0x709", "0x70A", "0x70B", "0x70C", "0x70D", "0x70E", "0x70F", "0x710", "0x711", "0x712", "0x713", "0x714", "0x715", "0x716", "0x717", "0x718", "0x719", "0x71A", "0x71B", "0x71C", "0x71D", "0x71E", "0x71F", "0x720", "0x721", "0x722", "0x723", "0x724", "0x725", "0x726", "0x727", "0x728", "0x729", "0x72A", "0x72B", "0x72C", "0x72D", "0x72E", "0x72F", "0x730", "0x731", "0x732", "0x733", "0x734", "0x735", "0x736", "0x737", "0x738", "0x739", "0x73A", "0x73B", "0x73C", "0x73D", "0x73E", "0x73F", "0x740", "0x741", "0x742", "0x743", "0x744", "0x745", "0x746", "0x747", "0x748", "0x749", "0x74A", "0x74B", "0x74C", "0x74D", "0x74E", "0x74F", "0x750", "0x751", "0x752", "0x753", "0x754", "0x755", "0x756", "0x757", "0x758", "0x759", "0x75A", "0x75B", "0x75C", "0x75D", "0x75E", "0x75F" ,"0x760", "0x761", "0x762", "0x763", "0x764", "0x765", "0x766", "0x767", "0x768", "0x769", "0x76A", "0x76B", "0x76C", "0x76D", "0x76E", "0x76F", "0x770", "0x771", "0x772", "0x773", "0x774", "0x775", "0x776", "0x777", "0x778", "0x779", "0x77A", "0x77B", "0x77C", "0x77D", "0x77E", "0x77F", "0x780", "0x781", "0x782", "0x783", "0x784", "0x785", "0x786", "0x787", "0x788", "0x789", "0x78A", "0x78B", "0x78C", "0x78D", "0x78E", "0x78F" ,"0x790", "0x791", "0x792", "0x793", "0x794", "0x795", "0x796", "0x797", "0x798", "0x799", "0x79A", "0x79B", "0x79C", "0x79D", "0x79E", "0x79F", "0x7A0", "0x7A1", "0x7A2", "0x7A3", "0x7A4", "0x7A5", "0x7A6", "0x7A7", "0x7A8", "0x7A9", "0x7AA", "0x7AB", "0x7AC", "0x7AD", "0x7AE", "0x7AF", "0x7B0", "0x7B1", "0x7B2", "0x7B3", "0x7B4", "0x7B5", "0x7B6", "0x7B7", "0x7B8", "0x7B9", "0x7BA", "0x7BB", "0x7BC", "0x7BD", "0x7BE", "0x7BF" ,"0x7C0", "0x7C1", "0x7C2", "0x7C3", "0x7C4", "0x7C5", "0x7C6", "0x7C7", "0x7C8", "0x7C9", "0x7CA", "0x7CB", "0x7CC", "0x7CD", "0x7CE", "0x7CF", "0x7D0", "0x7D1", "0x7D2", "0x7D3", "0x7D4", "0x7D5", "0x7D6", "0x7D7", "0x7D8", "0x7D9", "0x7DA", "0x7DB", "0x7DC", "0x7DD", "0x7DE", "0x7DF", "0x7E0", "0x7E1", "0x7E2", "0x7E3", "0x7E4", "0x7E5", "0x7E6", "0x7E7", "0x7E8", "0x7E9", "0x7EA", "0x7EB", "0x7EC", "0x7ED", "0x7EE", "0x7EF" ,"0x7F0", "0x7F1", "0x7F2", "0x7F3", "0x7F4", "0x7F5", "0x7F6", "0x7F7", "0x7F8", "0x7F9", "0x7FA", "0x7FB", "0x7FC", "0x7FD", "0x7FE", "0x7FF" - #define CAN_ADDRESS_HEX = $CAN_ADDRESS_HEX_02XX, $CAN_ADDRESS_HEX_03XX, $CAN_ADDRESS_HEX_04XX, $CAN_ADDRESS_HEX_05XX, $CAN_ADDRESS_HEX_06XX, $CAN_ADDRESS_HEX_07XX - - #define PIN_OUT10inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - #define PIN_OUT16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - + #define CAN_ADDRESS_HEX = $CAN_ADDRESS_HEX_01XX, $CAN_ADDRESS_HEX_02XX, $CAN_ADDRESS_HEX_03XX, $CAN_ADDRESS_HEX_04XX, $CAN_ADDRESS_HEX_05XX, $CAN_ADDRESS_HEX_06XX, $CAN_ADDRESS_HEX_07XX ;Page 1 is the fuel map and axis bins only page = 1 @@ -551,96 +551,115 @@ page = 10 enable_canbus = bits, U08, 0, [0:1], "Disable", "Enable", "INVALID", "INVALID" #endif enable_candata_in = bits, U08, 0, [2:2], "Off", "On" - caninput_sel1 = bits, U08, 1, [0:0], "Off", "On" - caninput_sel2 = bits, U08, 2, [0:0], "Off", "On" - caninput_sel3 = bits, U08, 3, [0:0], "Off", "On" - caninput_sel4 = bits, U08, 4, [0:0], "Off", "On" - caninput_sel5 = bits, U08, 5, [0:0], "Off", "On" - caninput_sel6 = bits, U08, 6, [0:0], "Off", "On" - caninput_sel7 = bits, U08, 7, [0:0], "Off", "On" - caninput_sel8 = bits, U08, 8, [0:0], "Off", "On" - caninput_param_group = array , U16, 9, [ 8], "", 1, 0, 0, 65535, 0 - caninput_param_start_byte1 = bits, U08, 25, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - caninput_param_start_byte2 = bits, U08, 26, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - caninput_param_start_byte3 = bits, U08, 27, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - caninput_param_start_byte4 = bits, U08, 28, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - caninput_param_start_byte5 = bits, U08, 29, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - caninput_param_start_byte6 = bits, U08, 30, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - caninput_param_start_byte7 = bits, U08, 31, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - caninput_param_start_byte8 = bits, U08, 32, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - caninput_param_num_bytes1 = bits, U08, 33, [0:1], "INVALID", "1", "2", "INVALID" - caninput_param_num_bytes2 = bits, U08, 34, [0:1], "INVALID", "1", "2", "INVALID" - caninput_param_num_bytes3 = bits, U08, 35, [0:1], "INVALID", "1", "2", "INVALID" - caninput_param_num_bytes4 = bits, U08, 36, [0:1], "INVALID", "1", "2", "INVALID" - caninput_param_num_bytes5 = bits, U08, 37, [0:1], "INVALID", "1", "2", "INVALID" - caninput_param_num_bytes6 = bits, U08, 38, [0:1], "INVALID", "1", "2", "INVALID" - caninput_param_num_bytes7 = bits, U08, 39, [0:1], "INVALID", "1", "2", "INVALID" - caninput_param_num_bytes8 = bits, U08, 40, [0:1], "INVALID", "1", "2", "INVALID" - unused10_41 = scalar, U08, 41, "", 1, 0, 0, 255, 0 - unused10_42 = scalar, U08, 42, "", 1, 0, 0, 255, 0 - unused10_43 = scalar, U08, 43, "", 1, 0, 0, 255, 0 - unused10_44 = scalar, U08, 44, "", 1, 0, 0, 255, 0 - unused10_45 = scalar, U08, 45, "", 1, 0, 0, 255, 0 - unused10_46 = scalar, U08, 46, "", 1, 0, 0, 255, 0 - unused10_47 = scalar, U08, 47, "", 1, 0, 0, 255, 0 - unused10_48 = scalar, U08, 48, "", 1, 0, 0, 255, 0 - unused10_49 = scalar, U08, 49, "", 1, 0, 0, 255, 0 - enable_candata_out = bits, U08, 50, [0:0], "Off", "On" - canoutput_sel1 = bits, U08, 51, [0:0], "Off", "On" - canoutput_sel2 = bits, U08, 52, [0:0], "Off", "On" - canoutput_sel3 = bits, U08, 53, [0:0], "Off", "On" - canoutput_sel4 = bits, U08, 54, [0:0], "Off", "On" - canoutput_sel5 = bits, U08, 55, [0:0], "Off", "On" - canoutput_sel6 = bits, U08, 56, [0:0], "Off", "On" - canoutput_sel7 = bits, U08, 57, [0:0], "Off", "On" - canoutput_sel8 = bits, U08, 58, [0:0], "Off", "On" - canoutput_param_group = array , U16, 59, [ 8], "", 1, 0, 0, 65535, 0 - canoutput_param_start_byte1 = bits, U08, 61, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - canoutput_param_start_byte2 = bits, U08, 62, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - canoutput_param_start_byte3 = bits, U08, 63, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - canoutput_param_start_byte4 = bits, U08, 64, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - canoutput_param_start_byte5 = bits, U08, 65, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - canoutput_param_start_byte6 = bits, U08, 66, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - canoutput_param_start_byte7 = bits, U08, 67, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - canoutput_param_start_byte8 = bits, U08, 68, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" - canoutput_param_num_bytes1 = bits, U08, 69, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes2 = bits, U08, 70, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes3 = bits, U08, 71, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes4 = bits, U08, 72, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes5 = bits, U08, 73, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes6 = bits, U08, 74, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes7 = bits, U08, 75, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes8 = bits, U08, 76, [0:1], "INVALID", "1", "2", "INVALID" - unused10_77 = scalar, U08, 77, "", 1, 0, 0, 255, 0 - unused10_78 = scalar, U08, 78, "", 1, 0, 0, 255, 0 - unused10_79 = scalar, U08, 79, "", 1, 0, 0, 255, 0 - unused10_80 = scalar, U08, 80, "", 1, 0, 0, 255, 0 - unused10_81 = scalar, U08, 81, "", 1, 0, 0, 255, 0 - unused10_82 = scalar, U08, 82, "", 1, 0, 0, 255, 0 - unused10_83 = scalar, U08, 83, "", 1, 0, 0, 255, 0 - unused10_84 = scalar, U08, 84, "", 1, 0, 0, 255, 0 - unused10_85 = scalar, U08, 85, "", 1, 0, 0, 255, 0 - unused10_86 = scalar, U08, 86, "", 1, 0, 0, 255, 0 - unused10_87 = scalar, U08, 87, "", 1, 0, 0, 255, 0 - unused10_88 = scalar, U08, 88, "", 1, 0, 0, 255, 0 - unused10_89 = scalar, U08, 89, "", 1, 0, 0, 255, 0 - unused10_90 = scalar, U08, 90, "", 1, 0, 0, 255, 0 - unused10_91 = scalar, U08, 91, "", 1, 0, 0, 255, 0 - unused10_92 = scalar, U08, 92, "", 1, 0, 0, 255, 0 - unused10_93 = scalar, U08, 93, "", 1, 0, 0, 255, 0 - unused10_94 = scalar, U08, 94, "", 1, 0, 0, 255, 0 - unused10_95 = scalar, U08, 95, "", 1, 0, 0, 255, 0 - unused10_96 = scalar, U08, 96, "", 1, 0, 0, 255, 0 + + caninput_sel0 = bits, U16, 1, [0:0], "Off", "On" + caninput_sel1 = bits, U16, 1, [1:1], "Off", "On" + caninput_sel2 = bits, U16, 1, [2:2], "Off", "On" + caninput_sel3 = bits, U16, 1, [3:3], "Off", "On" + caninput_sel4 = bits, U16, 1, [4:4], "Off", "On" + caninput_sel5 = bits, U16, 1, [5:5], "Off", "On" + caninput_sel6 = bits, U16, 1, [6:6], "Off", "On" + caninput_sel7 = bits, U16, 1, [7:7], "Off", "On" + caninput_sel8 = bits, U16, 1, [8:8], "Off", "On" + caninput_sel9 = bits, U16, 1, [9:9], "Off", "On" + caninput_sel10 = bits, U16, 1, [10:10], "Off", "On" + caninput_sel11 = bits, U16, 1, [11:11], "Off", "On" + caninput_sel12 = bits, U16, 1, [12:12], "Off", "On" + caninput_sel13 = bits, U16, 1, [13:13], "Off", "On" + caninput_sel14 = bits, U16, 1, [14:14], "Off", "On" + caninput_sel15 = bits, U16, 1, [15:15], "Off", "On" + + ;caninput_param_group = array , U16, 9, [ 8], "", 1, 0, 0, 65535, 0 + caninput_param_group0 = bits, U16, 3, [0:10], $CAN_ADDRESS_HEX + caninput_param_group1 = bits, U16, 5, [0:10], $CAN_ADDRESS_HEX + caninput_param_group2 = bits, U16, 7, [0:10], $CAN_ADDRESS_HEX + caninput_param_group3 = bits, U16, 9, [0:10], $CAN_ADDRESS_HEX + caninput_param_group4 = bits, U16, 11, [0:10], $CAN_ADDRESS_HEX + caninput_param_group5 = bits, U16, 13, [0:10], $CAN_ADDRESS_HEX + caninput_param_group6 = bits, U16, 15, [0:10], $CAN_ADDRESS_HEX + caninput_param_group7 = bits, U16, 17, [0:10], $CAN_ADDRESS_HEX + caninput_param_group8 = bits, U16, 19, [0:10], $CAN_ADDRESS_HEX + caninput_param_group9 = bits, U16, 21, [0:10], $CAN_ADDRESS_HEX + caninput_param_group10 = bits, U16, 23, [0:10], $CAN_ADDRESS_HEX + caninput_param_group11 = bits, U16, 25, [0:10], $CAN_ADDRESS_HEX + caninput_param_group12 = bits, U16, 27, [0:10], $CAN_ADDRESS_HEX + caninput_param_group13 = bits, U16, 29, [0:10], $CAN_ADDRESS_HEX + caninput_param_group14 = bits, U16, 31, [0:10], $CAN_ADDRESS_HEX + caninput_param_group15 = bits, U16, 33, [0:10], $CAN_ADDRESS_HEX + + caninput_param_start_byte0 = bits, U08, 35, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte1 = bits, U08, 36, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte2 = bits, U08, 37, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte3 = bits, U08, 38, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte4 = bits, U08, 39, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte5 = bits, U08, 40, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte6 = bits, U08, 41, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte7 = bits, U08, 42, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte8 = bits, U08, 43, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte9 = bits, U08, 44, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte10 = bits, U08, 45, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte11 = bits, U08, 46, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte12 = bits, U08, 47, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte13 = bits, U08, 48, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte14 = bits, U08, 49, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_param_start_byte15 = bits, U08, 50, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + + caninput_param_num_bytes0 = bits, U16, 51, [0:0], "1", "2" + caninput_param_num_bytes1 = bits, U16, 51, [1:1], "1", "2" + caninput_param_num_bytes2 = bits, U16, 51, [2:2], "1", "2" + caninput_param_num_bytes3 = bits, U16, 51, [3:3], "1", "2" + caninput_param_num_bytes4 = bits, U16, 51, [4:4], "1", "2" + caninput_param_num_bytes5 = bits, U16, 51, [5:5], "1", "2" + caninput_param_num_bytes6 = bits, U16, 51, [6:6], "1", "2" + caninput_param_num_bytes7 = bits, U16, 51, [7:7], "1", "2" + caninput_param_num_bytes8 = bits, U16, 51, [8:8], "1", "2" + caninput_param_num_bytes9 = bits, U16, 51, [9:9], "1", "2" + caninput_param_num_bytes10 = bits, U16, 51, [10:10], "1", "2" + caninput_param_num_bytes11 = bits, U16, 51, [11:11], "1", "2" + caninput_param_num_bytes12 = bits, U16, 51, [12:12], "1", "2" + caninput_param_num_bytes13 = bits, U16, 51, [13:13], "1", "2" + caninput_param_num_bytes14 = bits, U16, 51, [14:14], "1", "2" + caninput_param_num_bytes15 = bits, U16, 51, [15:15], "1", "2" + + unused10_53 = scalar, U08, 53, "", 1, 0, 0, 255, 0 + unused10_54 = scalar, U08, 54, "", 1, 0, 0, 255, 0 + enable_candata_out = bits, U08, 55, [0:0], "Off", "On" + canoutput_sel0 = bits, U08, 56, [0:0], "Off", "On" + canoutput_sel1 = bits, U08, 57, [0:0], "Off", "On" + canoutput_sel2 = bits, U08, 58, [0:0], "Off", "On" + canoutput_sel3 = bits, U08, 59, [0:0], "Off", "On" + canoutput_sel4 = bits, U08, 60, [0:0], "Off", "On" + canoutput_sel5 = bits, U08, 61, [0:0], "Off", "On" + canoutput_sel6 = bits, U08, 62, [0:0], "Off", "On" + canoutput_sel7 = bits, U08, 63, [0:0], "Off", "On" + canoutput_param_group = array , U16, 64, [ 8], "", 1, 0, 0, 65535, 0 + canoutput_param_start_byte0 = bits, U08, 81, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte1 = bits, U08, 82, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte2 = bits, U08, 83, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte3 = bits, U08, 84, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte4 = bits, U08, 85, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte5 = bits, U08, 86, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte6 = bits, U08, 87, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte7 = bits, U08, 88, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_num_bytes0 = bits, U08, 89, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes1 = bits, U08, 90, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes2 = bits, U08, 91, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes3 = bits, U08, 92, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes4 = bits, U08, 93, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes5 = bits, U08, 94, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes6 = bits, U08, 95, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes7 = bits, U08, 96, [0:1], "INVALID", "1", "2", "INVALID" + unused10_97 = scalar, U08, 97, "", 1, 0, 0, 255, 0 unused10_98 = scalar, U08, 98, "", 1, 0, 0, 255, 0 unused10_99 = scalar, U08, 99, "", 1, 0, 0, 255, 0 - speeduino_tsCanId = bits, U08, 100, [0:3], $tsCanId_list - ;true_address = bits, U16, 101, [0:10], $CAN_ADDRESS_HEX - ;realtime_base_address = bits, U16, 103, [0:10], $CAN_ADDRESS_HEX - ;obd_address = bits, U16, 105, [0:10], $CAN_ADDRESS_HEX - unused10_101 = scalar, U16, 101, "", 1, 0, 0, 255, 0 - unused10_103 = scalar, U16, 103, "", 1, 0, 0, 255, 0 - unused10_105 = scalar, U16, 105, "", 1, 0, 0, 255, 0 + speeduino_tsCanId = bits, U08, 100, [0:3], $tsCanId_list + true_address = bits, U16, 101, [0:10], $CAN_ADDRESS_HEX + realtime_base_address = bits, U16, 103, [0:10], $CAN_ADDRESS_HEX + obd_address = bits, U16, 105, [0:10], $CAN_ADDRESS_HEX + ;unused10_101 = scalar, U16, 101, "", 1, 0, 0, 255, 0 + ;unused10_103 = scalar, U16, 103, "", 1, 0, 0, 255, 0 + ;unused10_105 = scalar, U16, 105, "", 1, 0, 0, 255, 0 ;AFR offset for WUE VeAnalyze ;wueAFRRates = array, U08, 107, [10], "%", 1.0, 0.0, 0.0, 255, 0 @@ -952,6 +971,7 @@ menuDialog = main ;speeduino_tsCanId = "This is the TsCanId that the Speeduino ECU will respond to. This should match the main controller CAN ID in project properties if it is connected directy to TunerStudio, Otherwise the device ID if connected via CAN passthrough" ;true_address = "This is the 11bit Can address of the Speeduino ECU " ;obd_address = "The 11bit Can address that the Speeduino ECU responds to for OBD2 diagnostic requests" + caninput_sel0 = "This Enables CAN data input channel 0 " caninput_sel1 = "This Enables CAN data input channel 1 " caninput_sel2 = "This Enables CAN data input channel 2 " caninput_sel3 = "This Enables CAN data input channel 3 " @@ -959,7 +979,6 @@ menuDialog = main caninput_sel5 = "This Enables CAN data input channel 5 " caninput_sel6 = "This Enables CAN data input channel 6 " caninput_sel7 = "This Enables CAN data input channel 7 " - caninput_sel8 = "This Enables CAN data input channel 8 " ;caninput_param_group1 = "The ID number of the parameter group of the data for channel 1 " ;caninput_param_group2 = "The ID number of the parameter group of the data for channel 2" ;caninput_param_group3 = "The ID number of the parameter group of the data for channel 3" @@ -968,6 +987,7 @@ menuDialog = main ;caninput_param_group6 = "The ID number of the parameter group of the data for channel 6" ;caninput_param_group7 = "The ID number of the parameter group of the data for channel 7" ;caninput_param_group8 = "The ID number of the parameter group of the data for channel 8" + caninput_param_start_byte0 = "The Starting byte the specific data begins at for channel 0" caninput_param_start_byte1 = "The Starting byte the specific data begins at for channel 1" caninput_param_start_byte2 = "The Starting byte the specific data begins at for channel 2" caninput_param_start_byte3 = "The Starting byte the specific data begins at for channel 3" @@ -975,7 +995,7 @@ menuDialog = main caninput_param_start_byte5 = "The Starting byte the specific data begins at for channel 5" caninput_param_start_byte6 = "The Starting byte the specific data begins at for channel 6" caninput_param_start_byte7 = "The Starting byte the specific data begins at for channel 7" - caninput_param_start_byte8 = "The Starting byte the specific data begins at for channel 8" + caninput_param_num_bytes0 = "The number of bytes the specific data is made from starting at selected start byte number" caninput_param_num_bytes1 = "The number of bytes the specific data is made from starting at selected start byte number" caninput_param_num_bytes2 = "The number of bytes the specific data is made from starting at selected start byte number" caninput_param_num_bytes3 = "The number of bytes the specific data is made from starting at selected start byte number" @@ -983,7 +1003,6 @@ menuDialog = main caninput_param_num_bytes5 = "The number of bytes the specific data is made from starting at selected start byte number" caninput_param_num_bytes6 = "The number of bytes the specific data is made from starting at selected start byte number" caninput_param_num_bytes7 = "The number of bytes the specific data is made from starting at selected start byte number" - caninput_param_num_bytes8 = "The number of bytes the specific data is made from starting at selected start byte number" cmdEnableTestMode = "Click this to enable test mode. This will not be available if the engine is running" cmdStopTestMode = "Click this to disable test mode" @@ -1458,48 +1477,80 @@ menuDialog = main dialog = caninput_sel, "" ;CAN inputs field = "CAN Input Channel on/off" + field = "CAN Input 0", caninput_sel0, { enable_candata_in } field = "CAN Input 1", caninput_sel1, { enable_candata_in } field = "CAN Input 2", caninput_sel2, { enable_candata_in } field = "CAN Input 3", caninput_sel3, { enable_candata_in } field = "CAN Input 4", caninput_sel4, { enable_candata_in } field = "CAN Input 5", caninput_sel5, { enable_candata_in } - field = "CAN Input 6", caninput_sel6, { enable_candata_in } - field = "CAN Input 7", caninput_sel7, { enable_candata_in } + field = "CAN Input 6", caninput_sel6, { enable_candata_in } + field = "CAN Input 7", caninput_sel7, { enable_candata_in } field = "CAN Input 8", caninput_sel8, { enable_candata_in } - + field = "CAN Input 9", caninput_sel9, { enable_candata_in } + field = "CAN Input 10", caninput_sel10, { enable_candata_in } + field = "CAN Input 11", caninput_sel11, { enable_candata_in } + field = "CAN Input 12", caninput_sel12, { enable_candata_in } + field = "CAN Input 13", caninput_sel13, { enable_candata_in } + field = "CAN Input 14", caninput_sel14, { enable_candata_in } + field = "CAN Input 15", caninput_sel15, { enable_candata_in } + dialog = caninput_parameter_group, "", yAxis field = "Input Parameter Group" - field = "", caninput_param_group[0], { caninput_sel1 && enable_candata_in } - field = "", caninput_param_group[1], { caninput_sel2 && enable_candata_in } - field = "", caninput_param_group[2], { caninput_sel3 && enable_candata_in } - field = "", caninput_param_group[3], { caninput_sel4 && enable_candata_in } - field = "", caninput_param_group[4], { caninput_sel5 && enable_candata_in } - field = "", caninput_param_group[5], { caninput_sel6 && enable_candata_in } - field = "", caninput_param_group[6], { caninput_sel7 && enable_candata_in } - field = "", caninput_param_group[7], { caninput_sel8 && enable_candata_in } - + field = "", caninput_param_group0, { caninput_sel0 && enable_candata_in } + field = "", caninput_param_group1, { caninput_sel1 && enable_candata_in } + field = "", caninput_param_group2, { caninput_sel2 && enable_candata_in } + field = "", caninput_param_group3, { caninput_sel3 && enable_candata_in } + field = "", caninput_param_group4, { caninput_sel4 && enable_candata_in } + field = "", caninput_param_group5, { caninput_sel5 && enable_candata_in } + field = "", caninput_param_group6, { caninput_sel6 && enable_candata_in } + field = "", caninput_param_group7, { caninput_sel7 && enable_candata_in } + field = "", caninput_param_group8, { caninput_sel8 && enable_candata_in } + field = "", caninput_param_group9, { caninput_sel9 && enable_candata_in } + field = "", caninput_param_group10, { caninput_sel10 && enable_candata_in } + field = "", caninput_param_group11, { caninput_sel11 && enable_candata_in } + field = "", caninput_param_group12, { caninput_sel12 && enable_candata_in } + field = "", caninput_param_group13, { caninput_sel13 && enable_candata_in } + field = "", caninput_param_group14, { caninput_sel14 && enable_candata_in } + field = "", caninput_param_group15, { caninput_sel15 && enable_candata_in } + dialog = caninput_parameter_start_byte, "", yAxis field = "Input Parameter Start Byte" + field = "", caninput_param_start_byte0, { caninput_sel0 && enable_candata_in } field = "", caninput_param_start_byte1, { caninput_sel1 && enable_candata_in } field = "", caninput_param_start_byte2, { caninput_sel2 && enable_candata_in } field = "", caninput_param_start_byte3, { caninput_sel3 && enable_candata_in } field = "", caninput_param_start_byte4, { caninput_sel4 && enable_candata_in } field = "", caninput_param_start_byte5, { caninput_sel5 && enable_candata_in } - field = "", caninput_param_start_byte6, { caninput_sel6 && enable_candata_in } - field = "", caninput_param_start_byte7, { caninput_sel7 && enable_candata_in } + field = "", caninput_param_start_byte6, { caninput_sel6 && enable_candata_in } + field = "", caninput_param_start_byte7, { caninput_sel7 && enable_candata_in } field = "", caninput_param_start_byte8, { caninput_sel8 && enable_candata_in } - + field = "", caninput_param_start_byte9, { caninput_sel9 && enable_candata_in } + field = "", caninput_param_start_byte10, { caninput_sel10 && enable_candata_in } + field = "", caninput_param_start_byte11, { caninput_sel11 && enable_candata_in } + field = "", caninput_param_start_byte12, { caninput_sel12 && enable_candata_in } + field = "", caninput_param_start_byte13, { caninput_sel13 && enable_candata_in } + field = "", caninput_param_start_byte14, { caninput_sel14 && enable_candata_in } + field = "", caninput_param_start_byte15, { caninput_sel15 && enable_candata_in } + dialog = caninput_parameter_num_byte, "", yAxis field = "Input Parameter Number of Bytes" + field = "", caninput_param_num_bytes0, { caninput_sel0 && enable_candata_in } field = "", caninput_param_num_bytes1, { caninput_sel1 && enable_candata_in } - field = "", caninput_param_num_bytes2, { caninput_sel2 && enable_candata_in } + field = "", caninput_param_num_bytes2, { caninput_sel3 && enable_candata_in } field = "", caninput_param_num_bytes3, { caninput_sel3 && enable_candata_in } field = "", caninput_param_num_bytes4, { caninput_sel4 && enable_candata_in } field = "", caninput_param_num_bytes5, { caninput_sel5 && enable_candata_in } - field = "", caninput_param_num_bytes6, { caninput_sel6 && enable_candata_in } - field = "", caninput_param_num_bytes7, { caninput_sel7 && enable_candata_in } + field = "", caninput_param_num_bytes6, { caninput_sel6 && enable_candata_in } + field = "", caninput_param_num_bytes7, { caninput_sel7 && enable_candata_in } field = "", caninput_param_num_bytes8, { caninput_sel8 && enable_candata_in } - + field = "", caninput_param_num_bytes9, { caninput_sel9 && enable_candata_in } + field = "", caninput_param_num_bytes10, { caninput_sel10 && enable_candata_in } + field = "", caninput_param_num_bytes11, { caninput_sel11 && enable_candata_in } + field = "", caninput_param_num_bytes12, { caninput_sel12 && enable_candata_in } + field = "", caninput_param_num_bytes13, { caninput_sel13 && enable_candata_in } + field = "", caninput_param_num_bytes14, { caninput_sel14 && enable_candata_in } + field = "", caninput_param_num_bytes15, { caninput_sel15 && enable_candata_in } + dialog = caninconfig_blank1,"" field = "" @@ -1523,48 +1574,80 @@ menuDialog = main dialog = canoutput_sel, "" ;CAN outputs field = "CAN Output Channel on/off" - field = "CAN Output 1", canoutput_sel1, { enable_candata_out} + field = "CAN Output 0", canoutput_sel0, { enable_candata_out} + field = "CAN Output 1", canoutput_sel1, { enable_candata_out } field = "CAN Output 2", canoutput_sel2, { enable_candata_out } field = "CAN Output 3", canoutput_sel3, { enable_candata_out } field = "CAN Output 4", canoutput_sel4, { enable_candata_out } field = "CAN Output 5", canoutput_sel5, { enable_candata_out } - field = "CAN Output 6", canoutput_sel6, { enable_candata_out } - field = "CAN Output 7", canoutput_sel7, { enable_candata_out } - field = "CAN Output 8", canoutput_sel8, { enable_candata_out } - + field = "CAN Output 6", canoutput_sel6, { enable_candata_out } + field = "CAN Output 7", canoutput_sel7, { enable_candata_out } + ; field = "CAN Output 8", canoutput_sel8, { enable_candata_out} + ; field = "CAN Output 9", canoutput_sel9, { enable_candata_out } + ; field = "CAN Output 10", canoutput_sel10, { enable_candata_out } + ; field = "CAN Output 11", canoutput_sel11, { enable_candata_out } + ; field = "CAN Output 12", canoutput_sel12, { enable_candata_out } + ; field = "CAN Output 13", canoutput_sel13, { enable_candata_out } + ; field = "CAN Output 14", canoutput_sel14, { enable_candata_out } + ; field = "CAN Output 15", canoutput_sel15, { enable_candata_out } + dialog = canoutput_parameter_group, "", yAxis field = "Output Parameter Group" - field = "", canoutput_param_group[0], { canoutput_sel1 && enable_candata_out } - field = "", canoutput_param_group[1], { canoutput_sel2 && enable_candata_out } + field = "", canoutput_param_group[0], { canoutput_sel0 && enable_candata_out } + field = "", canoutput_param_group[1], { canoutput_sel1 && enable_candata_out } field = "", canoutput_param_group[2], { canoutput_sel3 && enable_candata_out } - field = "", canoutput_param_group[3], { canoutput_sel4 && enable_candata_out } - field = "", canoutput_param_group[4], { canoutput_sel5 && enable_candata_out } - field = "", canoutput_param_group[5], { canoutput_sel6 && enable_candata_out } - field = "", canoutput_param_group[6], { canoutput_sel7 && enable_candata_out } - field = "", canoutput_param_group[7], { canoutput_sel8 && enable_candata_out } - + field = "", canoutput_param_group[3], { canoutput_sel3 && enable_candata_out } + field = "", canoutput_param_group[4], { canoutput_sel4 && enable_candata_out } + field = "", canoutput_param_group[5], { canoutput_sel5 && enable_candata_out } + field = "", canoutput_param_group[6], { canoutput_sel6 && enable_candata_out } + field = "", canoutput_param_group[7], { canoutput_sel7 && enable_candata_out } + ; field = "", canoutput_param_group[8], { canoutput_sel9 && enable_candata_out } + ; field = "", canoutput_param_group[9], { canoutput_sel10 && enable_candata_out } + ; field = "", canoutput_param_group[10], { canoutput_sel1 && enable_candata_out } + ; field = "", canoutput_param_group[11], { canoutput_sel2 && enable_candata_out } + ; field = "", canoutput_param_group[12], { canoutput_sel3 && enable_candata_out } + ; field = "", canoutput_param_group[13], { canoutput_sel4 && enable_candata_out } + ; field = "", canoutput_param_group[14], { canoutput_sel5 && enable_candata_out } + ; field = "", canoutput_param_group[15], { canoutput_sel6 && enable_candata_out } + dialog = canoutput_parameter_start_byte, "", yAxis field = "Output Parameter Start Byte" + field = "", canoutput_param_start_byte0, { canoutput_sel0 && enable_candata_out } field = "", canoutput_param_start_byte1, { canoutput_sel1 && enable_candata_out } field = "", canoutput_param_start_byte2, { canoutput_sel2 && enable_candata_out } field = "", canoutput_param_start_byte3, { canoutput_sel3 && enable_candata_out } field = "", canoutput_param_start_byte4, { canoutput_sel4 && enable_candata_out } field = "", canoutput_param_start_byte5, { canoutput_sel5 && enable_candata_out } - field = "", canoutput_param_start_byte6, { canoutput_sel6 && enable_candata_out } - field = "", canoutput_param_start_byte7, { canoutput_sel7 && enable_candata_out } - field = "", canoutput_param_start_byte8, { canoutput_sel8 && enable_candata_out } - + field = "", canoutput_param_start_byte6, { canoutput_sel6 && enable_candata_out } + field = "", canoutput_param_start_byte7, { canoutput_sel7 && enable_candata_out } + ; field = "", canoutput_param_start_byte8, { canoutput_sel8 && enable_candata_out } + ; field = "", canoutput_param_start_byte9, { canoutput_sel9 && enable_candata_out } + ; field = "", canoutput_param_start_byte10, { canoutput_sel10 && enable_candata_out } + ; field = "", canoutput_param_start_byte11, { canoutput_sel11 && enable_candata_out } + ; field = "", canoutput_param_start_byte12, { canoutput_sel12 && enable_candata_out } + ; field = "", canoutput_param_start_byte13, { canoutput_sel13 && enable_candata_out } +; field = "", canoutput_param_start_byte14, { canoutput_sel14 && enable_candata_out } + ; field = "", canoutput_param_start_byte15, { canoutput_sel15 && enable_candata_out } + dialog = canoutput_parameter_num_byte, "", yAxis field = "Output Parameter Number of Bytes" + field = "", canoutput_param_num_bytes0, { canoutput_sel0 && enable_candata_out } field = "", canoutput_param_num_bytes1, { canoutput_sel1 && enable_candata_out } field = "", canoutput_param_num_bytes2, { canoutput_sel2 && enable_candata_out } field = "", canoutput_param_num_bytes3, { canoutput_sel3 && enable_candata_out } field = "", canoutput_param_num_bytes4, { canoutput_sel4 && enable_candata_out } field = "", canoutput_param_num_bytes5, { canoutput_sel5 && enable_candata_out } - field = "", canoutput_param_num_bytes6, { canoutput_sel6 && enable_candata_out } - field = "", canoutput_param_num_bytes7, { canoutput_sel7 && enable_candata_out } - field = "", canoutput_param_num_bytes8, { canoutput_sel8 && enable_candata_out } - + field = "", canoutput_param_num_bytes6, { canoutput_sel6 && enable_candata_out } + field = "", canoutput_param_num_bytes7, { canoutput_sel7 && enable_candata_out } + ; field = "", canoutput_param_num_bytes8, { canoutput_sel8 && enable_candata_out } + ; field = "", canoutput_param_num_bytes9, { canoutput_sel9 && enable_candata_out } + ; field = "", canoutput_param_num_bytes10, { canoutput_sel10 && enable_candata_out } + ; field = "", canoutput_param_num_bytes11, { canoutput_sel11 && enable_candata_out } + ; field = "", canoutput_param_num_bytes12, { canoutput_sel12 && enable_candata_out } + ; field = "", canoutput_param_num_bytes13, { canoutput_sel13 && enable_candata_out } +; field = "", canoutput_param_num_bytes14, { canoutput_sel14 && enable_candata_out } + ; field = "", canoutput_param_num_bytes15, { canoutput_sel15 && enable_candata_out } + dialog = canoutconfig_blank1,"" field = "" @@ -1950,6 +2033,7 @@ cmdtestspk450dc = "E\x03\x0C" #if CAN_COMMANDS gaugeCategory = "CanBus Inputs" + CanGauge0 = canin_gauge0, "Can In0" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 CanGauge1 = canin_gauge1, "Can In1" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 CanGauge2 = canin_gauge2, "Can In2" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 CanGauge3 = canin_gauge3, "Can In3" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 @@ -1958,7 +2042,14 @@ cmdtestspk450dc = "E\x03\x0C" CanGauge6 = canin_gauge6, "Can In6" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 CanGauge7 = canin_gauge7, "Can In7" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 CanGauge8 = canin_gauge8, "Can In8" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 -#endif + CanGauge9 = canin_gauge9, "Can In9" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge10 = canin_gauge10, "Can In10" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge11 = canin_gauge11, "Can In11" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge12 = canin_gauge12, "Can In12" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge13 = canin_gauge13, "Can In13" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge14 = canin_gauge14, "Can In14" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge15 = canin_gauge15, "Can In15" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + #endif gaugeCategory = "Other" clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0 @@ -2087,7 +2178,7 @@ cmdtestspk450dc = "E\x03\x0C" deadValue = { 0 } ; Convenient unchanging value. ochGetCommand = "r\$tsCanId\x30%2o%2c" - ochBlockSize = 57 + ochBlockSize = 73 secl = scalar, U08, 0, "sec", 1.000, 0.000 squirt = scalar, U08, 1, "bits", 1.000, 0.000 @@ -2155,15 +2246,23 @@ cmdtestspk450dc = "E\x03\x0C" testoutputs = scalar, U08, 40, "bits", 1.000, 0.000 testenabled = bits, U08, 40, [0:0] testactive = bits, U08, 40, [1:1] - canin_gauge1 = scalar, U16, 41, "", 1.000, 0.000 - canin_gauge2 = scalar, U16, 43, "", 1.000, 0.000 - canin_gauge3 = scalar, U16, 45, "", 1.000, 0.000 - canin_gauge4 = scalar, U16, 47, "", 1.000, 0.000 - canin_gauge5 = scalar, U16, 49, "", 1.000, 0.000 - canin_gauge6 = scalar, U16, 51, "", 1.000, 0.000 - canin_gauge7 = scalar, U16, 53, "", 1.000, 0.000 - canin_gauge8 = scalar, U16, 55, "", 1.000, 0.000 - + canin_gauge0 = scalar, U16, 41, "", 1.000, 0.000 + canin_gauge1 = scalar, U16, 43, "", 1.000, 0.000 + canin_gauge2 = scalar, U16, 45, "", 1.000, 0.000 + canin_gauge3 = scalar, U16, 47, "", 1.000, 0.000 + canin_gauge4 = scalar, U16, 49, "", 1.000, 0.000 + canin_gauge5 = scalar, U16, 51, "", 1.000, 0.000 + canin_gauge6 = scalar, U16, 53, "", 1.000, 0.000 + canin_gauge7 = scalar, U16, 55, "", 1.000, 0.000 + canin_gauge8 = scalar, U16, 57, "", 1.000, 0.000 + canin_gauge9 = scalar, U16, 59, "", 1.000, 0.000 + canin_gauge10 = scalar, U16, 61, "", 1.000, 0.000 + canin_gauge11 = scalar, U16, 63, "", 1.000, 0.000 + canin_gauge12 = scalar, U16, 65, "", 1.000, 0.000 + canin_gauge13 = scalar, U16, 67, "", 1.000, 0.000 + canin_gauge14 = scalar, U16, 69, "", 1.000, 0.000 + canin_gauge15 = scalar, U16, 71, "", 1.000, 0.000 + ; Computed output channels. See "megatuneExamples.ini" for all the ; pre-defined variables, search for "???" and you'll see them. @@ -2279,6 +2378,7 @@ cmdtestspk450dc = "E\x03\x0C" entry = boostCutOut , "Boost cut", int, "%d" entry = idleLoad, "IAC value", int, "%d" + entry = canin_gauge0, "CanIn CH0", int, "%d" entry = canin_gauge1, "CanIn CH1", int, "%d" entry = canin_gauge2, "CanIn CH2", int, "%d" entry = canin_gauge3, "CanIn CH3", int, "%d" @@ -2286,7 +2386,6 @@ cmdtestspk450dc = "E\x03\x0C" entry = canin_gauge5, "CanIn CH5", int, "%d" entry = canin_gauge6, "CanIn CH6", int, "%d" entry = canin_gauge7, "CanIn CH7", int, "%d" - entry = canin_gauge8, "CanIn CH8", int, "%d" [LoggerDefinition] diff --git a/speeduino/cancomms.ino b/speeduino/cancomms.ino index 77902ed4..22a37563 100644 --- a/speeduino/cancomms.ino +++ b/speeduino/cancomms.ino @@ -22,37 +22,39 @@ void canCommand() break; case 'G': // this is the reply command sent by the Can interface - //uint8_t Gdata; - while (CANSerial.available() == 0) { } + byte destcaninchannel; + if (CANSerial.available() >= 10) + { cancmdfail = CANSerial.read(); - + destcaninchannel = CANSerial.read(); if (cancmdfail != 0) - { - for (byte Gx = 0; Gx < 8; Gx++) //read all 8 bytes of data - { - while (CANSerial.available() == 0) { } - Gdata[Gx] = CANSerial.read(); - } - - Glow = Gdata[(configPage10.caninput_param_start_byte[currentStatus.current_caninchannel])]; - if (configPage10.caninput_param_num_bytes[currentStatus.current_caninchannel] == 2) - { - if ((configPage10.caninput_param_start_byte[currentStatus.current_caninchannel]) != 7) //you cant have a 2 byte value starting at byte 7(8 on the list) - { - Ghigh = Gdata[((configPage10.caninput_param_start_byte[currentStatus.current_caninchannel])+1)]; - } - } + { // read all 8 bytes of data. + for (byte Gx = 0; Gx < 8; Gx++) // first two are the can address the data is from. next two are the can address the data is for.then next 1 or two bytes of data + { + Gdata[Gx] = CANSerial.read(); + } + Glow = Gdata[(configPage10.caninput_param_start_byte[destcaninchannel]&7)]; + if ((BIT_CHECK(configPage10.caninput_param_num_bytes,destcaninchannel))) //if true then num bytes is 2 + { + if ((configPage10.caninput_param_start_byte[destcaninchannel]&7) < 8) //you cant have a 2 byte value starting at byte 7(8 on the list) + { + Ghigh = Gdata[((configPage10.caninput_param_start_byte[destcaninchannel]&7)+1)]; + } + else{Ghigh = 0;} + } else - { - Ghigh = 0; - } - - currentStatus.canin[currentStatus.current_caninchannel] = word(Ghigh, Glow); + { + Ghigh = 0; + } + //currentStatus.canin[1] = (configPage10.caninput_param_num_bytes[currentStatus.current_caninchannel]);//Glow; + // currentStatus.canin[2] = Ghigh; + // currentStatus.canin[currentStatus.current_caninchannel] = word(Ghigh, Glow); //combine Ghigh and low to make the word and set the relavent canin value + currentStatus.canin[destcaninchannel] = Ghigh<<8 | Glow; } else{} //continue as command request failed and/or data/device was not available - if (currentStatus.current_caninchannel <= 6) // if channel is 0-7 + if (currentStatus.current_caninchannel < 15) // if channel is < 15 then we can do another one { currentStatus.current_caninchannel++; //inc to next channel } @@ -60,7 +62,7 @@ void canCommand() { currentStatus.current_caninchannel = 0; //reset to start } - + } break; case 'L': @@ -93,7 +95,7 @@ void canCommand() Cmd = CANSerial.read(); uint16_t offset, length; - if((Cmd == 0x30) || (Cmd >= 0x40 && Cmd <0x50) ) //Send output channels command 0x30 is 48dec, 0x40(64dec)-0x4F are external can request + if((Cmd == 0x30) || (Cmd >= 0x40 && Cmd <0x50) ) //Send output channels command 0x30 is 48dec, 0x40(64dec)-0x4F(79dec) are external can request { byte tmp; tmp = CANSerial.read(); @@ -101,7 +103,7 @@ void canCommand() tmp = CANSerial.read(); length = word(CANSerial.read(), tmp); sendValues(offset, length,Cmd, 3); - +//Serial.print(Cmd); } else { @@ -151,14 +153,16 @@ void sendCancommand(uint8_t cmdtype, uint16_t canaddress, uint8_t candata1, uint CANSerial.write(canaddress); //11 bit canaddress of device to listen for break; - case 2: - CANSerial.print("R"); //send "R" to request data from the parmagroup whos value is sent next - CANSerial.write( lowByte(paramgroup) ); //send lsb first - CANSerial.write( lowByte(paramgroup >> 8) ); + case 2: // requests via serial3 + CANSerial.print("R"); //send "R" to request data from the parmagroup can address whos value is sent next + CANSerial.write(candata1); //the currentStatus.current_caninchannel + CANSerial.write(lowByte(paramgroup) ); //send lsb first + CANSerial.write(highByte(paramgroup) ); break; case 3: //send to truecan send routine + //canaddress == speeduino canid, candata1 == canin channel dest, paramgroup == can address to request from break; default: diff --git a/speeduino/comms.h b/speeduino/comms.h index 223333dc..432e933e 100644 --- a/speeduino/comms.h +++ b/speeduino/comms.h @@ -12,7 +12,7 @@ #define seqFuelPage 9 #define canbusPage 10//Config Page 10 -#define packetSize 57//41 +#define packetSize 73 byte currentPage = 1;//Not the same as the speeduino config page numbers bool isMap = true; diff --git a/speeduino/comms.ino b/speeduino/comms.ino index 86e9562a..d9b19685 100644 --- a/speeduino/comms.ino +++ b/speeduino/comms.ino @@ -336,7 +336,23 @@ void sendValues(uint16_t offset, uint16_t packetLength, byte cmd, byte portNum) fullStatus[54] = highByte(currentStatus.canin[6]); fullStatus[55] = lowByte(currentStatus.canin[7]); fullStatus[56] = highByte(currentStatus.canin[7]); - + fullStatus[57] = lowByte(currentStatus.canin[8]); + fullStatus[58] = highByte(currentStatus.canin[8]); + fullStatus[59] = lowByte(currentStatus.canin[9]); + fullStatus[60] = highByte(currentStatus.canin[9]); + fullStatus[61] = lowByte(currentStatus.canin[10]); + fullStatus[62] = highByte(currentStatus.canin[10]); + fullStatus[63] = lowByte(currentStatus.canin[11]); + fullStatus[64] = highByte(currentStatus.canin[11]); + fullStatus[65] = lowByte(currentStatus.canin[12]); + fullStatus[66] = highByte(currentStatus.canin[12]); + fullStatus[67] = lowByte(currentStatus.canin[13]); + fullStatus[68] = highByte(currentStatus.canin[13]); + fullStatus[69] = lowByte(currentStatus.canin[14]); + fullStatus[70] = highByte(currentStatus.canin[14]); + fullStatus[71] = lowByte(currentStatus.canin[15]); + fullStatus[72] = highByte(currentStatus.canin[15]); + for(byte x=0; x