;------------------------------------------------------------------------------- #unset CAN_COMMANDS #unset enablehardware_test [MegaTune] MTversion = 2.25 queryCommand = "Q" signature = "speeduino 201904-dev" versionInfo = "S" ;This info is what is displayed to user [TunerStudio] iniSpecVersion = 3.51 ;------------------------------------------------------------------------------- [SettingGroups] ; the referenceName will over-ride previous, so if you are creating a ; settingGroup with a reference name of lambdaSensor, it will replace the ; setting group defined in the settingGroups.xml of the TunerStudio config ; folder. If is is an undefined referenceName, it will be added. ; keyword = referenceName, DisplayName ;settingGroup = boostUnits, "Boost table units" ;settingOption = DEFAULT, "kPa" ;settingOption = BOOSTPSI, "PSI" settingGroup = enablehardware_test, "Enable Hardware Test Page" settingGroup = resetcontrol_group, "Reset Control Features" settingOption = resetcontrol_standard, "Basic Options Only" settingOption = resetcontrol_adv, "Advanced Features (16u2 Firmware Update Required)" [PcVariables] ; valid types: boolean, double, int, list ; ; no offset as they are local variables. ; entry format the same as Constants, except there is no offset. ; arrays are not yet supported. ; name = class, type, shape, units, scale, translate, lo, hi, digits ; name = type, min, max; ; ; type List: value will be index. tsCanId = bits, U08, [0:3], "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" rpmhigh = scalar, U16, "rpm", 1, 0, 0, 30000, 0 rpmwarn = scalar, U16, "rpm", 1, 0, 0, 30000, 0 rpmdang = scalar, U16, "rpm", 1, 0, 0, 30000, 0 idleUnits = bits, U08, [0:2], "None", "On/Off", "Duty Cycle", "Duty Cycle", "Steps", "Steps" #define loadSourceNames = "MAP", "TPS", "IMAP/EMAP", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #define loadSourceUnits = "kPa", "% TPS", "%", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" algorithmNames = bits, U08, [0:2], $loadSourceNames ;algorithmUnits = bits, U08, [0:2], $loadSourceUnits algorithmUnits = bits, U08, [0:2], "kPa", "% TPS", "%", "% TPS", "INVALID", "INVALID", "INVALID", "INVALID" algorithmLimits= array, U16, [8], "", 1.0, 0, 0, 511, 0, noMsqSave #define all_IO_Pins = "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" #define IO_Pins_no_def = "INVALID", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" boostTableLabels = bits, U08, [0:1], "Duty Cycle %", "kPa" fuelLoadMax = scalar, U08, "", 1, 0, 0, 511, 0 ignLoadMax = scalar, U08, "", 1, 0, 0, 511, 0 AUXin00Alias = string, ASCII, 20 AUXin01Alias = string, ASCII, 20 AUXin02Alias = string, ASCII, 20 AUXin03Alias = string, ASCII, 20 AUXin04Alias = string, ASCII, 20 AUXin05Alias = string, ASCII, 20 AUXin06Alias = string, ASCII, 20 AUXin07Alias = string, ASCII, 20 AUXin08Alias = string, ASCII, 20 AUXin09Alias = string, ASCII, 20 AUXin10Alias = string, ASCII, 20 AUXin11Alias = string, ASCII, 20 AUXin12Alias = string, ASCII, 20 AUXin13Alias = string, ASCII, 20 AUXin14Alias = string, ASCII, 20 AUXin15Alias = string, ASCII, 20 ;Define aliases for all the triggers. Naming pattern matches that used in decoders.ino #define trigger_missingTooth = 0 #define trigger_BasicDistributor = 1 #define trigger_DualWheel = 2 #define trigger_GM7X = 3 #define trigger_4G63 = 4 #define trigger_24X = 5 #define trigger_Jeep2000 = 6 #define trigger_Audi135 = 7 #define trigger_HondaD17 = 8 #define trigger_Miata9905 = 9 #define trigger_MazdaAU = 10 #define trigger_non360 = 11 #define trigger_Nissan360 = 12 #define trigger_Subaru67 = 13 #define trigger_Daihatsu = 14 #define trigger_Harley = 15 #define trigger_ThirtySixMinus222 = 16 [Constants] ;---------------------------------------------------------------------------- ; Constants Definition ; -------------------- ; ; Scalar Values ; ------------- ; The scaling and translation values are used as follows: ; msValue = userValue / scale - translate ; userValue = (msValue + translate) * scale ; ; ; Temperatures are fine, check out the Fielding IAC example (fastIdleT). ; ; Array Values ; ------------ ; Arrays are specified just like scalars, except that they have a "shape" ; entry in the fourth parameter. The shape allows you to define lists or ; tables, for example [8] defines a list with eight values and [2x4] defines ; a table with eight values (two rows and four columns). Tables may be ; stored in either "X-" or "Y-order." X-order means that memory is layed ; out like. ; ; [x1,y1] [x2,y1]...[xn,y1] [x1,y2]... ; ; Y-order would be ; ; [x1,y1] [x1,y2]...[x1,yn] [x2,y1]... ; ; To use the TableEditor, you must define two lists and a table, and ; the lengths of the lists must correspond to the shape of the table. ; ; Bit Fields ; ---------- ; Bits are numbered 0-7, the rightmost being bit zero. The basic ; data word that stores bit fields must be unsigned. ; ; You need NOT supply the correct number of labels matching the ; number of bits you've specified (one bit requires 2 values, two ; bits requires 4 values and so on). If you neglect to supply enough ; labels, they will be synthesized using the sequence "1", "2" and so ; on based upon their position in the sequence (the cltType and matType ; will end up with identical lists). ; ; If you specify a label as "INVALID" (all upper case), then it will ; not be displayed in the combo box, so you can leave out values that ; make no sense. ; ;---------------------------------------------------------------------------- endianness = little nPages = 11 pageSize = 128, 288, 288, 128, 288, 128, 240, 192, 192, 192, 288 ;burnCommand = "B" ;pageActivate = "P\001", "P\002", "P\003", "P\004", "P\005", "P\006", "P\007", "P\010", "P\011", "P\012", "P\013" ;pageReadCommand = "V", "V", "V", "V", "V", "V", "V", "V", "V", "V", "V" ;pageValueWrite = "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v" ; New commands ;pageSize = 288, 128, 288, 128, 288, 128, 128, 160, 192, 192, 192 pageIdentifier = "\$tsCanId\x01", "\$tsCanId\x02", "\$tsCanId\x03", "\$tsCanId\x04", "\$tsCanId\x05", "\$tsCanId\x06", "\$tsCanId\x07", "\$tsCanId\x08", "\$tsCanId\x09", "\$tsCanId\x0A", "\$tsCanId\x0B" burnCommand = "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i" pageReadCommand = "p%2i%2o%2c", "p%2i%2o%2c", "p%2i%2o%2c", "p%2i%2o%2c", "p%2i%2o%2c", "p%2i%2o%2c", "p%2i%2o%2c", "p%2i%2o%2c", "p%2i%2o%2c", "p%2i%2o%2c", "p%2i%2o%2c" pageValueWrite = "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v" pageChunkWrite = "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v" crc32CheckCommand = "d%2i", "d%2i", "d%2i", "d%2i", "d%2i", "d%2i", "d%2i", "d%2i", "d%2i", "d%2i", "d%2i" blockingFactor = 2048 tableBlockingFactor = 2048 delayAfterPortOpen=1000 ;validateArrayBounds = true blockReadTimeout = 2000 ;tsWriteBlocks = on interWriteDelay = 5 ;Ignored when tsWriteBlocks is on pageActivationDelay = 10 ;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 PIN_16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #define ANALOG_PIN = "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", $PIN_16inv, $PIN_16inv, $PIN_16inv #define DIGITAL_PIN = "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #define ANALOG_DIG_PIN_LIST = $DIGITAL_PIN, $ANALOG_PIN #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_inv255 = $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT10inv, "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #define CAN_ADDRESS_HEX_00XX = "INVALID", "0x001", "0x002", "0x003", "0x004", "0x005", "0x006", "0x007", "0x008", "0x009", "0x00A", "0x00B", "0x00C", "0x00D", "0x00E", "0x00F", "0x010", "0x011", "0x012", "0x013", "0x014", "0x015", "0x016", "0x017", "0x018", "0x019", "0x01A", "0x01B", "0x01C", "0x01D", "0x01E", "0x01F", "0x020", "0x021", "0x022", "0x023", "0x024", "0x025", "0x026", "0x027", "0x028", "0x029", "0x02A", "0x02B", "0x02C", "0x02D", "0x02E", "0x02F", "0x030", "0x031", "0x032", "0x033", "0x034", "0x035", "0x036", "0x037", "0x038", "0x039", "0x03A", "0x03B", "0x03C", "0x03D", "0x03E", "0x03F", "0x040", "0x041", "0x042", "0x043", "0x044", "0x045", "0x046", "0x047", "0x048", "0x049", "0x04A", "0x04B", "0x04C", "0x04D", "0x04E", "0x04F", "0x050", "0x051", "0x052", "0x053", "0x054", "0x055", "0x056", "0x057", "0x058", "0x059", "0x05A", "0x05B", "0x05C", "0x05D", "0x05E", "0x05F" ,"0x060", "0x061", "0x062", "0x063", "0x064", "0x065", "0x066", "0x067", "0x068", "0x069", "0x06A", "0x06B", "0x06C", "0x06D", "0x06E", "0x06F", "0x070", "0x071", "0x072", "0x073", "0x074", "0x075", "0x076", "0x077", "0x078", "0x079", "0x07A", "0x07B", "0x07C", "0x07D", "0x07E", "0x07F", "0x080", "0x081", "0x082", "0x083", "0x084", "0x085", "0x086", "0x087", "0x088", "0x089", "0x08A", "0x08B", "0x08C", "0x08D", "0x08E", "0x08F" ,"0x090", "0x091", "0x092", "0x093", "0x094", "0x095", "0x096", "0x097", "0x098", "0x099", "0x09A", "0x09B", "0x09C", "0x09D", "0x09E", "0x09F", "0x0A0", "0x0A1", "0x0A2", "0x0A3", "0x0A4", "0x0A5", "0x0A6", "0x0A7", "0x0A8", "0x0A9", "0x0AA", "0x0AB", "0x0AC", "0x0AD", "0x0AE", "0x0AF", "0x0B0", "0x0B1", "0x0B2", "0x0B3", "0x0B4", "0x0B5", "0x0B6", "0x0B7", "0x0B8", "0x0B9", "0x0BA", "0x0BB", "0x0BC", "0x0BD", "0x0BE", "0x0BF" ,"0x0C0", "0x0C1", "0x0C2", "0x0C3", "0x0C4", "0x0C5", "0x0C6", "0x0C7", "0x0C8", "0x0C9", "0x0CA", "0x0CB", "0x0CC", "0x0CD", "0x0CE", "0x0CF", "0x0D0", "0x0D1", "0x0D2", "0x0D3", "0x0D4", "0x0D5", "0x0D6", "0x0D7", "0x0D8", "0x0D9", "0x0DA", "0x0DB", "0x0DC", "0x0DD", "0x0DE", "0x0DF", "0x0E0", "0x0E1", "0x0E2", "0x0E3", "0x0E4", "0x0E5", "0x0E6", "0x0E7", "0x0E8", "0x0E9", "0x0EA", "0x0EB", "0x0EC", "0x0ED", "0x0EE", "0x0EF" ,"0x0F0", "0x0F1", "0x0F2", "0x0F3", "0x0F4", "0x0F5", "0x0F6", "0x0F7", "0x0F8", "0x0F9", "0x0FA", "0x0FB", "0x0FC", "0x0FD", "0x0FE", "0x0FF" #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_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, $CAN_ADDRESS_HEX_inv255 ;-------------------------------------------------- ;Start Page 1 ;Page 1 is all general settings. Note that some of these (algorithm and ignAlgorithm) MUST come before their use in the bitStringValue() calls in the fuel and ignition tables ;-------------------------------------------------- page = 1 unused2-1 = scalar, S08, 0, "kPa", 1.0, 0.0, -127, 127, 0 unused2-2 = scalar, U08, 1, "kPa", 1.0, 0.0, 0.0, 255, 0 unused2-3 = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 95.0, 0 ;This used to be asePct unused2-4 = scalar, U08, 3, "s", 1.0, 0.0, 0.0, 255, 0 ;This used to be aseCount wueRates = array, U08, 4, [10], "%", 1.0, 0.0, 0.0, 255, 0 crankingPct = scalar, U08, 14, "%", 1.0, 0.0, 0.0, 255, 0 pinLayout = bits, U08, 15, [0:7], "Speeduino v0.1", "Speeduino v0.2", "Speeduino v0.3", "Speeduino v0.4", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "NA6 MX5 PNP", "Turtana PCB", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Plazomat I/O 0.1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Daz V6 Shield 0.1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "NO2C", "UA4C", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "dvjcodec Teensy RevA", "dvjcodec Teensy RevB", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" tachoPin = bits, U08, 16, [0:5], "Board Default", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" tachoDiv = bits, U08, 16, [6:7], "Normal", "Half", "INVALID", "INVALID" tachoDuration = scalar, U08, 17, "ms", 1.0, 0.0, 1.0, 6.0, 0 unused2-18 = scalar, U08, 18, "ms", 0.1, 0.0, 0.0, 25.5, 1 tpsThresh = scalar, U08, 19, "%/s", 1.0, 0.0, 0.0, 255, 0 taeTime = scalar, U08, 20, "ms", 10, 0.0, 0.0, 2550, 0 ; Display (Options for what the display is showing) display = bits, U08, 21, [0:2], "Unused", "Adafruit 128x32", "Generic 128x32", "Adafruit 128x64", "Generic 128x64", "INVALID", "INVALID", "INVALID" display1 = bits, U08, 21, [3:5], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" display2 = bits, U08, 21, [6:7], "O2", "Voltage", "CPU", "Mem" display3 = bits, U08, 22, [0:2], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" display4 = bits, U08, 22, [3:4], "O2", "Voltage", "CPU", "Mem" display5 = bits, U08, 22, [5:7], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" displayB1 = bits, U08, 23, [0:3], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" displayB2 = bits, U08, 23, [4:7], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" reqFuel = scalar, U08, 24, "ms", 0.1, 0.0, 0.0, 25.5, 1 divider = scalar, U08, 25, "", 1.0, 0.0 alternate = bits, U08, 26, [0:0], "Simultaneous", "Alternating" multiplyMAP = bits, U08, 26, [1:1], "No", "Yes" includeAFR = bits, U08, 26, [2:2], "No", "Yes" hardCutType = bits, U08, 26, [3:3], "Full", "Rolling" ignAlgorithm = bits, U08, 26, [4:6], $loadSourceNames indInjAng = bits, U08, 26, [7:7], "Disabled", "Enabled" injOpen = scalar, U08, 27, "ms", 0.1, 0.0, 0.1, 25.5, 1 inj1Ang = scalar, U16, 28, "deg", 1.0, 0.0, 0.0, 360, 0 inj2Ang = scalar, U16, 30, "deg", 1.0, 0.0, 0.0, 360, 0 inj3Ang = scalar, U16, 32, "deg", 1.0, 0.0, 0.0, 360, 0 inj4Ang = scalar, U16, 34, "deg", 1.0, 0.0, 0.0, 360, 0 ; Config1 mapSample = bits, U08, 36, [0:1], "Instantaneous", "Cycle Average", "Cycle Minimum", "INVALID" twoStroke = bits, U08, 36, [2:2], "Four-stroke", "Two-stroke" injType = bits, U08, 36, [3:3], "Port", "Throttle Body" nCylinders = bits, U08, 36, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" ; Config2 algorithm = bits, U08, 37, [0:2], $loadSourceNames ;Has to be called algorithm for the req fuel calculator to work :( fixAngEnable = bits, U08, 37, [3:3], "Off", "On" nInjectors = bits, U08, 37, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" ; Config3 engineType = bits, U08, 38, [0:0], "Even fire", "Odd fire" flexEnabled = bits, U08, 38, [1:1], "Off", "On" unused2_38c = bits, U08, 38, [2:2], "Speed Density", "Alpha-N" baroCorr = bits, U08, 38, [3:3], "Off", "On" injLayout = bits, U08, 38, [4:5], "Paired", "Semi-Sequential", "INVALID", "Sequential" perToothIgn = bits, U08, 38, [6:6], "No", "Yes" dfcoEnabled = bits, U08, 38, [7:7], "Off", "On" unused2-39 = scalar, U08, 39, "ms", 0.1, 0.0, 0.0, 25.5, 1 ;This used to be PrimePulse dutyLim = scalar, U08, 40, "%", 1.0, 0.0, 0.0, 95.0, 0 flexFreqLow = scalar, U08, 41, "Hz", 1.0, 0.0, 0.0, 250.0, 0 flexFreqHigh = scalar, U08, 42, "Hz", 1.0, 0.0, 0.0, 250.0, 0 boostMaxDuty = scalar, U08, 43, "%", 1.0, 0.0, 0.0, 100.0, 0 tpsMin = scalar, U08, 44, "ADC", 1.0, 0.0, 0.0, 255.0, 0 tpsMax = scalar, U08, 45, "ADC", 1.0, 0.0, 0.0, 255.0, 0 mapMin = scalar, S08, 46, "kpa", 1.0, 0.0, -100, 127.0, 0 mapMax = scalar, U16, 47, "kpa", 1.0, 0.0, 0.0, 25500, 0 fpPrime = scalar, U08, 49, "s", 1.0, 0.0, 0.0, 255.0, 0 stoich = scalar, U08, 50, ":1", 0.1, 0.0, 0.0, 25.5, 1 oddfire2 = scalar, U16, 51, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) oddfire3 = scalar, U16, 53, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) oddfire4 = scalar, U16, 55, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) idleUpPin = bits, U08, 57, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" idleUpPolarity= bits, U08, 57, [6:6], "Normal", "Inverted" idleUpEnabled = bits, U08, 57, [7:7], "Off", "On" idleUpAdder = scalar, U08, 58, "% / Steps" 1.0, 0.0, 0.0, 250.0, 0 taeTaperMin = scalar, U08, 59, "RPM", 100, 0.0, 1000, 10000, 0 taeTaperMax = scalar, U08, 60, "RPM", 100, 0.0, 2000, 10000, 0 iacCLminDuty = scalar, U08, 61, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles when using closed loop idle iacCLmaxDuty = scalar, U08, 62, "%", 1.0, 0.0, 0.0, 100.0, 0 boostMinDuty = scalar, U08, 63, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles for boost control baroMin = scalar, S08, 64, "kpa", 1.0, 0.0, -100, 127.0, 0 baroMax = scalar, U16, 65, "kpa", 1.0, 0.0, 0.0, 25500, 0 EMAPMin = scalar, S08, 67, "kpa", 1.0, 0.0, -100, 127.0, 0 EMAPMax = scalar, U16, 68, "kpa", 1.0, 0.0, 0.0, 25500, 0 fanWhenOff = bits, U08, 70, [0:0], "No", "Yes" unused_fan_bits = bits, U08, 70,[1:7] asePct = array, U08, 71, [4], "%", 1.0, 0.0, 0, 255, 0 aseCount = array, U08, 75, [4], "s", 1.0, 0.0, 0.0, 255, 0 ; Values for the afterstart enrichment curve #if CELSIUS aseBins = array, U08, 79, [4], "C", 1.0, -40, -40, 215, 0 #else aseBins = array, U08, 79, [4], "F", 1.8, -22.23, -40, 215, 0 #endif primePulse = array, U08, 83, [4], "ms", 0.5, 0.0, 0.0, 127.5, 1 #if CELSIUS primeBins = array, U08, 87, [4], "C", 1.0, -40, -40, 215, 0 #else primeBins = array, U08, 87, [4], "F", 1.8, -22.23, -40, 215, 0 #endif unused2-91 = array, U08, 91, [37], "%", 1.0, 0.0, 0.0, 255, 0 ;Page 2 is the fuel map and axis bins only page = 2 ; name = bits, type, offset, bits ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits ; name = scalar, type, offset, units, scale, translate, lo, hi, digits veTable = array, U08, 0, [16x16],"%", 1.0, 0.0, 0.0, 255.0, 0 rpmBins = array, U08, 256, [ 16], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 fuelLoadBins = array, U08, 272, [ 16], { bitStringValue(algorithmUnits , algorithm) }, 2.0, 0.0, 0.0, {fuelLoadMax}, 0 ;fuelLoadBins = array, U08, 272, [ 16], { bitStringValue(algorithmUnits , algorithm) }, 2.0, 0.0, 0.0, { arrayValue(rpmBins , algorithm) }, 0 ;-------------------------------------------------- ;Start Ignition table (Page 3) ;-------------------------------------------------- page = 3 advTable1 = array, U08, 0,[16x16], "deg", 1.0, -40, -40, 215.0, 0 rpmBins2 = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0 mapBins1= array, U08, 272, [ 16], { bitStringValue(algorithmUnits , ignAlgorithm) }, 2.0, 0.0, 0.0, {ignLoadMax}, 0 ; This name has to be used in order for the table to show up in MLVs table. I can't find the regexs that make this work :( ;-------------------------------------------------- ;Start Page 4 ;These are primarily ignition related settings (Previously part of page 2) ;-------------------------------------------------- page = 4 TrigAng = scalar, S16, 0, "Deg", 1, 0, -360, 360, 0 FixAng = scalar, S08, 2, "Deg", 1, 0, -64, 64, 0 ; Allow negative values here CrankAng = scalar, U08, 3, "Deg", 1, 0, -10, 80, 0 TrigAngMul = scalar, U08, 4, "", 1, 0, 0, 88, 0 ; Multiplier for tooth counts that don't evenly divide into 360 TrigEdge = bits, U08, 5,[0:0], "RISING", "FALLING" TrigSpeed = bits, U08, 5,[1:1], "Crank Speed", "Cam Speed" IgInv = bits, U08, 5,[2:2], "Going Low", "Going High" TrigPattern= bits, U08, 5,[3:7], "Missing Tooth", "Basic Distributor", "Dual Wheel", "GM 7X", "4G63 / Miata / 3000GT", "GM 24X", "Jeep 2000", "Audi 135", "Honda D17", "Miata 99-05", "Mazda AU", "Non-360 Dual", "Nissan 360", "Subaru 6/7", "Daihatsu +1", "Harley EVO", "36-2-2-2", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" TrigEdgeSec= bits, U08, 6,[0:0], "RISING", "FALLING" fuelPumpPin= bits , U08, 6,[1:6], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" useResync = bits, U08, 6,[7:7], "No", "Yes" sparkDur = scalar, U08, 7, "ms", 0.1, 0, 0, 25.5, 1 ; Spark duration trigPatternSec = bits, U08, 8,[0:7], "Single tooth cam", "4-1 cam", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" ;Reset Control bootloaderCaps = scalar, U08, 9, "level", 1, 0, 0, 255, 0 #if resetcontrol_adv resetControl = bits, U08, 10,[0:1], "Disabled", "Prevent When Running", "Prevent Always", "Serial Command" #else resetControl = bits, U08, 10,[0:1], "Disabled", "INVALID", "INVALID", "Serial Command" #endif resetControlPin = bits, U08, 10,[2:7], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" SkipCycles = scalar, U08, 11, "cycles", 1, 0, 0, 255, 0 ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ;Dwell control boostType = bits, U08, 12, [0:0], "Open Loop", "Closed Loop" useDwellLim = bits, U08, 12, [1:1], "Off", "On" sparkMode = bits, U08, 12, [2:4], "Wasted Spark", "Single Channel", "Wasted COP", "Sequential", "Rotary", "INVALID", "INVALID", "INVALID" TrigFilter = bits, U08, 12, [5:6], "Off", "Weak", "Medium", "Aggressive" ignCranklock = bits, U08, 12, [7:7], "Off", "On" dwellcrank = scalar, U08, 13, "ms", 0.1, 0, 0, 25, 1 dwellrun = scalar, U08, 14, "ms", 0.1, 0, 0, 8, 1 ;running dwell variable railed to 8 - who needs more than 8ms? numTeeth = scalar, U08, 15, "teeth", 1.0, 0.0, 0.0, 255, 0 missingTeeth = scalar, U08, 16, "teeth", 1.0, 0.0, 0.0, 255, 0 crankRPM = scalar, U08, 17, "rpm", 10, 0.0, 100, 1000, 0 tpsflood = scalar, U08, 18, "%", 1.0, 0.0, 0.0, 255.0, 0 ;Rev Limits SoftRevLim = scalar, U08, 19, "rpm", 100, 0.0, 100, 25500, 0 SoftLimRetard = scalar, U08, 20, "deg", 1.0, 0.0, 0.0, 80, 0 SoftLimMax = scalar, U08, 21, "s", 0.1, 0.0, 0.0, 25.5, 1 HardRevLim = scalar, U08, 22, "rpm", 100, 0.0, 100, 25500, 0 ;TPS based acceleration enrichment taeBins = array, U08, 23, [ 4], "%/s", 10.0, 0.0, 0.00, 2550.0, 0 taeRates = array, U08, 27, [ 4], "%", 1.0, 0.0, 0.00, 255.0, 0 ; 4 bytes ;WUE Bins (Needed somewhere to put these #if CELSIUS wueBins = array, U08, 31, [10], "C", 1.0, -40, -40, 102.0, 0 #else wueBins = array, U08, 31, [10], "F", 1.8, -22.23, -40, 215.0, 0 #endif ;Dwell config options dwellLim = scalar, U08, 41, "ms", 1, 0, 0, 32, 0 dwellRates = array, U08, 42, [6], "%", 1.0, 0.0, 0.00, 255.0, 0 ;IAT (Inlet air temp) timing retard #if CELSIUS iatRetBins = array, U08, 48, [ 6], "C", 1.0, 0.0, 0.00, 255.0, 0 #else iatRetBins = array, U08, 48, [ 6], "F", 1.8, 17.77, 0.00, 255.0, 0 ; No -40 degree offset here #endif iatRetRates = array, U08, 54, [ 6], "deg", 1.0, 0.0, 0.00, 255.0, 0 ;Decelleration Fuel Cut Off (DFCO) dfcoRPM = scalar, U08, 60, "RPM", 10.0, 0.0, 100, 2550, 0 dfcoHyster = scalar, U08, 61, "RPM", 1.0, 0.0, 100, 255.0, 0 dfcoTPSThresh= scalar, U08, 62, "%", 1.0, 0.0, 0, 100.0, 0 ;Cranking ignition bypass ignBypassEnable = bits, U08, 63, [0:0], "Off", "On" ignBypassPin = bits , U08, 63, [1:6], "INVALID", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" ignBypassHiLo = bits, U08, 63, [7:7], "LOW", "HIGH" ;Analog input filter levels (Note max values are 254 so that default values of 255 can be overwirtten on bootup) ADCFILTER_TPS = scalar, U08, 64, "%", 1.0, 0.0, 0, 240, 0 ADCFILTER_CLT = scalar, U08, 65, "%", 1.0, 0.0, 0, 240, 0 ADCFILTER_IAT = scalar, U08, 66, "%", 1.0, 0.0, 0, 240, 0 ADCFILTER_O2 = scalar, U08, 67, "%", 1.0, 0.0, 0, 240, 0 ADCFILTER_BAT = scalar, U08, 68, "%", 1.0, 0.0, 0, 240, 0 ADCFILTER_MAP = scalar, U08, 69, "%", 1.0, 0.0, 0, 240, 0 ADCFILTER_BARO = scalar, U08, 70, "%", 1.0, 0.0, 0, 240, 0 ;CLT (Coolant temp) timing Advance/Retard #if CELSIUS cltAdvBins = array, U08, 71, [ 6], "C", 1.0, -40, -40, 102.0, 0 #else cltAdvBins = array, U08, 71, [ 6], "F", 1.8, -22.23, -40, 215.0, 0 ; No -40 degree offset here #endif cltAdvValues = array, S08, 77, [ 6], "deg", 0.1, 0.0, -12.7, 12.7, 1 unused4-64 = array, U08, 83, [45], "%", 1.0, 0.0, 0.0, 255, 0 ;-------------------------------------------------- ;Start AFR page ;-------------------------------------------------- page = 5 #if LAMBDA afrTable = array, U08, 0,[16x16], "Lambda", { 0.1 / stoich }, 0.0000, 0.00, 2.00, 3 #else afrTable = array, U08, 0,[16x16], "AFR", 0.1, 0.0, 7, 25.5, 1 #endif rpmBinsAFR = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY mapBinsAFR = array, U08, 272,[ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N tpsBinsAFR = array, U08, 272,[ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif ;-------------------------------------------------- ;Start page 6 ; Page 6 is all settings associated with O2/AFR ;-------------------------------------------------- page = 6 egoAlgorithm= bits , U08, 0, [0:1], "Simple", "INVALID", "PID", "No correction" ; * ( 1 byte) egoType = bits , U08, 0, [2:3], "Disabled", "Narrow Band", "Wide Band", "INVALID" ; egoOption boostEnabled= bits, U08, 0, [4:4], "Off", "On" vvtEnabled = bits, U08, 0, [5:5], "Off", "On" boostCutType= bits, U08, 0, [6:7], "Off", "Spark Only", "Fuel Only","Both" egoKP = scalar, U08, 1, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) egoKI = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) egoKD = scalar, U08, 3, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) #if CELSIUS egoTemp = scalar, U08, 4, "C", 1.0, -40, -40, 102.0, 0 #else egoTemp = scalar, U08, 4, "F", 1.8, -22.23, -40, 215.0, 0 #endif egoCount = scalar, U08, 5, "", 4.0, 0.0, 4.0, 255.0, 0 ; * ( 1 byte) unused6-6 = scalar, U08, 6, "%", 1.0, 0.0, 0.0, 255.0, 0 egoLimit = scalar, U08, 7, "", 1, 0, 0, 16, 0 ego_min = scalar, U08, 8, "AFR", 0.1, 0.0, 7, 25, 1 ego_max = scalar, U08, 9, "AFR", 0.1, 0.0, 7, 25, 1 ego_sdelay = scalar, U08, 10, "sec", 1, 0, 0, 120, 0 egoRPM = scalar, U08, 11, "rpm", 100, 0.0, 100, 25500, 0 egoTPSMax = scalar, U08, 12, "%", 1, 0, 0, 120, 0 vvtPin = bits , U08, 13, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" useExtBaro = bits, U08, 13, [6:6], "No", "Yes" boostMode = bits, U08, 13, [7:7], "Simple", "Full" boostPin = bits, U08, 14, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" VVTasOnOff = bits, U08, 14, [6:6], "No", "Yes" useEMAP = bits, U08, 14, [7:7], "No", "Yes" brvBins = array, U08, 15, [6], "V", 0.1, 0, 6, 24, 1 ; Bins for the battery reference voltage injBatRates = array, U08, 21, [6], "%", 1, 0, 0, 255, 0 ;Values for injector pulsewidth vs voltage #if CELSIUS airDenBins = array, U08, 27, [9], "C", 1.0, -40, -40, 215, 0 ; Bins for the air density correction curve #else airDenBins = array, U08, 27, [9], "F", 1.8, -22.23, -40, 215, 0 ; Bins for the air density correction curve #endif airDenRates = array, U08, 36, [9], "%", 1.0, 0.0, 0, 255, 0 ; Values for the air density correction curve ; PWM Frequencies boostFreq = scalar, U08, 45, "Hz", 2.0, 0.0, 10, 511, 0 vvtFreq = scalar, U08, 46, "Hz", 2.0, 0.0, 10, 511, 0 idleFreq = scalar, U08, 47, "Hz", 2.0, 0.0, 10, 511, 0 ; Launch Control launchPin = bits , U08, 48, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" launchEnable= bits, U08, 48, [6:6], "No", "Yes" launchHiLo = bits, U08, 48, [7:7], "LOW", "HIGH" lnchSoftLim = scalar, U08, 49, "rpm", 100, 0.0, 100, 25500, 0 lnchRetard = scalar, S08, 50, "deg", 1.0, 0.0, -30, 40, 0 lnchHardLim = scalar, U08, 51, "rpm", 100, 0.0, 100, 25500, 0 lnchFuelAdd = scalar, U08, 52, "%", 1.0, 0.0, 0.0, 80, 0 idleKP = scalar, U08, 53, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) idleKI = scalar, U08, 54, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) idleKD = scalar, U08, 55, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) boostLimit = scalar, U08, 56, "kPa", 2.0, 0.0, 0.0, 511.0, 0 boostKP = scalar, U08, 57, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) boostKI = scalar, U08, 58, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) boostKD = scalar, U08, 59, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) lnchPullRes = bits, U08, 60, [0:1], "Float" , "Pullup", "INVALID", "INVALID" fuelTrimEnabled= bits, U08, 60, [2:2], "No", "Yes" flatSEnable = bits, U08, 60, [3:3], "No", "Yes" ; Baro Sensor pin baroPin = bits, U08, 60, [4:7], "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A8", "A10", "A11", "A12", "A13", "A14", "A15" ; Flat shift flatSSoftWin = scalar, U08, 61, "rpm", 100, 0.0, 100, 25500, 0 flatSRetard = scalar, U08, 62, "deg", 1.0, 0.0, 0.0, 80, 0 flatSArm = scalar, U08, 63, "rpm", 100, 0.0, 100, 25500, 0 iacCLValues = array, U08, 64, [10], "RPM", 10.0, 0.0, 0, 2550, 0 iacOLStepVal = array, U08, 74, [10], "Steps", 3, 0, 0, 765, 0 iacOLPWMVal = array, U08, 84, [10], "Duty %", 1.0, 0, 0, 100, 0 #if CELSIUS iacBins = array, U08, 94, [10], "C", 1.0, -40, -40, 215, 0 #else iacBins = array, U08, 94, [10], "F", 1.8, -22.23, -40, 215, 0 #endif iacCrankSteps= array, U08, 104, [4], "Steps", 3, 0, 0, 765, 0 iacCrankDuty = array, U08, 108, [4], "Duty %", 1.0, 0, 0, 100, 0 #if CELSIUS iacCrankBins = array, U08, 112, [4], "C", 1.0, -40, -40, 215, 0 #else iacCrankBins = array, U08, 112, [4], "F", 1.8, -22.23, -40, 215, 0 #endif iacAlgorithm = bits , U08, 116, [0:2], "None", "On/Off", "PWM Open loop", "PWM Closed loop", "Stepper Open Loop", "Stepper Closed Loop", "INVALID", "INVALID" iacStepTime = bits , U08, 116, [3:5], "INVALID","1", "2", "3", "4", "5", "6","INVALID" iacChannels = bits, U08, 116, [6:6], "1", "2" iacPWMdir = bits , U08, 116, [7:7], "Normal", "Reverse" #if CELSIUS iacFastTemp = scalar, U08, 117, "C", 1.0, -40, -40, 215, 0 #else iacFastTemp = scalar, U08, 117, "F", 1.8, -22.23, -40, 215, 0 #endif iacStepHome = scalar, U08, 118, "Steps", 3, 0, 0, 765, 0 iacStepHyster= scalar, U08, 119, "Steps", 1, 0.0, 0.0, 10, 0 ; Begin fan control vairables fanInv = bits, U08, 120, [0:0], "No", "Yes" fanEnable = bits, U08, 120, [1:1], "Off", "On/Off" fanPin = bits, U08, 120, [2:7], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" #if CELSIUS fanSP = scalar, U08, 121, "C", 1.0, -40, -40, 215.0, 0 fanHyster = scalar, U08, 122, "C", 1.0, 0.0, 0.0, 40, 0 #else fanSP = scalar, U08, 121, "F", 1.8, -22.23, -40, 215.0, 0 fanHyster = scalar, U08, 122, "F", 1.0, 0.0, 0.0, 40, 0 #endif fanFreq = scalar, U08 , 123, "Hz", 2.0, 0.0, 10, 511, 0 #if CELSIUS fanPWMBins = array, U08, 124, [4], "C", 1.0, -40, -40, 215, 0 #else fanPWMBins = array, U08, 124, [4], "F", 1.8, -22.23, -40, 215, 0 #endif ;-------------------------------------------------- ;Boost and vvt maps (Page 7) ;-------------------------------------------------- page = 7 ;notes for boostTable in PSI~~~There are 6.895 psis to a kPa then x 2 like the kPa ver~~~div atmos. pressure in kPa by 2 and make neg so to subtract instead of add ; #if BOOSTPSI ; boostTable = array, U08, 0,[8x8], "PSI", 0.29007547546041846, -50.6625, 0, 74, 0 ; #else boostTable = array, U08, 0,[8x8], { bitStringValue( boostTableLabels, boostType ) }, 2.0, 0.0, 0, boostTableLimit, 0 ; #endif rpmBinsBoost = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 tpsBinsBoost = array, U08, 72,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 vvtTable = array, U08, 80,[8x8], "%", 1.0, 0.0, 0, 100, 0 rpmBinsVVT = array, U08, 144,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 tpsBinsVVT = array, U08, 152,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 ;Fuel staging Table stagingTable = array, U08, 160, [8x8], "%", 1.0, 0.0, 0.0, 100.0, 0 rpmBinsStaging= array, U08, 224, [ 8], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 #if SPEED_DENSITY mapBinsStaging= array, U08, 232, [ 8], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N tpsBinsStaging= array, U08, 232, [ 8], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif ;-------------------------------------------------- ;Sequential fuel trim tables (Page 8) ;-------------------------------------------------- page = 8 fuelTrim1Table = array, U08, 0,[6x6], "%", 1.0, -128, -50, 50, 0 fuelTrim1rpmBins = array, U08, 36,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 #if SPEED_DENSITY fuelTrim1loadBins = array, U08, 42,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N fuelTrim1loadBins = array, U08, 42,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif fuelTrim2Table = array, U08, 48,[6x6], "%", 1.0, -128, -50, 50, 0 fuelTrim2rpmBins = array, U08, 84,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 #if SPEED_DENSITY fuelTrim2loadBins = array, U08, 90,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N fuelTrim2loadBins = array, U08, 90,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif fuelTrim3Table = array, U08, 96,[6x6], "%", 1.0, -128, -50, 50, 0 fuelTrim3rpmBins = array, U08, 132,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 #if SPEED_DENSITY fuelTrim3loadBins = array, U08, 138,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N fuelTrim3loadBins = array, U08, 138,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif fuelTrim4Table = array, U08, 144,[6x6], "%", 1.0, -128, -50, 50, 0 fuelTrim4rpmBins = array, U08, 180,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 #if SPEED_DENSITY fuelTrim4loadBins = array, U08, 186,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N fuelTrim4loadBins = array, U08, 186,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif ;-------------------------------------------------- ;CANBUS control and Auxillary io(Page 9) ;-------------------------------------------------- page = 9 enable_secondarySerial = bits, U08, 0, [0:0], "Disable", "Enable" intcan_available = bits, U08, 0, [1:1], "Disable", "Enable" enable_intcan = bits, U08, 0, [2:2], "Disable", "Enable" caninput_sel0a = bits, U08, 1, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel0b = bits, U08, 1, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel0extsourcea = bits, U08, 1, [5:5], "Via Secondary Serial", "INVALID" caninput_sel0extsourceb = bits, U08, 1, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel0extsourcec = bits, U08, 1, [7:7], "INVALID", "Via Internal CAN" caninput_sel1a = bits, U08, 2, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel1b = bits, U08, 2, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel1extsourcea = bits, U08, 2, [5:5], "Via Secondary Serial", "INVALID" caninput_sel1extsourceb = bits, U08, 2, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel1extsourcec = bits, U08, 2, [7:7], "INVALID", "Via Internal CAN" caninput_sel2a = bits, U08, 3, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel2b = bits, U08, 3, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel2extsourcea = bits, U08, 3, [5:5], "Via Secondary Serial", "INVALID" caninput_sel2extsourceb = bits, U08, 3, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel2extsourcec = bits, U08, 3, [7:7], "INVALID", "Via Internal CAN" caninput_sel3a = bits, U08, 4, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel3b = bits, U08, 4, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel3extsourcea = bits, U08, 4, [5:5], "Via Secondary Serial", "INVALID" caninput_sel3extsourceb = bits, U08, 4, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel3extsourcec = bits, U08, 4, [7:7], "INVALID", "Via Internal CAN" caninput_sel4a = bits, U08, 5, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel4b = bits, U08, 5, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel4extsourcea = bits, U08, 5, [5:5], "Via Secondary Serial", "INVALID" caninput_sel4extsourceb = bits, U08, 5, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel4extsourcec = bits, U08, 5, [7:7], "INVALID", "Via Internal CAN" caninput_sel5a = bits, U08, 6, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel5b = bits, U08, 6, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel5extsourcea = bits, U08, 6, [5:5], "Via Secondary Serial", "INVALID" caninput_sel5extsourceb = bits, U08, 6, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel5extsourcec = bits, U08, 6, [7:7], "INVALID", "Via Internal CAN" caninput_sel6a = bits, U08, 7, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel6b = bits, U08, 7, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel6extsourcea = bits, U08, 7, [5:5], "Via Secondary Serial", "INVALID" caninput_sel6extsourceb = bits, U08, 7, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel6extsourcec = bits, U08, 7, [7:7], "INVALID", "Via Internal CAN" caninput_sel7a = bits, U08, 8, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel7b = bits, U08, 8, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel7extsourcea = bits, U08, 8, [5:5], "Via Secondary Serial", "INVALID" caninput_sel7extsourceb = bits, U08, 8, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel7extsourcec = bits, U08, 8, [7:7], "INVALID", "Via Internal CAN" caninput_sel8a = bits, U08, 9, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel8b = bits, U08, 9, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel8extsourcea = bits, U08, 9, [5:5], "Via Secondary Serial", "INVALID" caninput_sel8extsourceb = bits, U08, 9, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel8extsourcec = bits, U08, 9, [7:7], "INVALID", "Via Internal CAN" caninput_sel9a = bits, U08, 10, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel9b = bits, U08, 10, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel9extsourcea = bits, U08, 10, [5:5], "Via Secondary Serial", "INVALID" caninput_sel9extsourceb = bits, U08, 10, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel9extsourcec = bits, U08, 10, [7:7], "INVALID", "Via Internal CAN" caninput_sel10a = bits, U08, 11, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel10b = bits, U08, 11, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel10extsourcea = bits, U08, 11, [5:5], "Via Secondary Serial", "INVALID" caninput_sel10extsourceb = bits, U08, 11, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel10extsourcec = bits, U08, 11, [7:7], "INVALID", "Via Internal CAN" caninput_sel11a = bits, U08, 12, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel11b = bits, U08, 12, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel11extsourcea = bits, U08, 12, [5:5], "Via Secondary Serial", "INVALID" caninput_sel11extsourceb = bits, U08, 12, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel11extsourcec = bits, U08, 12, [7:7], "INVALID", "Via Internal CAN" caninput_sel12a = bits, U08, 13, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel12b = bits, U08, 13, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel12extsourcea = bits, U08, 13, [5:5], "Via Secondary Serial", "INVALID" caninput_sel12extsourceb = bits, U08, 13, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel12extsourcec = bits, U08, 13, [7:7], "INVALID", "Via Internal CAN" caninput_sel13a = bits, U08, 14, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel13b = bits, U08, 14, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel13extsourcea = bits, U08, 14, [5:5], "Via Secondary Serial", "INVALID" caninput_sel13extsourceb = bits, U08, 14, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel13extsourcec = bits, U08, 14, [7:7], "INVALID", "Via Internal CAN" caninput_sel14a = bits, U08, 15, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel14b = bits, U08, 15, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel14extsourcea = bits, U08, 15, [5:5], "Via Secondary Serial", "INVALID" caninput_sel14extsourceb = bits, U08, 15, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel14extsourcec = bits, U08, 15, [7:7], "INVALID", "Via Internal CAN" caninput_sel15a = bits, U08, 16, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" caninput_sel15b = bits, U08, 16, [2:3], "Off", "External Source", "Analog_local", "Digital_local" caninput_sel15extsourcea = bits, U08, 16, [5:5], "Via Secondary Serial", "INVALID" caninput_sel15extsourceb = bits, U08, 16, [6:6], "Via Secondary Serial", "Via Internal CAN" caninput_sel15extsourcec = bits, U08, 16, [7:7], "INVALID", "Via Internal CAN" caninput_source_can_address0 = bits, U16, 17, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address1 = bits, U16, 19, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address2 = bits, U16, 21, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address3 = bits, U16, 23, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address4 = bits, U16, 25, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address5 = bits, U16, 27, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address6 = bits, U16, 29, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address7 = bits, U16, 31, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address8 = bits, U16, 33, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address9 = bits, U16, 35, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address10 = bits, U16, 37, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address11 = bits, U16, 39, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address12 = bits, U16, 41, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address13 = bits, U16, 43, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address14 = bits, U16, 45, [0:10], $CAN_ADDRESS_HEX caninput_source_can_address15 = bits, U16, 47, [0:10], $CAN_ADDRESS_HEX caninput_source_start_byte0 = bits, U08, 49, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte1 = bits, U08, 50, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte2 = bits, U08, 51, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte3 = bits, U08, 52, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte4 = bits, U08, 53, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte5 = bits, U08, 54, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte6 = bits, U08, 55, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte7 = bits, U08, 56, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte8 = bits, U08, 57, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte9 = bits, U08, 58, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte10 = bits, U08, 59, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte11 = bits, U08, 60, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte12 = bits, U08, 61, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte13 = bits, U08, 62, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte14 = bits, U08, 63, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_start_byte15 = bits, U08, 64, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" caninput_source_num_bytes0 = bits, U16, 65, [0:0], "1", "2" caninput_source_num_bytes1 = bits, U16, 65, [1:1], "1", "2" caninput_source_num_bytes2 = bits, U16, 65, [2:2], "1", "2" caninput_source_num_bytes3 = bits, U16, 65, [3:3], "1", "2" caninput_source_num_bytes4 = bits, U16, 65, [4:4], "1", "2" caninput_source_num_bytes5 = bits, U16, 65, [5:5], "1", "2" caninput_source_num_bytes6 = bits, U16, 65, [6:6], "1", "2" caninput_source_num_bytes7 = bits, U16, 65, [7:7], "1", "2" caninput_source_num_bytes8 = bits, U16, 65, [8:8], "1", "2" caninput_source_num_bytes9 = bits, U16, 65, [9:9], "1", "2" caninput_source_num_bytes10 = bits, U16, 65, [10:10], "1", "2" caninput_source_num_bytes11 = bits, U16, 65, [11:11], "1", "2" caninput_source_num_bytes12 = bits, U16, 65, [12:12], "1", "2" caninput_source_num_bytes13 = bits, U16, 65, [13:13], "1", "2" caninput_source_num_bytes14 = bits, U16, 65, [14:14], "1", "2" caninput_source_num_bytes15 = bits, U16, 65, [15:15], "1", "2" unused10_67 = scalar, U08, 67, "", 1, 0, 0, 255, 0 unused10_68 = scalar, U08, 68, "", 1, 0, 0, 255, 0 enable_intcandata_out = bits, U08, 69, [0:0], "Off", "On" canoutput_sel0 = bits, U08, 70, [0:0], "Off", "On" canoutput_sel1 = bits, U08, 71, [0:0], "Off", "On" canoutput_sel2 = bits, U08, 72, [0:0], "Off", "On" canoutput_sel3 = bits, U08, 73, [0:0], "Off", "On" canoutput_sel4 = bits, U08, 74, [0:0], "Off", "On" canoutput_sel5 = bits, U08, 75, [0:0], "Off", "On" canoutput_sel6 = bits, U08, 76, [0:0], "Off", "On" canoutput_sel7 = bits, U08, 77, [0:0], "Off", "On" canoutput_param_group = array , U16, 78, [ 8], "", 1, 0, 0, 65535, 0 canoutput_param_start_byte0 = bits, U08, 94, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" canoutput_param_start_byte1 = bits, U08, 95, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" canoutput_param_start_byte2 = bits, U08, 96, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" canoutput_param_start_byte3 = bits, U08, 97, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" canoutput_param_start_byte4 = bits, U08, 98, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" canoutput_param_start_byte5 = bits, U08, 99, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" canoutput_param_start_byte6 = bits, U08, 100, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" canoutput_param_start_byte7 = bits, U08, 101, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" canoutput_param_num_bytes0 = bits, U08, 102, [0:1], "INVALID", "1", "2", "INVALID" canoutput_param_num_bytes1 = bits, U08, 103, [0:1], "INVALID", "1", "2", "INVALID" canoutput_param_num_bytes2 = bits, U08, 104, [0:1], "INVALID", "1", "2", "INVALID" canoutput_param_num_bytes3 = bits, U08, 105, [0:1], "INVALID", "1", "2", "INVALID" canoutput_param_num_bytes4 = bits, U08, 106, [0:1], "INVALID", "1", "2", "INVALID" canoutput_param_num_bytes5 = bits, U08, 107, [0:1], "INVALID", "1", "2", "INVALID" canoutput_param_num_bytes6 = bits, U08, 108, [0:1], "INVALID", "1", "2", "INVALID" canoutput_param_num_bytes7 = bits, U08, 109, [0:1], "INVALID", "1", "2", "INVALID" unused10_110 = scalar, U08, 110, "", 1, 0, 0, 255, 0 unused10_111 = scalar, U08, 111, "", 1, 0, 0, 255, 0 unused10_112 = scalar, U08, 112, "", 1, 0, 0, 255, 0 unused10_113 = scalar, U08, 113, "", 1, 0, 0, 255, 0 speeduino_tsCanId = bits, U08, 114, [0:3], $tsCanId_list true_address = bits, U16, 115, [0:10], $CAN_ADDRESS_HEX realtime_base_address = bits, U16, 117, [0:10], $CAN_ADDRESS_HEX obd_address = bits, U16, 119, [0:10], $CAN_ADDRESS_HEX Auxin0pina = bits, U08, 121, [0:5], $ANALOG_PIN Auxin1pina = bits, U08, 122, [0:5], $ANALOG_PIN Auxin2pina = bits, U08, 123, [0:5], $ANALOG_PIN Auxin3pina = bits, U08, 124, [0:5], $ANALOG_PIN Auxin4pina = bits, U08, 125, [0:5], $ANALOG_PIN Auxin5pina = bits, U08, 126, [0:5], $ANALOG_PIN Auxin6pina = bits, U08, 127, [0:5], $ANALOG_PIN Auxin7pina = bits, U08, 128, [0:5], $ANALOG_PIN Auxin8pina = bits, U08, 129, [0:5], $ANALOG_PIN Auxin9pina = bits, U08, 130, [0:5], $ANALOG_PIN Auxin10pina = bits, U08, 131, [0:5], $ANALOG_PIN Auxin11pina = bits, U08, 132, [0:5], $ANALOG_PIN Auxin12pina = bits, U08, 133, [0:5], $ANALOG_PIN Auxin13pina = bits, U08, 134, [0:5], $ANALOG_PIN Auxin14pina = bits, U08, 135, [0:5], $ANALOG_PIN Auxin15pina = bits, U08, 136, [0:5], $ANALOG_PIN Auxin0pinb = bits, U08, 137, [0:5], $DIGITAL_PIN Auxin1pinb = bits, U08, 138, [0:5], $DIGITAL_PIN Auxin2pinb = bits, U08, 139, [0:5], $DIGITAL_PIN Auxin3pinb = bits, U08, 140, [0:5], $DIGITAL_PIN Auxin4pinb = bits, U08, 141, [0:5], $DIGITAL_PIN Auxin5pinb = bits, U08, 142, [0:5], $DIGITAL_PIN Auxin6pinb = bits, U08, 143, [0:5], $DIGITAL_PIN Auxin7pinb = bits, U08, 144, [0:5], $DIGITAL_PIN Auxin8pinb = bits, U08, 145, [0:5], $DIGITAL_PIN Auxin9pinb = bits, U08, 146, [0:5], $DIGITAL_PIN Auxin10pinb = bits, U08, 147, [0:5], $DIGITAL_PIN Auxin11pinb = bits, U08, 148, [0:5], $DIGITAL_PIN Auxin12pinb = bits, U08, 149, [0:5], $DIGITAL_PIN Auxin13pinb = bits, U08, 150, [0:5], $DIGITAL_PIN Auxin14pinb = bits, U08, 151, [0:5], $DIGITAL_PIN Auxin15pinb = bits, U08, 152, [0:5], $DIGITAL_PIN iacStepperInv = bits, U08, 153, [0:0], "No", "Yes" iacCoolTime = bits, U08, 153, [1:3], "0", "1", "2", "3", "4", "5", "6","INVALID" unused10_153 = bits, U08, 153, [4:7], "" unused10_154 = array, U08, 154, [38], "", 1, 0, 0, 255, 0 page = 10 #if CELSIUS crankingEnrichBins = array, U08, 0, [4], "C", 1.0, -40, -40, 215, 0 #else crankingEnrichBins = array, U08, 0, [4], "F", 1.8, -22.23, -40, 215, 0 #endif crankingEnrichValues= array, U08, 4, [4], "%", 1.0, 0.0, 0, 255, 0 ; Values for the cranking enrichment curve rotaryType = bits , U08, 8, [0:1], "FC", "FD", "RX8", "INVALID" stagingEnabled = bits , U08, 8, [2:2], "Off","On" stagingMode = bits , U08, 8, [3:3], "Table","Automatic" EMAPPin = bits, U08, 8, [4:7], "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A8", "A10", "A11", "A12", "A13", "A14", "A15" rotarySplitValues = array, U08, 9, [8], "degrees", 1.0, 0.0, 0.0, 40, 0 #if SPEED_DENSITY rotarySplitBins = array, U08, 17, [8], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N rotarySplitBins = array, U08, 17, [8], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif boostSens = scalar, U16, 25, "", 1, 0, 0, 5000, 0 boostIntv = scalar, U08, 27, "ms", 1, 0, 0, 250, 0 stagedInjSizePri = scalar, U16, 28, "cc/min", 1, 0, 0, 1500, 0 stagedInjSizeSec = scalar, U16, 30, "cc/min", 1, 0, 0, 1500, 0 lnchCtrlTPS = scalar, U08, 32, "%TPS", 1, 0, 0, 100, 0 flexBoostBins = array, U08, 33, [6], "%", 1.0, 0.0, 0.0, 250.0, 0 ; The boost range is obviously arbitrary since int16_t has ~32k in both directions flexBoostAdj = array, S16, 39, [6], "kPa", 1.0, 0.0, -500.0, 500.0, 0 flexFuelBins = array, U08, 51, [6], "%", 1.0, 0.0, 0.0, 250.0, 0 flexFuelAdj = array, U08, 57, [6], "%", 1.0, 0.0, 0.0, 250.0, 0 flexAdvBins = array, U08, 63, [6], "%", 1.0, 0.0, 0.0, 250.0, 0 flexAdvAdj = array, S08, 69, [6], "Deg", 1.0, 0.0, -125, 125.0, 0 n2o_enable = bits , U08, 75, [0:1], "Off","1 Stage","2 stage", "INVALID" n2o_arming_pin = bits , U08, 75, [2:7], $IO_Pins_no_def #if CELSIUS n2o_minCLT = scalar, U08, 76, "C", 1.0, -40, -40, 215, 0 #else n2o_minCLT = scalar, U08, 76, "F", 1.8, -22.23, -40, 215, 0 #endif n2o_maxMAP = scalar, U08, 77, "kPa", 2.0, 0.0, 0.0, 511.0, 0 n2o_minTPS = scalar, U08, 78, "%TPS", 1.0, 0.0, 0.0, 100, 0 n2o_maxAFR = scalar, U08, 79, "AFR", 0.1, 0.0, 0.0, 25.5, 1 n2o_stage1_pin = bits , U08, 80, [0:5], $IO_Pins_no_def n2o_pin_polarity = bits , U08, 80, [6:6], "HIGH", "LOW" n2o_unused = bits , U08, 80, [7:7], "No", "Yes" n2o_stage1_minRPM = scalar, U08, 81, "RPM", 100, 0.0, 1000, 10000, 0 n2o_stage1_maxRPM = scalar, U08, 82, "RPM", 100, 0.0, 1000, 10000, 0 n2o_stage1_adderMin = scalar, U08, 83, "ms", 0.1, 0, 0, 25.5, 1 n2o_stage1_adderMax = scalar, U08, 84, "ms", 0.1, 0, 0, 25.5, 1 n2o_stage1_retard = scalar, U08, 85, "Deg", 1.0, 0.0, 0.0, 250.0, 0 n2o_stage2_pin = bits , U08, 86, [0:5], $IO_Pins_no_def n2o_stage2_unused = bits , U08, 86, [6:7], "No", "Yes", "INVALID", "INVALID" n2o_stage2_minRPM = scalar, U08, 87, "RPM", 100, 0.0, 1000, 10000, 0 n2o_stage2_maxRPM = scalar, U08, 88, "RPM", 100, 0.0, 1000, 10000, 0 n2o_stage2_adderMin = scalar, U08, 89, "ms", 0.1, 0, 0, 32, 1 n2o_stage2_adderMax = scalar, U08, 90, "ms", 0.1, 0, 0, 32, 1 n2o_stage2_retard = scalar, U08, 91, "Deg", 1.0, 0.0, 0.0, 250.0, 0 ; Knock settings knock_mode = bits , U08, 92, [0:1], "Off","Digital","Analog", "INVALID" knock_pin = bits , U08, 92, [2:7], "INVALID", "INVALID", "2", "3", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "18", "19", "20", "21", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" knock_trigger = bits , U08, 93, [0:0], "HIGH", "LOW" knock_pullup = bits , U08, 93, [1:1], "Off", "Internal pullup" knock_limiterDisable= bits , U08, 93, [2:2], "No", "Yes" knock_unused = bits , U08, 93, [3:4], "INVALID", "1", "2", "3" ;Knock detection / filters knock_count = bits , U08, 93, [5:7], "INVALID", "1", "2", "3", "4", "5", "6", "7" knock_threshold = scalar, U08, 94, "Volts", 0.1, 0.0, 0.0, 5.0, 1 knock_maxMAP = scalar, U08, 95, "kPa", 2.0, 0.0, 0.0, 511.0, 0 knock_maxRPM = scalar, U08, 96, "RPM", 100.0, 0.0, 0, 10000, 0 knock_window_rpms = array, U08, 97, [6], "RPM", 100.0, 0.0, 0, 10000, 0 knock_window_angle = array, U08, 103, [6], "deg", 1.0, -50, -50, 100, 0 knock_window_dur = array, U08, 109, [6], "deg", 1.0, 0.0, 0, 100, 0 ;Knock window duration ;Retard and recovery knock_maxRetard = scalar, U08, 115, "Deg", 1.0, 0.0, 0.0, 50, 0 knock_firstStep = scalar, U08, 116, "Deg", 1.0, 0.0, 0.0, 50, 0 knock_stepSize = scalar, U08, 117, "Deg", 1.0, 0.0, 0.0, 50, 0 knock_stepTime = scalar, U08, 118, "Sec", 0.1, 0.0, 0.0, 2.5, 1 knock_duration = scalar, U08, 119, "Sec", 0.1, 0.0, 0.0, 2.5, 1 ;//Time after knock retard starts that it should start recovering knock_recoveryStepTime = scalar, U08, 120, "Sec", 0.1, 0.0, 0.0, 2.5, 1 knock_recoveryStep = scalar, U08, 121, "Deg", 1.0, 0.0, 0.0, 50, 0 ;Things for the 2nd fuel table fuel2Algorithm = bits, U08, 122, [0:2], $loadSourceNames fuel2Mode = bits, U08, 122, [3:4], "Off", "Multiplied", "Added", "Switched" unused10_212 = bits, U08, 122, [5:7], "INVALID","1","2","3","4","5","6","INVALID" unused11_122_191 = array, U08, 123, [69], "RPM", 100.0, 0.0, 100, 25500, 0 ;Page 11 is the fuel map and axis bins only page = 11 ; name = bits, type, offset, bits ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits ; name = scalar, type, offset, units, scale, translate, lo, hi, digits veTable2 = array, U08, 0, [16x16],"%", 1.0, 0.0, 0.0, 255.0, 0 fuelRPM2Bins = array, U08, 256, [ 16], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 fuelLoad2Bins = array, U08, 272, [ 16], { bitStringValue(algorithmUnits , fuel2Algorithm) }, 2.0, 0.0, 0.0, {fuelLoadMax}, 0 ;------------------------------------------------------------------------------- [ConstantsExtensions] requiresPowerCycle = nCylinders requiresPowerCycle = pinLayout requiresPowerCycle = fanPin requiresPowerCycle = reqFuel requiresPowerCycle = numTeeth requiresPowerCycle = missingTeeth requiresPowerCycle = trigPatternSec requiresPowerCycle = injOpen requiresPowerCycle = IgInv requiresPowerCycle = fanInv requiresPowerCycle = boostEnabled requiresPowerCycle = vvtEnabled ; requiresPowerCycle = vvtChannels requiresPowerCycle = boostFreq requiresPowerCycle = vvtFreq requiresPowerCycle = idleFreq requiresPowerCycle = sparkMode requiresPowerCycle = launchPin requiresPowerCycle = launchEnable requiresPowerCycle = launchHiLo requiresPowerCycle = flexEnabled requiresPowerCycle = oddfire2 requiresPowerCycle = oddfire3 requiresPowerCycle = oddfire4 requiresPowerCycle = iacCLminDuty requiresPowerCycle = iacCLmaxDuty requiresPowerCycle = useExtBaro requiresPowerCycle = useEMAP requiresPowerCycle = baroPin requiresPowerCycle = rotaryType requiresPowerCycle = stagedInjSizePri requiresPowerCycle = stagedInjSizeSec requiresPowerCycle = stagingEnabled requiresPowerCycle = resetControl requiresPowerCycle = resetControlPin requiresPowerCycle = n2o_enable requiresPowerCycle = n2o_arming_pin requiresPowerCycle = n2o_pin_polarity requiresPowerCycle = knock_mode requiresPowerCycle = knock_pin requiresPowerCycle = knock_trigger requiresPowerCycle = knock_pullup requiresPowerCycle = idleUpEnabled requiresPowerCycle = caninput_sel0a requiresPowerCycle = caninput_sel0b requiresPowerCycle = caninput_sel1a requiresPowerCycle = caninput_sel1b requiresPowerCycle = caninput_sel2a requiresPowerCycle = caninput_sel2b requiresPowerCycle = caninput_sel3a requiresPowerCycle = caninput_sel3b requiresPowerCycle = caninput_sel4a requiresPowerCycle = caninput_sel4b requiresPowerCycle = caninput_sel5a requiresPowerCycle = caninput_sel5b requiresPowerCycle = caninput_sel6a requiresPowerCycle = caninput_sel6b requiresPowerCycle = caninput_sel7a requiresPowerCycle = caninput_sel7b requiresPowerCycle = caninput_sel8a requiresPowerCycle = caninput_sel8b requiresPowerCycle = caninput_sel9a requiresPowerCycle = caninput_sel9b requiresPowerCycle = caninput_sel10a requiresPowerCycle = caninput_sel10b requiresPowerCycle = caninput_sel11a requiresPowerCycle = caninput_sel11b requiresPowerCycle = caninput_sel12a requiresPowerCycle = caninput_sel12b requiresPowerCycle = caninput_sel13a requiresPowerCycle = caninput_sel13b requiresPowerCycle = caninput_sel14a requiresPowerCycle = caninput_sel14b requiresPowerCycle = caninput_sel15a requiresPowerCycle = caninput_sel15b defaultValue = pinLayout, 1 defaultValue = TrigPattern, 0 defaultValue = useResync, 1 defaultValue = trigPatternSec, 0 defaultValue = sparkMode, 0 defaultValue = indInjAng, 0 defaultValue = inj1Ang, 355 defaultValue = inj2Ang, 355 defaultValue = inj3Ang, 355 defaultValue = inj4Ang, 355 defaultValue = nInjectors, 4 defaultValue = dutyLim, 80 defaultValue = mapMin, 10 defaultValue = mapMax, 260 defaultValue = baroMin 10 defaultValue = baroMax, 260 defaultValue = useEMAP, 0 defaultValue = EMAPMin, 10 defaultValue = EMAPMax, 260 defaultValue = fpPrime, 3 defaultValue = TrigFilter, 0 defaultValue = ignCranklock,0 defaultValue = multiplyMAP, 0 defaultValue = includeAFR, 0 defaultValue = stoich, 14.7 defaultValue = flexEnabled, 0 defaultValue = oddfire2, 0 defaultValue = oddfire3, 0 defaultValue = oddfire4, 0 defaultValue = flexFreqLow, 50 defaultValue = flexFreqHigh,150 defaultValue = fuelPumpPin, 0 defaultValue = fanPin, 0 defaultValue = iacCLminDuty,0 defaultValue = iacCLmaxDuty,100 defaultValue = boostMinDuty,0 defaultValue = boostMaxDuty,100 defaultValue = boostSens, 2000 defaultValue = boostIntv, 30 defaultValue = sparkDur, 1.0 defaultValue = fixAngEnable,0 defaultValue = n2o_enable, 0 defaultValue = speeduino_tsCanId, 0 defaultValue = true_address, 256 defaultValue = realtime_base_address, 336 defaultValue = VVTasOnOff, 0 defaultValue = stagingEnabled, 0 defaultValue = lnchCtrlTPS, 0 defaultValue = resetControl, 0 defaultValue = bootloaderCaps, 0 defaultValue = taeTaperMin, 1000 defaultValue = taeTaperMax, 5000 ; defaultValue = obd_address, 0 ;Default pins defaultValue = fanPin, 0 defaultValue = vvtPin, 0 defaultValue = launchPin, 0 defaultValue = boostPin, 0 defaultValue = fuelPumpPin, 0 defaultValue = tachoPin, 0 defaultValue = tachoDuration, 2 defaultValue = perToothIgn, 0 defaultValue = resetControlPin, 0 ;Default ADC filter values defaultValue = ADCFILTER_TPS 50 defaultValue = ADCFILTER_CLT 180 defaultValue = ADCFILTER_IAT 180 defaultValue = ADCFILTER_O2 100 defaultValue = ADCFILTER_BAT 128 defaultValue = ADCFILTER_MAP 20 ;This is only used on Instantaneous MAP readings and is intentionally very weak to allow for faster response defaultValue = ADCFILTER_BARO 64 ;Force the controller priority for the filters (Controller knows best here when in doubt) controllerPriority = ADCFILTER_TPS controllerPriority = ADCFILTER_CLT controllerPriority = ADCFILTER_IAT controllerPriority = ADCFILTER_O2 controllerPriority = ADCFILTER_BAT controllerPriority = ADCFILTER_MAP controllerPriority = ADCFILTER_BARO ;Again, force the setting from the controller for the trigger edges. This is particularly useful for the Oct 2018 update where the names of the dges changed controllerPriority = TrigEdge controllerPriority = TrigEdgeSec ;These are the limits for each of the load algorithms (Refer to the PC Variables section) ;Order is: MAP TPS IMAP/EMAP ITB UNUSED UNUSED UNUSED UNUSED defaultValue = algorithmLimits, 511 100 511 511 100 100 100 100 #if SPEED_DENSITY defaultValue = fuelLoadMax, 511 defaultValue = ignLoadMax, 511 #else defaultValue = fuelLoadMax, 511 defaultValue = ignLoadMax, 511 #endif controllerPriority = bootloaderCaps defaultValue = AUXin00Alias Aux0 defaultValue = AUXin01Alias Aux1 defaultValue = AUXin02Alias Aux2 defaultValue = AUXin03Alias Aux3 defaultValue = AUXin04Alias Aux4 defaultValue = AUXin05Alias Aux5 defaultValue = AUXin06Alias Aux6 defaultValue = AUXin07Alias Aux7 defaultValue = AUXin08Alias Aux8 defaultValue = AUXin09Alias Aux9 defaultValue = AUXin10Alias Aux10 defaultValue = AUXin11Alias Aux11 defaultValue = AUXin12Alias Aux12 defaultValue = AUXin13Alias Aux13 defaultValue = AUXin14Alias Aux14 defaultValue = AUXin15Alias Aux15 [Menu] ;---------------------------------------------------------------------------- ; There are five pre-defined values that may be used to define your menus. ; The first four allow access to the "standard" dialog boxes, the last one ; merely draws a separator (horizontal line) in the menu. ; ; std_constants ; std_enrichments ; std_realtime ; std_warmup ; ; std_separator ; ; If you use any of the std_constants, std_enrichments or std_warmup ; editors, they may be optionally suffixed with a page number (only ; useful for multi-page code variants), which causes them to edit the ; specified page. If you leave off the page specifier, they edit logical ; page one as specified in the Constants section. ; ; There are four special menu names, which when used append to the standard ; menus of the same name instead of creating a new one. The menu names ; are "File", "Communications", "Tools" and "Help". ; ;---------------------------------------------------------------------------- menuDialog = main menu = "Settings" subMenu = engine_constants, "Engine Constants" subMenu = injChars, "Injector Characteristics" subMenu = triggerSettings, "Trigger Setup" ;subMenu = OLED, "OLED Setup" subMenu = airdensity_curve, "IAT Density" subMenu = reset_control, "Reset Control" menu = "&Tuning" subMenu = std_realtime, "Realtime Display" subMenu = accelEnrichments, "Acceleration Enrichment" subMenu = egoControl, "AFR/O2", 3 subMenu = RevLimiterS, "Limiters", 2 subMenu = flexFueling, "Flex Fuel", 2 subMenu = veTableDialog, "VE Table", 0 subMenu = sparkTbl, "Spark Table", 2 subMenu = afrTable1Tbl, "AFR Table", 5 subMenu = std_separator subMenu = fuelTable2Dialog, "Second fuel Table", 11 subMenu = inj_trimad, "Sequential fuel trim", 9 subMenu = stagingTableDialog, "Staged Injection", 10, { nCylinders <= 4 } ; Can't do staging on more than 4 cylinder engines menu = "&Spark" subMenu = sparkSettings, "Spark Settings" subMenu = sparkTbl, "Spark Table", 2 subMenu = dwellSettings, "Dwell settings" subMenu = dwell_correction_curve, "Dwell Compensation" subMenu = iat_retard_curve, "IAT Retard" subMenu = clt_advance_curve, "Cold Advance" ;subMenu = knockSettings, "Knock Settings" subMenu = rotary_ignition, "Rotary Ignition", { sparkMode == 4 } menu = "&Starting/Idle" subMenu = crankPW, "Cranking Settings" subMenu = primePW, "Priming Pulsewidth" subMenu = warmup, "Warmup Enrichment" subMenu = ASE, "Afterstart Enrichment - Percentage" subMenu = ASE_time, "Afterstart Enrichment - Duration" subMenu = std_separator subMenu = idleSettings, "Idle Control" subMenu = iacClosedLoop_curve, "Idle - Closed loop targets", 7, { iacAlgorithm == 3 || iacAlgorithm == 5 } subMenu = iacPwm_curve, "Idle - PWM Duty Cycle", 7, { iacAlgorithm == 2 } subMenu = iacPwmCrank_curve, "Idle - PWM Cranking Duty Cycle", 7, { iacAlgorithm == 2 } subMenu = iacStep_curve, "Idle - Stepper Motor", 7, { iacAlgorithm == 4 } subMenu = iacStepCrank_curve, "Idle - Stepper Motor Cranking", 7, { iacAlgorithm == 4 } subMenu = std_separator subMenu = idleUpSettings, "Idle Up Settings", { iacAlgorithm == 2 || iacAlgorithm == 3 || iacAlgorithm == 4 || iacAlgorithm == 5 } menu = "&Accessories" subMenu = fanSettings, "Thermo Fan" subMenu = LaunchControl, "Launch Control / Flat Shift" subMenu = fuelpump, "Fuel Pump" subMenu = NitrousControl, "Nitrous" subMenu = std_separator subMenu = boostSettings, "Boost Control" subMenu = boostLoad, "Boost Targets/Load", 8, { boostEnabled } subMenu = std_separator subMenu = vvtSettings, "VVT Control" subMenu = vvtTbl, "VVT duty cycle", 8, { vvtEnabled } subMenu = std_separator subMenu = tacho, "Tacho Output" subMenu = std_separator #if CAN_COMMANDS subMenu = can_serial3IO, "Canbus/Secondary Serial IO Interface" subMenu = std_separator subMenu = Canin_config, "External Auxillary Input Channel Configuration", {enable_secondarySerial || (enable_intcan && intcan_available)} subMenu = Auxin_config, "Local Auxillary Input Channel Configuration" ;subMenu = std_separator ;subMenu = Canout_config, "Canbus Output Configuration" #else subMenu = serial3IO, "Canbus/Secondary Serial IO Interface" subMenu = std_separator subMenu = Canin_config, "External Auxillary Input Channel Configuration", {enable_secondarySerial || (enable_intcan && intcan_available)} subMenu = Auxin_config, "Local Auxillary Input Channel Configuration" #endif menuDialog = main menu = "Tools" subMenu = mapCal, "Calibrate Pressure Sensors" subMenu = std_ms2gentherm, "Calibrate Temperature Sensors", 0 subMenu = std_ms2geno2, "Calibrate AFR Sensor", 0 subMenu = sensorFilters, "Set analog sensor filters" menuDialog = main menu = "3D &Tuning Maps" subMenu = veTable1Map, "Fuel Table" subMenu = sparkMap, "Spark Table", 3 subMenu = afrTable1Map, "AFR Target Table" #if enablehardware_test menuDialog = main menu = "Hardware Testing" subMenu = outputtest1, "Test Output Hardware" #endif menu = "Help" subMenu = helpGeneral, "Speeduino Help" ;------------------------------------------------------------------------------- [SettingContextHelp] ; constantName = "Help Text" ; These provide the context help in the dialog when these variables are used nCylinders = "Cylinder count" alternate = "Whether or not the injectors should be fired at the same time. This setting is ignored when Sequential is selected below, however it will still affect the req_fuel value." engineType = "Engines with an equal number of degrees between all firings (This is most engines) should select Even fire. Some 2 and 6 cylinder engines are Odd fire however." twoStroke = "Four-Stroke (most engines), Two-stroke." nInjectors = "Number of primary injectors." mapSample = "The method used for calculating the MAP reading\nFor 1-2 Cylinder engines, Cycle Minimum is recommended.\nFor more than 2 cylinders Cycle Average is recommended" stoich = "The stoichiometric ration of the fuel being used. For flex fuel, choose the primary fuel" injLayout = "The injector layout and timing to be used. Options are: \n 1. Paired - 2 injectors per output. Outputs active is equal to half the number of cylinders. Outputs are timed over 1 crank revolution. \n 2. Semi-sequential: Same as paired except that injector channels are mirrored (1&4, 2&3) meaning the number of outputs used are equal to the number of cylinders. Only valid for 4 cylinders or less. \n 3. Banked: 2 outputs only used. \n 4. Sequential: 1 injector per output and outputs used equals the number of cylinders. Injection is timed over full cycle. " TrigPattern = "The type of input trigger decoder to be used." useResync = "If enabled, sync will be rechecked once every full cycle from the cam input. This is good for accuracy, however if your cam input is noisy then this can cause issues." trigPatternSec = "Cam mode/type also known as Secondary Trigger Pattern." numTeeth = "Number of teeth on Primary Wheel." TrigSpeed = "Primary trigger speed." missingTeeth= "Number of Missing teeth on Primary Wheel." TrigAng = "The Angle ATDC when tooth No:1 on the primary wheel passes the primary sensor. The range of this field is -360 to +360 degrees." TrigAngMul = "A multiplier used by non-360 degree tooth wheels (i.e. Wheels where the tooth count doesn't divide evenly into 360. Usage: (360 * ) / tooth_count = Whole number" SkipCycles = "The number of revolutions that will be skipped during cranking before the injectors and coils are fired." TrigEdge = "The Trigger edge of the primary sensor.\nLeading.\nTrailing." TrigEdgeSec = "The Trigger edge of the secondary (Cam) sensor.\nLeading.\nTrailing." TrigFilter = "Tuning of the trigger filter algorithm. The more aggressive the setting, the more noise will be removed, however this increases the chance of some true readings being filtered out (False positive). Medium is safe for most setups. Only select 'Aggressive' if no other options are working" sparkMode = "Wasted Spark: Ignition outputs are on the channels <= half the number of cylinders. Eg 4 cylinder outputs on IGN1 and IGN2.\nSingle Channel: All ignition pulses are output on IGN1.\nWasted COP: Ignition pulses are output on all ignition channels up to the number of cylinders. Eg 4 cylinder outputs on all ignition channels. No valid for >4 cylinders" IgInv = "Whether the spark fires when the ignition signal goes high or goes low. Nearly all ignition systems use 'Going Low' but please verify this as damage to coils can result from the incorrect selection. (NOTE: THIS IS NOT MEGASQUIRT. THIS SETTING IS USUALLY THE OPPOSITE OF WHAT THEY USE!)" sparkDur = "The duration of the spark at full dwell. Typically around 1ms" fixAngEnable= "If enabled, timing will be locked/fixed and the ignition map will be ignored. Note that this value will be overriden by the fixed cranking value when cranking" FixAng = "Timing will be locked at this value if the above is enabled" crankRPM = "The cranking RPM threshold. When RPM is lower than this value (and above 0) the system will be considered to be cranking" fanInv = "" fanHyster = "The number of degrees of hysteresis to be used in controlling the fan. Recommended values are between 2 and 5" taeTime = "The duration of the acceleration enrichment" iacChannels = "The number of output channels used for PWM valves. Select 1 for 2-wire valves or 2 for 3-wire valves." iacStepTime = "Pause time between each step. Values that are too low can cause the motor to behave erratically or not at all" iacCoolTime = "Cool time between each step. Set to zero if you don't want any cooling at all" iacStepHome = "Homing steps to perform on startup. Must be greater than the fully open steps value" iacStepHyster = "The minimum number of steps to move in any one go." iacAlgorithm = "Selects method of idle control.\nNone = no idle control valve.\nOn/Off valve.\nPWM valve (2,3 wire).\nStepper Valve (4,6,8 wire)." iacPWMdir = "Normal PWM valves increase RPM with higher duty. If RPM decreases with higher duty then select Reverse" iacCLminDuty= "When using closed loop idle control, this is the minimum duty cycle that the PID loop will allow. Combined with the maximum value, this specifies the working range of your idle valve" iacCLmaxDuty= "When using closed loop idle control, this is the maximum duty cycle that the PID loop will allow. Combined with the minimum value, this specifies the working range of your idle valve" iacFastTemp = "Below this temperature, the idle output will be high (On). Above this temperature, it will turn off." idleUpPolarity = "Normal polarity is a ground switch where an earthed signal activates the Idle Up. The internal pullup will be enabled with Normal polarity. \n Inverted may be used if a 5v signal is used to enable the Idle Up." idleUpAdder = "The amount (In either Duty Cycle % or Steps (Depending on the idle control method in use), that the idle control will increase by when Idle Up is active" oddfire2 = "The ATDC angle of channel 2 for oddfire engines. This is relative to the TDC angle of channel 1" oddfire3 = "The ATDC angle of channel 3 for oddfire engines. This is relative to the TDC angle of channel 1 (NOT channel 2)" oddfire4 = "The ATDC angle of channel 4 for oddfire engines. This is relative to the TDC angle of channel 1 (NOT channel 3)" dfcoRPM = "The RPM above which DFCO will be active. Typically set a few hundred RPM above maximum idle speed" dfcoHyster = "Hysteresis for DFCO RPM. 200-300 RPM is typical for this, however a higher value may be needed if the RPM is fluctuating around the cutout speed" dfcoTPSThresh= "The TPS value below which DFCO will be active. Typical value is 5%-10%, but higher may be needed if TPS signal is noisy" launchPin = "The ARDUINO pin that the clutch switch is connected to. This is NOT the pin on the connector, but the pin it relates to on the arduino" launchHiLo = "Whether the signal is High or Low when the clutch pedal is engaged. For a ground switching input (Most clutch switches), this should be LOW" lnchPullRes = "Whether the internal pullup resistor is enabled or left floating. For a ground switching input (Most clutch switches), select Pullup. For a 0v-5v input, select Floating" ignBypassPin = "The ARDUINO pin that the ignition bypass is connected to. This is NOT the pin on the connector, but the pin it relates to on the arduino" ignBypassEnable = "If turned on, a ground signal will be output during cranking on the specified pin. This is used to bypass the Speeduino ignition control during cranking." ignCranklock = "On certain low resolution ignition patterns, the cranking timing can be locked to occur when a pulse is recieved." multiplyMAP = "If enabled, the MAP reading is included directly into the pulsewidth calculation by multiplying the VE lookup value by the MAP:Baro ratio. This results in a flatter VE table that can be easier to tune in some instances. VE table must be retuned when this value is changed." includeAFR = "When enabled, the current AFR reading is incorporated directly in the pulsewidth calculation as a percentage of the current target ratio. VE table must be retuned when this value is changed. " useExtBaro = "By Default, Speeduino will measure barometric pressure upon startup. Optionally however, a 2nd pressure sensor can be used to perform live barometric readings whilst the system is on." flexEnabled = "Turns on readings from the Flex sensor and enables the below adjustments" flexFreqLow = "The frequency of the sensor at 0% ethanol (50Hz for standard GM/Continental sensor)" flexFreqHigh = "The frequency of the sensor at 100% ethanol (150Hz for standard GM/Continental sensor)" flexFuelAdj = "Fuel % to be used for the current ethanol % (Typically 100% @ 0%, 163% @ 100%)" flexAdvAdj = "Additional advance (in degrees) for the current ethanol % (Typically 0 @ 0%, 10-20 @ 100%)" flexBoostAdj = "Adjustment, in kPa, to the boost target for the current ethanol %. Negative values are allowed to lower boost at lower ethanol % if necessary." n2o_arming_pin = "Pin that the nitrous arming/enagement switch is on." n2o_pin_polarity = "Whether Nitrous is active (Armed) when the pin is LOW or HIGH. If LOW is selected, the internal pullup will be used." flatSArm = "The RPM switch point that determines whether an eganged clutch is for launch control or flat shift. Below this figure, an engaged clutch is considered to be for launch, above this figure an active clutch input will be considered a flat shift. This should be set at least several hundred RPM above idle" flatSSoftWin= "The number of RPM below the flat shift point where the softlimit will be applied (aka Soft limit window). Recommended values are 200-1000" flatSRetard = "The absolute timing (BTDC) that will be used when within the soft limit window" hardCutType = "How hard cuts should be performed for rev/launch limits. Full cut will stop all ignition events, Rolling cut will step through all ignition outputs, only cutting 1 per revolution" enable_secondarySerial = "This Enables the secondary serial port . Secondary serial is serial3 on mega2560 processor, and Serial2 on STM32 and Teensy processor " cltAdvValues = "This curve can be used to advance ignition timing when engine is warming up. This can also be used to warm up the catalytic converters in cold start by retarding timing. Or even as safety feature to retard timign when engine is too hot to prevent knock." asePct = "Defines the fuel enrichment percentage after start. This is needed to keep engine running after start and it's usually about 5% when engine is hot to 50% when engine is cold." aseCount = "Will set how long time the After Start Enrichment is applied in seconds. Usually this is second or two when engine is hot up to 10 or twenty on really cold engine." ;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 " realtime_base_address = "This is the 11bit CAN address of the realtime data broadcast from the Speeduino ECU. This MUST be at least 0x16 greater than the true address" ;obd_address = "The 11bit Can address that the Speeduino ECU responds to for OBD2 diagnostic requests" AUXin00Alias = "The Ascii alias asigned to Aux input channel 0" AUXin01Alias = "The Ascii alias asigned to Aux input channel 1" AUXin02Alias = "The Ascii alias asigned to Aux input channel 2" AUXin03Alias = "The Ascii alias asigned to Aux input channel 3" AUXin04Alias = "The Ascii alias asigned to Aux input channel 4" AUXin05Alias = "The Ascii alias asigned to Aux input channel 5" AUXin06Alias = "The Ascii alias asigned to Aux input channel 6" AUXin07Alias = "The Ascii alias asigned to Aux input channel 7" AUXin08Alias = "The Ascii alias asigned to Aux input channel 8" AUXin09Alias = "The Ascii alias asigned to Aux input channel 9" AUXin10Alias = "The Ascii alias asigned to Aux input channel 10" AUXin11Alias = "The Ascii alias asigned to Aux input channel 11" AUXin12Alias = "The Ascii alias asigned to Aux input channel 12" AUXin13Alias = "The Ascii alias asigned to Aux input channel 13" AUXin14Alias = "The Ascii alias asigned to Aux input channel 14" AUXin15Alias = "The Ascii alias asigned to Aux input channel 15" caninput_sel0a = "This Enables local analog/digital on input channel 0 " caninput_sel1a = "This Enables local analog/digital on input channel 1 " caninput_sel2a = "This Enables local analog/digital on input channel 2 " caninput_sel3a = "This Enables local analog/digital on input channel 3 " caninput_sel4a = "This Enables local analog/digital on input channel 4 " caninput_sel5a = "This Enables local analog/digital on input channel 5 " caninput_sel6a = "This Enables local analog/digital on input channel 6 " caninput_sel7a = "This Enables local analog/digital on input channel 7 " caninput_sel8a = "This Enables local analog/digital on input channel 8 " caninput_sel9a = "This Enables local analog/digital on input channel 9 " caninput_sel10a = "This Enables local analog/digital on input channel 10 " caninput_sel11a = "This Enables local analog/digital on input channel 11 " caninput_sel12a = "This Enables local analog/digital on input channel 12 " caninput_sel13a = "This Enables local analog/digital on input channel 13 " caninput_sel14a = "This Enables local analog/digital on input channel 14 " caninput_sel15a = "This Enables local analog/digital on input channel 15 " caninput_sel0b = "This Enables External CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 0 " caninput_sel1b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 1 " caninput_sel2b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 2 " caninput_sel3b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 3 " caninput_sel4b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 4 " caninput_sel5b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 5 " caninput_sel6b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 6 " caninput_sel7b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 7 " caninput_sel8b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 8 " caninput_sel9b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 9 " caninput_sel10b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 10 " caninput_sel11b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 11 " caninput_sel12b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 12 " caninput_sel13b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 13 " caninput_sel14b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 14 " caninput_sel15b = "This Enables External/CAN data via the Secondary Serial CANBUS expansion module or local analog/digital on input channel 15 " caninput_source_can_address0 = "The source 11bit CAN address of the data for channel 0" caninput_source_can_address1 = "The source 11bit CAN address of the data for channel 1" caninput_source_can_address2 = "The source 11bit CAN address of the data for channel 2" caninput_source_can_address3 = "The source 11bit CAN address of the data for channel 3" caninput_source_can_address4 = "The source 11bit CAN address of the data for channel 4" caninput_source_can_address5 = "The source 11bit CAN address of the data for channel 5" caninput_source_can_address6 = "The source 11bit CAN address of the data for channel 6" caninput_source_can_address7 = "The source 11bit CAN address of the data for channel 7" caninput_source_can_address8 = "The source 11bit CAN address of the data for channel 8 " caninput_source_can_address9 = "The source 11bit CAN address of the data for channel 9" caninput_source_can_address10 = "The source 11bit CAN address of the data for channel 10" caninput_source_can_address11 = "The source 11bit CAN address of the data for channel 11" caninput_source_can_address12 = "The source 11bit CAN address of the data for channel 12" caninput_source_can_address13 = "The source 11bit CAN address of the data for channel 13" caninput_source_can_address14 = "The source 11bit CAN address of the data for channel 14" caninput_source_can_address15 = "The source 11bit CAN address of the data for channel 15" caninput_source_start_byte0 = "The Starting byte the data begins at for channel 0" caninput_source_start_byte1 = "The Starting byte the data begins at for channel 1" caninput_source_start_byte2 = "The Starting byte the data begins at for channel 2" caninput_source_start_byte3 = "The Starting byte the data begins at for channel 3" caninput_source_start_byte4 = "The Starting byte the data begins at for channel 4" caninput_source_start_byte5 = "The Starting byte the data begins at for channel 5" caninput_source_start_byte6 = "The Starting byte the data begins at for channel 6" caninput_source_start_byte7 = "The Starting byte the data begins at for channel 7" caninput_source_start_byte8 = "The Starting byte the data begins at for channel 8" caninput_source_start_byte9 = "The Starting byte the data begins at for channel 9" caninput_source_start_byte10 = "The Starting byte the data begins at for channel 10" caninput_source_start_byte11 = "The Starting byte the data begins at for channel 11" caninput_source_start_byte12 = "The Starting byte the data begins at for channel 12" caninput_source_start_byte13 = "The Starting byte the data begins at for channel 13" caninput_source_start_byte14 = "The Starting byte the data begins at for channel 14" caninput_source_start_byte15 = "The Starting byte the data begins at for channel 15" caninput_source_num_bytes0 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes1 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes2 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes3 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes4 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes5 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes6 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes7 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes8 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes9 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes10 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes11 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes12 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes13 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes14 = "The number of bytes the data is made from starting at selected start byte number" caninput_source_num_bytes15 = "The number of bytes the 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" cmdtestinj150dc = "this will cycle the output at 50% Duty cycle" cmdtestinj250dc = "this will cycle the output at 50% Duty cycle" cmdtestinj350dc = "this will cycle the output at 50% Duty cycle" cmdtestinj450dc = "this will cycle the output at 50% Duty cycle" cmdtestspk150dc = "this will cycle the output at 50% Duty cycle" cmdtestspk250dc = "this will cycle the output at 50% Duty cycle" cmdtestspk350dc = "this will cycle the output at 50% Duty cycle" cmdtestspk450dc = "this will cycle the output at 50% Duty cycle" ADCFILTER_TPS = "Recommended value: 50" ADCFILTER_CLT = "Recommended value: 180" ADCFILTER_IAT = "Recommended value: 180" ADCFILTER_O2 = "Recommended value: 128" ADCFILTER_BAT = "Recommended value: 128" ADCFILTER_MAP = "This setting is only available when using the Instantaneious MAP sampling method. Recommended value: 20" ADCFILTER_BARO = "This setting is only available when using an external Baro sensor. Recommended value: 64" boostIntv = "The closed loop control interval will run every this many ms. Generally values between 50% and 100% of the valve frequency work best" VVTasOnOff = "Whether or not the VVT table should be treated as on and off control only. If you are using the VVT map to control a switch, this should be Yes. If you are using the VVT control to drive a PWM signal, this should be No" stagedInjSizePri= "Size of the primary injectors. The sum of the Pri and Sec injectors values MUST match the value used in the req_fuel calculation" stagedInjSizeSec= "Size of the secondary injectors. The sum of the Pri and Sec injectors values MUST match the value used in the req_fuel calculation" #if resetcontrol_adv resetControl = "How to control the Arduino's automatic reset feature. NOTE: Some of these settings require modifying your hardware and replacing the Arduino bootloader. See the Wiki for more details.\n\nDisabled: Allow the Arduino to reset when a new serial connection is made.\n\nPrevent When Running: Hold the control pin high while the engine is running.\n\nPrevent Always: Always hold the control pin high.\n\nSerial Command: Normally hold the control pin high, but pull it low when the 'U' serial command is issued and reset upon receiving more data." #else resetControl = "If set to Serial Command, normally hold the control pin high but pull it low when the 'U' serial command is issued and reset upon receiving more data. The control pin should be connected to the Arduino's reset pin." #endif resetControlPin = "The Arduino pin used to control resets." [UserDefined] ; Enhanced TunerStudio dialogs can be defined here ; MegaTune will over look this section ; These dialogs will over-ride those in the UserDefined Section ; User defined ar loaded first, then if one by the same name is defiend here, ; it will replace the MegaTune definition ; dialog = name, Title, Layout ; ; valid options for layout are xAxis, yAxis, border ; for an xAxis, each field added will be added from right to left ; A yAxis layout will add fields from top to bottom ; A border layout will expect an additional constraint to determine placement ; valid border constraints are north, South, East, West, Center ; all 5 do not need to be filled. ; The field name can be either a constant reference, or a reference to another ; dialog which will be added. ; dialogs can be nested and can be mixed with fields dialog = engine_constants_southwest, "Speeduino Board" field = "Stoichiometric ratio", stoich field = "Injector Layout", injLayout, { nCylinders <= 4 } field = "Board Layout", pinLayout field = "MAP Sample method", mapSample dialog = engine_constants_west, "" panel = std_injection, North panel = engine_constants_southwest dialog = engine_constants_northeast, "Oddfire Angles" field = "Channel 2 angle", oddfire2, { engineType == 1 } field = "Channel 3 angle", oddfire3, { engineType == 1 && nCylinders >= 3 } field = "Channel 4 angle", oddfire4, { engineType == 1 && nCylinders >= 4 } dialog = engine_constants_east, "" panel = engine_constants_northeast, North field = "" dialog = engine_constants, "", border panel = engine_constants_west, West panel = engine_constants_east, East ; Flex fuel stuff dialog = flexFuelSettings, "", yAxis field = "Flex Fuel Sensor ", flexEnabled field = "Low (E0) ", flexFreqLow, { flexEnabled } field = "High (E100) ", flexFreqHigh, { flexEnabled } dialog = flexFuelWest, "" panel = flex_fuel_curve, { flexEnabled } panel = flex_adv_curve, { flexEnabled } dialog = flexFuelEast, "" panel = flex_boost_curve, { flexEnabled && boostEnabled } ;dialog = flexCurves, "", indexCard dialog = flexCurves, "", xAxis panel = flexFuelWest, West panel = flexFuelEast, East dialog = flexFueling, "Fuel Sensor Settings", border topicHelp = "http://speeduino.com/wiki/index.php/Flex_Fuel" ;panel = flexFuelWest, West panel = flexFuelSettings, North panel = flexCurves, South ; Knock control settings dialog = knock_windows, "Knock Windows", xAxis panel = knock_window_angle_curve, West, { knock_mode } panel = knock_window_duration_curve, East, { knock_mode } dialog = knock_settings_west, "Settings", yAxis field = "Knock Mode", knock_mode field = "Knock Pin", knock_pin, { knock_mode } field = "Knock active when pin is", knock_trigger, { knock_mode == 1 } field = "Use pullup", knock_pullup, { knock_mode == 1 } dialog = knock_settings_east, "Detection and Response" field = "#Detection" field = "Knock count required", knock_count, { knock_mode == 1} field = "Knock threshold required", knock_threshold, { knock_mode == 2} field = "Maximum MAP", knock_maxMAP, { knock_mode } field = "Maximum RPM", knock_maxRPM, { knock_mode } ;Retard and recovery field = "#Retard" field = "Total retard", knock_maxRetard, { knock_mode } field = "First step size", knock_firstStep, { knock_mode } field = "Other step size", knock_stepSize, { knock_mode } field = "Step time", knock_stepTime, { knock_mode } field = "#Recovery" field = "Retard duration", knock_duration, { knock_mode } ;Time before retard starts ending field = "Recovery step time", knock_recoveryStepTime, { knock_mode } ;Time between each recovery step field = "Recovery step size", knock_recoveryStep, { knock_mode } dialog = knock_settings_top, "", xAxis panel = knock_settings_west, West panel = knock_settings_east, East dialog = knockSettings, "", border topicHelp = "http://speeduino.com/wiki/index.php/Knock" panel = knock_settings_top, North panel = knock_windows, South dialog = tacho, "Tacho" field = "Output pin", tachoPin field = "Output speed", tachoDiv field = "Pulse duration", tachoDuration dialog = accelEnrichments_center, "" field = "TPSdot Threshold", tpsThresh field = "Accel Time", taeTime field = "Taper Start RPM", taeTaperMin field = "Taper End RPM", taeTaperMax dialog = accelEnrichments_south, "Decelleration Fuel Cutoff (DFCO)" field = "Enabled", dfcoEnabled field = "TPS Threshold", dfcoTPSThresh, { dfcoEnabled } field = "Cutoff RPM", dfcoRPM, { dfcoEnabled } field = "RPM Hysteresis", dfcoHyster, { dfcoEnabled } dialog = accelEnrichments_north_south, "" liveGraph = pump_ae_Graph, "AE Graph" graphLine = afr graphLine = TPSdot, "%", -2000, 2000, auto, auto dialog = accelEnrichments_north, "", xAxis panel = time_accel_tpsdot_curve dialog = accelEnrichments, "Acceleration Enrichment" topicHelp = "http://speeduino.com/wiki/index.php/Acceleration_Wizard" panel = accelEnrichments_north, North panel = accelEnrichments_north_south, Center panel = accelEnrichments_center, Center panel = accelEnrichments_south, South dialog = veTableDialog_north, "" panel = veTable1Tbl dialog = veTableDialog_south, "" field = "Multiply VE value by MAP:Baro ratio", multiplyMAP field = "Multiply by ratio of AFR to Target AFR", includeAFR, { egoType == 2 } dialog = veTableDialog, "VE Table" panel = veTableDialog_north, North panel = veTableDialog_south, South dialog = fuelTable2Dialog_north, "" field = "Secondary fuel table mode", fuel2Mode field = "Load source", fuel2Algorithm, { fuel2Mode } dialog = fuelTable2Dialog_south, "" panel = fuelTable2Tbl dialog = fuelTable2Dialog, "Fuel Table 2" panel = fuelTable2Dialog_north, North panel = fuelTable2Dialog_south, South, { fuel2Mode } dialog = injChars, "Injector Characteristics" field = "Injector Open Time", injOpen field = "Injector close angle" field = "", inj1Ang, { indInjAng == 0 } field = "Individual channel setting", indInjAng field = "Channel 1", inj1Ang, { indInjAng } field = "Channel 2", inj2Ang, { nCylinders > 1 && indInjAng } field = "Channel 3", inj3Ang, { indInjAng && (nCylinders > 4 || nCylinders == 3 || ((nCylinders == 4) && (injLayout == 3))) } field = "Channel 4", inj4Ang, { indInjAng && (nCylinders > 6 || ((nCylinders == 4) && (injLayout == 3))) } field = "Injector Duty Limit", dutyLim panel = injector_voltage_curve dialog = egoControl, "" topicHelp = "http://speeduino.com/wiki/index.php/AFR/O2" field = "Sensor Type", egoType field = "Algorithm", egoAlgorithm, { egoType } field = "Ignition Events per Step", egoCount, { egoType && (egoAlgorithm < 3) } field = "Controller Auth +/-", egoLimit, { egoType && (egoAlgorithm < 3) } field = "Only correct above:", ego_min, { egoType && (egoAlgorithm < 3) } field = "and correct below:", ego_max, { egoType && (egoAlgorithm < 3) } field = "Active Above Coolant", egoTemp, { egoType && (egoAlgorithm < 3) } field = "Active Above RPM", egoRPM, { egoType && (egoAlgorithm < 3) } field = "Active Below TPS", egoTPSMax, { egoType && (egoAlgorithm < 3) } field = "EGO delay after start", ego_sdelay, { (egoAlgorithm < 3) } field = "PID Proportional Gain", egoKP, { egoType && (egoAlgorithm == 2) } field = "PID Integral", egoKI, { egoType && (egoAlgorithm == 2) } field = "PID Derivative", egoKD, { egoType && (egoAlgorithm == 2) } dialog = fanSettings,"Fan Settings",7 field = "Fan Mode", fanEnable field = "Fan when off", fanWhenOff, { fanEnable } field = "Fan output pin", fanPin, { fanEnable } field = "Fan Output Inverted", fanInv , { fanEnable } field = "Fan temperature SP", fanSP, { fanEnable } field = "Fan hysteresis", fanHyster, { fanEnable } dialog = stepper_idle, "Stepper Idle" field = "Step time (ms)", iacStepTime, { iacAlgorithm == 4 || iacAlgorithm == 5 } field = "Cool time (ms)", iacCoolTime, { iacAlgorithm == 4 || iacAlgorithm == 5 } field = "Home steps", iacStepHome, { iacAlgorithm == 4 || iacAlgorithm == 5 } field = "Minimum Steps", iacStepHyster, { iacAlgorithm == 4 || iacAlgorithm == 5 } field = "Stepper Inverted", iacStepperInv, { iacAlgorithm == 4 || iacAlgorithm == 5 } dialog = pwm_idle, "PWM Idle" field = "Number of outputs", iacChannels, { iacAlgorithm == 2 || iacAlgorithm == 3 } field = "Idle valve frequency", idleFreq, { iacAlgorithm == 2 || iacAlgorithm == 3 } field = "Idle valve direction", iacPWMdir, { iacAlgorithm == 2 || iacAlgorithm == 3 } dialog = closedloop_idle, "Closed loop Idle" field = "P", idleKP, { iacAlgorithm == 3 || iacAlgorithm == 5 } field = "I", idleKI, { iacAlgorithm == 3 || iacAlgorithm == 5 } field = "D", idleKD, { iacAlgorithm == 3 || iacAlgorithm == 5 } field = "Minimum valve duty", iacCLminDuty, { iacAlgorithm == 3 } field = "Maximum valve duty", iacCLmaxDuty, { iacAlgorithm == 3 } dialog = idleSettings, "Idle Settings" topicHelp = "http://speeduino.com/wiki/index.php/Idle" field = "Idle control type", iacAlgorithm field = "#Fast Idle" field = "Fast idle temp", iacFastTemp, { iacAlgorithm == 1 } panel = pwm_idle panel = stepper_idle panel = closedloop_idle dialog = idleUpSettings, "Idle Up Settings" field = "Idle Up Enabled", idleUpEnabled field = "Idle Up Pin", idleUpPin, { idleUpEnabled } field = "Idle Up Pin Polarity", idleUpPolarity, { idleUpEnabled } field = "Idle Up Amount", idleUpAdder, { idleUpEnabled } dialog = fuelpump, "Fuel pump" field = "Fuel pump pin", fuelPumpPin field = "Fuel pump prime duration", fpPrime dialog = crankingEnrichDialog, "Cranking Enrichment", yAxis panel = cranking_enrich_curve field = "#Note" field = "Values are specified as modifiers to the normal fueling. Eg 100% = No change." dialog = crankingIgnOptions, "Cranking Timing", yAxis field = "Cranking advance Angle", CrankAng, { ignCranklock == 0 } field = "Cranking bypass", ignBypassEnable field = "Bypass output pin", ignBypassPin { ignBypassEnable } field = "Fix cranking timing with trigger", ignCranklock, { TrigPattern == 1 || TrigPattern == 4 || TrigPattern == 10 || TrigPattern == 9 } dialog = crankingOptions, "", yAxis field = "Cranking RPM (Max)", crankRPM field = "Flood Clear level", tpsflood field = "Fuel pump prime duration", fpPrime dialog = primePW, "Priming Pulsewidth" panel = priming_pw_curve dialog = crankPW, "Cranking Settings", yAxis topicHelp = "http://speeduino.com/wiki/index.php/Cranking" panel = crankingOptions, North panel = crankingEnrichDialog, Center panel = crankingIgnOptions, South dialog = ASE, "Afterstart Enrichment(ASE) - Percent Multiplier" field = "Coolant axis is shared with ASE duration" field = "" panel = afterstart_enrichment_curve dialog = ASE_time, "Afterstart Enrichment(ASE) - Number of seconds to run" field = "Coolant axis is shared with ASE percentage" field = "" panel = afterstart_enrichment_time dialog = triggerSettings,"Trigger Settings",4 topicHelp = "http://speeduino.com/wiki/index.php/Decoders" field = "Trigger Pattern", TrigPattern field = "Primary base teeth", numTeeth, { TrigPattern == 0 || TrigPattern == 2 || TrigPattern == 11 } field = "Primary trigger speed", TrigSpeed, { TrigPattern == 0 } field = "Missing teeth", missingTeeth, { TrigPattern == 0 } field = "Trigger angle multiplier", TrigAngMul, { TrigPattern == 11 } field = "Trigger Angle ", TrigAng field = "This number represents the angle ATDC when " field = "tooth #1 passes the primary sensor." field = "" field = "Skip Revolutions", SkipCycles field = "Note: This is the number of revolutions that will be skipped during" field = "cranking before the injectors and coils are fired" field = "Trigger edge", TrigEdge { TrigPattern != 4 } ;4G63 uses both edges field = "Secondary trigger edge", TrigEdgeSec, { (TrigPattern == 0 && TrigSpeed == 0) || TrigPattern == 2 || TrigPattern == 9 || TrigPattern == 12 } ;Missing tooth, dual wheel and Miata 9905 field = "Missing Tooth Secondary type" trigPatternSec, { (TrigPattern == 0&& TrigSpeed == 0) } field = "Trigger Filter", TrigFilter, { TrigPattern != 13 } field = "Re-sync every cycle", useResync, { TrigPattern == 2 || TrigPattern == 4 || TrigPattern == 7 || TrigPattern == 12 || TrigPattern == 9 || TrigPattern == 13 } ;Dual wheel, 4G63, Audi 135, Nissan 360, Miata 99-05 dialog = sparkSettings,"Spark Settings",4 field = "Ignition load source", ignAlgorithm field = "Spark output mode", sparkMode field = "Cranking advance Angle", CrankAng field = "Spark Outputs triggers", IgInv field = "" field = "Enabled Fixed/Locked timing", fixAngEnable field = "Fixed Angle", FixAng, { fixAngEnable } field = "#Note: During cranking the fixed/locked timing angle is overriden by the Cranking advance angle value above" field = "" field = "#The below option is currently in testing! If unsure what this is, please set to No" field = "Use new ignition mode", perToothIgn, {TrigPattern == 0 || TrigPattern == 1 || TrigPattern == 2 || TrigPattern == 3 || TrigPattern == 4 || TrigPattern == 9 || TrigPattern == 12 || TrigPattern == 13 } ;Only works for missing tooth, distributor, dual wheel, GM 7X, 4g63, Miata 99-05, nissan 360, Subaru 6/7 dialog = dwellSettings, "Dwell Settings", 4 topicHelp = "http://speeduino.com/wiki/index.php/Dwell" field = " Cranking dwell", dwellcrank field = " Running dwell", dwellrun field = " Spark duration", sparkDur field = "" field = "#Note" field = "The above times are for 12V. Voltage correction" field = "is applied. At higher voltages the time is reduced" field = "and when low it is increased" field = "" field = "Overdwell protection" field = "Use Overdwell protection", useDwellLim field = "Max dwell time", dwellLim, { useDwellLim } field = "Note: Set the maximum dwell time at least 3ms above" field = "your desired dwell time (Including cranking)" dialog = rotary_ignition, "Rotary Ignition", 4 field = "Ignition Configuration", rotaryType panel = rotaryTrailing_curve dialog = boostCut, "Boost Cut" field = "Boost Cut", boostCutType field = "Boost Limit", boostLimit, { boostCutType } dialog = boostLoad, "" field = "Mode", boostType field = "In open loop mode, the values in this table are duty cycle %" field = "In closed loop mode, the values are boost targets in kPa" panel = boostTbl dialog = RevLimiterS, "Rev Limiter", 4 topicHelp = "http://speeduino.com/wiki/index.php/Rev_Limits" field = "Rev Limiter" field = "Soft rev limit", SoftRevLim field = "Soft limit absolute timing", SoftLimRetard field = "Soft limit max time", SoftLimMax field = "Hard Rev limit", HardRevLim field = "Hard limiter method", hardCutType panel = boostCut dialog = clutchInput, "Clutch input" field = "Clutch Input Pin", launchPin, { launchEnable || flatSEnable } field = "Clutch enabled when signal is",launchHiLo, { launchEnable || flatSEnable } field = "Clutch Pullup Resistor", lnchPullRes, { launchEnable || flatSEnable } field = "Launch / Flat Shift switch RPM",flatSArm, { launchEnable || flatSEnable } dialog = LaunchControl, "Launch Control / Flat shift", 6 topicHelp = "http://speeduino.com/wiki/index.php/Launch_Flatshift" panel = clutchInput ; Launch control field = "Launch Control" field = "Enable Launch", launchEnable field = "TPS threshold", lnchCtrlTPS, { launchEnable } field = "Soft rev limit", lnchSoftLim, { launchEnable } field = "Soft limit absolute timing", lnchRetard, { launchEnable } field = "Hard rev limit", lnchHardLim, { launchEnable } field = "Fuel adder during launch", lnchFuelAdd, { launchEnable } ; Flat shift field = "Flat Shift" field = "Enable flat shift", flatSEnable field = "Soft rev window", flatSSoftWin, { flatSEnable } field = "Soft limit absolute timing", flatSRetard, { flatSEnable } dialog = NitrousStage1, "Stage 1" field = "Nitrous Output Pin", n2o_stage1_pin field = "Minimum Engage RPM", n2o_stage1_minRPM field = "Maximum Engage RPM", n2o_stage1_maxRPM field = "Fuel adder @ Min RPM", n2o_stage1_adderMin field = "Fuel adder @ Max RPM", n2o_stage1_adderMax field = "Ignition retard when active", n2o_stage1_retard dialog = NitrousStage2, "Stage 2" field = "Nitrous Output Pin", n2o_stage2_pin field = "Minimum Engage RPM", n2o_stage2_minRPM field = "Maximum Engage RPM", n2o_stage2_maxRPM field = "Fuel adder @ Min RPM", n2o_stage2_adderMin field = "Fuel adder @ Max RPM", n2o_stage2_adderMax field = "Ignition retard when active", n2o_stage2_retard dialog = NitrousMain, "Settings" field = "Nitrous Mode", n2o_enable field = "Arming Pin", n2o_arming_pin, { n2o_enable > 0 } field = "Nitrous is armed when pin is", n2o_pin_polarity,{ n2o_enable > 0 } field = "Minimum CLT", n2o_minCLT, { n2o_enable > 0 } field = "Minimum TPS", n2o_minTPS, { n2o_enable > 0 } field = "Maximum MAP", n2o_maxMAP, { n2o_enable > 0 } field = "Leanest AFR", n2o_maxAFR, { n2o_enable > 0 } dialog = NitrousControl, "Nitrous" panel = NitrousMain, North panel = NitrousStage1, West, { n2o_enable > 0 } panel = NitrousStage2, East, { n2o_enable > 1 } dialog = OLED, "OLED Display", 2 field = "Display Type", display field = "#Note" field = "ECU must be rebooted after changing above value" field = "Field 1", display1, { display } field = "Field 2", display2, { display } field = "Field 3", display3, { display } field = "Field 4", display4, { display } ;field = "Bar 1", displayB1, { display } ;field = "Bar 2", displayB2, { display > 2 } dialog = mapCal, "Calibrate MAP" field = "#MAP Sensor" settingSelector = "Common Pressure Sensors" settingOption = "MPX4115", mapMin=10, mapMax=118 ; https://www.nxp.com/docs/en/data-sheet/MPX4115.pdf settingOption = "MPX4250", mapMin=10, mapMax=260 ; https://www.nxp.com/docs/en/data-sheet/MPX4250A.pdf Vout = VCC x (P x 0.004 – 0.04) settingOption = "GM 1-BAR", mapMin=10, mapMax=105 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif settingOption = "GM 2-BAR", mapMin=9, mapMax=208 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif settingOption = "GM 3-BAR", mapMin=1, mapMax=315 ; VOUT = VS*(.00318*P-.00353) settingOption = "MPXH6300", mapMin=1, mapMax=315 ; https://www.nxp.com/docs/en/data-sheet/MPXH6300A.pdf VOUT = VS*(.00318*P-.00353) settingOption = "MPX5700", mapMin=-31, mapMax=746 ; https://www.nxp.com/docs/en/data-sheet/MPX5700.pdf Vout = VS*(0.0012858*P+0.04) settingOption = "MPX6400", mapMin=3, mapMax=416 ; https://www.nxp.com/docs/en/data-sheet/MPXH6400A.pdf VOUT = VS x (0.002421xP–0.00842) settingOption = "Denso 079800", mapMin=0, mapMax=173 ; http://speeduino.com/forum/viewtopic.php?f=18&t=510&p=7023#p7021 settingOption = "VW/Audi/Porsche 250kPa", mapMin=26, mapMax=250 ; http://speeduino.com/forum/viewtopic.php?p=17502#p17502 settingOption = "Bosch 3 Bar TMAP", mapMin=-6, mapMax=323 field = "kPa At 0.0 Volts", mapMin field = "kPa At 5.0 Volts", mapMax field = "#Baro Sensor" field = "Use external Baro sensor", useExtBaro field = "Analog pin to use for ext. Baro sensor", baroPin, { useExtBaro } settingSelector = "Common Pressure Sensors", { useExtBaro } settingOption = "MPX4115", baroMin=10, baroMax=118 ; https://www.nxp.com/docs/en/data-sheet/MPX4115.pdf settingOption = "MPX4250", baroMin=10, baroMax=260 ; https://www.nxp.com/docs/en/data-sheet/MPX4250A.pdf Vout = VCC x (P x 0.004 – 0.04) settingOption = "GM 1-BAR", baroMin=10, baroMax=105 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif settingOption = "GM 2-BAR", baroMin=9, baroMax=208 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif settingOption = "GM 3-BAR", baroMin=1, baroMax=315 ; VOUT = VS*(.00318*P-.00353) settingOption = "MPXH6300", baroMin=1, baroMax=315 ; https://www.nxp.com/docs/en/data-sheet/MPXH6300A.pdf VOUT = VS*(.00318*P-.00353) settingOption = "MPX5700", baroMin=-31, baroMax=746 ; https://www.nxp.com/docs/en/data-sheet/MPX5700.pdf Vout = VS*(0.0012858*P+0.04) settingOption = "MPX6400", baroMin=3, baroMax=416 ; https://www.nxp.com/docs/en/data-sheet/MPXH6400A.pdf VOUT = VS x (0.002421xP–0.00842) settingOption = "Denso 079800", baroMin=0, baroMax=173 ; http://speeduino.com/forum/viewtopic.php?f=18&t=510&p=7023#p7021 settingOption = "VW/Audi/Porsche 250kPa", baroMin=26, baroMax=250 ; http://speeduino.com/forum/viewtopic.php?p=17502#p17502 settingOption = "Bosch 3 Bar TMAP", mapMin=-6, mapMax=323 field = "kPa At 0.0 Volts", baroMin, { useExtBaro } field = "kPa At 5.0 Volts", baroMax, { useExtBaro } field = "#EMAP Sensor" field = "Use EMAP sensor", useEMAP field = "Analog pin to use for ext. Baro sensor", EMAPPin, { useEMAP } settingSelector = "Common Pressure Sensors", { useEMAP } settingOption = "MPX4115", EMAPMin=10, EMAPMax=118 ; https://www.nxp.com/docs/en/data-sheet/MPX4115.pdf settingOption = "MPX4250", EMAPMin=10, EMAPMax=260 ; https://www.nxp.com/docs/en/data-sheet/MPX4250A.pdf Vout = VCC x (P x 0.004 – 0.04) settingOption = "GM 1-BAR", EMAPMin=10, EMAPMax=105 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif settingOption = "GM 2-BAR", EMAPMin=9, EMAPMax=208 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif settingOption = "GM 3-BAR", EMAPMin=1, EMAPMax=315 ; VOUT = VS*(.00318*P-.00353) settingOption = "MPXH6300", EMAPMin=1, EMAPMax=315 ; https://www.nxp.com/docs/en/data-sheet/MPXH6300A.pdf VOUT = VS*(.00318*P-.00353) settingOption = "MPX5700", EMAPMin=-31, EMAPMax=746 ; https://www.nxp.com/docs/en/data-sheet/MPX5700.pdf Vout = VS*(0.0012858*P+0.04) settingOption = "MPX6400", EMAPMin=3, EMAPMax=416 ; https://www.nxp.com/docs/en/data-sheet/MPXH6400A.pdf VOUT = VS x (0.002421xP–0.00842) settingOption = "Denso 079800", EMAPMin=0, EMAPMax=173 ; http://speeduino.com/forum/viewtopic.php?f=18&t=510&p=7023#p7021 settingOption = "VW/Audi/Porsche 250kPa", EMAPMin=26, EMAPMax=250 ; http://speeduino.com/forum/viewtopic.php?p=17502#p17502 field = "kPa At 0.0 Volts", EMAPMin, { useEMAP } field = "kPa At 5.0 Volts", EMAPMax, { useEMAP } dialog = sensorFilters, "Analog sensor filters" field = "The values here set the amount of filtering to apply to each analog input" field = "Higher values result in stronger filtering, but slower response times for readings" field = "#Most setups will NOT require changes to the default filter values" field = "" slider = "Throttle Position Sensor", ADCFILTER_TPS, horizontal slider = "Coolant Sensor", ADCFILTER_CLT, horizontal slider = "Inlet Air Temp sensor", ADCFILTER_IAT, horizontal slider = "O2 sensor", ADCFILTER_O2, horizontal slider = "Battery voltage", ADCFILTER_BAT, horizontal slider = "MAP sensor", ADCFILTER_MAP, horizontal slider = "Baro sensor", ADCFILTER_BARO, horizontal, { useExtBaro > 0 } dialog = boostSettings, "Boost Control" topicHelp = "http://speeduino.com/wiki/index.php/Boost_Control" field = "Boost Control Enabled", boostEnabled field = "Boost control type", boostType field = "Boost output pin", boostPin, { boostEnabled } field = "Boost solenoid freq.", boostFreq, { boostEnabled } field = "Valve minimum duty cycle", boostMinDuty, { boostEnabled && boostType == 1 } field = "Valve maximum duty cycle", boostMaxDuty, { boostEnabled && boostType == 1 } panel = boostCut field = "Closed Loop settings" field = "Control mode", boostMode, { boostEnabled && boostType == 1 } slider = "Sensitivity", boostSens, horizontal, { boostEnabled && boostType == 1 } field = "Control interval", boostIntv, { boostEnabled && boostType == 1 } field = "P", boostKP, { boostEnabled && boostMode && boostType == 1 } field = "I", boostKI, { boostEnabled && boostMode && boostType == 1 } field = "D", boostKD, { boostEnabled && boostMode && boostType == 1 } dialog = vvtSettings, "VVT Control" field = "VVT Control Enabled", vvtEnabled field = "Use VVT map as On / Off only", VVTasOnOff, { vvtEnabled } field = "VVT output pin", vvtPin, { vvtEnabled } field = "VVT solenoid freq.", vvtFreq, { vvtEnabled } dialog = warmup, "Warmup Enrichment (WUE) - Percent Multiplier" panel = warmup_curve field = "Final enrichment value must be 100%." field = "" ;Fuel trim composite dialog dialog = inj_trim1TblTitle, "Channel #1" panel = fuelTrimTable1Tbl, { fuelTrimEnabled } dialog = inj_trim2TblTitle, "Channel #2" panel = fuelTrimTable2Tbl, { fuelTrimEnabled } dialog = inj_trim3TblTitle, "Channel #3" panel = fuelTrimTable3Tbl, { fuelTrimEnabled } dialog = inj_trim4TblTitle, "Channel #4" panel = fuelTrimTable4Tbl, { fuelTrimEnabled } dialog = inj_trimadt, "", xAxis panel = inj_trim1TblTitle panel = inj_trim2TblTitle dialog = inj_trimadb, "", xAxis panel = inj_trim3TblTitle panel = inj_trim4TblTitle dialog = inj_trim_enable, "" field = "Individual fuel trim enabled", fuelTrimEnabled, { injLayout == 3 } dialog = inj_trimad,"Injector Cyl 1-4 Trims", yAxis panel = inj_trim_enable, North panel = inj_trimadt, Center panel = inj_trimadb, South ;;Injector staging dialog = stagingTableDialog_north, "" field = "Staging enabled", stagingEnabled field = "Staging mode", stagingMode field = "Size of primary injectors", stagedInjSizePri, { stagingEnabled } field = "Size of secondary injectors", stagedInjSizeSec, { stagingEnabled } dialog = stagingTableDialog_south, "" panel = stagingTbl, { stagingMode == 0 } dialog = stagingTableDialog, "Staged injection" topicHelp = "https://speeduino.com/wiki/index.php/Staged_Injection" panel = stagingTableDialog_north, North panel = stagingTableDialog_south, South dialog = outputtest_warningmessage, "" field = "WARNING! USE AT YOUR OWN RISK. INCORRECT USE WILL DAMAGE YOUR HARDWARE!" field = "Do not attempt to use this page whilst your engine is running!" field = "Forcing the Injector or Spark outputs could cause flooding of your engine or permanent damage to ignition coils!" dialog = enableoutputtestbuttons, "Enable Test Controls", xAxis ;commandButton = "Label Text", command, { Enabled Condition }, optionalFlags ; The rem > 0 expression is just for testing.. It works when the arduino is on the Stim with rpm. ; a status bit there would be the expected real expression commandButton = "Enable Test Mode", cmdEnableTestMode,{!testenabled & !testactive } ; if clickOnCloseIfEnabled is set, then the command assigned to this button will be run on the ; dialog close, but only if the enable condition is true ; valid click flags are: ; clickOnCloseIfEnabled - the command will be sent on dialog close if active condition is true ; clickOnCloseIfDisabled - the command will be sent on dialog close if active condition is false ; clickOnClose - the command will be sent on dialog close always commandButton = "Stop Test Mode", cmdStopTestMode,{testactive}, clickOnCloseIfEnabled dialog = outputtestinj1, "Injector CH1", yAxis commandButton = "Off", cmdtestinj1off,{testactive} commandButton = "50% DC", cmdtestinj150dc,{!testenabled & testactive} commandButton = "On", cmdtestinj1on,{!testenabled & testactive} dialog = outputtestinj2, "Injector CH2", yAxis commandButton = "Off", cmdtestinj2off,{testactive} commandButton = "50% DC", cmdtestinj250dc,{!testenabled &testactive} commandButton = "On", cmdtestinj2on,{!testenabled & testactive} dialog = outputtestinj3, "Injector CH3", yAxis commandButton = "Off", cmdtestinj3off,{testactive} commandButton = "50% DC", cmdtestinj350dc,{!testenabled & testactive} commandButton = "On", cmdtestinj3on,{!testenabled & testactive} dialog = outputtestinj4, "Injector CH4", yAxis commandButton = "Off", cmdtestinj4off,{testactive} commandButton = "50% DC", cmdtestinj450dc,{!testenabled & testactive} commandButton = "On", cmdtestinj4on ,{!testenabled & testactive} dialog = outputtest_injectors, "Injector Driver Output Test", xAxis panel = outputtestinj1 panel = outputtestinj2 panel = outputtestinj3 panel = outputtestinj4 dialog = outputtestspk1, "Spark CH1 ", yAxis commandButton = "Off", cmdtestspk1off,{testactive} commandButton = "50% DC", cmdtestspk150dc,{!testenabled & testactive} commandButton = "On", cmdtestspk1on,{!testenabled & testactive} dialog = outputtestspk2, "Spark CH2", yAxis commandButton = "Off", cmdtestspk2off,{testactive} commandButton = "50% DC", cmdtestspk250dc,{!testenabled & testactive} commandButton = "On", cmdtestspk2on,{!testenabled & testactive} dialog = outputtestspk3, "Spark CH3", yAxis commandButton = "Off", cmdtestspk3off,{testactive} commandButton = "50% DC", cmdtestspk350dc,{!testenabled & testactive} commandButton = "On", cmdtestspk3on,{!testenabled & testactive} dialog = outputtestspk4, "Spark CH4", yAxis commandButton = "Off", cmdtestspk4off,{testactive} commandButton = "50% DC", cmdtestspk450dc,{!testenabled & testactive} commandButton = "On", cmdtestspk4on,{!testenabled & testactive} dialog = outputtest_spark, "Spark Driver Output Test", xAxis panel = outputtestspk1 panel = outputtestspk2 panel = outputtestspk3 panel = outputtestspk4 dialog = outputtest1,"Test Output Hardware" topicHelp = "http://speeduino.com/wiki/index.php/Hardware_testing_page" panel = enableoutputtestbuttons panel = outputtest_injectors panel = outputtest_spark ;panel = outputtest_io2 panel = outputtest_warningmessage dialog = Auxin_north displayOnlyField = #"Secondary Serial ENABLED", blankfield, {enable_secondarySerial},{enable_secondarySerial} displayOnlyField = !"Secondary Serial DISABLED", blankfield, {enable_secondarySerial == 0},{enable_secondarySerial == 0} displayOnlyField = #"Internal CANBUS ENABLED", blankfield, {enable_intcan && intcan_available},{enable_intcan && intcan_available} displayOnlyField = !"Internal CANBUS DISABLED", blankfield, {enable_intcan == 0 && intcan_available},{enable_intcan == 0 && intcan_available} displayOnlyField = !"Internal CANBUS NOT AVAILABLE to MCU", blankfield, {enable_intcan == 1 && intcan_available == 0},{enable_intcan == 1 && intcan_available == 0} displayOnlyField = !"Internal CANBUS NOT AVAILABLE to MCU", blankfield, {enable_intcan == 0 && intcan_available == 0},{enable_intcan == 0 && intcan_available == 0} field = " If Secondary Serial or Internal CANBUS is DISABLED then any input channel assigned to that external source will NOT function" dialog = canAuxinput_alias, "", yAxis field = "Input Alias" field = "", AUXin00Alias , {(caninput_sel0a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel0b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin01Alias , {(caninput_sel1a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel1b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin02Alias , {(caninput_sel2a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel2b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin03Alias , {(caninput_sel3a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel3b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin04Alias , {(caninput_sel4a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel4b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin05Alias , {(caninput_sel5a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel5b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin06Alias , {(caninput_sel6a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel6b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin07Alias , {(caninput_sel7a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel7b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin08Alias , {(caninput_sel8a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel8b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin09Alias , {(caninput_sel9a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel9b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin10Alias , {(caninput_sel10a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel10b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin11Alias , {(caninput_sel11a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel11b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin12Alias , {(caninput_sel12a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel12b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin13Alias , {(caninput_sel13a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel13b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin14Alias , {(caninput_sel14a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel14b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin15Alias , {(caninput_sel15a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel15b && (enable_secondarySerial || (enable_intcan && intcan_available)))} dialog = caninput_sel, "" ;CAN inputs field = " CAN Input Channel on/off" field = "CAN Input 0", caninput_sel0a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 0", caninput_sel0b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 1", caninput_sel1a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 1", caninput_sel1b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 2", caninput_sel2a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 2", caninput_sel2b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 3", caninput_sel3a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 3", caninput_sel3b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 4", caninput_sel4a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 4", caninput_sel4b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 5", caninput_sel5a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 5", caninput_sel5b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 6", caninput_sel6a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 6", caninput_sel6b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 7", caninput_sel7a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 7", caninput_sel7b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 8", caninput_sel8a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 8", caninput_sel8b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 9", caninput_sel9a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 9", caninput_sel9b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 10", caninput_sel10a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 10", caninput_sel10b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 11", caninput_sel11a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 11", caninput_sel11b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 12", caninput_sel12a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 12", caninput_sel12b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 13", caninput_sel13a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 13", caninput_sel13b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 14", caninput_sel14a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 14", caninput_sel14b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "CAN Input 15", caninput_sel15a, {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "CAN Input 15", caninput_sel15b, {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } dialog = caninput_parameter_group, "", yAxis field = " Source CAN Address" field = "", caninput_source_can_address0, { (caninput_sel0a == 1 || caninput_sel0b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address1, { (caninput_sel1a == 1 || caninput_sel1b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address2, { (caninput_sel2a == 1 || caninput_sel2b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address3, { (caninput_sel3a == 1 || caninput_sel3b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address4, { (caninput_sel4a == 1 || caninput_sel4b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address5, { (caninput_sel5a == 1 || caninput_sel5b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address6, { (caninput_sel6a == 1 || caninput_sel6b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address7, { (caninput_sel7a == 1 || caninput_sel7b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address8, { (caninput_sel8a == 1 || caninput_sel8b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address9, { (caninput_sel9a == 1 || caninput_sel9b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address10, { (caninput_sel10a == 1 || caninput_sel10b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address11, { (caninput_sel11a == 1 || caninput_sel11b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address12, { (caninput_sel12a == 1 || caninput_sel12b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address13, { (caninput_sel13a == 1 || caninput_sel13b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address14, { (caninput_sel14a == 1 || caninput_sel14b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_can_address15, { (caninput_sel15a == 1 || caninput_sel15b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } dialog = caninput_parameter_start_byte, "", yAxis field = " source data start byte" field = "", caninput_source_start_byte0, { (caninput_sel0a == 1 || caninput_sel0b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte1, { (caninput_sel1a == 1 || caninput_sel1b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte2, { (caninput_sel2a == 1 || caninput_sel2b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte3, { (caninput_sel3a == 1 || caninput_sel3b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte4, { (caninput_sel4a == 1 || caninput_sel4b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte5, { (caninput_sel5a == 1 || caninput_sel5b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte6, { (caninput_sel6a == 1 || caninput_sel6b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte7, { (caninput_sel7a == 1 || caninput_sel7b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte8, { (caninput_sel8a == 1 || caninput_sel8b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte9, { (caninput_sel9a == 1 || caninput_sel9b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte10, { (caninput_sel10a == 1 || caninput_sel10b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte11, { (caninput_sel11a == 1 || caninput_sel11b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte12, { (caninput_sel12a == 1 || caninput_sel12b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte13, { (caninput_sel13a == 1 || caninput_sel13b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte14, { (caninput_sel14a == 1 || caninput_sel14b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_start_byte15, { (caninput_sel15a == 1 || caninput_sel15b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } dialog = caninput_parameter_num_byte, "", yAxis field = "Input Parameter Number of Bytes" field = "", caninput_source_num_bytes0, { (caninput_sel0a == 1 || caninput_sel0b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes1, { (caninput_sel1a == 1 || caninput_sel1b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes2, { (caninput_sel2a == 1 || caninput_sel2b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes3, { (caninput_sel3a == 1 || caninput_sel3b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes4, { (caninput_sel4a == 1 || caninput_sel4b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes5, { (caninput_sel5a == 1 || caninput_sel5b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes6, { (caninput_sel6a == 1 || caninput_sel6b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes7, { (caninput_sel7a == 1 || caninput_sel7b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes8, { (caninput_sel8a == 1 || caninput_sel8b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes9, { (caninput_sel9a == 1 || caninput_sel9b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes10, { (caninput_sel10a == 1 || caninput_sel10b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes11, { (caninput_sel11a == 1 || caninput_sel11b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes12, { (caninput_sel12a == 1 || caninput_sel12b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes13, { (caninput_sel13a == 1 || caninput_sel13b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes14, { (caninput_sel14a == 1 || caninput_sel14b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } field = "", caninput_source_num_bytes15, { (caninput_sel15a == 1 || caninput_sel15b == 1) && (enable_secondarySerial || (enable_intcan && intcan_available)) } dialog = caninput_serial_can, "", yAxis field = "Serial/CAN" field = "", caninput_sel0extsourcea, {(caninput_sel0a == 1 || caninput_sel0b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel0extsourceb, {(caninput_sel0a == 1 || caninput_sel0b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel0extsourcec, {(caninput_sel0a == 1 || caninput_sel0b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel1extsourcea, {(caninput_sel1a == 1 || caninput_sel1b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel1extsourceb, {(caninput_sel1a == 1 || caninput_sel1b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel1extsourcec, {(caninput_sel1a == 1 || caninput_sel1b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel2extsourcea, {(caninput_sel2a == 1 || caninput_sel2b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel2extsourceb, {(caninput_sel2a == 1 || caninput_sel2b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel2extsourcec, {(caninput_sel2a == 1 || caninput_sel2b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel3extsourcea, {(caninput_sel3a == 1 || caninput_sel3b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel3extsourceb, {(caninput_sel3a == 1 || caninput_sel3b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel3extsourcec, {(caninput_sel3a == 1 || caninput_sel3b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel4extsourcea, {(caninput_sel4a == 1 || caninput_sel4b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel4extsourceb, {(caninput_sel4a == 1 || caninput_sel4b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel4extsourcec, {(caninput_sel4a == 1 || caninput_sel4b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel5extsourcea, {(caninput_sel5a == 1 || caninput_sel5b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel5extsourceb, {(caninput_sel5a == 1 || caninput_sel5b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel5extsourcec, {(caninput_sel5a == 1 || caninput_sel5b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel6extsourcea, {(caninput_sel6a == 1 || caninput_sel6b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel6extsourceb, {(caninput_sel6a == 1 || caninput_sel6b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel6extsourcec, {(caninput_sel6a == 1 || caninput_sel6b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel7extsourcea, {(caninput_sel7a == 1 || caninput_sel7b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel7extsourceb, {(caninput_sel7a == 1 || caninput_sel7b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel7extsourcec, {(caninput_sel7a == 1 || caninput_sel7b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel8extsourcea, {(caninput_sel8a == 1 || caninput_sel8b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel8extsourceb, {(caninput_sel8a == 1 || caninput_sel8b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel8extsourcec, {(caninput_sel8a == 1 || caninput_sel8b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel9extsourcea, {(caninput_sel9a == 1 || caninput_sel9b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel9extsourceb, {(caninput_sel9a == 1 || caninput_sel9b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel9extsourcec, {(caninput_sel9a == 1 || caninput_sel9b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel10extsourcea, {(caninput_sel10a == 1 || caninput_sel10b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel10extsourceb, {(caninput_sel10a == 1 || caninput_sel10b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel10extsourcec, {(caninput_sel10a == 1 || caninput_sel10b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel11extsourcea, {(caninput_sel11a == 1 || caninput_sel11b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))} field = "", caninput_sel11extsourceb, {(caninput_sel11a == 1 || caninput_sel11b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel11extsourcec, {(caninput_sel11a == 1 || caninput_sel11b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel12extsourcea, {(caninput_sel12a == 1 || caninput_sel12b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))}} field = "", caninput_sel12extsourceb, {(caninput_sel12a == 1 || caninput_sel12b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel12extsourcec, {(caninput_sel12a == 1 || caninput_sel12b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel13extsourcea, {(caninput_sel13a == 1 || caninput_sel13b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))}} field = "", caninput_sel13extsourceb, {(caninput_sel13a == 1 || caninput_sel13b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel13extsourcec, {(caninput_sel13a == 1 || caninput_sel13b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel14extsourcea, {(caninput_sel14a == 1 || caninput_sel14b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))}} field = "", caninput_sel14extsourceb, {(caninput_sel14a == 1 || caninput_sel14b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel14extsourcec, {(caninput_sel14a == 1 || caninput_sel14b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel15extsourcea, {(caninput_sel15a == 1 || caninput_sel15b == 1) }, {enable_secondarySerial && (!enable_intcan || (enable_intcan && !intcan_available))}} field = "", caninput_sel15extsourceb, {(caninput_sel15a == 1 || caninput_sel15b == 1) }, {enable_secondarySerial && (enable_intcan && intcan_available)} field = "", caninput_sel15extsourcec, {(caninput_sel15a == 1 || caninput_sel15b == 1) }, {!enable_secondarySerial && (enable_intcan && intcan_available)} dialog = caninconfig_blank1,"" field = "" dialog = Canin_config1, "", xAxis panel = canAuxinput_alias panel = caninconfig_blank1 panel = caninput_sel panel = caninconfig_blank1 panel = caninput_serial_can panel = caninconfig_blank1 panel = caninput_parameter_group panel = caninconfig_blank1 panel = caninput_parameter_start_byte panel = caninconfig_blank1 panel = caninput_parameter_num_byte ;dialog = Canin_config2, "External Data Input" ; field = "Enable External data input", enable_intcandata_in dialog = Canin_config, "",yAxis topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface#Read_external_analog_data" panel = Auxin_north panel = Canin_config1 dialog = canAuxoutput_alias, "", yAxis field = "Input Alias" field = "", AUXin00Alias , {canoutput_sel0} field = "", AUXin01Alias , {canoutput_sel1} field = "", AUXin02Alias , {canoutput_sel2} field = "", AUXin03Alias , {canoutput_sel3} field = "", AUXin04Alias , {canoutput_sel4} field = "", AUXin05Alias , {canoutput_sel5} field = "", AUXin06Alias , {canoutput_sel6} field = "", AUXin07Alias , {canoutput_sel7} ;field = "", AUXin08Alias , {canoutput_sel8} ;field = "", AUXin09Alias , {canoutput_sel9} ;field = "", AUXin10Alias , {canoutput_sel10} ;field = "", AUXin11Alias , {canoutput_sel11} ;field = "", AUXin12Alias , {canoutput_sel12} ;field = "", AUXin13Alias , {canoutput_sel13} ;field = "", AUXin14Alias , {canoutput_sel14} ;field = "", AUXin15Alias , {canoutput_sel15} dialog = canoutput_sel, "", yAxis ;CAN outputs field = "CAN Output Channel on/off" field = "CAN Output 0", canoutput_sel0, { enable_intcandata_out} field = "CAN Output 1", canoutput_sel1, { enable_intcandata_out } field = "CAN Output 2", canoutput_sel2, { enable_intcandata_out } field = "CAN Output 3", canoutput_sel3, { enable_intcandata_out } field = "CAN Output 4", canoutput_sel4, { enable_intcandata_out } field = "CAN Output 5", canoutput_sel5, { enable_intcandata_out } field = "CAN Output 6", canoutput_sel6, { enable_intcandata_out } field = "CAN Output 7", canoutput_sel7, { enable_intcandata_out } ; field = "CAN Output 8", canoutput_sel8, { enable_intcandata_out} ; field = "CAN Output 9", canoutput_sel9, { enable_intcandata_out } ; field = "CAN Output 10", canoutput_sel10, { enable_intcandata_out } ; field = "CAN Output 11", canoutput_sel11, { enable_intcandata_out } ; field = "CAN Output 12", canoutput_sel12, { enable_intcandata_out } ; field = "CAN Output 13", canoutput_sel13, { enable_intcandata_out } ; field = "CAN Output 14", canoutput_sel14, { enable_intcandata_out } ; field = "CAN Output 15", canoutput_sel15, { enable_intcandata_out } dialog = canoutput_parameter_group, "", yAxis field = "Output Parameter Group" field = "", canoutput_param_group[0], { canoutput_sel0 && enable_intcandata_out } field = "", canoutput_param_group[1], { canoutput_sel1 && enable_intcandata_out } field = "", canoutput_param_group[2], { canoutput_sel3 && enable_intcandata_out } field = "", canoutput_param_group[3], { canoutput_sel3 && enable_intcandata_out } field = "", canoutput_param_group[4], { canoutput_sel4 && enable_intcandata_out } field = "", canoutput_param_group[5], { canoutput_sel5 && enable_intcandata_out } field = "", canoutput_param_group[6], { canoutput_sel6 && enable_intcandata_out } field = "", canoutput_param_group[7], { canoutput_sel7 && enable_intcandata_out } ; field = "", canoutput_param_group[8], { canoutput_sel9 && enable_intcandata_out } ; field = "", canoutput_param_group[9], { canoutput_sel10 && enable_intcandata_out } ; field = "", canoutput_param_group[10], { canoutput_sel1 && enable_intcandata_out } ; field = "", canoutput_param_group[11], { canoutput_sel2 && enable_intcandata_out } ; field = "", canoutput_param_group[12], { canoutput_sel3 && enable_intcandata_out } ; field = "", canoutput_param_group[13], { canoutput_sel4 && enable_intcandata_out } ; field = "", canoutput_param_group[14], { canoutput_sel5 && enable_intcandata_out } ; field = "", canoutput_param_group[15], { canoutput_sel6 && enable_intcandata_out } dialog = canoutput_parameter_start_byte, "", yAxis field = "Output Parameter Start Byte" field = "", canoutput_param_start_byte0, { canoutput_sel0 && enable_intcandata_out } field = "", canoutput_param_start_byte1, { canoutput_sel1 && enable_intcandata_out } field = "", canoutput_param_start_byte2, { canoutput_sel2 && enable_intcandata_out } field = "", canoutput_param_start_byte3, { canoutput_sel3 && enable_intcandata_out } field = "", canoutput_param_start_byte4, { canoutput_sel4 && enable_intcandata_out } field = "", canoutput_param_start_byte5, { canoutput_sel5 && enable_intcandata_out } field = "", canoutput_param_start_byte6, { canoutput_sel6 && enable_intcandata_out } field = "", canoutput_param_start_byte7, { canoutput_sel7 && enable_intcandata_out } ; field = "", canoutput_param_start_byte8, { canoutput_sel8 && enable_intcandata_out } ; field = "", canoutput_param_start_byte9, { canoutput_sel9 && enable_intcandata_out } ; field = "", canoutput_param_start_byte10, { canoutput_sel10 && enable_intcandata_out } ; field = "", canoutput_param_start_byte11, { canoutput_sel11 && enable_intcandata_out } ; field = "", canoutput_param_start_byte12, { canoutput_sel12 && enable_intcandata_out } ; field = "", canoutput_param_start_byte13, { canoutput_sel13 && enable_intcandata_out } ; field = "", canoutput_param_start_byte14, { canoutput_sel14 && enable_intcandata_out } ; field = "", canoutput_param_start_byte15, { canoutput_sel15 && enable_intcandata_out } dialog = canoutput_parameter_num_byte, "", yAxis field = "Output Parameter Number of Bytes" field = "", canoutput_param_num_bytes0, { canoutput_sel0 && enable_intcandata_out } field = "", canoutput_param_num_bytes1, { canoutput_sel1 && enable_intcandata_out } field = "", canoutput_param_num_bytes2, { canoutput_sel2 && enable_intcandata_out } field = "", canoutput_param_num_bytes3, { canoutput_sel3 && enable_intcandata_out } field = "", canoutput_param_num_bytes4, { canoutput_sel4 && enable_intcandata_out } field = "", canoutput_param_num_bytes5, { canoutput_sel5 && enable_intcandata_out } field = "", canoutput_param_num_bytes6, { canoutput_sel6 && enable_intcandata_out } field = "", canoutput_param_num_bytes7, { canoutput_sel7 && enable_intcandata_out } ; field = "", canoutput_param_num_bytes8, { canoutput_sel8 && enable_intcandata_out } ; field = "", canoutput_param_num_bytes9, { canoutput_sel9 && enable_intcandata_out } ; field = "", canoutput_param_num_bytes10, { canoutput_sel10 && enable_intcandata_out } ; field = "", canoutput_param_num_bytes11, { canoutput_sel11 && enable_intcandata_out } ; field = "", canoutput_param_num_bytes12, { canoutput_sel12 && enable_intcandata_out } ; field = "", canoutput_param_num_bytes13, { canoutput_sel13 && enable_intcandata_out } ; field = "", canoutput_param_num_bytes14, { canoutput_sel14 && enable_intcandata_out } ; field = "", canoutput_param_num_bytes15, { canoutput_sel15 && enable_intcandata_out } dialog = canoutconfig_blank1,"" field = "" dialog = Canout_config1, "", xAxis panel = canAuxoutput_alias panel = canoutconfig_blank1 panel = canoutput_sel panel = canoutconfig_blank1 panel = canoutput_parameter_group panel = canoutconfig_blank1 panel = canoutput_parameter_start_byte panel = canoutconfig_blank1 panel = canoutput_parameter_num_byte dialog = Canout_config2, "CAN Data Out" field = "Enable CanBus data Output", enable_intcandata_out dialog = Canout_config, "", yAxis topicHelp = "" panel = Canout_config2 panel = Canout_config1 dialog = can_serial3IO, "CanBus/Secondary Serial IO interface" topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface" field = "Enable Second Serial", enable_secondarySerial field = "Enable Internal Canbus", enable_intcan ; field = "Speeduino TsCanId", speeduino_tsCanId field = "True Canbus Address", true_address {enable_secondarySerial||enable_intcan} field = "NOTE! Realtime Data Base Address MUST be at least 0x16 GREATER than the True Address as they are reserved for future expansion" field = "Realtime Data Base Can Address", realtime_base_address {enable_secondarySerial||enable_intcan} ; field = "Speeduino OBD address", obd_address dialog = serial3IO, "Secondary Serial IO interface" topicHelp = "http://speeduino.com/wiki/index.php/Serial3_IO_interface" field = "Enable Second Serial", enable_secondarySerial field = "Enable Internal Canbus", enable_intcan {intcan_available} ; field = "Speeduino TsCanId", speeduino_tsCanId field = "True Canbus Address", true_address {enable_secondarySerial||enable_intcan} field = "NOTE! Realtime Data Base Address MUST be at least 0x16 GREATER than the True Address as they are reserved for future expansion" field = "Realtime Data Base Can Address", realtime_base_address {enable_secondarySerial||enable_intcan} ; field = "Speeduino OBD address", obd_address dialog = reset_control, "Reset Control" ; Control type options for custom firmware field = "Control Type", resetControl field = "Control Pin", resetControlPin dialog = Auxinput_pin_selection, "", yAxis field = " Source" displayOnlyField = "Off 0", blankfield, {},{(caninput_sel0a == 0 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel0b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel0b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel0b == 0 && (!enable_secondarySerial && (enable_intcan && intcan_available == 1)))} displayOnlyField = "External Source 0 Via Secondary Serial", blankfield, {},{(caninput_sel0b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel0b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel0extsourceb == 0)} displayOnlyField = "External Source 0 Via Internal CAN", blankfield, {},{(caninput_sel0b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel0extsourceb == 1) ||(caninput_sel0b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel0extsourcec == 1)} field = "Local Analog Source 0 Pin No:", Auxin0pina , {}, {(caninput_sel0a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel0b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 0 Pin No:", Auxin0pinb , {}, {(caninput_sel0a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel0b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 1", blankfield, {},{(caninput_sel1a == 0 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel1b == 0 && ((enable_secondarySerial && enable_intcan) || (enable_secondarySerial && !enable_intcan) || (!enable_secondarySerial && enable_intcan)))} displayOnlyField = "External Source 1 Via Secondary Serial", blankfield, {},{(caninput_sel1b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel1b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel1extsourceb == 0)} displayOnlyField = "External Source 1 Via Internal CAN", blankfield, {},{(caninput_sel1b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel1extsourceb == 1) ||(caninput_sel1b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel1extsourcec == 1)} field = "Local Analog Source 1 Pin No:", Auxin1pina , {}, {(caninput_sel1a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel1b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 1 Pin No:", Auxin1pinb , {}, {(caninput_sel1a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel1b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 2", blankfield, {},{(caninput_sel2a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel2b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel2b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel2b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 2 Via Secondary Serial", blankfield, {},{(caninput_sel2b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel2b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel2extsourceb == 0)} displayOnlyField = "External Source 2 Via Internal CAN", blankfield, {},{(caninput_sel2b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel2extsourceb == 1) ||(caninput_sel2b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel2extsourcec == 1)} field = "Local Analog Source 2 Pin No:", Auxin2pina , {}, {(caninput_sel2a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel2b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 2 Pin No:", Auxin2pinb , {}, {(caninput_sel2a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel2b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 3", blankfield, {},{(caninput_sel3a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel3b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel3b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel3b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 3 Via Secondary Serial", blankfield, {},{(caninput_sel3b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel3b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel3extsourceb == 0)} displayOnlyField = "External Source 3 Via Internal CAN", blankfield, {},{(caninput_sel3b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel3extsourceb == 1) ||(caninput_sel3b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel3extsourcec == 1)} field = "Local Analog Source 3 Pin No:", Auxin3pina , {}, {(caninput_sel3a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel3b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 3 Pin No:", Auxin3pinb , {}, {(caninput_sel3a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel3b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 4", blankfield, {},{(caninput_sel4a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel4b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel4b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel4b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 4 Via Secondary Serial", blankfield, {},{(caninput_sel4b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel4b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel4extsourceb == 0)} displayOnlyField = "External Source 4 Via Internal CAN", blankfield, {},{(caninput_sel4b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel4extsourceb == 1) ||(caninput_sel4b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel4extsourcec == 1)} field = "Local Analog Source 4 Pin No:", Auxin4pina , {}, {(caninput_sel4a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel4b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 4 Pin No:", Auxin4pinb , {}, {(caninput_sel4a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel4b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 5", blankfield, {},{(caninput_sel5a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel5b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel5b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel5b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 5 Via Secondary Serial", blankfield, {},{(caninput_sel5b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel5b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel5extsourceb == 0)} displayOnlyField = "External Source 5 Via Internal CAN", blankfield, {},{(caninput_sel5b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel5extsourceb == 1) ||(caninput_sel5b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel5extsourcec == 1)} field = "Local Analog Source 5 Pin No:", Auxin5pina , {}, {(caninput_sel5a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel5b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 5 Pin No:", Auxin5pinb , {}, {(caninput_sel5a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel5b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 6", blankfield, {},{(caninput_sel6a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel6b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel6b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel6b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 6 Via Secondary Serial", blankfield, {},{(caninput_sel6b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel6b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel6extsourceb == 0)} displayOnlyField = "External Source 6 Via Internal CAN", blankfield, {},{(caninput_sel6b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel6extsourceb == 1) ||(caninput_sel6b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel6extsourcec == 1)} field = "Local Analog Source 6 Pin No:", Auxin6pina , {}, {(caninput_sel6a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel6b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 6 Pin No:", Auxin6pinb , {}, {(caninput_sel6a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel6b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 7", blankfield, {},{(caninput_sel7a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel7b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel7b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel7b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 7 Via Secondary Serial", blankfield, {},{(caninput_sel7b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel7b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel7extsourceb == 0)} displayOnlyField = "External Source 7 Via Internal CAN", blankfield, {},{(caninput_sel7b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel7extsourceb == 1) ||(caninput_sel7b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel7extsourcec == 1)} field = "Local Analog Source 7 Pin No:", Auxin7pina , {}, {(caninput_sel7a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel7b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 7 Pin No:", Auxin7pinb , {}, {(caninput_sel7a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel7b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 8", blankfield, {},{(caninput_sel8a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel8b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel8b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel8b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 8 Via Secondary Serial", blankfield, {},{(caninput_sel8b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel8b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel8extsourceb == 0)} displayOnlyField = "External Source 8 Via Internal CAN", blankfield, {},{(caninput_sel8b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel8extsourceb == 1) ||(caninput_sel8b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel8extsourcec == 1)} field = "Local Analog Source 8 Pin No:", Auxin8pina , {}, {(caninput_sel8a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel8b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 8 Pin No:", Auxin8pinb , {}, {(caninput_sel8a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel8b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 9", blankfield, {},{(caninput_sel9a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel9b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel9b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel9b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 9 Via Secondary Serial", blankfield, {},{(caninput_sel9b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel9b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel9extsourceb == 0)} displayOnlyField = "External Source 9 Via Internal CAN", blankfield, {},{(caninput_sel9b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel9extsourceb == 1) ||(caninput_sel9b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel9extsourcec == 1)} field = "Local Analog Source 9 Pin No:", Auxin9pina , {}, {(caninput_sel9a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel9b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 9 Pin No:", Auxin9pinb , {}, {(caninput_sel9a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel9b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 10", blankfield, {},{(caninput_sel10a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel10b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel10b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel10b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 10 Via Secondary Serial", blankfield, {},{(caninput_sel10b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel10b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel10extsourceb == 0)} displayOnlyField = "External Source 10 Via Internal CAN", blankfield, {},{(caninput_sel10b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel10extsourceb == 1) ||(caninput_sel10b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel10extsourcec == 1)} field = "Local Analog Source 10 Pin No:", Auxin10pina , {}, {(caninput_sel10a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel10b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 10 Pin No:", Auxin10pinb , {}, {(caninput_sel10a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel10b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 11", blankfield, {},{(caninput_sel11a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel11b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel11b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel11b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 11 Via Secondary Serial", blankfield, {},{(caninput_sel11b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel11b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel11extsourceb == 0)} displayOnlyField = "External Source 11 Via Internal CAN", blankfield, {},{(caninput_sel11b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel11extsourceb == 1) ||(caninput_sel11b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel11extsourcec == 1)} field = "Local Analog Source 11 Pin No:", Auxin11pina , {}, {(caninput_sel11a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel11b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 11 Pin No:", Auxin11pinb , {}, {(caninput_sel11a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel11b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 12", blankfield, {},{(caninput_sel12a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel12b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel12b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel12b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 12 Via Secondary Serial", blankfield, {},{(caninput_sel12b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel12b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel12extsourceb == 0)} displayOnlyField = "External Source 12 Via Internal CAN", blankfield, {},{(caninput_sel12b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel12extsourceb == 1) ||(caninput_sel12b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel12extsourcec == 1)} field = "Local Analog Source 12 Pin No:", Auxin12pina , {}, {(caninput_sel12a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel12b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 12 Pin No:", Auxin12pinb , {}, {(caninput_sel12a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel12b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 13", blankfield, {},{(caninput_sel13a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel13b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel13b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel13b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 13 Via Secondary Serial", blankfield, {},{(caninput_sel13b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel13b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel13extsourceb == 0)} displayOnlyField = "External Source 13 Via Internal CAN", blankfield, {},{(caninput_sel13b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel13extsourceb == 1) ||(caninput_sel13b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel13extsourcec == 1)} field = "Local Analog Source 13 Pin No:", Auxin13pina , {}, {(caninput_sel13a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel13b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 13 Pin No:", Auxin13pinb , {}, {(caninput_sel13a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel13b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 14", blankfield, {},{(caninput_sel14a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel14b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel14b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel14b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 14 Via Secondary Serial", blankfield, {},{(caninput_sel14b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel14b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel14extsourceb == 0)} displayOnlyField = "External Source 14 Via Internal CAN", blankfield, {},{(caninput_sel14b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel14extsourceb == 1) ||(caninput_sel14b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel14extsourcec == 1)} field = "Local Analog Source 14 Pin No:", Auxin14pina , {}, {(caninput_sel14a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel14b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 14 Pin No:", Auxin14pinb , {}, {(caninput_sel14a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel14b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} displayOnlyField = "Off 15", blankfield, {},{(caninput_sel15a == 0 && (!enable_secondarySerial && !enable_intcan)) || (caninput_sel15b == 0 && (enable_secondarySerial && enable_intcan)) || (caninput_sel15b == 0 && (enable_secondarySerial && !enable_intcan)) || (caninput_sel15b == 0 && (!enable_secondarySerial && enable_intcan))} displayOnlyField = "External Source 15 Via Secondary Serial", blankfield, {},{(caninput_sel15b == 1 && enable_secondarySerial && ((enable_intcan && intcan_available == 0) || !enable_intcan)) || (caninput_sel15b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel15extsourceb == 0)} displayOnlyField = "External Source 15 Via Internal CAN", blankfield, {},{(caninput_sel15b == 1 && enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel15extsourceb == 1) ||(caninput_sel15b == 1 && !enable_secondarySerial && (enable_intcan && intcan_available) && caninput_sel15extsourcec == 1)} field = "Local Analog Source 15 Pin No:", Auxin15pina , {}, {(caninput_sel15a == 2 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel15b == 2 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} field = "Local Digital Source 15 Pin No:", Auxin15pinb , {}, {(caninput_sel15a == 3 && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel15b == 3 && (enable_secondarySerial || (enable_intcan && intcan_available == 1 )))} dialog = Auxinput_alias, "", yAxis field = "Input Alias" field = "", AUXin00Alias , {(caninput_sel0a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel0b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin01Alias , {(caninput_sel1a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel1b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin02Alias , {(caninput_sel2a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel2b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin03Alias , {(caninput_sel3a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel3b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin04Alias , {(caninput_sel4a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel4b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin05Alias , {(caninput_sel5a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel5b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin06Alias , {(caninput_sel6a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel6b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin07Alias , {(caninput_sel7a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel7b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin08Alias , {(caninput_sel8a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel8b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin09Alias , {(caninput_sel9a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel9b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin10Alias , {(caninput_sel10a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel10b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin11Alias , {(caninput_sel11a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel11b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin12Alias , {(caninput_sel12a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel12b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin13Alias , {(caninput_sel13a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel13b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin14Alias , {(caninput_sel14a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel14b && (enable_secondarySerial || (enable_intcan && intcan_available)))} field = "", AUXin15Alias , {(caninput_sel15a && (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0)))) || (caninput_sel15b && (enable_secondarySerial || (enable_intcan && intcan_available)))} dialog = Auxinput_channelenable, "", yAxis field = " Aux Input Channel Enable" field = "AUX Input 0", caninput_sel0a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 0", caninput_sel0b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 1", caninput_sel1a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 1", caninput_sel1b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 2", caninput_sel2a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 2", caninput_sel2b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 3", caninput_sel3a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 3", caninput_sel3b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 4", caninput_sel4a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 4", caninput_sel4b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 5", caninput_sel5a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 5", caninput_sel5b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 6", caninput_sel6a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 6", caninput_sel6b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 7", caninput_sel7a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 7", caninput_sel7b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 8", caninput_sel8a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 8", caninput_sel8b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 9", caninput_sel9a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 9", caninput_sel9b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 10", caninput_sel10a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 10", caninput_sel10b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 11", caninput_sel11a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 11", caninput_sel11b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 12", caninput_sel12a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 12", caninput_sel12b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 13", caninput_sel13a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 13", caninput_sel13b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 14", caninput_sel14a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 14", caninput_sel14b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } field = "AUX Input 15", caninput_sel15a {}, { (!enable_secondarySerial && (!enable_intcan || (enable_intcan && intcan_available == 0))) } field = "AUX Input 15", caninput_sel15b {}, { (enable_secondarySerial && enable_intcan) || (!enable_secondarySerial && (enable_intcan && intcan_available)) || (enable_secondarySerial && !enable_intcan) } dialog = Auxin_south, "Auxillary Input Configuration",xAxis panel = Auxinput_alias panel = Auxinput_channelenable panel = Auxinput_pin_selection dialog = Auxin_config, "",yAxis panel = Auxin_north panel = Auxin_south ;------------------------------------------------------------------------------- ; General help text help = helpGeneral, "Speeduino General Help" webHelp = "http://speeduino.com/wiki/index.php/Speeduino" text = "For current WIKI documentation, click the Web Help button," text = "or visit http://www.speeduino.com/." text = "
" text = "
why not visit our forum http://speeduino.com/forum/" ;------------------------------------------------------------------------------ [ControllerCommands] ; commandName = command1, command2, commandn... ; command in standard ini format, a command name can be assigned to 1 to n commands that will be executed in order. ; This does not include any resultant protocol envelope data, only the response data itself. ; WARNING!! These commands bypass TunerStudio's normal memory synchronization. If these commands ; alter mapped settings (Constant) memory in the controller, TunerStudio will have an out of sync condition ; and may create error messages. ; It is expected that these commands would not typically alter any ram mapped to a Constant. cmdStopTestMode = "E\x01\x00" cmdEnableTestMode = "E\x01\x01" cmdtestinj1on = "E\x02\x01" cmdtestinj1off = "E\x02\x02" cmdtestinj150dc = "E\x02\x03" cmdtestinj2on = "E\x02\x04" cmdtestinj2off = "E\x02\x05" cmdtestinj250dc = "E\x02\x06" cmdtestinj3on = "E\x02\x07" cmdtestinj3off = "E\x02\x08" cmdtestinj350dc = "E\x02\x09" cmdtestinj4on = "E\x02\x0A" cmdtestinj4off = "E\x02\x0B" cmdtestinj450dc = "E\x02\x0C" cmdtestspk1on = "E\x03\x01" cmdtestspk1off = "E\x03\x02" cmdtestspk150dc = "E\x03\x03" cmdtestspk2on = "E\x03\x04" cmdtestspk2off = "E\x03\x05" cmdtestspk250dc = "E\x03\x06" cmdtestspk3on = "E\x03\x07" cmdtestspk3off = "E\x03\x08" cmdtestspk350dc = "E\x03\x09" cmdtestspk4on = "E\x03\x0A" cmdtestspk4off = "E\x03\x0B" cmdtestspk450dc = "E\x03\x0C" ; ------------------------------------------------------------- ; Help down here [SettingContextHelp] [CurveEditor] ;time-based accel enrichment curve = time_accel_tpsdot_curve, "TPS based AE" columnLabel = "TPSdot", "Added" xAxis = 0, 1200, 6 yAxis = 0, 250, 4 xBins = taeBins, TPSdot yBins = taeRates ;gauge = cltGauge ; Correction curve for dwell vs battery voltage curve = dwell_correction_curve, "Dwell voltage correction" columnLabel = "Voltage", "Dwell" xAxis = 6, 22, 6 yAxis = 0, 255, 6 xBins = brvBins, batteryVoltage yBins = dwellRates ; Correction curve for injectors vs battery voltage curve = injector_voltage_curve, "Injector voltage correction" columnLabel = "Voltage", "Injector" xAxis = 6, 22, 6 yAxis = 0, 255, 6 xBins = brvBins, batteryVoltage yBins = injBatRates ; Correction curve for Air Density vs temperature curve = airdensity_curve, "IAT density correction" columnLabel = "Air Temperature", "Fuel Amount" xAxis = -40, 160, 6 yAxis = 0, 255, 6 xBins = airDenBins, iat yBins = airDenRates ; IAT based ignition timing retard curve = iat_retard_curve, "IAT timing retard" columnLabel = "Inlet Air Temp", "Retard" xAxis = -40, 200, 5 yAxis = 0, 30, 5 xBins = iatRetBins, iat yBins = iatRetRates ; CLT based ignition timing retard curve = clt_advance_curve, "Cold Advance" columnLabel = "Coolant Temp", "Advance" xAxis = -40, 200, 5 yAxis = -12.7, 12.7, 5 xBins = cltAdvBins, coolant yBins = cltAdvValues ; Curves for idle control ; Standard duty table for PWM valves curve = iacPwm_curve, "IAC PWM Duty" columnLabel = "Coolant Temperature", "Valve" #if CELSIUS xAxis = -40, 215, 6 #else xAxis = -40, 315, 6 #endif yAxis = 0, 100, 4 xBins = iacBins, coolant yBins = iacOLPWMVal ; Cranking duty table for PWM valves curve = iacPwmCrank_curve, "IAC PWM Cranking Duty" columnLabel = "Coolant Temperature", "Valve" xAxis = -40, 215, 6 yAxis = 0, 100, 4 xBins = iacCrankBins, coolant yBins = iacCrankDuty curve = iacStep_curve, "IAC Stepper Motor" columnLabel = "Coolant Temperature", "Motor" #if CELSIUS xAxis = -40, 215, 6 #else xAxis = -40, 315, 6 #endif yAxis = 0, 850, 4 xBins = iacBins, coolant yBins = iacOLStepVal curve = iacStepCrank_curve, "IAC Stepper Motor Cranking" columnLabel = "Coolant Temperature", "Motor" xAxis = -40, 120, 6 yAxis = 0, 850, 4 xBins = iacCrankBins, coolant yBins = iacCrankSteps curve = iacClosedLoop_curve, "IAC Closed Loop Targets" columnLabel = "Coolant Temperature", "Motor" xAxis = -40, 120, 6 yAxis = 0, 2000, 4 xBins = iacBins, coolant yBins = iacCLValues curve = rotaryTrailing_curve, "Rotary Trailing Split" columnLabel = "Engine load", "Split" yAxis = 0, 40, 4 #if SPEED_DENSITY xBins = rotarySplitBins, map xAxis = 0, 250, 5 #else xBins = rotarySplitBins, throttle xAxis = 0, 100, 5 #endif yBins = rotarySplitValues ; Warmup enrichment curve curve = warmup_curve, "Warmup Enrichment (WUE) Curve" columnLabel = "Coolant", "WUE %" xAxis = -40, 210, 9 yAxis = 0, 240, 6 xBins = wueBins, coolant yBins = wueRates gauge = cltGauge ; Cranking enrichment curve curve = cranking_enrich_curve, "Cranking Enrichment Curve" columnLabel = "Coolant", "Fuel Modifier" xAxis = -40, 110, 9 yAxis = 0, 200, 6 xBins = crankingEnrichBins, coolant yBins = crankingEnrichValues ;gauge = cltGau25 ; Priming Pulsewidth curve curve = priming_pw_curve, "Priming Pulsewidth" columnLabel = "Coolant", "PW" xAxis = -40, 110, 4 yAxis = 0, 25.5, 4 xBins = primeBins, coolant yBins = primePulse gauge = cltGauge ; Afterstart Enrichment curve curve = afterstart_enrichment_curve, "ASE - Enrichment %" columnLabel = "Coolant", "Enrichment" xAxis = -40, 110, 4 yAxis = 0, 200, 4 xBins = aseBins, coolant yBins = asePct gauge = cltGauge ; Afterstart Enrichment time curve = afterstart_enrichment_time, "ASE - Duration" columnLabel = "Coolant", "Time" xAxis = -40, 110, 4 yAxis = 0, 20, 4 xBins = aseBins, coolant yBins = aseCount gauge = cltGauge ; Warmup enrichment VEAL AFR adjustment curve (Not currently working) ;curve = warmup_afr_curve, "AFR Target Temperature Adustment" ; columnLabel = "Coolant Temp", "AFR Offset %" ; xAxis = -40, 210, 9 ; yAxis = 0, 240, 6 ; xBins = wueAFRBins, coolant ; yBins = wueAFRRates ; Flex fuel correction curves curve = flex_fuel_curve, "Flex Fuel Adjustments" columnLabel = "Ethanol", "Fuel" xAxis = 0, 100, 10 yAxis = 50, 250, 5 xBins = flexFuelBins, flex yBins = flexFuelAdj size = 400, 200 curve = flex_adv_curve, "Flex Timing Advance" columnLabel = "Ethanol", "Advance" xAxis = 0, 100, 10 yAxis = 0, 50, 5 xBins = flexAdvBins, flex yBins = flexAdvAdj size = 400, 200 curve = flex_boost_curve, "Flex Boost Adjustments" columnLabel = "Ethanol", "Boost" xAxis = 0, 100, 10 yAxis = -100, 200, 5 xBins = flexBoostBins, flex yBins = flexBoostAdj size = 400, 200 ;Knock sensor windows curve = knock_window_angle_curve, "Knock Window" columnLabel = "RPM", "Window Start" xAxis = 0, 8000, 9 yAxis = -100, 100, 11 xBins = knock_window_rpms, rpm yBins = knock_window_angle size = 400, 200 curve = knock_window_duration_curve, "Knock Window Duration" columnLabel = "RPM", "Window Duration" xAxis = 0, 8000, 9 yAxis = 0, 100, 10 xBins = knock_window_rpms, rpm yBins = knock_window_dur size = 400, 200 [TableEditor] ; table_id, map3d_id, "title", page table = veTable1Tbl, veTable1Map, "VE Table", 1 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" ; constant, variable xBins = rpmBins, rpm yBins = fuelLoadBins, fuelLoad xyLabels = "RPM", "Fuel Load: " zBins = veTable gridHeight = 2.0 gridOrient = 250, 0, 340 upDownLabel = "(RICHER)", "(LEANER)" table = fuelTable2Tbl, fuel2Map, "Fuel Table 2", 1 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" xBins = fuelRPM2Bins, rpm yBins = fuelLoad2Bins, fuelLoad xyLabels = "RPM", "Fuel Load: " zBins = veTable2 gridHeight = 2.0 gridOrient = 250, 0, 340 upDownLabel = "(RICHER)", "(LEANER)" table = sparkTbl, sparkMap, "Ignition Advance Table", 3 xBins = rpmBins2, rpm ;yBins = ignLoadBins, ignLoad yBins = mapBins1, ignLoad xyLabels = "RPM", "Ignition Load: " zBins = advTable1 gridHeight = 3.0 upDownLabel = "ADVANCING", "RETARDING" ;table = afrTbl, afrTableMap, "AFR Table", 5 table = afrTable1Tbl, afrTable1Map, "AFR Table", 5 xBins = rpmBinsAFR, rpm #if SPEED_DENSITY yBins = mapBinsAFR, map #else ALPHA_N yBins = tpsBinsAFR, throttle #endif zBins = afrTable gridHeight = 1.0 upDownLabel = "RICHER", "LEANER" gridOrient = 250, 0, 340 ;#if BOOSTPSI ;table = boostTbl, boostMap, "Boost targets (PSI)", 8 ;#else ;table = boostTbl, boostMap, "Boost targets (Absolute kPa)", 8 ;#endif table = boostTbl, boostMap, "Boost Duty / Target", 8 xBins = rpmBinsBoost, rpm yBins = tpsBinsBoost, throttle zBins = boostTable gridHeight = 3.0 upDownLabel = "HIGHER", "LOWER" table = vvtTbl, vvtMap, "VVT control Table", 8 xBins = rpmBinsVVT, rpm yBins = tpsBinsVVT, throttle zBins = vvtTable gridHeight = 3.0 upDownLabel = "HIGHER", "LOWER" table = stagingTbl, stagingMap, "Fuel Staging Table", 10 xBins = rpmBinsStaging, rpm #if SPEED_DENSITY yBins = mapBinsStaging, map #else ALPHA_N yBins = tpsBinsStaging, throttle #endif zBins = stagingTable gridHeight = 3.0 upDownLabel = "HIGHER", "LOWER" ;--------- Sequential fuel trim maps ----------- table = fuelTrimTable1Tbl, fuelTrimTable1Map, "Fuel trim Table 1", 9 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" xBins = fuelTrim1rpmBins, rpm #if SPEED_DENSITY yBins = fuelTrim1loadBins, map #else yBins = fuelTrim1loadBins, throttle #endif zBins = fuelTrim1Table gridHeight = 2.0 gridOrient = 250, 0, 340 upDownLabel = "(RICHER)", "(LEANER)" table = fuelTrimTable2Tbl, fuelTrimTable2Map, "Fuel trim Table 2", 9 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" xBins = fuelTrim2rpmBins, rpm #if SPEED_DENSITY yBins = fuelTrim2loadBins, map #else yBins = fuelTrim2loadBins, throttle #endif zBins = fuelTrim2Table gridHeight = 2.0 gridOrient = 250, 0, 340 upDownLabel = "(RICHER)", "(LEANER)" table = fuelTrimTable3Tbl, fuelTrimTable3Map, "Fuel trim Table 3", 9 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" xBins = fuelTrim3rpmBins, rpm #if SPEED_DENSITY yBins = fuelTrim3loadBins, map #else yBins = fuelTrim3loadBins, throttle #endif zBins = fuelTrim3Table gridHeight = 2.0 gridOrient = 250, 0, 340 upDownLabel = "(RICHER)", "(LEANER)" table = fuelTrimTable4Tbl, fuelTrimTable4Map, "Fuel trim Table 4", 9 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" xBins = fuelTrim4rpmBins, rpm #if SPEED_DENSITY yBins = fuelTrim4loadBins, map #else yBins = fuelTrim4loadBins, throttle #endif zBins = fuelTrim4Table gridHeight = 2.0 gridOrient = 250, 0, 340 upDownLabel = "(RICHER)", "(LEANER)" ;------------------------------------------------------------------------------- [GaugeConfigurations] ;------------------------------------------------------------------------------- ; Define a gauge's characteristics here, then go to a specific layout ; block (Tuning or FrontPage) and use the name you've defined here to ; display that gauge in a particular position. ; ; Name = Case-sensitive, user-defined name for this gauge configuration. ; Var = Case-sensitive name of variable to be displayed, see the ; OutputChannels block in this file for possible values. ; Title = Title displayed at the top of the gauge. ; Units = Units displayed below value on gauge. ; Lo = Lower scale limit of gauge. ; Hi = Upper scale limit of gauge. ; LoD = Lower limit at which danger color is used for gauge background. ; LoW = Lower limit at which warning color is used. ; HiW = Upper limit at which warning color is used. ; HiD = Upper limit at which danger color is used. ; vd = Decimal places in displayed value ; ld = Label decimal places for display of Lo and Hi, above. gaugeCategory = "Main" ;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld accelEnrichGauge = accelEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0 dutyCycleGauge = dutyCycle, "Duty Cycle", "%", 0, 100, -1, -1, 70, 80, 1, 1 stgDutyCycleGauge = stgDutyCycle, "Staging Duty Cycle", "%", 0, 100, -1, -1, 70, 80, 1, 1 egoCorrGauge = egoCorrection, "EGO Correction", "%", 50, 150, 90, 99, 101, 110, 0, 0 gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0 pulseWidthGauge = pulseWidth, "Pulse Width", "mSec", 0, 35.0, 1.0, 1.2, 20, 25, 3, 3 tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 600, 3000, 5000, 0, 0 veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0 warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 200, 130, 140, 140, 150, 0, 0 aseEnrichGauge = ase_enrich, "Afterstart Enrichment","%", 0, 200, 130, 140, 140, 150, 0, 0 batCorrectGauge = batCorrection, "Voltage Correction", "%", 0, 200, 130, 140, 140, 150, 0, 0 iatCorrectGauge = airCorrection, "IAT Correction", "%", 0, 200, 130, 140, 140, 150, 0, 0 flexEnrich, = flexFuelCor, "Flex Correction", "%", 0, 200, 130, 140, 140, 150, 0, 0 advanceGauge = advance, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0, 0 dwellGauge = dwell, "Ign Dwell", "mSec", 0, 35.0, 1.0, 1.2, 20, 25, 3, 3 gaugeCategory = "Sensor inputs" mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0 mapGauge_psi = map_psi, "Engine MAP (PSI)", "PSI", -15, 100, 0, 20, 200, 245, 0, 0 mapGauge_bar = map_bar, "Engine MAP (BAR)", "Bar", -1, 3, -1, -1, 5, 5, 2, 2 mapGauge_vacBoost = map_vacboost, "Engine MAP (in-Hg/PSI)", "in-Hg/PSI", -30, 30, -30, -30, 30, 30, 1, 1 batteryVoltage = batteryVoltage,"Battery Voltage", "volts", 0, 25, 8, 9, 15, 16, 2, 2 tpsADCGauge = tpsADC, "TPS ADC", "", 0, 255, -1, -1, 256, 256, 0, 0 throttleGauge = throttle, "Throttle Position", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0 afrGauge = afr, "Air:Fuel Ratio", "", 7, 25, 12, 13, 15, 16, 2, 2 afrGauge2 = afr2, "Air:Fuel Ratio 2", "", 7, 25, 12, 13, 15, 16, 2, 2 lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2 #if CELSIUS cltGauge = coolant, "Coolant Temp", "TEMP", -40, 215, -15, 0, 95, 105, 0, 0 iatGauge = iat, "Inlet Air Temp", "TEMP", -40, 215, -15, 0, 95, 100, 0, 0 #else cltGauge = coolant, "Coolant Temp", "TEMP", -40, 215, 0, 30, 200, 220, 0, 0 iatGauge = iat, "Inlet Air Temp", "TEMP", -40, 215, 0, 30, 200, 210, 0, 0 #endif flexGauge = flex, "Flex sensor", "%", 0, 100, -1, -1, 999, 999, 0, 0 gaugeCategory = "Auxillary Input Channels" AuxInGauge0 = auxin_gauge0, { stringValue(AUXin00Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge1 = auxin_gauge1, { stringValue(AUXin01Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge2 = auxin_gauge2, { stringValue(AUXin02Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge3 = auxin_gauge3, { stringValue(AUXin03Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge4 = auxin_gauge4, { stringValue(AUXin04Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge5 = auxin_gauge5, { stringValue(AUXin05Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge6 = auxin_gauge6, { stringValue(AUXin06Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge7 = auxin_gauge7, { stringValue(AUXin07Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge8 = auxin_gauge8, { stringValue(AUXin08Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge9 = auxin_gauge9, { stringValue(AUXin09Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge10 = auxin_gauge10, { stringValue(AUXin10Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge11 = auxin_gauge11, { stringValue(AUXin11Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge12 = auxin_gauge12, { stringValue(AUXin12Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge13 = auxin_gauge13, { stringValue(AUXin13Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge14 = auxin_gauge14, { stringValue(AUXin14Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 AuxInGauge15 = auxin_gauge15, { stringValue(AUXin15Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 gaugeCategory = "System Data" clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0 loopGauge = loopsPerSecond,"Main loop speed", "Loops/S" , 0, 70000, -1, 500,1800, 4000, 0, 0 memoryGauge = freeRAM, "Free memory", "bytes" , 0, 8000, -1, 1000,8000, 1000, 0, 0 reqFuelGauge = req_fuel, "Req. Fuel", "ms", 0, 35.0, 1.0, 1.2, 20, 25, 2, 2 injOpenGauge = inj_open, "Injector Open Time", "ms", 0, 35.0, 1.0, 1.2, 20, 25, 1, 1 mapMultiplyGauge = map_multiply_amt, "MAP Multiply", "%", 0, 200, 130, 140, 140, 150, 0, 0 nSquirtsGauge = nSquirts, "# Squirts", "", 0, 10, 130, 140, 140, 150, 0, 0 ;------------------------------------------------------------------------------- [FrontPage] ; Gauges are numbered left to right, top to bottom. ; ; 1 2 3 4 ; 5 6 7 8 gauge1 = tachometer gauge2 = throttleGauge gauge3 = pulseWidthGauge gauge4 = dutyCycleGauge gauge5 = mapGauge gauge6 = iatGauge gauge7 = cltGauge gauge8 = gammaEnrichGauge ;---------------------------------------------------------------------------- ; Indicators ; expr off-label on-label, off-bg, off-fg, on-bg, on-fg indicator = { running }, "Not Running", "Running" white, black, green, black indicator = { crank }, "Not Cranking", "Cranking", white, black, green, black indicator = { ase }, "ASE OFF", "ASE ON", white, black, green, black indicator = { warmup }, "WUE OFF", "WUE ON", white, black, green, black indicator = { tpsaccaen }, "Accel", "Accel", white, black, green, black indicator = { tpsaccden }, "Decel", "Decel", white, black, green, black indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black indicator = { mapaccden }, "MAP Decel", "MAP Decel", white, black, green, black indicator = { error }, "No Errors", "ERROR", white, black, green, black indicator = { (tps > tpsflood) && (rpm < crankRPM) }, "FLOOD OFF", "FLOOD CLEAR", white, black, red, black indicator = { DFCOOn }, "DFCO OFF", "DFCO On", white, black, red, black indicator = { launchHard }, "Launch Hard", "Launch Hard", white, black, green, black indicator = { launchSoft }, "Launch Soft", "Launch Soft", white, black, green, black indicator = { softlimitOn }, "Soft Limit OFF","Soft Limiter", white, black, red, black indicator = { hardLimitOn }, "Hard Limit OFF","Hard Limiter", white, black, red, black indicator = { boostCutOut }, "Ign Cut OFF", "Ign Cut (Boost)", white, black, red, black indicator = { sync }, "No Sync", "Sync", white, black, green, black indicator = { resetLockOn }, "Reset Lock OFF","Reset Lock ON", red, black, green, black indicator = { bootloaderCaps > 0 }, "Std. Boot", "Custom Boot", white, black, white, black indicator = { nitrousOn }, "Nitrous Off", "Nitrous On", white, black, red, black ;------------------------------------------------------------------------------- [OutputChannels] ; The number of bytes MegaTune or TunerStudio should expect as a result ; of sending the "A" command to Speeduino is determined ; by the value of ochBlockSize, so be very careful when ; you change it. ochGetCommand = "r\$tsCanId\x30%2o%2c" ochBlockSize = 92 secl = scalar, U08, 0, "sec", 1.000, 0.000 status1 = scalar, U08, 1, "bits", 1.000, 0.000 inj1Status = bits, U08, 1, [0:0] inj2Status = bits, U08, 1, [1:1] inj3Status = bits, U08, 1, [2:2] inj4Status = bits, U08, 1, [3:3] DFCOOn = bits, U08, 1, [4:4] boostCutFuel = bits, U08, 1, [5:5] toothLog1Ready = bits, U08, 1, [6:6] toothLog2Ready = bits, U08, 1, [7:7] engine = scalar, U08, 2, "bits", 1.000, 0.000 running = bits, U08, 2, [0:0] crank = bits, U08, 2, [1:1] ase = bits, U08, 2, [2:2] warmup = bits, U08, 2, [3:3] tpsaccaen = bits, U08, 2, [4:4] tpsaccden = bits, U08, 2, [5:5] mapaccaen = bits, U08, 2, [6:6] mapaccden = bits, U08, 2, [7:7] syncLossCounter = scalar, U08, 3, "", 1.000, 0.000 map = scalar, U16, 4, "kpa", 1.000, 0.000 iatRaw = scalar, U08, 6, "°C", 1.000, 0.000 coolantRaw = scalar, U08, 7, "°C", 1.000, 0.000 batCorrection = scalar, U08, 8, "%", 1.000, 0.000 batteryVoltage = scalar, U08, 9, "V", 0.100, 0.000 afr = scalar, U08, 10, "O2", 0.100, 0.000 egoCorrection = scalar, U08, 11, "%", 1.000, 0.000 airCorrection = scalar, U08, 12, "%", 1.000, 0.000 warmupEnrich = scalar, U08, 13, "%", 1.000, 0.000 rpm = scalar, U16, 14, "rpm", 1.000, 0.000 accelEnrich = scalar, U08, 16, "%", 2.000, 0.000 gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000 veCurr = scalar, U08, 18, "%", 1.000, 0.000 afrTarget = scalar, U08, 19, "O2", 0.100, 0.000 pulseWidth = scalar, U16, 20, "ms", 0.001, 0.000 TPSdot = scalar, U08, 22, "%/s", 10.00, 0.000 advance = scalar, S08, 23, "deg", 1.000, 0.000 tps = scalar, U08, 24, "%", 1.000, 0.000 loopsPerSecond = scalar, U16, 25, "loops", 1.000, 0.000 freeRAM = scalar, U16, 27, "bytes", 1.000, 0.000 boostTarget = scalar, U08, 29, "kPa", 2.000, 0.000 boostDuty = scalar, U08, 30, "%", 1.000, 0.000 status2 = scalar, U08, 31, "bits", 1.000, 0.000 launchHard = bits, U08, 31, [0:0] launchSoft = bits, U08, 31, [1:1] hardLimitOn = bits, U08, 31, [2:2] softlimitOn = bits, U08, 31, [3:3] boostCutSpark = bits, U08, 31, [4:4] error = bits, U08, 31, [5:5] idleControlOn = bits, U08, 31, [6:6] sync = bits, U08, 31, [7:7] rpmDOT = scalar, S16, 32, "rpm/s", 1.000, 0.000 flex = scalar, U08, 34, "%", 1.000, 0.000 flexFuelCor = scalar, U08, 35, "%", 1.000, 0.000 flexIgnCor = scalar, U08, 36, "deg", 1.000, 0.000 idleLoad = scalar, U08, 37, { bitStringValue( idleUnits , iacAlgorithm ) }, 2.000, 0.000 ; This is a combined variable covering both PWM and stepper IACs. The units used depend on which idle algorithm is chosen testoutputs = scalar, U08, 38, "bits", 1.000, 0.000 testenabled = bits, U08, 38, [0:0] testactive = bits, U08, 38, [1:1] afr2 = scalar, U08, 39, "O2", 0.100, 0.000 baro = scalar, U08, 40, "kpa", 1.000, 0.000 auxin_gauge0 = scalar, U16, 41, "", 1.000, 0.000 auxin_gauge1 = scalar, U16, 43, "", 1.000, 0.000 auxin_gauge2 = scalar, U16, 45, "", 1.000, 0.000 auxin_gauge3 = scalar, U16, 47, "", 1.000, 0.000 auxin_gauge4 = scalar, U16, 49, "", 1.000, 0.000 auxin_gauge5 = scalar, U16, 51, "", 1.000, 0.000 auxin_gauge6 = scalar, U16, 53, "", 1.000, 0.000 auxin_gauge7 = scalar, U16, 55, "", 1.000, 0.000 auxin_gauge8 = scalar, U16, 57, "", 1.000, 0.000 auxin_gauge9 = scalar, U16, 59, "", 1.000, 0.000 auxin_gauge10 = scalar, U16, 61, "", 1.000, 0.000 auxin_gauge11 = scalar, U16, 63, "", 1.000, 0.000 auxin_gauge12 = scalar, U16, 65, "", 1.000, 0.000 auxin_gauge13 = scalar, U16, 67, "", 1.000, 0.000 auxin_gauge14 = scalar, U16, 69, "", 1.000, 0.000 auxin_gauge15 = scalar, U16, 71, "", 1.000, 0.000 tpsADC = scalar, U08, 73, "ADC",1.000, 0.000 errors = scalar, U08, 74, "bits", 1.000, 0.000 errorNum = bits, U08, 74, [0:1] currentError = bits, U08, 74, [2:7] pulseWidth2 = scalar, U16, 75, "ms", 0.001, 0.000 pulseWidth3 = scalar, U16, 77, "ms", 0.001, 0.000 pulseWidth4 = scalar, U16, 79, "ms", 0.001, 0.000 status3 = scalar, U08, 81, "bits", 1.000, 0.000 resetLockOn = bits, U08, 81, [0:0] nitrousOn = bits, U08, 81, [1:1] unused81_2-4 = bits, U08, 81, [2:4] nSquirts = bits, U08, 81, [5:7] flexBoostCor = scalar, S16, 82, "kPa", 1.000, 0.000 nChannels = scalar, U08, 84, "bits", 1.000, 0.000 nIgnChannels = bits, U08, 84, [0:3] nFuelChannels = bits, U08, 84, [4:7] fuelLoad = scalar, S16, 85, { bitStringValue( algorithmUnits , algorithm ) }, 1.000, 0.000 ignLoad = scalar, S16, 87, { bitStringValue( algorithmUnits , ignAlgorithm ) }, 1.000, 0.000 dwell = scalar, U16, 89, "ms", 0.001, 0.000 CLIdleTarget = scalar, U08, 91, "RPM", 10.00, 0.000 #if CELSIUS coolant = { coolantRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives iat = { iatRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives #else coolant = { (coolantRaw - 40) * 1.8 + 32 } ;Convert C to F (Offset by 40) iat = { (iatRaw - 40) * 1.8 + 32 } ;Convert C to F (Offset by 40) #endif time = { timeNow } seconds = { secl } throttle = { tps }, "%" cycleTime = { rpm ? ( 60000.0 / rpm ) : 0 } cycleMultiplier = { injLayout == 3 ? 2 : 1 } strokeMultipler = { twoStroke == 1 ? 2 : 1 } dutyCycle = { rpm ? ( 100.0*pulseWidth/(cycleTime * cycleMultiplier) * strokeMultipler ) : 0 } stgDutyCycle = { rpm && stagingEnabled ? ( 100.0*pulseWidth3/(cycleTime * cycleMultiplier) * strokeMultipler ) : 0 } boostCutOut = { boostCutFuel || boostCutSpark } lambda = { afr / stoich } MAPxRPM = { rpm * map } loopsPerRev = { loopsPerSecond / (rpm / 60) } req_fuel = { reqFuel } inj_open = { injOpen } ase_enrich = { ase ? (100 + asePct ) : 100 } ; If ASE is active then equal the ASE + 100 map_multiply_amt = { multiplyMAP ? map : 100 } ; If multiply MAP is enabled, use the current MAP value, otherwise 100% ;nSquirts = { nCylinders / divider } ;Manifold pressure in weirdo units map_bar = { (map - baro) / 101.33 } map_psi = { (map - baro) * 0.145038 } map_inhg = { (baro - map) * 0.2953007 } ;in-Hg map_vacboost = { map < baro ? -map_inhg : map_psi } ;fuelLoadMax = { arrayValue(algorithmLimits , algorithm) } ;Doesn't work, no idea why. fuelLoadMax = { (algorithm == 0 || algorithm == 2) ? 511 : 100 } ignLoadMax = { (ignAlgorithm == 0 || ignAlgorithm == 2) ? 511 : 100 } boostTableLimit = { boostType == 0 ? 100 : 511 } ;The maximum value allowed in the boost table. 100 is used for duty cycle, 511 for kpa CLIdleDelta = { CLIdleTarget - rpm } ;------------------------------------------------------------------------------- [Datalog] ; Full datalog. ; ; Default user-defined log emulates the full datalog. ; ; The entries are saved in the datalog file in the order in ; which they appear in the list below. ; ; Channel - Case sensitive name of output channel to be logged. ; Label - String written to header line of log. Be careful ; about changing these, as programs like MSLVV and ; MSTweak key off specific column names. ; Type - Data type of output, converted before writing. ; Format - C-style output format of data. ; ; Channel Label Type Format ; -------------- ---------- ----- ------ entry = time, "Time", float, "%.3f" entry = secl, "SecL", int, "%d" entry = rpm, "RPM", int, "%d" entry = map, "MAP", int, "%d" entry = MAPxRPM, "MAPxRPM", int, "%d" entry = tps, "TPS", int, "%d" entry = afr, "AFR", float, "%.3f" entry = lambda, "Lambda", float, "%.3f" entry = iat, "IAT", int, "%d" entry = coolant, "CLT", int, "%d" entry = engine, "Engine", int, "%d" entry = DFCOOn, "DFCO", int, "onOff" entry = egoCorrection, "Gego", int, "%d" entry = airCorrection, "Gair", int, "%d" entry = batCorrection, "Gbattery", int, "%d" entry = warmupEnrich, "Gwarm", int, "%d" ;entry = baroCorrection, "Gbaro", int, "%d" entry = gammaEnrich, "Gammae", int, "%d" entry = accelEnrich, "Accel Enrich", int, "%d" entry = veCurr, "VE", int, "%d" entry = pulseWidth, "PW", float, "%.1f" entry = afrTarget, "AFR Target", float, "%.3f" entry = pulseWidth, "PW2", float, "%.1f" entry = dutyCycle, "DutyCycle1", float, "%.1f" entry = dutyCycle, "DutyCycle2", float, "%.1f" entry = TPSdot, "TPS DOT", int, "%d" entry = advance, "Advance", int, "%d" entry = dwell, "Dwell", float, "%.1f" entry = batteryVoltage, "Battery V", float, "%.1f" entry = rpmDOT, "rpm/s", int, "%d" entry = flex, "Eth %", int, "%d", { flexEnabled } entry = errorNum, "Error #", int, "%d" entry = currentError, "Error ID", int, "%d" entry = map_psi, "Boost PSI", float, "%.1f" entry = boostTarget, "Boost Target", int, "%d", { boostEnabled } entry = boostDuty, "Boost Duty", int, "%d", { boostEnabled } entry = boostCutOut , "Boost cut", int, "onOff" entry = launchHard , "Hard Launch", int, "onOff" entry = hardLimitOn , "Hard Limiter", int, "onOff" entry = idleControlOn, "Idle Control", int, "onOff" entry = idleLoad, "IAC value", int, "%d" entry = CLIdleTarget, "Idle Target RPM", int, "%%d", { iacAlgorithm == 3 || iacAlgorithm == 5 } ;Only show for closed loop idle modes entry = CLIdleDelta, "Idle RPM Delta", int, "%d", { iacAlgorithm == 3 || iacAlgorithm == 5 } ;Only show for closed loop idle modes entry = baro, "Baro Pressure",int, "%d" entry = nitrousOn, "Nitrous", int, "onOff", { n2o_enable > 0 } entry = syncLossCounter, "Sync Loss #", int, "%d" entry = auxin_gauge0, "AuxIn CH0", int, "%d" entry = auxin_gauge1, "AuxIn CH1", int, "%d" entry = auxin_gauge2, "AuxIn CH2", int, "%d" entry = auxin_gauge3, "AuxIn CH3", int, "%d" entry = auxin_gauge4, "AuxIn CH4", int, "%d" entry = auxin_gauge5, "AuxIn CH5", int, "%d" entry = auxin_gauge6, "AuxIn CH6", int, "%d" entry = auxin_gauge7, "AuxIn CH7", int, "%d" [LoggerDefinition] ; valid logger types: composite, tooth, trigger, csv ;loggerDef = uniqueName, Display Name, type loggerDef = tooth, "Tooth Logger", tooth ;dataReadCommand = "r\\x00\\xf4\\x00\\x00\\x04\\x00" ; standard TS command format startCommand = "H" stopCommand = "h" dataReadCommand = "T" ; Basic TS command format dataReadTimeout = 5000 ; time in ms dataReadyCondition = { toothLog1Ready == 1 } ;dataLength = 256 ; in bytes, including headers, footers and data (not used) ;dataLength = 128 ; in bytes, including headers, footers and data (not used) ;recordDef = headerLen. footerLen, recordLen recordDef = 0, 0, 4; in bytes, the recordLen is for each record, currently limited to 4 bytes ;recordField = Name, HeaderName, startBit, bitCount, scale, units, updateCondition recordField = toothTime, "ToothTime", 0, 32, 1.0, "uS" loggerDef = compositeLogger, "Composite Logger", composite startCommand = "J" stopCommand = "j" dataReadCommand = "T" ; Basic TS command format. Note that this is shared with the composite logger. Firmware detects which log is currently running dataReadTimeout = 5000 ; time in ms dataReadyCondition = { toothLog1Ready == 1 } ;dataLength = 256 ; in bytes, including headers, footers and data (not used) ;dataLength = 320 ; in bytes, including headers, footers and data (not used) ;recordDef = headerLen. footerLen, recordLen recordDef = 0, 0, 5; in bytes, the recordLen is for each record, currently limited to 4 bytes ;recordField = Name, HeaderName, startBit, bitCount, scale, units, updateCondition recordField = priLevel, "PriLevel", 0, 1, 1.0, "Flag" recordField = secLevel, "SecLevel", 1, 1, 1.0, "Flag" recordField = trigger, "Trigger", 2, 1, 1.0, "Flag" recordField = sync, "Sync", 3, 1, 1.0, "Flag" recordField = refTime, "RefTime", 8, 32, 0.001, "ms" ; hidden calcField serves as intermediate variable calcField = maxTime, "MaxTime", "ms", { maxValue(refTime) } calcField = toothTime, "ToothTime", "ms", { refTime - pastValue(refTime, 1) } ;recordField = time, "Time", 24, 16, 1.0, "ms" calcField = time, "Time", "ms", { refTime } [Tools] ;addTool = toolName, PanelName addTool = veTableGenerator, "VE Table Generator", veTable1Tbl addTool = afrTableGenerator, "AFR Table Generator", afrTable1Tbl [VeAnalyze] ; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition veAnalyzeMap = veTable1Tbl, afrTable1Tbl, afr, egoCorrection lambdaTargetTables = afrTable1Tbl, afrTSCustom, filter = std_xAxisMin ; Auto build with appropriate axis channels ;filter = minRPMFilter, "Minimum RPM", rpm, < , 500, , true filter = std_xAxisMax ; Auto build with appropriate axis channels filter = std_yAxisMin ; Auto build with appropriate axis channels filter = std_yAxisMax ; Auto build with appropriate axis channels filter = std_DeadLambda ; Auto build #if CELSIUS filter = minCltFilter, "Minimum CLT", coolant, < , 71, , true #else filter = minCltFilter, "Minimum CLT", coolant, < , 160, , true #endif filter = accelFilter, "Accel Flag" , engine, & , 16, , false filter = aseFilter, "ASE Flag" , engine, & , 4, , false filter = overrunFilter, "Overrun" , pulseWidth, = , 0, , false filter = std_Custom ; Standard Custom Expression Filter. ;------------- WUE VEAL not currently working ---------------- ;[WueAnalyze] ; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition ; wueAnalyzeMap = veTable1Tbl, afrTable1Tbl, afr, egoCorrection ; wueAnalyzeMap = afrTable1Tbl, warmup_afr_curve, warmup_curve, afr, coolant, warmupEnrich ;warmup_afr_curve, ; lambdaTargetTables = afrTable1Tbl, afrTSCustom, ;filter = std_xAxisMin ; Auto build with appropriate axis channels ;filter = minRPMFilter, "Minimum RPM", rpm, < , 500, , true ;filter = std_xAxisMax ; Auto build with appropriate axis channels ;filter = std_yAxisMin ; Auto build with appropriate axis channels ;filter = std_yAxisMax ; Auto build with appropriate axis channels ;filter = std_DeadLambda ; Auto build ; filter = maxTPSFilter, "High Throttle", tps, < , 15, , true ;------------- WUE VEAL not currently working ----------------