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

View File

@ -18,41 +18,43 @@ void canCommand()
switch (currentcanCommand)
{
case 'A': // sends the bytes of realtime values
sendValues(0, packetSize,3); //send values to serial3
sendValues(0, packetSize,0x30,3); //send values to serial3
break;
case 'G': // this is the reply command sent by the Can interface
//uint8_t Gdata;
while (CANSerial.available() == 0) { }
byte destcaninchannel;
if (CANSerial.available() >= 10)
{
cancmdfail = CANSerial.read();
destcaninchannel = CANSerial.read();
if (cancmdfail != 0)
{
for (byte Gx = 0; Gx < 8; Gx++) //read all 8 bytes of data
{
while (CANSerial.available() == 0) { }
Gdata[Gx] = CANSerial.read();
}
Glow = Gdata[(configPage10.caninput_param_start_byte[currentStatus.current_caninchannel])];
if (configPage10.caninput_param_num_bytes[currentStatus.current_caninchannel] == 2)
{
if ((configPage10.caninput_param_start_byte[currentStatus.current_caninchannel]) != 7) //you cant have a 2 byte value starting at byte 7(8 on the list)
{
Ghigh = Gdata[((configPage10.caninput_param_start_byte[currentStatus.current_caninchannel])+1)];
}
}
{ // read all 8 bytes of data.
for (byte Gx = 0; Gx < 8; Gx++) // first two are the can address the data is from. next two are the can address the data is for.then next 1 or two bytes of data
{
Gdata[Gx] = CANSerial.read();
}
Glow = Gdata[(configPage10.caninput_param_start_byte[destcaninchannel]&7)];
if ((BIT_CHECK(configPage10.caninput_param_num_bytes,destcaninchannel))) //if true then num bytes is 2
{
if ((configPage10.caninput_param_start_byte[destcaninchannel]&7) < 8) //you cant have a 2 byte value starting at byte 7(8 on the list)
{
Ghigh = Gdata[((configPage10.caninput_param_start_byte[destcaninchannel]&7)+1)];
}
else{Ghigh = 0;}
}
else
{
Ghigh = 0;
}
currentStatus.canin[currentStatus.current_caninchannel] = word(Ghigh, Glow);
{
Ghigh = 0;
}
//currentStatus.canin[1] = (configPage10.caninput_param_num_bytes[currentStatus.current_caninchannel]);//Glow;
// currentStatus.canin[2] = Ghigh;
// currentStatus.canin[currentStatus.current_caninchannel] = word(Ghigh, Glow); //combine Ghigh and low to make the word and set the relavent canin value
currentStatus.canin[destcaninchannel] = Ghigh<<8 | Glow;
}
else{} //continue as command request failed and/or data/device was not available
if (currentStatus.current_caninchannel <= 6) // if channel is 0-7
if (currentStatus.current_caninchannel < 15) // if channel is < 15 then we can do another one
{
currentStatus.current_caninchannel++; //inc to next channel
}
@ -60,7 +62,7 @@ void canCommand()
{
currentStatus.current_caninchannel = 0; //reset to start
}
}
break;
case 'L':
@ -86,23 +88,22 @@ void canCommand()
break;
case 'r': //New format for the optimised OutputChannels
byte cmd;
byte Cmd;
if (CANSerial.available() >= 6)
{
CANSerial.read(); //Read the $tsCanId
cmd = CANSerial.read();
Cmd = CANSerial.read();
uint16_t offset, length;
if(cmd == 0x30) //Send output channels command 0x30 is 48dec
if((Cmd == 0x30) || (Cmd >= 0x40 && Cmd <0x50) ) //Send output channels command 0x30 is 48dec, 0x40(64dec)-0x4F(79dec) are external can request
{
byte tmp;
tmp = CANSerial.read();
offset = word(CANSerial.read(), tmp);
tmp = CANSerial.read();
length = word(CANSerial.read(), tmp);
sendValues(offset, length, 3);
sendValues(offset, length,Cmd, 3);
//Serial.print(Cmd);
}
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
break;
case 2:
CANSerial.print("R"); //send "R" to request data from the parmagroup whos value is sent next
CANSerial.write( lowByte(paramgroup) ); //send lsb first
CANSerial.write( lowByte(paramgroup >> 8) );
case 2: // requests via serial3
CANSerial.print("R"); //send "R" to request data from the parmagroup can address whos value is sent next
CANSerial.write(candata1); //the currentStatus.current_caninchannel
CANSerial.write(lowByte(paramgroup) ); //send lsb first
CANSerial.write(highByte(paramgroup) );
break;
case 3:
//send to truecan send routine
//canaddress == speeduino canid, candata1 == canin channel dest, paramgroup == can address to request from
break;
default:

View File

@ -12,7 +12,7 @@
#define seqFuelPage 9
#define canbusPage 10//Config Page 10
#define packetSize 57//41
#define packetSize 73
byte currentPage = 1;//Not the same as the speeduino config page numbers
bool isMap = true;
@ -40,7 +40,7 @@ const char pageTitles[] PROGMEM //This is being stored in the avr flash instead
};
void command();//This is the heart of the Command Line Interpeter. All that needed to be done was to make it human readable.
void sendValues(uint16_t offset, uint16_t packetlength, byte portnum);
void sendValues(uint16_t offset, uint16_t packetlength,byte cmd, byte portnum);
void receiveValue(int offset, byte newValue);
void saveConfig();
void sendPage(bool useChar);

View File

@ -21,7 +21,7 @@ void command()
{
case 'A': // send x bytes of realtime values
sendValues(0, packetSize, 0); //send values to serial0
sendValues(0, packetSize,0x30, 0); //send values to serial0
break;
@ -190,7 +190,7 @@ void command()
offset = word(Serial.read(), tmp);
tmp = Serial.read();
length = word(Serial.read(), tmp);
sendValues(offset, length, 0);
sendValues(offset, length,cmd, 0);
}
else
{
@ -244,33 +244,23 @@ void command()
This function returns the current values of a fixed group of variables
*/
//void sendValues(int packetlength, byte portNum)
void sendValues(uint16_t offset, uint16_t packetLength, byte portNum)
void sendValues(uint16_t offset, uint16_t packetLength, byte cmd, byte portNum)
{
byte fullStatus[packetSize];
if (portNum == 3)
{
//CAN serial
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) //ATmega2561 does not have Serial3
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)|| defined(CORE_STM32) || defined (CORE_TEENSY) //ATmega2561 does not have Serial3
if (offset == 0)
{
Serial3.write("A"); //confirm cmd type
CANSerial.write("A"); //confirm cmd type
}
else
{
Serial3.write("r"); //confirm cmd type
CANSerial.write("r"); //confirm cmd type
CANSerial.write(cmd);
}
Serial3.write(packetLength); //confirm no of byte to be sent
#elif defined(CORE_STM32) || defined (CORE_TEENSY)
if (offset == 0)
{
Serial2.write("A"); //confirm cmd type
}
else
{
Serial2.write("r"); //confirm cmd type
}
Serial2.write(packetLength); //confirm no of byte to be sent
#endif
}
else
@ -346,11 +336,27 @@ void sendValues(uint16_t offset, uint16_t packetLength, byte portNum)
fullStatus[54] = highByte(currentStatus.canin[6]);
fullStatus[55] = lowByte(currentStatus.canin[7]);
fullStatus[56] = highByte(currentStatus.canin[7]);
fullStatus[57] = lowByte(currentStatus.canin[8]);
fullStatus[58] = highByte(currentStatus.canin[8]);
fullStatus[59] = lowByte(currentStatus.canin[9]);
fullStatus[60] = highByte(currentStatus.canin[9]);
fullStatus[61] = lowByte(currentStatus.canin[10]);
fullStatus[62] = highByte(currentStatus.canin[10]);
fullStatus[63] = lowByte(currentStatus.canin[11]);
fullStatus[64] = highByte(currentStatus.canin[11]);
fullStatus[65] = lowByte(currentStatus.canin[12]);
fullStatus[66] = highByte(currentStatus.canin[12]);
fullStatus[67] = lowByte(currentStatus.canin[13]);
fullStatus[68] = highByte(currentStatus.canin[13]);
fullStatus[69] = lowByte(currentStatus.canin[14]);
fullStatus[70] = highByte(currentStatus.canin[14]);
fullStatus[71] = lowByte(currentStatus.canin[15]);
fullStatus[72] = highByte(currentStatus.canin[15]);
for(byte x=0; x<packetLength; 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;
byte boostDuty;
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
//Helpful bitwise operations:
@ -510,45 +510,18 @@ struct config4 {
struct config10 {
byte enable_canbus:2;
byte enable_candata_in:1;
byte caninput_sel[8];
uint16_t caninput_param_group[8];
uint8_t caninput_param_start_byte[8];
byte caninput_param_num_bytes[8];
byte unused10_41;
byte unused10_42;
byte unused10_43;
byte unused10_44;
byte unused10_45;
byte unused10_46;
byte unused10_47;
byte unused10_48;
byte unused10_49;
uint16_t caninput_sel; //bit status on/off if input is enabled
uint16_t caninput_param_group[16]; //u16 [15] array holding can address of input
uint8_t caninput_param_start_byte[16]; //u08 [15] array holds the start byte number(value of 0-7)
uint16_t caninput_param_num_bytes; //u16 bit status of the number of bytes length 1 or 2
byte unused10_53;
byte unused10_54;
byte enable_candata_out : 1;
byte canoutput_sel[8];
uint16_t canoutput_param_group[8];
uint8_t canoutput_param_start_byte[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_98;
byte unused10_99;

View File

@ -856,9 +856,9 @@ void loop()
//if serial3 interface is enabled then check for serial3 requests.
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();
}
@ -1010,15 +1010,15 @@ void loop()
{
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
{
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
{
@ -1031,26 +1031,26 @@ void loop()
//if serial3io is enabled then check for serial3 requests.
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
{
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
{
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
{
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
{
currentStatus.current_caninchannel = 0; //reset input channel back to 1
currentStatus.current_caninchannel = 0; //reset input channel back to 0
}
}
}