Merge pull request #89 from Autohome2/can_io_2

External devices over serial3 update
This commit is contained in:
Josh Stewart 2017-07-02 22:40:45 +10:00 committed by GitHub
commit f67f24f16d
7 changed files with 406 additions and 314 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<msq xmlns="http://www.msefi.com/:msq"> <msq xmlns="http://www.msefi.com/:msq">
<bibliography author="TunerStudio MS(Beta) 3.0.22 - EFI Analytics, Inc." tuneComment="" writeDate="Mon Jun 05 14:40:33 AEST 2017"/> <bibliography author="TunerStudio MS(Beta) 3.0.23 - EFI Analytics, Inc." tuneComment="" writeDate="Sat Jun 10 23:42:28 BST 2017"/>
<versionInfo fileFormat="5.0" firmwareInfo="Speeduino+2017.05" nPages="10" signature="speeduino 201705"/> <versionInfo fileFormat="5.0" firmwareInfo="Speeduino+2017.06-dev" nPages="10" signature="speeduino 201706-dev"/>
<page> <page>
<pcVariable name="tsCanId">"CAN ID 0"</pcVariable> <pcVariable name="tsCanId">"CAN ID 0"</pcVariable>
</page> </page>
@ -216,7 +216,7 @@
<constant name="useResync">"No"</constant> <constant name="useResync">"No"</constant>
<constant digits="1" name="sparkDur" units="ms">25.5</constant> <constant digits="1" name="sparkDur" units="ms">25.5</constant>
<constant digits="0" name="IdleAdvRPM" units="RPM">3200.0</constant> <constant digits="0" name="IdleAdvRPM" units="RPM">3200.0</constant>
<constant digits="1" name="IdleAdvCLT" units="C">-21.0</constant> <constant digits="0" name="IdleAdvCLT" units="F">-5.814</constant>
<constant digits="0" name="IdleDelayTime" units="sec">38.0</constant> <constant digits="0" name="IdleDelayTime" units="sec">38.0</constant>
<constant digits="0" name="StgCycles" units="cycles">2.0</constant> <constant digits="0" name="StgCycles" units="cycles">2.0</constant>
<constant name="dwellcont">"Dwell control"</constant> <constant name="dwellcont">"Dwell control"</constant>
@ -247,17 +247,17 @@
74.0 74.0
85.0 85.0
</constant> </constant>
<constant cols="1" digits="0" name="wueBins" rows="10" units="C"> <constant cols="1" digits="0" name="wueBins" rows="10" units="F">
-40.0 -40.014
-26.0 -14.814
-8.0 17.586
9.0 48.186
26.0 78.786
38.0 100.386
49.0 120.186
60.0 139.986
69.0 156.186
80.0 175.986
</constant> </constant>
<constant digits="0" name="dwellLim" units="ms">8.0</constant> <constant digits="0" name="dwellLim" units="ms">8.0</constant>
<constant cols="1" digits="0" name="dwellRates" rows="6" units="%"> <constant cols="1" digits="0" name="dwellRates" rows="6" units="%">
@ -268,13 +268,13 @@
91.0 91.0
85.0 85.0
</constant> </constant>
<constant cols="1" digits="0" name="iatRetBins" rows="6" units="C"> <constant cols="1" digits="0" name="iatRetBins" rows="6" units="F">
58.0 136.386
82.0 179.586
93.0 199.386
104.0 219.186
116.0 240.786
140.0 283.986
</constant> </constant>
<constant cols="1" digits="0" name="iatRetRates" rows="6" units="deg"> <constant cols="1" digits="0" name="iatRetRates" rows="6" units="deg">
0.0 0.0
@ -356,7 +356,7 @@
<constant digits="0" name="egoKP" units="%">100.0</constant> <constant digits="0" name="egoKP" units="%">100.0</constant>
<constant digits="0" name="egoKI" units="%">20.0</constant> <constant digits="0" name="egoKI" units="%">20.0</constant>
<constant digits="0" name="egoKD" units="%">0.0</constant> <constant digits="0" name="egoKD" units="%">0.0</constant>
<constant digits="0" name="egoTemp" units="C">70.0</constant> <constant digits="0" name="egoTemp" units="F">157.986</constant>
<constant digits="0" name="egoCount">16.0</constant> <constant digits="0" name="egoCount">16.0</constant>
<constant digits="0" name="egoDelta" units="%">1.0</constant> <constant digits="0" name="egoDelta" units="%">1.0</constant>
<constant digits="0" name="egoLimit">15.0</constant> <constant digits="0" name="egoLimit">15.0</constant>
@ -387,16 +387,16 @@
100.0 100.0
98.0 98.0
</constant> </constant>
<constant cols="1" digits="0" name="airDenBins" rows="9" units="C"> <constant cols="1" digits="0" name="airDenBins" rows="9" units="F">
-40.0 -40.014
-20.0 -4.014
0.0 31.986
20.0 67.986
35.0 94.986
50.0 121.986
60.0 139.986
90.0 193.986
120.0 247.986
</constant> </constant>
<constant cols="1" digits="0" name="airDenRates" rows="9" units="%"> <constant cols="1" digits="0" name="airDenRates" rows="9" units="%">
126.0 126.0
@ -474,17 +474,17 @@
16.0 16.0
9.0 9.0
</constant> </constant>
<constant cols="1" digits="0" name="iacBins" rows="10" units="C"> <constant cols="1" digits="0" name="iacBins" rows="10" units="F">
-38.0 -36.414
-19.0 -2.214
1.0 33.786
17.0 62.586
34.0 93.186
50.0 121.986
63.0 145.386
79.0 174.186
98.0 208.386
143.0 289.386
</constant> </constant>
<constant cols="1" digits="0" name="iacCrankSteps" rows="4" units="Steps"> <constant cols="1" digits="0" name="iacCrankSteps" rows="4" units="Steps">
123.0 123.0
@ -498,30 +498,30 @@
44.0 44.0
60.0 60.0
</constant> </constant>
<constant cols="1" digits="0" name="iacCrankBins" rows="4" units="C"> <constant cols="1" digits="0" name="iacCrankBins" rows="4" units="F">
-28.0 -18.414
6.0 42.786
44.0 111.186
76.0 168.786
</constant> </constant>
<constant name="iacAlgorithm">"None"</constant> <constant name="iacAlgorithm">"None"</constant>
<constant name="iacStepTime">"3"</constant> <constant name="iacStepTime">"3"</constant>
<constant name="iacChannels">"1"</constant> <constant name="iacChannels">"1"</constant>
<constant name="iacPWMdir">"Normal"</constant> <constant name="iacPWMdir">"Normal"</constant>
<constant digits="0" name="iacFastTemp" units="C">20.0</constant> <constant digits="0" name="iacFastTemp" units="F">67.986</constant>
<constant digits="0" name="iacStepHome" units="Steps">240.0</constant> <constant digits="0" name="iacStepHome" units="Steps">240.0</constant>
<constant digits="0" name="iacStepHyster" units="Steps">4.0</constant> <constant digits="0" name="iacStepHyster" units="Steps">4.0</constant>
<constant name="fanInv">"No"</constant> <constant name="fanInv">"No"</constant>
<constant name="fanEnable">"Off"</constant> <constant name="fanEnable">"Off"</constant>
<constant name="fanPin">"Board Default"</constant> <constant name="fanPin">"Board Default"</constant>
<constant digits="0" name="fanSP" units="C">75.0</constant> <constant digits="0" name="fanSP" units="F">166.986</constant>
<constant digits="0" name="fanHyster" units="C">2.0</constant> <constant digits="0" name="fanHyster" units="F">36.0</constant>
<constant digits="0" name="fanFreq" units="Hz">6.0</constant> <constant digits="0" name="fanFreq" units="Hz">6.0</constant>
<constant cols="1" digits="0" name="fanPWMBins" rows="4" units="C"> <constant cols="1" digits="0" name="fanPWMBins" rows="4" units="F">
60.0 139.986
-20.0 -4.014
-40.0 -40.014
158.0 316.386
</constant> </constant>
</page> </page>
<page number="7" size="160"> <page number="7" size="160">
@ -713,6 +713,14 @@
<constant name="caninput_param_start_byte6">"8"</constant> <constant name="caninput_param_start_byte6">"8"</constant>
<constant name="caninput_param_start_byte7">"8"</constant> <constant name="caninput_param_start_byte7">"8"</constant>
<constant name="caninput_param_start_byte8">"8"</constant> <constant name="caninput_param_start_byte8">"8"</constant>
<constant name="caninput_param_num_bytes1">"1"</constant>
<constant name="caninput_param_num_bytes2">"1"</constant>
<constant name="caninput_param_num_bytes3">"1"</constant>
<constant name="caninput_param_num_bytes4">"1"</constant>
<constant name="caninput_param_num_bytes5">"1"</constant>
<constant name="caninput_param_num_bytes6">"1"</constant>
<constant name="caninput_param_num_bytes7">"1"</constant>
<constant name="caninput_param_num_bytes8">"1"</constant>
<constant digits="0" name="unused10_41">255.0</constant> <constant digits="0" name="unused10_41">255.0</constant>
<constant digits="0" name="unused10_42">255.0</constant> <constant digits="0" name="unused10_42">255.0</constant>
<constant digits="0" name="unused10_43">255.0</constant> <constant digits="0" name="unused10_43">255.0</constant>
@ -772,6 +780,7 @@
<constant digits="0" name="unused10_97">255.0</constant> <constant digits="0" name="unused10_97">255.0</constant>
<constant digits="0" name="unused10_98">255.0</constant> <constant digits="0" name="unused10_98">255.0</constant>
<constant digits="0" name="unused10_99">255.0</constant> <constant digits="0" name="unused10_99">255.0</constant>
<constant name="speeduino_tsCanId">"CAN ID 0"</constant>
<constant digits="0" name="unused10_101">255.0</constant> <constant digits="0" name="unused10_101">255.0</constant>
<constant digits="0" name="unused10_103">255.0</constant> <constant digits="0" name="unused10_103">255.0</constant>
<constant digits="0" name="unused10_105">255.0</constant> <constant digits="0" name="unused10_105">255.0</constant>
@ -799,9 +808,9 @@
</page> </page>
<settings Comment="These setting are only used if this msq is opened without a project."> <settings Comment="These setting are only used if this msq is opened without a project.">
<setting name="enablehardware_test_OFF" value="enablehardware_test_OFF"/> <setting name="enablehardware_test_OFF" value="enablehardware_test_OFF"/>
<setting name="FAHRENHEIT" value="FAHRENHEIT"/>
<setting name="SPEED_DENSITY" value="SPEED_DENSITY"/> <setting name="SPEED_DENSITY" value="SPEED_DENSITY"/>
<setting name="CAN_COMMANDS_OFF" value="CAN_COMMANDS_OFF"/> <setting name="CAN_COMMANDS_OFF" value="CAN_COMMANDS_OFF"/>
<setting name="CELSIUS" value="CELSIUS"/>
<setting name="AFR" value="AFR"/> <setting name="AFR" value="AFR"/>
</settings> </settings>
<userComments Comment="These are user comments that can be related to a particular setting or dialog."/> <userComments Comment="These are user comments that can be related to a particular setting or dialog."/>

View File

@ -118,18 +118,18 @@
;New for TS 3.0.08ish upwards, define lists of standard I/O options ;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 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_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_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_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_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_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_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 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
#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"
;Page 1 is the fuel map and axis bins only ;Page 1 is the fuel map and axis bins only
page = 1 page = 1
@ -551,93 +551,114 @@ page = 10
enable_canbus = bits, U08, 0, [0:1], "Disable", "Enable", "INVALID", "INVALID" enable_canbus = bits, U08, 0, [0:1], "Disable", "Enable", "INVALID", "INVALID"
#endif #endif
enable_candata_in = bits, U08, 0, [2:2], "Off", "On" 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_sel0 = bits, U16, 1, [0:0], "Off", "On"
caninput_sel3 = bits, U08, 3, [0:0], "Off", "On" caninput_sel1 = bits, U16, 1, [1:1], "Off", "On"
caninput_sel4 = bits, U08, 4, [0:0], "Off", "On" caninput_sel2 = bits, U16, 1, [2:2], "Off", "On"
caninput_sel5 = bits, U08, 5, [0:0], "Off", "On" caninput_sel3 = bits, U16, 1, [3:3], "Off", "On"
caninput_sel6 = bits, U08, 6, [0:0], "Off", "On" caninput_sel4 = bits, U16, 1, [4:4], "Off", "On"
caninput_sel7 = bits, U08, 7, [0:0], "Off", "On" caninput_sel5 = bits, U16, 1, [5:5], "Off", "On"
caninput_sel8 = bits, U08, 8, [0:0], "Off", "On" caninput_sel6 = bits, U16, 1, [6:6], "Off", "On"
caninput_param_group = array , U16, 9, [ 8], "", 1, 0, 0, 65535, 0 caninput_sel7 = bits, U16, 1, [7:7], "Off", "On"
caninput_param_start_byte1 = bits, U08, 25, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_sel8 = bits, U16, 1, [8:8], "Off", "On"
caninput_param_start_byte2 = bits, U08, 26, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_sel9 = bits, U16, 1, [9:9], "Off", "On"
caninput_param_start_byte3 = bits, U08, 27, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_sel10 = bits, U16, 1, [10:10], "Off", "On"
caninput_param_start_byte4 = bits, U08, 28, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_sel11 = bits, U16, 1, [11:11], "Off", "On"
caninput_param_start_byte5 = bits, U08, 29, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_sel12 = bits, U16, 1, [12:12], "Off", "On"
caninput_param_start_byte6 = bits, U08, 30, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_sel13 = bits, U16, 1, [13:13], "Off", "On"
caninput_param_start_byte7 = bits, U08, 31, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_sel14 = bits, U16, 1, [14:14], "Off", "On"
caninput_param_start_byte8 = bits, U08, 32, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_sel15 = bits, U16, 1, [15:15], "Off", "On"
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_group = array , U16, 9, [ 8], "", 1, 0, 0, 65535, 0
caninput_param_num_bytes3 = bits, U08, 35, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_group0 = bits, U16, 3, [0:10], $CAN_ADDRESS_HEX
caninput_param_num_bytes4 = bits, U08, 36, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_group1 = bits, U16, 5, [0:10], $CAN_ADDRESS_HEX
caninput_param_num_bytes5 = bits, U08, 37, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_group2 = bits, U16, 7, [0:10], $CAN_ADDRESS_HEX
caninput_param_num_bytes6 = bits, U08, 38, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_group3 = bits, U16, 9, [0:10], $CAN_ADDRESS_HEX
caninput_param_num_bytes7 = bits, U08, 39, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_group4 = bits, U16, 11, [0:10], $CAN_ADDRESS_HEX
caninput_param_num_bytes8 = bits, U08, 40, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_group5 = bits, U16, 13, [0:10], $CAN_ADDRESS_HEX
unused10_41 = scalar, U08, 41, "", 1, 0, 0, 255, 0 caninput_param_group6 = bits, U16, 15, [0:10], $CAN_ADDRESS_HEX
unused10_42 = scalar, U08, 42, "", 1, 0, 0, 255, 0 caninput_param_group7 = bits, U16, 17, [0:10], $CAN_ADDRESS_HEX
unused10_43 = scalar, U08, 43, "", 1, 0, 0, 255, 0 caninput_param_group8 = bits, U16, 19, [0:10], $CAN_ADDRESS_HEX
unused10_44 = scalar, U08, 44, "", 1, 0, 0, 255, 0 caninput_param_group9 = bits, U16, 21, [0:10], $CAN_ADDRESS_HEX
unused10_45 = scalar, U08, 45, "", 1, 0, 0, 255, 0 caninput_param_group10 = bits, U16, 23, [0:10], $CAN_ADDRESS_HEX
unused10_46 = scalar, U08, 46, "", 1, 0, 0, 255, 0 caninput_param_group11 = bits, U16, 25, [0:10], $CAN_ADDRESS_HEX
unused10_47 = scalar, U08, 47, "", 1, 0, 0, 255, 0 caninput_param_group12 = bits, U16, 27, [0:10], $CAN_ADDRESS_HEX
unused10_48 = scalar, U08, 48, "", 1, 0, 0, 255, 0 caninput_param_group13 = bits, U16, 29, [0:10], $CAN_ADDRESS_HEX
unused10_49 = scalar, U08, 49, "", 1, 0, 0, 255, 0 caninput_param_group14 = bits, U16, 31, [0:10], $CAN_ADDRESS_HEX
enable_candata_out = bits, U08, 50, [0:0], "Off", "On" caninput_param_group15 = bits, U16, 33, [0:10], $CAN_ADDRESS_HEX
canoutput_sel1 = bits, U08, 51, [0:0], "Off", "On"
canoutput_sel2 = bits, U08, 52, [0:0], "Off", "On" caninput_param_start_byte0 = bits, U08, 35, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_sel3 = bits, U08, 53, [0:0], "Off", "On" caninput_param_start_byte1 = bits, U08, 36, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_sel4 = bits, U08, 54, [0:0], "Off", "On" caninput_param_start_byte2 = bits, U08, 37, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_sel5 = bits, U08, 55, [0:0], "Off", "On" caninput_param_start_byte3 = bits, U08, 38, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_sel6 = bits, U08, 56, [0:0], "Off", "On" caninput_param_start_byte4 = bits, U08, 39, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_sel7 = bits, U08, 57, [0:0], "Off", "On" caninput_param_start_byte5 = bits, U08, 40, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_sel8 = bits, U08, 58, [0:0], "Off", "On" caninput_param_start_byte6 = bits, U08, 41, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_param_group = array , U16, 59, [ 8], "", 1, 0, 0, 65535, 0 caninput_param_start_byte7 = bits, U08, 42, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_param_start_byte1 = bits, U08, 61, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_param_start_byte8 = bits, U08, 43, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_param_start_byte2 = bits, U08, 62, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_param_start_byte9 = bits, U08, 44, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_param_start_byte3 = bits, U08, 63, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_param_start_byte10 = bits, U08, 45, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_param_start_byte4 = bits, U08, 64, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_param_start_byte11 = bits, U08, 46, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_param_start_byte5 = bits, U08, 65, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_param_start_byte12 = bits, U08, 47, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_param_start_byte6 = bits, U08, 66, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_param_start_byte13 = bits, U08, 48, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_param_start_byte7 = bits, U08, 67, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_param_start_byte14 = bits, U08, 49, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
canoutput_param_start_byte8 = bits, U08, 68, [0:2], "1", "2", "3", "4", "5", "6", "7", "8" caninput_param_start_byte15 = bits, U08, 50, [0:2], "0", "1", "2", "3", "4", "5", "6", "7"
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" caninput_param_num_bytes0 = bits, U16, 51, [0:0], "1", "2"
canoutput_param_num_bytes3 = bits, U08, 71, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_num_bytes1 = bits, U16, 51, [1:1], "1", "2"
canoutput_param_num_bytes4 = bits, U08, 72, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_num_bytes2 = bits, U16, 51, [2:2], "1", "2"
canoutput_param_num_bytes5 = bits, U08, 73, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_num_bytes3 = bits, U16, 51, [3:3], "1", "2"
canoutput_param_num_bytes6 = bits, U08, 74, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_num_bytes4 = bits, U16, 51, [4:4], "1", "2"
canoutput_param_num_bytes7 = bits, U08, 75, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_num_bytes5 = bits, U16, 51, [5:5], "1", "2"
canoutput_param_num_bytes8 = bits, U08, 76, [0:1], "INVALID", "1", "2", "INVALID" caninput_param_num_bytes6 = bits, U16, 51, [6:6], "1", "2"
unused10_77 = scalar, U08, 77, "", 1, 0, 0, 255, 0 caninput_param_num_bytes7 = bits, U16, 51, [7:7], "1", "2"
unused10_78 = scalar, U08, 78, "", 1, 0, 0, 255, 0 caninput_param_num_bytes8 = bits, U16, 51, [8:8], "1", "2"
unused10_79 = scalar, U08, 79, "", 1, 0, 0, 255, 0 caninput_param_num_bytes9 = bits, U16, 51, [9:9], "1", "2"
unused10_80 = scalar, U08, 80, "", 1, 0, 0, 255, 0 caninput_param_num_bytes10 = bits, U16, 51, [10:10], "1", "2"
unused10_81 = scalar, U08, 81, "", 1, 0, 0, 255, 0 caninput_param_num_bytes11 = bits, U16, 51, [11:11], "1", "2"
unused10_82 = scalar, U08, 82, "", 1, 0, 0, 255, 0 caninput_param_num_bytes12 = bits, U16, 51, [12:12], "1", "2"
unused10_83 = scalar, U08, 83, "", 1, 0, 0, 255, 0 caninput_param_num_bytes13 = bits, U16, 51, [13:13], "1", "2"
unused10_84 = scalar, U08, 84, "", 1, 0, 0, 255, 0 caninput_param_num_bytes14 = bits, U16, 51, [14:14], "1", "2"
unused10_85 = scalar, U08, 85, "", 1, 0, 0, 255, 0 caninput_param_num_bytes15 = bits, U16, 51, [15:15], "1", "2"
unused10_86 = scalar, U08, 86, "", 1, 0, 0, 255, 0
unused10_87 = scalar, U08, 87, "", 1, 0, 0, 255, 0 unused10_53 = scalar, U08, 53, "", 1, 0, 0, 255, 0
unused10_88 = scalar, U08, 88, "", 1, 0, 0, 255, 0 unused10_54 = scalar, U08, 54, "", 1, 0, 0, 255, 0
unused10_89 = scalar, U08, 89, "", 1, 0, 0, 255, 0 enable_candata_out = bits, U08, 55, [0:0], "Off", "On"
unused10_90 = scalar, U08, 90, "", 1, 0, 0, 255, 0 canoutput_sel0 = bits, U08, 56, [0:0], "Off", "On"
unused10_91 = scalar, U08, 91, "", 1, 0, 0, 255, 0 canoutput_sel1 = bits, U08, 57, [0:0], "Off", "On"
unused10_92 = scalar, U08, 92, "", 1, 0, 0, 255, 0 canoutput_sel2 = bits, U08, 58, [0:0], "Off", "On"
unused10_93 = scalar, U08, 93, "", 1, 0, 0, 255, 0 canoutput_sel3 = bits, U08, 59, [0:0], "Off", "On"
unused10_94 = scalar, U08, 94, "", 1, 0, 0, 255, 0 canoutput_sel4 = bits, U08, 60, [0:0], "Off", "On"
unused10_95 = scalar, U08, 95, "", 1, 0, 0, 255, 0 canoutput_sel5 = bits, U08, 61, [0:0], "Off", "On"
unused10_96 = scalar, U08, 96, "", 1, 0, 0, 255, 0 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_97 = scalar, U08, 97, "", 1, 0, 0, 255, 0
unused10_98 = scalar, U08, 98, "", 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 unused10_99 = scalar, U08, 99, "", 1, 0, 0, 255, 0
speeduino_tsCanId = bits, U08, 100, [0:3], $tsCanId_list speeduino_tsCanId = bits, U08, 100, [0:3], $tsCanId_list
true_address = bits, U16, 101, [0:10], $CAN_ADDRESS_HEX_02XX true_address = bits, U16, 101, [0:10], $CAN_ADDRESS_HEX
realtime_base_address = bits, U16, 103, [0:10], $CAN_ADDRESS_HEX_02XX realtime_base_address = bits, U16, 103, [0:10], $CAN_ADDRESS_HEX
obd_address = bits, U16, 105, [0:10], $CAN_ADDRESS_HEX_02XX obd_address = bits, U16, 105, [0:10], $CAN_ADDRESS_HEX
;unused10_101 = scalar, U16, 101, "", 1, 0, 0, 255, 0 ;unused10_101 = scalar, U16, 101, "", 1, 0, 0, 255, 0
;unused10_103 = scalar, U16, 103, "", 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 ;unused10_105 = scalar, U16, 105, "", 1, 0, 0, 255, 0
@ -738,9 +759,9 @@ page = 10
defaultValue = boostMaxDuty,100 defaultValue = boostMaxDuty,100
defaultValue = sparkDur, 1.0 defaultValue = sparkDur, 1.0
defaultValue = speeduino_tsCanId, 0 defaultValue = speeduino_tsCanId, 0
;defaultValue = true_address, 0 ; defaultValue = true_address, 0
;defaultValue = realtime_base_address, 0 ; defaultValue = realtime_base_address, 0
;defaultValue = obd_address, 0 ; defaultValue = obd_address, 0
;Default pins ;Default pins
defaultValue = fanPin, 0 defaultValue = fanPin, 0
@ -949,9 +970,10 @@ menuDialog = main
#else #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 " 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 #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" ;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 " ;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" ;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_sel1 = "This Enables CAN data input channel 1 "
caninput_sel2 = "This Enables CAN data input channel 2 " caninput_sel2 = "This Enables CAN data input channel 2 "
caninput_sel3 = "This Enables CAN data input channel 3 " caninput_sel3 = "This Enables CAN data input channel 3 "
@ -959,7 +981,6 @@ menuDialog = main
caninput_sel5 = "This Enables CAN data input channel 5 " caninput_sel5 = "This Enables CAN data input channel 5 "
caninput_sel6 = "This Enables CAN data input channel 6 " caninput_sel6 = "This Enables CAN data input channel 6 "
caninput_sel7 = "This Enables CAN data input channel 7 " 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_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_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" ;caninput_param_group3 = "The ID number of the parameter group of the data for channel 3"
@ -968,6 +989,7 @@ menuDialog = main
;caninput_param_group6 = "The ID number of the parameter group of the data for channel 6" ;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_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_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_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_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" caninput_param_start_byte3 = "The Starting byte the specific data begins at for channel 3"
@ -975,7 +997,7 @@ menuDialog = main
caninput_param_start_byte5 = "The Starting byte the specific data begins at for channel 5" 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_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_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_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_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" caninput_param_num_bytes3 = "The number of bytes the specific data is made from starting at selected start byte number"
@ -983,7 +1005,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_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_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_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" cmdEnableTestMode = "Click this to enable test mode. This will not be available if the engine is running"
cmdStopTestMode = "Click this to disable test mode" cmdStopTestMode = "Click this to disable test mode"
@ -1458,6 +1479,7 @@ menuDialog = main
dialog = caninput_sel, "" dialog = caninput_sel, ""
;CAN inputs ;CAN inputs
field = "CAN Input Channel on/off" 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 1", caninput_sel1, { enable_candata_in }
field = "CAN Input 2", caninput_sel2, { enable_candata_in } field = "CAN Input 2", caninput_sel2, { enable_candata_in }
field = "CAN Input 3", caninput_sel3, { enable_candata_in } field = "CAN Input 3", caninput_sel3, { enable_candata_in }
@ -1466,20 +1488,36 @@ menuDialog = main
field = "CAN Input 6", caninput_sel6, { enable_candata_in } field = "CAN Input 6", caninput_sel6, { enable_candata_in }
field = "CAN Input 7", caninput_sel7, { enable_candata_in } field = "CAN Input 7", caninput_sel7, { enable_candata_in }
field = "CAN Input 8", caninput_sel8, { 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 dialog = caninput_parameter_group, "", yAxis
field = "Input Parameter Group" field = "Input Parameter Group"
field = "", caninput_param_group[0], { caninput_sel1 && enable_candata_in } field = "", caninput_param_group0, { caninput_sel0 && enable_candata_in }
field = "", caninput_param_group[1], { caninput_sel2 && enable_candata_in } field = "", caninput_param_group1, { caninput_sel1 && enable_candata_in }
field = "", caninput_param_group[2], { caninput_sel3 && enable_candata_in } field = "", caninput_param_group2, { caninput_sel2 && enable_candata_in }
field = "", caninput_param_group[3], { caninput_sel4 && enable_candata_in } field = "", caninput_param_group3, { caninput_sel3 && enable_candata_in }
field = "", caninput_param_group[4], { caninput_sel5 && enable_candata_in } field = "", caninput_param_group4, { caninput_sel4 && enable_candata_in }
field = "", caninput_param_group[5], { caninput_sel6 && enable_candata_in } field = "", caninput_param_group5, { caninput_sel5 && enable_candata_in }
field = "", caninput_param_group[6], { caninput_sel7 && enable_candata_in } field = "", caninput_param_group6, { caninput_sel6 && enable_candata_in }
field = "", caninput_param_group[7], { caninput_sel8 && 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 dialog = caninput_parameter_start_byte, "", yAxis
field = "Input Parameter Start Byte" 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_byte1, { caninput_sel1 && enable_candata_in }
field = "", caninput_param_start_byte2, { caninput_sel2 && 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_byte3, { caninput_sel3 && enable_candata_in }
@ -1488,17 +1526,32 @@ menuDialog = main
field = "", caninput_param_start_byte6, { caninput_sel6 && 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_byte7, { caninput_sel7 && enable_candata_in }
field = "", caninput_param_start_byte8, { caninput_sel8 && 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 dialog = caninput_parameter_num_byte, "", yAxis
field = "Input Parameter Number of Bytes" 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_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_bytes3, { caninput_sel3 && enable_candata_in }
field = "", caninput_param_num_bytes4, { caninput_sel4 && 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_bytes5, { caninput_sel5 && enable_candata_in }
field = "", caninput_param_num_bytes6, { caninput_sel6 && 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_bytes7, { caninput_sel7 && enable_candata_in }
field = "", caninput_param_num_bytes8, { caninput_sel8 && 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,"" dialog = caninconfig_blank1,""
field = "" field = ""
@ -1523,28 +1576,45 @@ menuDialog = main
dialog = canoutput_sel, "" dialog = canoutput_sel, ""
;CAN outputs ;CAN outputs
field = "CAN Output Channel on/off" 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 2", canoutput_sel2, { enable_candata_out }
field = "CAN Output 3", canoutput_sel3, { enable_candata_out } field = "CAN Output 3", canoutput_sel3, { enable_candata_out }
field = "CAN Output 4", canoutput_sel4, { enable_candata_out } field = "CAN Output 4", canoutput_sel4, { enable_candata_out }
field = "CAN Output 5", canoutput_sel5, { enable_candata_out } field = "CAN Output 5", canoutput_sel5, { enable_candata_out }
field = "CAN Output 6", canoutput_sel6, { enable_candata_out } field = "CAN Output 6", canoutput_sel6, { enable_candata_out }
field = "CAN Output 7", canoutput_sel7, { enable_candata_out } field = "CAN Output 7", canoutput_sel7, { enable_candata_out }
field = "CAN Output 8", canoutput_sel8, { 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 dialog = canoutput_parameter_group, "", yAxis
field = "Output Parameter Group" field = "Output Parameter Group"
field = "", canoutput_param_group[0], { canoutput_sel1 && enable_candata_out } field = "", canoutput_param_group[0], { canoutput_sel0 && enable_candata_out }
field = "", canoutput_param_group[1], { canoutput_sel2 && 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[2], { canoutput_sel3 && enable_candata_out }
field = "", canoutput_param_group[3], { canoutput_sel4 && enable_candata_out } field = "", canoutput_param_group[3], { canoutput_sel3 && enable_candata_out }
field = "", canoutput_param_group[4], { canoutput_sel5 && enable_candata_out } field = "", canoutput_param_group[4], { canoutput_sel4 && enable_candata_out }
field = "", canoutput_param_group[5], { canoutput_sel6 && enable_candata_out } field = "", canoutput_param_group[5], { canoutput_sel5 && enable_candata_out }
field = "", canoutput_param_group[6], { canoutput_sel7 && enable_candata_out } field = "", canoutput_param_group[6], { canoutput_sel6 && enable_candata_out }
field = "", canoutput_param_group[7], { canoutput_sel8 && 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 dialog = canoutput_parameter_start_byte, "", yAxis
field = "Output Parameter Start Byte" 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_byte1, { canoutput_sel1 && enable_candata_out }
field = "", canoutput_param_start_byte2, { canoutput_sel2 && 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_byte3, { canoutput_sel3 && enable_candata_out }
@ -1552,10 +1622,18 @@ menuDialog = main
field = "", canoutput_param_start_byte5, { canoutput_sel5 && 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_byte6, { canoutput_sel6 && enable_candata_out }
field = "", canoutput_param_start_byte7, { canoutput_sel7 && 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_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 dialog = canoutput_parameter_num_byte, "", yAxis
field = "Output Parameter Number of Bytes" 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_bytes1, { canoutput_sel1 && enable_candata_out }
field = "", canoutput_param_num_bytes2, { canoutput_sel2 && 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_bytes3, { canoutput_sel3 && enable_candata_out }
@ -1563,7 +1641,14 @@ menuDialog = main
field = "", canoutput_param_num_bytes5, { canoutput_sel5 && 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_bytes6, { canoutput_sel6 && enable_candata_out }
field = "", canoutput_param_num_bytes7, { canoutput_sel7 && 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_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,"" dialog = canoutconfig_blank1,""
field = "" field = ""
@ -1588,9 +1673,9 @@ menuDialog = main
dialog = can_serial3IO, "CanBus/Serial3 IO interface" dialog = can_serial3IO, "CanBus/Serial3 IO interface"
topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface" topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface"
field = "Enable CanBus/Second Serial", enable_canbus field = "Enable CanBus/Second Serial", enable_canbus
field = "Speeduino TsCanId", speeduino_tsCanId ; field = "Speeduino TsCanId", speeduino_tsCanId
field = "Realtime Data Base Can Address", realtime_base_address ; field = "Realtime Data Base Can Address", realtime_base_address
field = "Speeduino OBD address", obd_address ; field = "Speeduino OBD address", obd_address
dialog = serial3IO, "Serial3 IO interface" dialog = serial3IO, "Serial3 IO interface"
topicHelp = "http://speeduino.com/wiki/index.php/Serial3_IO_interface" topicHelp = "http://speeduino.com/wiki/index.php/Serial3_IO_interface"
@ -1950,6 +2035,7 @@ cmdtestspk450dc = "E\x03\x0C"
#if CAN_COMMANDS #if CAN_COMMANDS
gaugeCategory = "CanBus Inputs" 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 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 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 CanGauge3 = canin_gauge3, "Can In3" "", 0, 1024, -1, -1, 1025, 1025, 0, 0
@ -1958,7 +2044,14 @@ cmdtestspk450dc = "E\x03\x0C"
CanGauge6 = canin_gauge6, "Can In6" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 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 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 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" gaugeCategory = "Other"
clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0 clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0
@ -2087,7 +2180,7 @@ cmdtestspk450dc = "E\x03\x0C"
deadValue = { 0 } ; Convenient unchanging value. deadValue = { 0 } ; Convenient unchanging value.
ochGetCommand = "r\$tsCanId\x30%2o%2c" ochGetCommand = "r\$tsCanId\x30%2o%2c"
ochBlockSize = 57 ochBlockSize = 73
secl = scalar, U08, 0, "sec", 1.000, 0.000 secl = scalar, U08, 0, "sec", 1.000, 0.000
squirt = scalar, U08, 1, "bits", 1.000, 0.000 squirt = scalar, U08, 1, "bits", 1.000, 0.000
@ -2155,14 +2248,22 @@ cmdtestspk450dc = "E\x03\x0C"
testoutputs = scalar, U08, 40, "bits", 1.000, 0.000 testoutputs = scalar, U08, 40, "bits", 1.000, 0.000
testenabled = bits, U08, 40, [0:0] testenabled = bits, U08, 40, [0:0]
testactive = bits, U08, 40, [1:1] testactive = bits, U08, 40, [1:1]
canin_gauge1 = scalar, U16, 41, "", 1.000, 0.000 canin_gauge0 = scalar, U16, 41, "", 1.000, 0.000
canin_gauge2 = scalar, U16, 43, "", 1.000, 0.000 canin_gauge1 = scalar, U16, 43, "", 1.000, 0.000
canin_gauge3 = scalar, U16, 45, "", 1.000, 0.000 canin_gauge2 = scalar, U16, 45, "", 1.000, 0.000
canin_gauge4 = scalar, U16, 47, "", 1.000, 0.000 canin_gauge3 = scalar, U16, 47, "", 1.000, 0.000
canin_gauge5 = scalar, U16, 49, "", 1.000, 0.000 canin_gauge4 = scalar, U16, 49, "", 1.000, 0.000
canin_gauge6 = scalar, U16, 51, "", 1.000, 0.000 canin_gauge5 = scalar, U16, 51, "", 1.000, 0.000
canin_gauge7 = scalar, U16, 53, "", 1.000, 0.000 canin_gauge6 = scalar, U16, 53, "", 1.000, 0.000
canin_gauge8 = scalar, U16, 55, "", 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 ; Computed output channels. See "megatuneExamples.ini" for all the
; pre-defined variables, search for "???" and you'll see them. ; pre-defined variables, search for "???" and you'll see them.
@ -2279,6 +2380,7 @@ cmdtestspk450dc = "E\x03\x0C"
entry = boostCutOut , "Boost cut", int, "%d" entry = boostCutOut , "Boost cut", int, "%d"
entry = idleLoad, "IAC value", int, "%d" entry = idleLoad, "IAC value", int, "%d"
entry = canin_gauge0, "CanIn CH0", int, "%d"
entry = canin_gauge1, "CanIn CH1", int, "%d" entry = canin_gauge1, "CanIn CH1", int, "%d"
entry = canin_gauge2, "CanIn CH2", int, "%d" entry = canin_gauge2, "CanIn CH2", int, "%d"
entry = canin_gauge3, "CanIn CH3", int, "%d" entry = canin_gauge3, "CanIn CH3", int, "%d"
@ -2286,7 +2388,6 @@ cmdtestspk450dc = "E\x03\x0C"
entry = canin_gauge5, "CanIn CH5", int, "%d" entry = canin_gauge5, "CanIn CH5", int, "%d"
entry = canin_gauge6, "CanIn CH6", int, "%d" entry = canin_gauge6, "CanIn CH6", int, "%d"
entry = canin_gauge7, "CanIn CH7", int, "%d" entry = canin_gauge7, "CanIn CH7", int, "%d"
entry = canin_gauge8, "CanIn CH8", int, "%d"
[LoggerDefinition] [LoggerDefinition]

View File

@ -18,41 +18,43 @@ void canCommand()
switch (currentcanCommand) switch (currentcanCommand)
{ {
case 'A': // sends the bytes of realtime values 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; break;
case 'G': // this is the reply command sent by the Can interface case 'G': // this is the reply command sent by the Can interface
//uint8_t Gdata; byte destcaninchannel;
while (CANSerial.available() == 0) { } if (CANSerial.available() >= 10)
{
cancmdfail = CANSerial.read(); cancmdfail = CANSerial.read();
destcaninchannel = CANSerial.read();
if (cancmdfail != 0) if (cancmdfail != 0)
{ // 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
{ {
for (byte Gx = 0; Gx < 8; Gx++) //read all 8 bytes of data
{
while (CANSerial.available() == 0) { }
Gdata[Gx] = CANSerial.read(); Gdata[Gx] = CANSerial.read();
} }
Glow = Gdata[(configPage10.caninput_param_start_byte[destcaninchannel]&7)];
Glow = Gdata[(configPage10.caninput_param_start_byte[currentStatus.current_caninchannel])]; if ((BIT_CHECK(configPage10.caninput_param_num_bytes,destcaninchannel))) //if true then num bytes is 2
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) 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[currentStatus.current_caninchannel])+1)]; Ghigh = Gdata[((configPage10.caninput_param_start_byte[destcaninchannel]&7)+1)];
} }
else{Ghigh = 0;}
} }
else else
{ {
Ghigh = 0; Ghigh = 0;
} }
//currentStatus.canin[1] = (configPage10.caninput_param_num_bytes[currentStatus.current_caninchannel]);//Glow;
currentStatus.canin[currentStatus.current_caninchannel] = word(Ghigh, 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 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 currentStatus.current_caninchannel++; //inc to next channel
} }
@ -60,7 +62,7 @@ void canCommand()
{ {
currentStatus.current_caninchannel = 0; //reset to start currentStatus.current_caninchannel = 0; //reset to start
} }
}
break; break;
case 'L': case 'L':
@ -86,23 +88,22 @@ void canCommand()
break; break;
case 'r': //New format for the optimised OutputChannels case 'r': //New format for the optimised OutputChannels
byte cmd; byte Cmd;
if (CANSerial.available() >= 6) if (CANSerial.available() >= 6)
{ {
CANSerial.read(); //Read the $tsCanId CANSerial.read(); //Read the $tsCanId
cmd = CANSerial.read(); Cmd = CANSerial.read();
uint16_t offset, length; 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(79dec) are external can request
{ {
byte tmp; byte tmp;
tmp = CANSerial.read(); tmp = CANSerial.read();
offset = word(CANSerial.read(), tmp); offset = word(CANSerial.read(), tmp);
tmp = CANSerial.read(); tmp = CANSerial.read();
length = word(CANSerial.read(), tmp); length = word(CANSerial.read(), tmp);
sendValues(offset, length,Cmd, 3);
sendValues(offset, length, 3); //Serial.print(Cmd);
} }
else else
{ {
@ -152,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 CANSerial.write(canaddress); //11 bit canaddress of device to listen for
break; break;
case 2: case 2: // requests via serial3
CANSerial.print("R"); //send "R" to request data from the parmagroup whos value is sent next CANSerial.print("R"); //send "R" to request data from the parmagroup can address whos value is sent next
CANSerial.write( lowByte(paramgroup) ); //send lsb first CANSerial.write(candata1); //the currentStatus.current_caninchannel
CANSerial.write( lowByte(paramgroup >> 8) ); CANSerial.write(lowByte(paramgroup) ); //send lsb first
CANSerial.write(highByte(paramgroup) );
break; break;
case 3: case 3:
//send to truecan send routine //send to truecan send routine
//canaddress == speeduino canid, candata1 == canin channel dest, paramgroup == can address to request from
break; break;
default: default:

View File

@ -12,7 +12,7 @@
#define seqFuelPage 9 #define seqFuelPage 9
#define canbusPage 10//Config Page 10 #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 byte currentPage = 1;//Not the same as the speeduino config page numbers
bool isMap = true; bool isMap = true;
@ -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 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 receiveValue(int offset, byte newValue);
void saveConfig(); void saveConfig();
void sendPage(bool useChar); void sendPage(bool useChar);

View File

@ -21,7 +21,7 @@ void command()
{ {
case 'A': // send x bytes of realtime values 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; break;
@ -190,7 +190,7 @@ void command()
offset = word(Serial.read(), tmp); offset = word(Serial.read(), tmp);
tmp = Serial.read(); tmp = Serial.read();
length = word(Serial.read(), tmp); length = word(Serial.read(), tmp);
sendValues(offset, length, 0); sendValues(offset, length,cmd, 0);
} }
else else
{ {
@ -244,33 +244,23 @@ void command()
This function returns the current values of a fixed group of variables This function returns the current values of a fixed group of variables
*/ */
//void sendValues(int packetlength, byte portNum) //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]; byte fullStatus[packetSize];
if (portNum == 3) if (portNum == 3)
{ {
//CAN serial //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) if (offset == 0)
{ {
Serial3.write("A"); //confirm cmd type CANSerial.write("A"); //confirm cmd type
} }
else 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 #endif
} }
else else
@ -346,11 +336,27 @@ void sendValues(uint16_t offset, uint16_t packetLength, byte portNum)
fullStatus[54] = highByte(currentStatus.canin[6]); fullStatus[54] = highByte(currentStatus.canin[6]);
fullStatus[55] = lowByte(currentStatus.canin[7]); fullStatus[55] = lowByte(currentStatus.canin[7]);
fullStatus[56] = highByte(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<packetLength; x++) for(byte x=0; x<packetLength; x++)
{ {
if (portNum == 0) { Serial.write(fullStatus[offset+x]); } if (portNum == 0) { Serial.write(fullStatus[offset+x]); }
else if (portNum == 3) { CANSerial.write(fullStatus[offset+x]); } else if (portNum == 3){ CANSerial.write(fullStatus[offset+x]); }
} }
} }

View File

@ -234,7 +234,7 @@ struct statuses {
bool testActive; bool testActive;
byte boostDuty; byte boostDuty;
byte idleLoad; //Either the current steps or current duty cycle for the idle control. byte idleLoad; //Either the current steps or current duty cycle for the idle control.
int canin[9]; //16bit raw value of selected canin data for channel 1-8 uint16_t canin[16]; //16bit raw value of selected canin data for channel 0-15
uint8_t current_caninchannel = 0; //start off at channel 0 uint8_t current_caninchannel = 0; //start off at channel 0
//Helpful bitwise operations: //Helpful bitwise operations:
@ -510,45 +510,18 @@ struct config4 {
struct config10 { struct config10 {
byte enable_canbus:2; byte enable_canbus:2;
byte enable_candata_in:1; byte enable_candata_in:1;
byte caninput_sel[8]; uint16_t caninput_sel; //bit status on/off if input is enabled
uint16_t caninput_param_group[8]; uint16_t caninput_param_group[16]; //u16 [15] array holding can address of input
uint8_t caninput_param_start_byte[8]; uint8_t caninput_param_start_byte[16]; //u08 [15] array holds the start byte number(value of 0-7)
byte caninput_param_num_bytes[8]; uint16_t caninput_param_num_bytes; //u16 bit status of the number of bytes length 1 or 2
byte unused10_41; byte unused10_53;
byte unused10_42; byte unused10_54;
byte unused10_43;
byte unused10_44;
byte unused10_45;
byte unused10_46;
byte unused10_47;
byte unused10_48;
byte unused10_49;
byte enable_candata_out : 1; byte enable_candata_out : 1;
byte canoutput_sel[8]; byte canoutput_sel[8];
uint16_t canoutput_param_group[8]; uint16_t canoutput_param_group[8];
uint8_t canoutput_param_start_byte[8]; uint8_t canoutput_param_start_byte[8];
byte canoutput_param_num_bytes[8]; byte canoutput_param_num_bytes[8];
byte unused10_76;
byte unused10_77;
byte unused10_78;
byte unused10_79;
byte unused10_80;
byte unused10_81;
byte unused10_82;
byte unused10_83;
byte unused10_84;
byte unused10_85;
byte unused10_86;
byte unused10_87;
byte unused10_88;
byte unused10_89;
byte unused10_90;
byte unused10_91;
byte unused10_92;
byte unused10_93;
byte unused10_94;
byte unused10_95;
byte unused10_96;
byte unused10_97; byte unused10_97;
byte unused10_98; byte unused10_98;
byte unused10_99; byte unused10_99;

View File

@ -856,9 +856,9 @@ void loop()
//if serial3 interface is enabled then check for serial3 requests. //if serial3 interface is enabled then check for serial3 requests.
if (configPage10.enable_canbus == 1) if (configPage10.enable_canbus == 1)
{ {
if ( ((mainLoopCount & 31) == 1) or (Serial3.available() > SERIAL_BUFFER_THRESHOLD) ) if ( ((mainLoopCount & 31) == 1) or (CANSerial.available() > SERIAL_BUFFER_THRESHOLD) )
{ {
if (Serial3.available() > 0) if (CANSerial.available() > 0)
{ {
canCommand(); canCommand();
} }
@ -1010,15 +1010,15 @@ void loop()
{ {
if (configPage10.enable_candata_in) if (configPage10.enable_candata_in)
{ {
if (configPage10.caninput_sel[currentStatus.current_caninchannel]) //if current input channel is enabled if (BIT_CHECK(configPage10.caninput_sel,currentStatus.current_caninchannel)) //if current input channel bit is enabled
{ {
sendCancommand(2,0,0,0,configPage10.caninput_param_group[currentStatus.current_caninchannel]); //send an R command for data from paramgroup[currentStatus.current_caninchannel] sendCancommand(2,0,currentStatus.current_caninchannel,0,((configPage10.caninput_param_group[currentStatus.current_caninchannel]&2047)+256)); //send an R command for data from paramgroup[currentStatus.current_caninchannel]
} }
else else
{ {
if (currentStatus.current_caninchannel <= 6) if (currentStatus.current_caninchannel < 15)
{ {
currentStatus.current_caninchannel++; //step to next input channel if under 9 currentStatus.current_caninchannel++; //step to next input channel if under 15
} }
else else
{ {
@ -1031,26 +1031,26 @@ void loop()
//if serial3io is enabled then check for serial3 requests. //if serial3io is enabled then check for serial3 requests.
if (configPage10.enable_candata_in) if (configPage10.enable_candata_in)
{ {
if (configPage10.caninput_sel[currentStatus.current_caninchannel]) //if current input channel is enabled if (BIT_CHECK(configPage10.caninput_sel,currentStatus.current_caninchannel)) //if current input channel is enabled
{ {
if (configPage10.enable_canbus == 1) //can via secondary serial if (configPage10.enable_canbus == 1) //can via secondary serial
{ {
sendCancommand(2,0,0,0,configPage10.caninput_param_group[currentStatus.current_caninchannel]); //send an R command for data from paramgroup[currentStatus.current_caninchannel] sendCancommand(2,0,currentStatus.current_caninchannel,0,((configPage10.caninput_param_group[currentStatus.current_caninchannel]&2047)+256)); //send an R command for data from paramgroup[currentStatus.current_caninchannel]
} }
else if (configPage10.enable_canbus == 2) // can via internal can module else if (configPage10.enable_canbus == 2) // can via internal can module
{ {
sendCancommand(3,configPage10.speeduino_tsCanId,0,0,configPage10.caninput_param_group[currentStatus.current_caninchannel]); //send via localcanbus the command for data from paramgroup[currentStatus.current_caninchannel] sendCancommand(3,configPage10.speeduino_tsCanId,currentStatus.current_caninchannel,0,configPage10.caninput_param_group[currentStatus.current_caninchannel]); //send via localcanbus the command for data from paramgroup[currentStatus.current_caninchannel]
} }
} }
else else
{ {
if (currentStatus.current_caninchannel <= 6) if (currentStatus.current_caninchannel < 15)
{ {
currentStatus.current_caninchannel++; //step to next input channel if under 9 currentStatus.current_caninchannel++; //step to next input channel if under 15
} }
else else
{ {
currentStatus.current_caninchannel = 0; //reset input channel back to 1 currentStatus.current_caninchannel = 0; //reset input channel back to 0
} }
} }
} }