Compare commits

...

33 Commits

Author SHA1 Message Date
mi-hol af711b144f
Merge 586bc06f81 into 5105258377 2024-09-01 22:20:36 +02:00
GitHub set-date Action 5105258377 Update date 2024-09-01 00:12:28 +00:00
Matthew Kennedy 51a23364e2
Odd cylinder engine wasted spark (#479)
* allow wasted spark spin-up

* allow firing without phase sync on odd cyl engines

* support odd cyl wasted spark

* changelog

* unit test it

* wow, it's easy to support odd-fire too
2024-08-31 02:22:31 -07:00
Matthew Kennedy 397e3dcd04 hoist dwellMs/angle/sparkangle 2024-08-31 00:44:21 -07:00
Matthew Kennedy 3fc42222cc hoist dwell check out of loop 2024-08-31 00:37:27 -07:00
GitHub gen-configs Action 7593cd61d4 Auto-generated configs and docs 2024-08-31 05:50:02 +00:00
Matthew Kennedy 5c614ca945
all ECUs can use big blocking factor! (#474)
* all ECUs can use big blocking factor!

* reclaim 100 bytes of blocking factor

* fits on ethernet f4

* ch-ch-ch-ch-changelog

* bump it a little
2024-08-30 22:48:37 -07:00
GitHub set-date Action 97f26196fe Update date 2024-08-31 00:10:11 +00:00
GitHub gen-configs Action 9f4c10450d Auto-generated configs and docs 2024-08-30 17:50:07 +00:00
Nathan Schulte 316915ec4c
more Toyota gear ratios (#477)
* add Aisin AR5 transmission gear ratios

GM Pontiac Solstice/Saturn Sky MA-5

* add Toyota transmission gear ratios

* round gear ratios to fit TS field
2024-08-30 10:48:50 -07:00
Matthew Kennedy ebe5f6ab54 changelog 2024-08-30 10:46:21 -07:00
Matthew Kennedy 8591dd1336 Merge branch 'master' of https://github.com/fome-tech/fome-fw 2024-08-30 10:45:09 -07:00
GitHub gen-configs Action dca081a907 Auto-generated configs and docs 2024-08-30 07:20:25 +00:00
Matthew Kennedy a269b9af38 additional aux linear sensors #476 2024-08-30 00:18:54 -07:00
Matthew Kennedy 227723484c useless comment 2024-08-29 22:40:53 -07:00
GitHub gen-configs Action 03ac7f15f4 Auto-generated configs and docs 2024-08-30 05:39:45 +00:00
Matthew Kennedy 761efd862c
MAP avg uses engine module callbacks (#475)
* use engine module callbacks

* happy tests

* happy small-can-board

* interact with map avg via module

* simplify map avg init

* tweaks

* omit module to disable it instead!

* unnecessary guard

* minor cleanups

* unnecessary branch - lookups for these tables are fine at 0 rpm

* oop
2024-08-29 22:38:30 -07:00
GitHub set-date Action e41f3bb968 Update date 2024-08-30 00:10:18 +00:00
Matthew Kennedy 12321d4325 map averaging includes 2024-08-29 13:29:53 -07:00
Matthew Kennedy 6fc52a1430 move map averaging to module 2024-08-29 13:26:57 -07:00
GitHub gen-configs Action 3bbd89aa0d Auto-generated configs and docs 2024-08-29 18:25:18 +00:00
Matthew Kennedy 77c5a150ee fix small can board 2024-08-29 11:23:58 -07:00
GitHub set-date Action 3843218389 Update date 2024-08-29 00:10:22 +00:00
GitHub gen-configs Action 2bf0fa43d1 Auto-generated configs and docs 2024-08-28 10:05:11 +00:00
Matthew Kennedy 9123bae316 there's not really a reason for mainUnusedEnd 2024-08-28 03:02:09 -07:00
Matthew Kennedy 6af46b59a9 MAP averaging can use common math for cyl offset calc 2024-08-28 02:58:21 -07:00
Matthew Kennedy 75a50695c6 extend engineModules.apply_all to onEnginePhase 2024-08-28 02:26:16 -07:00
mi-hol 586bc06f81
Create benelli.cpp 2024-02-14 00:32:53 +01:00
mi-hol 1aa0c1cf06
Update benelli.h 2024-02-14 00:19:20 +01:00
mi-hol 6a27d5a3d8
Create benelli.h 2024-02-14 00:04:12 +01:00
mi-hol 6711a0b0bb
Update HighRevTest.java 2024-02-13 23:13:14 +01:00
mi-hol d5666edd53
Update engine_types.h 2024-02-13 23:11:46 +01:00
mi-hol e62d813fde
Update HighRevTest.java 2024-02-13 22:37:58 +01:00
87 changed files with 28976 additions and 30808 deletions

View File

@ -41,7 +41,9 @@ or
- Add 1-5-4-8-3-7-2-6 and 1-6-5-10-2-7-3-8-4-9 firing orders
- Console command `set_sensor_mock` now accepts a sensor by name, instead of index. Example: `set_sensor_mock CLT 85.5`
- TunerStudio UI improvements (#436, etc)
- Dropdown selector for popular gearbox ratios (#358, thank you @alrijleh!)
- Dropdown selector for popular gearbox ratios (#358, thank you @alrijleh and @nmschulte!)
- Add two more aux linear sensors #476
- Support wasted spark on odd cylinder count 4-stroke engines. Improves startup and allows running without a cam sensor!
### Fixed
- Improve performance with Lua CAN reception of a high volume of frames
@ -52,6 +54,7 @@ or
- Fix decel fuel cutoff (DFCO) on engines without a MAP sensor #457
- Automatic calculation of knock sense frequency based on cylinder bore #379
- Removed MAP sampling option that can result in inaccurate MAP sensor readings
- Improve TunerStudio performance on STM32F4-based ECUs #474
## December 2023 Release

View File

@ -3,5 +3,3 @@
! Atlas is guaranteed dual bank flash, so there's no delay when sending the burn command.
! All commands should complete effectively instantly.
#define TS_BLOCK_READ_TIMEOUT 250
#define BLOCKING_FACTOR 1500

View File

@ -17,11 +17,12 @@ DDEFS += -DEFI_SHAFT_POSITION_INPUT=FALSE
DDEFS += -DEFI_ALTERNATOR_CONTROL=FALSE
DDEFS += -DEFI_VVT_PID=FALSE
DDEFS += -DEFI_EMULATE_POSITION_SENSORS=FALSE
DDEFS += -DEFI_MAP_AVERAGING=FALSE
DDEFS += -DEFI_HPFP=FALSE
DDEFS += -DEFI_TOOTH_LOGGER=FALSE
DDEFS += -DRAM_UNUSED_SIZE=100
NO_MAP_AVERAGING = yes
DDEFS += -DHW_SMALL_CAN_BOARD=1
#Mass Storage

View File

@ -1 +0,0 @@
#define BLOCKING_FACTOR 1500

View File

@ -23,4 +23,3 @@
#define show_Proteus_presets true
#define LUA_SCRIPT_SIZE 12000
#define BLOCKING_FACTOR 1500

View File

@ -0,0 +1,137 @@
/*
* @file benelli.cpp
*
* set engine_type 33
*
* @date Feb 13, 2024
* @author Michael Holzer, (c) 2024
*/
#include "pch.h"
#include "table_helper.h"
#include "electronic_throttle.h"
#include "mre_meta.h"
#include "defaults.h"
#include "benelli.h"
#include "custom_engine.h"
void setMreConfiguration() {
engineConfiguration->afr.hwChannel = MRE_IN_ANALOG_VOLT_10;
engineConfiguration->tps1_2AdcChannel = MRE_IN_ANALOG_VOLT_9;
// EFI_ADC_7: "31 - AN volt 3" - PA7
// 36 - AN volt 8
setPPSInputs(MRE_IN_ANALOG_VOLT_3, MRE_IN_ANALOG_VOLT_8);
// "26 - AN volt 2"
engineConfiguration->highPressureFuel.hwChannel = MRE_IN_ANALOG_VOLT_2;
// "19 - AN volt 4"
engineConfiguration->lowPressureFuel.hwChannel = EFI_ADC_12;
engineConfiguration->isSdCardEnabled = false;
engineConfiguration->mc33816spiDevice = SPI_DEVICE_3;
// RED
engineConfiguration->spi3mosiPin = Gpio::C12;
// YELLOW
engineConfiguration->spi3misoPin = Gpio::C11;
// BROWN
engineConfiguration->spi3sckPin = Gpio::C10;
engineConfiguration->sdCardCsPin = Gpio::Unassigned;
engineConfiguration->is_enabled_spi_3 = true;
// J8 orange
engineConfiguration->mc33816_cs = Gpio::B8;
// J8 Grey
engineConfiguration->mc33816_rstb = Gpio::A15;
// J8 Dark BLUE
engineConfiguration->mc33816_driven = Gpio::B9;
// J9 violet
engineConfiguration->mc33816_flag0 = Gpio::C13;
// J10 Dark BLUE
engineConfiguration->injectionPins[0] = Gpio::E6;
// J11 green
engineConfiguration->injectionPins[1] = Gpio::E5;
// J18 grey
engineConfiguration->injectionPins[2] = Gpio::B7;
// J6 white
engineConfiguration->injectionPins[3] = Gpio::E0;
gppwm_channel *lowPressureFuelPumpControl = &engineConfiguration->gppwm[1];
// "42 - Injector 4", somehow GP4 did not work? not enough current? not happy with diode?
lowPressureFuelPumpControl->pin = MRE_INJ_4;
gppwm_channel *coolantControl = &engineConfiguration->gppwm[0];
coolantControl->pin = MRE_LS_2;
// "7 - Lowside 1"
//engineConfiguration->hpfpValvePin = MRE_LS_1;
engineConfiguration->hpfpValvePin = Gpio::B10; // AUX J13
#endif /* HW_MICRO_RUSEFI */
}
void set_Mre_Benelli_Tre() {
setMreConfiguration();
setWholeTimingTable_d(20);
// set cranking_timing_angle 10
engineConfiguration->crankingTimingAngle = 10; // ToDo:verify
// set global_trigger_offset_angle 93
engineConfiguration->globalTriggerAngleOffset = 93; // ToDo:verify
setCrankOperationMode();
engineConfiguration->trigger.type = trigger_type_e::TT_Benelli_Tre;
engineConfiguration->mafAdcChannel = EFI_ADC_1; // ToDo:verify
//Base engine setting
engineConfiguration->cylindersCount = 3;
engineConfiguration->firingOrder = FO_1_2_3; // ToDo:verify
engineConfiguration->injector.flow = 320; // 30lb/h // ToDo:verify
// set algorithm 3
setAlgorithm(LM_SPEED_DENSITY);
engineConfiguration->map.sensor.type = MT_GM_3_BAR; // ToDo:verify
engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS;
engineConfiguration->ignitionPins[0] = Gpio::E14; // ToDo:verify
engineConfiguration->ignitionPins[1] = Gpio::Unassigned;
engineConfiguration->ignitionPins[2] = Gpio::Unassigned;
engineConfiguration->ignitionPins[3] = Gpio::Unassigned;
engineConfiguration->wastegatePositionSensor = EFI_ADC_4; // PA4 // ToDo:verify
float mapRange = 110; // ToDo:verify
setEgoSensor(ES_PLX); // ToDo:verify
setFuelTablesLoadBin(20, mapRange); // ToDo:verify
setLinearCurve(config->ignitionLoadBins, 20, mapRange);
engineConfiguration->isSdCardEnabled = false;
engineConfiguration->tpsMin = 0;
engineConfiguration->tpsMax = 100;
}
void set_Benelli_3_cyl_900ccm() {
engineConfiguration->displacement = 0.9;
}
void set_Benelli_3_cyl_1130ccm() {
engineConfiguration->displacement = 1.13;
}

View File

@ -0,0 +1,15 @@
/*
* @file benelli.h
*
* @date Feb 13, 2024
* @author Michael Holzer, (c) 2024
*/
#pragma once
#include "engine_configuration.h"
void set_Mre_Benelli_Tre();
void set_Benelli_3_cyl_900ccm();
void set_Benelli_3_cyl_1130ccm();

View File

@ -262,7 +262,7 @@
#if MODULE_ETHERNET_CONSOLE
// F4 ethernet needs some extra space
#define LUA_USER_HEAP 40000
#define LUA_USER_HEAP 25000
#else // MODULE_ETHERNET_CONSOLE
#define LUA_USER_HEAP 50000
#endif
@ -302,10 +302,6 @@
//#define EFI_MALFUNCTION_INDICATOR FALSE
#endif
#ifndef EFI_MAP_AVERAGING
#define EFI_MAP_AVERAGING TRUE
#endif
// todo: most of this should become configurable
// todo: switch to continuous ADC conversion for fast ADC?

View File

@ -249,6 +249,8 @@ int16_t rpmAcceleration;dRPM;"RPM acceleration",1, 0, 0, 5, 2
float auxLinear1;@@GAUGE_NAME_AUX_LINEAR_1@@;"", 1, 0, 0, 0, 2
float auxLinear2;@@GAUGE_NAME_AUX_LINEAR_2@@;"", 1, 0, 0, 0, 2
float auxLinear3;@@GAUGE_NAME_AUX_LINEAR_3@@;"", 1, 0, 0, 0, 2
float auxLinear4;@@GAUGE_NAME_AUX_LINEAR_4@@;"", 1, 0, 0, 0, 2
uint16_t autoscale fallbackMap;;"kPa", 0.1, 0, 0, 1000, 1
@ -371,6 +373,4 @@ float mapFast
uint16_t mapAveragingSamples
uint8_t[12 iterate] mapPerCylinder;;"kPa", 1, 0, 0, 0, 0
uint8_t[102 iterate] unusedAtTheEnd;;"",1, 0, 0, 0, 0
end_struct

View File

@ -532,258 +532,264 @@ struct output_channels_s {
// Aux linear #2
// offset 336
float auxLinear2 = (float)0;
// kPa
// Aux linear #3
// offset 340
float auxLinear3 = (float)0;
// Aux linear #4
// offset 344
float auxLinear4 = (float)0;
// kPa
// offset 348
scaled_channel<uint16_t, 10, 1> fallbackMap = (uint16_t)0;
// Instant MAP
// kPa
// offset 342
// offset 350
scaled_channel<uint16_t, 30, 1> instantMAPValue = (uint16_t)0;
// us
// offset 344
// offset 352
uint16_t maxLockedDuration = (uint16_t)0;
// CAN: Tx OK
// offset 346
// offset 354
uint16_t canWriteOk = (uint16_t)0;
// CAN: Tx err
// offset 348
uint16_t canWriteNotOk = (uint16_t)0;
// offset 350
uint8_t alignmentFill_at_350[2];
// offset 352
uint32_t triggerPrimaryFall = (uint32_t)0;
// offset 356
uint32_t triggerPrimaryRise = (uint32_t)0;
uint16_t canWriteNotOk = (uint16_t)0;
// offset 358
uint8_t alignmentFill_at_358[2];
// offset 360
uint32_t triggerSecondaryFall = (uint32_t)0;
uint32_t triggerPrimaryFall = (uint32_t)0;
// offset 364
uint32_t triggerSecondaryRise = (uint32_t)0;
uint32_t triggerPrimaryRise = (uint32_t)0;
// offset 368
uint32_t triggerVvtFall = (uint32_t)0;
uint32_t triggerSecondaryFall = (uint32_t)0;
// offset 372
uint32_t triggerVvtRise = (uint32_t)0;
uint32_t triggerSecondaryRise = (uint32_t)0;
// offset 376
uint32_t triggerVvtFall = (uint32_t)0;
// offset 380
uint32_t triggerVvtRise = (uint32_t)0;
// offset 384
uint8_t starterState = (uint8_t)0;
// offset 377
// offset 385
uint8_t starterRelayDisable = (uint8_t)0;
// Ign: Multispark count
// offset 378
// offset 386
uint8_t multiSparkCounter = (uint8_t)0;
// offset 379
// offset 387
uint8_t extiOverflowCount = (uint8_t)0;
// offset 380
// offset 388
pid_status_s alternatorStatus;
// offset 396
// offset 404
pid_status_s idleStatus;
// offset 412
// offset 420
pid_status_s etbStatus;
// offset 428
// offset 436
pid_status_s boostStatus;
// offset 444
// offset 452
pid_status_s wastegateDcStatus;
// offset 460
// offset 468
pid_status_s vvtStatus[4];
// Aux speed 1
// s
// offset 524
// offset 532
uint16_t auxSpeed1 = (uint16_t)0;
// Aux speed 2
// s
// offset 526
// offset 534
uint16_t auxSpeed2 = (uint16_t)0;
// TCU: Input Shaft Speed
// RPM
// offset 528
// offset 536
uint16_t ISSValue = (uint16_t)0;
// V
// offset 530
// offset 538
scaled_channel<int16_t, 1000, 1> rawAnalogInput[8];
// GPPWM Output
// %
// offset 546
// offset 554
scaled_channel<uint8_t, 2, 1> gppwmOutput[4];
// offset 550
int16_t gppwmXAxis[4];
// offset 558
int16_t gppwmXAxis[4];
// offset 566
scaled_channel<int16_t, 10, 1> gppwmYAxis[4];
// V
// offset 566
// offset 574
scaled_channel<int16_t, 1000, 1> rawBattery = (int16_t)0;
// offset 568
// offset 576
scaled_channel<int16_t, 10, 1> ignBlendParameter[4];
// %
// offset 576
// offset 584
scaled_channel<uint8_t, 2, 1> ignBlendBias[4];
// deg
// offset 580
scaled_channel<int16_t, 100, 1> ignBlendOutput[4];
// offset 588
scaled_channel<int16_t, 100, 1> ignBlendOutput[4];
// offset 596
scaled_channel<int16_t, 10, 1> veBlendParameter[4];
// %
// offset 596
// offset 604
scaled_channel<uint8_t, 2, 1> veBlendBias[4];
// %
// offset 600
scaled_channel<int16_t, 100, 1> veBlendOutput[4];
// offset 608
scaled_channel<int16_t, 100, 1> veBlendOutput[4];
// offset 616
scaled_channel<int16_t, 10, 1> boostOpenLoopBlendParameter[2];
// %
// offset 612
// offset 620
scaled_channel<uint8_t, 2, 1> boostOpenLoopBlendBias[2];
// %
// offset 614
// offset 622
int8_t boostOpenLoopBlendOutput[2];
// offset 616
// offset 624
scaled_channel<int16_t, 10, 1> boostClosedLoopBlendParameter[2];
// %
// offset 620
// offset 628
scaled_channel<uint8_t, 2, 1> boostClosedLoopBlendBias[2];
// %
// offset 622
// offset 630
scaled_channel<int16_t, 10, 1> boostClosedLoopBlendOutput[2];
// offset 626
uint8_t alignmentFill_at_626[2];
// offset 628 bit 0
// offset 634
uint8_t alignmentFill_at_634[2];
// offset 636 bit 0
bool coilState1 : 1 {};
// offset 628 bit 1
// offset 636 bit 1
bool coilState2 : 1 {};
// offset 628 bit 2
// offset 636 bit 2
bool coilState3 : 1 {};
// offset 628 bit 3
// offset 636 bit 3
bool coilState4 : 1 {};
// offset 628 bit 4
// offset 636 bit 4
bool coilState5 : 1 {};
// offset 628 bit 5
// offset 636 bit 5
bool coilState6 : 1 {};
// offset 628 bit 6
// offset 636 bit 6
bool coilState7 : 1 {};
// offset 628 bit 7
// offset 636 bit 7
bool coilState8 : 1 {};
// offset 628 bit 8
// offset 636 bit 8
bool coilState9 : 1 {};
// offset 628 bit 9
// offset 636 bit 9
bool coilState10 : 1 {};
// offset 628 bit 10
// offset 636 bit 10
bool coilState11 : 1 {};
// offset 628 bit 11
// offset 636 bit 11
bool coilState12 : 1 {};
// offset 628 bit 12
// offset 636 bit 12
bool injectorState1 : 1 {};
// offset 628 bit 13
// offset 636 bit 13
bool injectorState2 : 1 {};
// offset 628 bit 14
// offset 636 bit 14
bool injectorState3 : 1 {};
// offset 628 bit 15
// offset 636 bit 15
bool injectorState4 : 1 {};
// offset 628 bit 16
// offset 636 bit 16
bool injectorState5 : 1 {};
// offset 628 bit 17
// offset 636 bit 17
bool injectorState6 : 1 {};
// offset 628 bit 18
// offset 636 bit 18
bool injectorState7 : 1 {};
// offset 628 bit 19
// offset 636 bit 19
bool injectorState8 : 1 {};
// offset 628 bit 20
// offset 636 bit 20
bool injectorState9 : 1 {};
// offset 628 bit 21
// offset 636 bit 21
bool injectorState10 : 1 {};
// offset 628 bit 22
// offset 636 bit 22
bool injectorState11 : 1 {};
// offset 628 bit 23
// offset 636 bit 23
bool injectorState12 : 1 {};
// offset 628 bit 24
bool unusedBit_628_24 : 1 {};
// offset 628 bit 25
bool unusedBit_628_25 : 1 {};
// offset 628 bit 26
bool unusedBit_628_26 : 1 {};
// offset 628 bit 27
bool unusedBit_628_27 : 1 {};
// offset 628 bit 28
bool unusedBit_628_28 : 1 {};
// offset 628 bit 29
bool unusedBit_628_29 : 1 {};
// offset 628 bit 30
bool unusedBit_628_30 : 1 {};
// offset 628 bit 31
bool unusedBit_628_31 : 1 {};
// offset 632
// offset 636 bit 24
bool unusedBit_636_24 : 1 {};
// offset 636 bit 25
bool unusedBit_636_25 : 1 {};
// offset 636 bit 26
bool unusedBit_636_26 : 1 {};
// offset 636 bit 27
bool unusedBit_636_27 : 1 {};
// offset 636 bit 28
bool unusedBit_636_28 : 1 {};
// offset 636 bit 29
bool unusedBit_636_29 : 1 {};
// offset 636 bit 30
bool unusedBit_636_30 : 1 {};
// offset 636 bit 31
bool unusedBit_636_31 : 1 {};
// offset 640
uint32_t outputRequestPeriod = (uint32_t)0;
// offset 636
// offset 644
float mapFast = (float)0;
// Lua: Gauge
// value
// offset 640
// offset 648
float luaGauges[2];
// V
// offset 648
// offset 656
scaled_channel<uint16_t, 1000, 1> rawMaf2 = (uint16_t)0;
// MAF #2
// kg/h
// offset 650
// offset 658
scaled_channel<uint16_t, 10, 1> mafMeasured2 = (uint16_t)0;
// offset 652
// offset 660
uint16_t schedulingUsedCount = (uint16_t)0;
// %
// offset 654
// offset 662
scaled_channel<uint16_t, 100, 1> Gego = (uint16_t)0;
// count
// offset 656
// offset 664
uint16_t testBenchIter = (uint16_t)0;
// deg C
// offset 658
// offset 666
scaled_channel<int16_t, 100, 1> oilTemp = (int16_t)0;
// deg C
// offset 660
// offset 668
scaled_channel<int16_t, 100, 1> fuelTemp = (int16_t)0;
// deg C
// offset 662
// offset 670
scaled_channel<int16_t, 100, 1> ambientTemp = (int16_t)0;
// deg C
// offset 664
// offset 672
scaled_channel<int16_t, 100, 1> compressorDischargeTemp = (int16_t)0;
// kPa
// offset 666
// offset 674
scaled_channel<uint16_t, 30, 1> compressorDischargePressure = (uint16_t)0;
// kPa
// offset 668
// offset 676
scaled_channel<uint16_t, 30, 1> throttleInletPressure = (uint16_t)0;
// sec
// offset 670
// offset 678
uint16_t ignitionOnTime = (uint16_t)0;
// sec
// offset 672
// offset 680
uint16_t engineRunTime = (uint16_t)0;
// km
// offset 674
// offset 682
scaled_channel<uint16_t, 10, 1> distanceTraveled = (uint16_t)0;
// Air/Fuel Ratio (Gas Scale)
// AFR
// offset 676
// offset 684
scaled_channel<uint16_t, 1000, 1> afrGasolineScale = (uint16_t)0;
// Air/Fuel Ratio 2 (Gas Scale)
// AFR
// offset 678
// offset 686
scaled_channel<uint16_t, 1000, 1> afr2GasolineScale = (uint16_t)0;
// Fuel: Last inj pulse width stg 2
// ms
// offset 680
// offset 688
scaled_channel<uint16_t, 300, 1> actualLastInjectionStage2 = (uint16_t)0;
// Fuel: injector duty cycle stage 2
// %
// offset 682
// offset 690
scaled_channel<uint8_t, 2, 1> injectorDutyCycleStage2 = (uint8_t)0;
// offset 683
// offset 691
uint8_t pad = (uint8_t)0;
// offset 684
// offset 692
uint16_t mapAveragingSamples = (uint16_t)0;
// kPa
// offset 686
// offset 694
uint8_t mapPerCylinder[12];
// offset 698
uint8_t unusedAtTheEnd[102];
// offset 706
uint8_t alignmentFill_at_706[2];
};
static_assert(sizeof(output_channels_s) == 800);
static_assert(sizeof(output_channels_s) == 708);
static_assert(offsetof(output_channels_s, RPMValue) == 4);
static_assert(offsetof(output_channels_s, rpmAcceleration) == 6);
static_assert(offsetof(output_channels_s, speedToRpmRatio) == 8);
@ -906,64 +912,65 @@ static_assert(offsetof(output_channels_s, vssEdgeCounter) == 324);
static_assert(offsetof(output_channels_s, issEdgeCounter) == 328);
static_assert(offsetof(output_channels_s, auxLinear1) == 332);
static_assert(offsetof(output_channels_s, auxLinear2) == 336);
static_assert(offsetof(output_channels_s, fallbackMap) == 340);
static_assert(offsetof(output_channels_s, instantMAPValue) == 342);
static_assert(offsetof(output_channels_s, maxLockedDuration) == 344);
static_assert(offsetof(output_channels_s, canWriteOk) == 346);
static_assert(offsetof(output_channels_s, canWriteNotOk) == 348);
static_assert(offsetof(output_channels_s, triggerPrimaryFall) == 352);
static_assert(offsetof(output_channels_s, triggerPrimaryRise) == 356);
static_assert(offsetof(output_channels_s, triggerSecondaryFall) == 360);
static_assert(offsetof(output_channels_s, triggerSecondaryRise) == 364);
static_assert(offsetof(output_channels_s, triggerVvtFall) == 368);
static_assert(offsetof(output_channels_s, triggerVvtRise) == 372);
static_assert(offsetof(output_channels_s, starterState) == 376);
static_assert(offsetof(output_channels_s, starterRelayDisable) == 377);
static_assert(offsetof(output_channels_s, multiSparkCounter) == 378);
static_assert(offsetof(output_channels_s, extiOverflowCount) == 379);
static_assert(offsetof(output_channels_s, auxSpeed1) == 524);
static_assert(offsetof(output_channels_s, auxSpeed2) == 526);
static_assert(offsetof(output_channels_s, ISSValue) == 528);
static_assert(offsetof(output_channels_s, rawAnalogInput) == 530);
static_assert(offsetof(output_channels_s, gppwmOutput) == 546);
static_assert(offsetof(output_channels_s, gppwmXAxis) == 550);
static_assert(offsetof(output_channels_s, gppwmYAxis) == 558);
static_assert(offsetof(output_channels_s, rawBattery) == 566);
static_assert(offsetof(output_channels_s, ignBlendParameter) == 568);
static_assert(offsetof(output_channels_s, ignBlendBias) == 576);
static_assert(offsetof(output_channels_s, ignBlendOutput) == 580);
static_assert(offsetof(output_channels_s, veBlendParameter) == 588);
static_assert(offsetof(output_channels_s, veBlendBias) == 596);
static_assert(offsetof(output_channels_s, veBlendOutput) == 600);
static_assert(offsetof(output_channels_s, boostOpenLoopBlendParameter) == 608);
static_assert(offsetof(output_channels_s, boostOpenLoopBlendBias) == 612);
static_assert(offsetof(output_channels_s, boostOpenLoopBlendOutput) == 614);
static_assert(offsetof(output_channels_s, boostClosedLoopBlendParameter) == 616);
static_assert(offsetof(output_channels_s, boostClosedLoopBlendBias) == 620);
static_assert(offsetof(output_channels_s, boostClosedLoopBlendOutput) == 622);
static_assert(offsetof(output_channels_s, outputRequestPeriod) == 632);
static_assert(offsetof(output_channels_s, mapFast) == 636);
static_assert(offsetof(output_channels_s, luaGauges) == 640);
static_assert(offsetof(output_channels_s, rawMaf2) == 648);
static_assert(offsetof(output_channels_s, mafMeasured2) == 650);
static_assert(offsetof(output_channels_s, schedulingUsedCount) == 652);
static_assert(offsetof(output_channels_s, Gego) == 654);
static_assert(offsetof(output_channels_s, testBenchIter) == 656);
static_assert(offsetof(output_channels_s, oilTemp) == 658);
static_assert(offsetof(output_channels_s, fuelTemp) == 660);
static_assert(offsetof(output_channels_s, ambientTemp) == 662);
static_assert(offsetof(output_channels_s, compressorDischargeTemp) == 664);
static_assert(offsetof(output_channels_s, compressorDischargePressure) == 666);
static_assert(offsetof(output_channels_s, throttleInletPressure) == 668);
static_assert(offsetof(output_channels_s, ignitionOnTime) == 670);
static_assert(offsetof(output_channels_s, engineRunTime) == 672);
static_assert(offsetof(output_channels_s, distanceTraveled) == 674);
static_assert(offsetof(output_channels_s, afrGasolineScale) == 676);
static_assert(offsetof(output_channels_s, afr2GasolineScale) == 678);
static_assert(offsetof(output_channels_s, actualLastInjectionStage2) == 680);
static_assert(offsetof(output_channels_s, injectorDutyCycleStage2) == 682);
static_assert(offsetof(output_channels_s, pad) == 683);
static_assert(offsetof(output_channels_s, mapAveragingSamples) == 684);
static_assert(offsetof(output_channels_s, mapPerCylinder) == 686);
static_assert(offsetof(output_channels_s, unusedAtTheEnd) == 698);
static_assert(offsetof(output_channels_s, auxLinear3) == 340);
static_assert(offsetof(output_channels_s, auxLinear4) == 344);
static_assert(offsetof(output_channels_s, fallbackMap) == 348);
static_assert(offsetof(output_channels_s, instantMAPValue) == 350);
static_assert(offsetof(output_channels_s, maxLockedDuration) == 352);
static_assert(offsetof(output_channels_s, canWriteOk) == 354);
static_assert(offsetof(output_channels_s, canWriteNotOk) == 356);
static_assert(offsetof(output_channels_s, triggerPrimaryFall) == 360);
static_assert(offsetof(output_channels_s, triggerPrimaryRise) == 364);
static_assert(offsetof(output_channels_s, triggerSecondaryFall) == 368);
static_assert(offsetof(output_channels_s, triggerSecondaryRise) == 372);
static_assert(offsetof(output_channels_s, triggerVvtFall) == 376);
static_assert(offsetof(output_channels_s, triggerVvtRise) == 380);
static_assert(offsetof(output_channels_s, starterState) == 384);
static_assert(offsetof(output_channels_s, starterRelayDisable) == 385);
static_assert(offsetof(output_channels_s, multiSparkCounter) == 386);
static_assert(offsetof(output_channels_s, extiOverflowCount) == 387);
static_assert(offsetof(output_channels_s, auxSpeed1) == 532);
static_assert(offsetof(output_channels_s, auxSpeed2) == 534);
static_assert(offsetof(output_channels_s, ISSValue) == 536);
static_assert(offsetof(output_channels_s, rawAnalogInput) == 538);
static_assert(offsetof(output_channels_s, gppwmOutput) == 554);
static_assert(offsetof(output_channels_s, gppwmXAxis) == 558);
static_assert(offsetof(output_channels_s, gppwmYAxis) == 566);
static_assert(offsetof(output_channels_s, rawBattery) == 574);
static_assert(offsetof(output_channels_s, ignBlendParameter) == 576);
static_assert(offsetof(output_channels_s, ignBlendBias) == 584);
static_assert(offsetof(output_channels_s, ignBlendOutput) == 588);
static_assert(offsetof(output_channels_s, veBlendParameter) == 596);
static_assert(offsetof(output_channels_s, veBlendBias) == 604);
static_assert(offsetof(output_channels_s, veBlendOutput) == 608);
static_assert(offsetof(output_channels_s, boostOpenLoopBlendParameter) == 616);
static_assert(offsetof(output_channels_s, boostOpenLoopBlendBias) == 620);
static_assert(offsetof(output_channels_s, boostOpenLoopBlendOutput) == 622);
static_assert(offsetof(output_channels_s, boostClosedLoopBlendParameter) == 624);
static_assert(offsetof(output_channels_s, boostClosedLoopBlendBias) == 628);
static_assert(offsetof(output_channels_s, boostClosedLoopBlendOutput) == 630);
static_assert(offsetof(output_channels_s, outputRequestPeriod) == 640);
static_assert(offsetof(output_channels_s, mapFast) == 644);
static_assert(offsetof(output_channels_s, luaGauges) == 648);
static_assert(offsetof(output_channels_s, rawMaf2) == 656);
static_assert(offsetof(output_channels_s, mafMeasured2) == 658);
static_assert(offsetof(output_channels_s, schedulingUsedCount) == 660);
static_assert(offsetof(output_channels_s, Gego) == 662);
static_assert(offsetof(output_channels_s, testBenchIter) == 664);
static_assert(offsetof(output_channels_s, oilTemp) == 666);
static_assert(offsetof(output_channels_s, fuelTemp) == 668);
static_assert(offsetof(output_channels_s, ambientTemp) == 670);
static_assert(offsetof(output_channels_s, compressorDischargeTemp) == 672);
static_assert(offsetof(output_channels_s, compressorDischargePressure) == 674);
static_assert(offsetof(output_channels_s, throttleInletPressure) == 676);
static_assert(offsetof(output_channels_s, ignitionOnTime) == 678);
static_assert(offsetof(output_channels_s, engineRunTime) == 680);
static_assert(offsetof(output_channels_s, distanceTraveled) == 682);
static_assert(offsetof(output_channels_s, afrGasolineScale) == 684);
static_assert(offsetof(output_channels_s, afr2GasolineScale) == 686);
static_assert(offsetof(output_channels_s, actualLastInjectionStage2) == 688);
static_assert(offsetof(output_channels_s, injectorDutyCycleStage2) == 690);
static_assert(offsetof(output_channels_s, pad) == 691);
static_assert(offsetof(output_channels_s, mapAveragingSamples) == 692);
static_assert(offsetof(output_channels_s, mapPerCylinder) == 694);

View File

@ -42,6 +42,9 @@ static Timer requestPeriodTimer;
* Gauges refresh
*/
void TunerStudio::cmdOutputChannels(TsChannelBase* tsChannel, uint16_t offset, uint16_t count) {
// Assert that the entire output channels block will fit in a single TS transaction
static_assert(BLOCKING_FACTOR >= TS_TOTAL_OUTPUT_SIZE + 10);
if (offset + count > TS_TOTAL_OUTPUT_SIZE) {
efiPrintf("TS: Version Mismatch? Too much outputs requested %d/%d/%d", offset, count,
sizeof(TunerStudioOutputChannels));
@ -49,10 +52,8 @@ void TunerStudio::cmdOutputChannels(TsChannelBase* tsChannel, uint16_t offset, u
return;
}
if (offset < BLOCKING_FACTOR) {
engine->outputChannels.outputRequestPeriod
= 1e6 * requestPeriodTimer.getElapsedSecondsAndReset(getTimeNowNt());
}
engine->outputChannels.outputRequestPeriod
= 1e6 * requestPeriodTimer.getElapsedSecondsAndReset(getTimeNowNt());
tsState.outputChannelsCommandCounter++;
updateTunerStudioState();

View File

@ -69,10 +69,6 @@ extern bool main_loop_started;
#include "flash_main.h"
#endif
#if EFI_MAP_AVERAGING
#include "map_averaging.h"
#endif
#if (BOARD_TLE8888_COUNT > 0)
#include "tle8888.h"
#endif /* BOARD_TLE8888_COUNT */
@ -391,6 +387,8 @@ static void updatePressures() {
engine->outputChannels.auxLinear1 = Sensor::getOrZero(SensorType::AuxLinear1);
engine->outputChannels.auxLinear2 = Sensor::getOrZero(SensorType::AuxLinear2);
engine->outputChannels.auxLinear3 = Sensor::getOrZero(SensorType::AuxLinear3);
engine->outputChannels.auxLinear4 = Sensor::getOrZero(SensorType::AuxLinear4);
}
static void updateMiscSensors() {

View File

@ -6,7 +6,6 @@
#include "thread_controller.h"
#include "tunerstudio.h"
// Assert that the USB tx/rx buffers are large enough to fit one full packet
static_assert(SERIAL_USB_BUFFERS_SIZE >= BLOCKING_FACTOR + 10);

View File

@ -58,6 +58,10 @@ expected<float> readGppwmChannel(gppwm_channel_e channel) {
return Sensor::get(SensorType::AuxLinear1);
case GPPWM_AuxLinear2:
return Sensor::get(SensorType::AuxLinear2);
case GPPWM_AuxLinear3:
return Sensor::get(SensorType::AuxLinear3);
case GPPWM_AuxLinear4:
return Sensor::get(SensorType::AuxLinear4);
case GPPWM_GppwmOutput1:
return (float)engine->outputChannels.gppwmOutput[0];
case GPPWM_GppwmOutput2:

View File

@ -333,6 +333,10 @@ case GPPWM_AuxLinear1:
return "GPPWM_AuxLinear1";
case GPPWM_AuxLinear2:
return "GPPWM_AuxLinear2";
case GPPWM_AuxLinear3:
return "GPPWM_AuxLinear3";
case GPPWM_AuxLinear4:
return "GPPWM_AuxLinear4";
case GPPWM_AuxTemp1:
return "GPPWM_AuxTemp1";
case GPPWM_AuxTemp2:

View File

@ -17,7 +17,6 @@
#include "speed_density.h"
#include "advance_map.h"
#include "map_averaging.h"
#include "perf_trace.h"
#include "backup_ram.h"
#include "idle_thread.h"
@ -467,10 +466,6 @@ injection_mode_e getCurrentInjectionMode() {
void Engine::periodicFastCallback() {
ScopePerf pc(PE::EnginePeriodicFastCallback);
#if EFI_MAP_AVERAGING
refreshMapAveragingPreCalc();
#endif
engineState.periodicFastCallback();
tachUpdate();

View File

@ -24,6 +24,8 @@ public:
*/
angle_t engineCycle;
bool useOddFireWastedSpark = false;
/**
* this is based on sensorChartMode and sensorSnifferRpmThreshold settings
*/

View File

@ -83,6 +83,8 @@ enum class engine_type_e : uint32_t {
VW_ABA = 32,
MRE_BENELLI_3_CYL = 33,
HELLEN_NA6 = 34,
CAMARO_4 = 35,
@ -207,7 +209,6 @@ enum class engine_type_e : uint32_t {
ET_UNUSED_17 = 17,
ET_UNUSED_13 = 13,
ET_UNUSED_15 = 15,
ET_UNUSED_33 = 33,
ET_UNUSED_43 = 43,
ET_UNUSED_57 = 57,
ET_UNUSED_61 = 61,

View File

@ -2069,7 +2069,7 @@ enum class ObdCode : uint16_t {
CUSTOM_ERR_MAP_START_ASSERT = 6690,
CUSTOM_ERR_MAP_AVG_OFFSET = 6691,
CUSTOM_ERR_MAP_CYL_OFFSET = 6692,
CUSTOM_ERR_6692 = 6692,
CUSTOM_ERR_PWM_DUTY_ASSERT = 6693,
CUSTOM_ERR_ZERO_CRANKING_FUEL = 6694,
CUSTOM_NULL_EXECUTOR = 6695,

View File

@ -527,6 +527,8 @@ typedef enum __attribute__ ((__packed__)) {
GPPWM_BaroPressure = 26,
GPPWM_Egt1 = 27,
GPPWM_Egt2 = 28,
GPPWM_AuxLinear3 = 29,
GPPWM_AuxLinear4 = 30,
} gppwm_channel_e;
typedef enum __attribute__ ((__packed__)) {

View File

@ -30,7 +30,6 @@ CONTROLLERS_SRC_CPP = \
$(CONTROLLERS_DIR)/system/timer/event_queue.cpp \
$(CONTROLLERS_DIR)/settings.cpp \
$(CONTROLLERS_DIR)/core/error_handling.cpp \
$(CONTROLLERS_DIR)/engine_cycle/map_averaging.cpp \
$(CONTROLLERS_DIR)/engine_cycle/high_pressure_fuel_pump.cpp \
$(CONTROLLERS_DIR)/engine_cycle/rpm_calculator.cpp \
$(CONTROLLERS_DIR)/engine_cycle/spark_logic.cpp \

View File

@ -25,4 +25,11 @@ public:
// Queried to determine whether this module needs a delayed shutoff, defaults to false
virtual bool needsDelayedShutoff() { return false; }
// Called on every successfully decoded tooth of the primary trigger
virtual void onEnginePhase(float /*rpm*/,
efitick_t /*edgeTimestamp*/,
angle_t /*currentPhase*/,
angle_t /*nextPhase*/)
{ }
};

View File

@ -1,2 +1,2 @@
#pragma once
#define VCS_DATE 20240827
#define VCS_DATE 20240901

View File

@ -32,7 +32,6 @@
#include "flash_main.h"
#include "bench_test.h"
#include "electronic_throttle.h"
#include "map_averaging.h"
#include "high_pressure_fuel_pump.h"
#include "malfunction_central.h"
#include "malfunction_indicator.h"
@ -514,11 +513,9 @@ void commonInitEngineController() {
initElectronicThrottle();
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
#if EFI_MAP_AVERAGING
if (engineConfiguration->isMapAveragingEnabled) {
initMapAveraging();
}
#endif /* EFI_MAP_AVERAGING */
#ifdef MODULE_MAP_AVERAGING
initMapAveraging();
#endif /* MODULE_MAP_AVERAGING */
#if EFI_BOOST_CONTROL
initBoostCtrl();

View File

@ -30,7 +30,6 @@
#if EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT
#include "spark_logic.h"
#include "map_averaging.h"
static void handleFuel(efitick_t nowNt, float currentPhase, float nextPhase) {
ScopePerf perf(PE::HandleFuel);
@ -83,13 +82,12 @@ void mainTriggerCallback(uint32_t trgEventIndex, efitick_t edgeTimestamp, angle_
// todo: check for 'trigger->is_synchnonized?'
return;
}
if (rpm == NOISY_RPM) {
if (rpm == NOISY_RPM || rpm > UNREALISTIC_RPM) {
warning(ObdCode::OBD_Crankshaft_Position_Sensor_A_Circuit_Malfunction, "noisy trigger");
return;
}
if (trgEventIndex == 0) {
if (getTriggerCentral()->checkIfTriggerConfigChanged()) {
getIgnitionEvents()->isReady = false; // we need to rebuild complete ignition schedule
getFuelSchedule()->isReady = false;
@ -101,25 +99,20 @@ void mainTriggerCallback(uint32_t trgEventIndex, efitick_t edgeTimestamp, angle_
}
}
engine->engineModules.apply_all([=](auto & m) {
m.onEnginePhase(rpm, edgeTimestamp, currentPhase, nextPhase);
});
/**
* For fuel we schedule start of injection based on trigger angle, and then inject for
* specified duration of time
*/
handleFuel(edgeTimestamp, currentPhase, nextPhase);
engine->module<TriggerScheduler>()->scheduleEventsUntilNextTriggerTooth(
rpm, edgeTimestamp, currentPhase, nextPhase);
/**
* For spark we schedule both start of coil charge and actual spark based on trigger angle
*/
onTriggerEventSparkLogic(rpm, edgeTimestamp, currentPhase, nextPhase);
#if !EFI_UNIT_TEST
#if EFI_MAP_AVERAGING
mapAveragingTriggerCallback(edgeTimestamp, currentPhase, nextPhase);
#endif /* EFI_MAP_AVERAGING */
#endif /* EFI_UNIT_TEST */
}
#endif /* EFI_ENGINE_CONTROL */

View File

@ -104,6 +104,14 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_
event->sparkAngle = sparkAngle;
auto ignitionMode = getCurrentIgnitionMode();
// On an odd cylinder (or odd fire) wasted spark engine, map outputs as if in sequential.
// During actual scheduling, the events just get scheduled every 360 deg instead
// of every 720 deg.
if (ignitionMode == IM_WASTED_SPARK && engine->engineState.useOddFireWastedSpark) {
ignitionMode = IM_INDIVIDUAL_COILS;
}
engine->outputChannels.currentIgnitionMode = static_cast<uint8_t>(ignitionMode);
const int index = getIgnitionPinForIndex(event->cylinderIndex, ignitionMode);
@ -309,20 +317,9 @@ void turnSparkPinHigh(IgnitionEvent *event) {
}
static void scheduleSparkEvent(bool limitedSpark, IgnitionEvent *event,
int rpm, efitick_t edgeTimestamp, float currentPhase, float nextPhase) {
int rpm, float dwellMs, float dwellAngle, float sparkAngle, efitick_t edgeTimestamp, float currentPhase, float nextPhase) {
angle_t sparkAngle = event->sparkAngle;
const floatms_t dwellMs = engine->ignitionState.sparkDwell;
if (std::isnan(dwellMs) || dwellMs <= 0) {
warning(ObdCode::CUSTOM_DWELL, "invalid dwell to handle: %.2f at %d", dwellMs, rpm);
return;
}
if (std::isnan(sparkAngle)) {
warning(ObdCode::CUSTOM_ADVANCE_SPARK, "NaN advance");
return;
}
float angleOffset = event->dwellAngle - currentPhase;
float angleOffset = dwellAngle - currentPhase;
if (angleOffset < 0) {
angleOffset += engine->engineState.engineCycle;
}
@ -457,6 +454,12 @@ void onTriggerEventSparkLogic(int rpm, efitick_t edgeTimestamp, float currentPha
engine->outputChannels.sparkCutReason = (int8_t)limitedSparkState.reason;
bool limitedSpark = !limitedSparkState.value;
const floatms_t dwellMs = engine->ignitionState.sparkDwell;
if (std::isnan(dwellMs) || dwellMs <= 0) {
warning(ObdCode::CUSTOM_DWELL, "invalid dwell to handle: %.2f at %d", dwellMs, rpm);
return;
}
if (!engine->ignitionEvents.isReady) {
prepareIgnitionSchedule();
}
@ -467,13 +470,48 @@ void onTriggerEventSparkLogic(int rpm, efitick_t edgeTimestamp, float currentPha
* See initializeIgnitionActions()
*/
// Only apply odd cylinder count wasted logic if:
// - odd cyl count
// - current mode is wasted spark
// - four stroke
bool enableOddCylinderWastedSpark =
engine->engineState.useOddFireWastedSpark
&& getCurrentIgnitionMode() == IM_WASTED_SPARK;
// scheduleSimpleMsg(&logger, "eventId spark ", eventIndex);
if (engine->ignitionEvents.isReady) {
for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) {
IgnitionEvent *event = &engine->ignitionEvents.elements[i];
if (!isPhaseInRange(event->dwellAngle, currentPhase, nextPhase)) {
angle_t dwellAngle = event->dwellAngle;
angle_t sparkAngle = event->sparkAngle;
if (std::isnan(sparkAngle)) {
warning(ObdCode::CUSTOM_ADVANCE_SPARK, "NaN advance");
continue;
}
bool isOddCylWastedEvent = false;
if (enableOddCylinderWastedSpark) {
auto dwellAngleWastedEvent = dwellAngle + 360;
if (dwellAngleWastedEvent > 720) {
dwellAngleWastedEvent -= 720;
}
// Check whether this event hits 360 degrees out from now (ie, wasted spark),
// and if so, twiddle the dwell and spark angles so it happens now instead
isOddCylWastedEvent = isPhaseInRange(dwellAngleWastedEvent, currentPhase, nextPhase);
if (isOddCylWastedEvent) {
dwellAngle = dwellAngleWastedEvent;
sparkAngle += 360;
if (sparkAngle > 720) {
sparkAngle -= 720;
}
}
}
if (!isOddCylWastedEvent && !isPhaseInRange(dwellAngle, currentPhase, nextPhase)) {
continue;
}
@ -498,7 +536,7 @@ void onTriggerEventSparkLogic(int rpm, efitick_t edgeTimestamp, float currentPha
engine->ALSsoftSparkLimiter.setTargetSkipRatio(ALSSkipRatio);
#endif // EFI_ANTILAG_SYSTEM
scheduleSparkEvent(limitedSpark, event, rpm, edgeTimestamp, currentPhase, nextPhase);
scheduleSparkEvent(limitedSpark, event, rpm, dwellMs, dwellAngle, sparkAngle, edgeTimestamp, currentPhase, nextPhase);
}
}
}

View File

@ -19,12 +19,6 @@ static bool noFiringUntilVvtSync(vvt_mode_e vvtMode) {
return true;
}
// Odd cylinder count engines don't work properly with wasted spark, so wait for full sync (so that sequential works)
// See https://github.com/rusefi/rusefi/issues/4195 for the issue to properly support this case
if (engineConfiguration->cylindersCount > 1 && engineConfiguration->cylindersCount % 2 == 1) {
return true;
}
// Symmetrical crank modes require cam sync before firing
// non-symmetrical cranks can use faster spin-up mode (firing in wasted/batch before VVT sync)
// Examples include Nissan MR/VQ, Miata NB, etc

View File

@ -386,8 +386,7 @@ ignition_mode_e getCurrentIgnitionMode() {
ignition_mode_e ignitionMode = engineConfiguration->ignitionMode;
#if EFI_SHAFT_POSITION_INPUT
// In spin-up cranking mode we don't have full phase sync info yet, so wasted spark mode is better
// However, only do this on even cylinder count engines: odd cyl count doesn't fire at all
if (ignitionMode == IM_INDIVIDUAL_COILS && (engineConfiguration->cylindersCount % 2 == 0)) {
if (ignitionMode == IM_INDIVIDUAL_COILS) {
bool missingPhaseInfoForSequential =
!engine->triggerCentral.triggerState.hasSynchronizedPhase();
@ -405,7 +404,20 @@ ignition_mode_e getCurrentIgnitionMode() {
* This heavy method is only invoked in case of a configuration change or initialization.
*/
void prepareOutputSignals() {
getEngineState()->engineCycle = getEngineCycle(getEngineRotationState()->getOperationMode());
auto operationMode = getEngineRotationState()->getOperationMode();
getEngineState()->engineCycle = getEngineCycle(operationMode);
bool isOddFire = false;
for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) {
if (engineConfiguration->timing_offset_cylinder[i] != 0) {
isOddFire = true;
break;
}
}
// Use odd fire wasted spark logic if not two stroke, and an odd fire or odd cylinder # engine
getEngineState()->useOddFireWastedSpark = operationMode != TWO_STROKE
&& (isOddFire | (engineConfiguration->cylindersCount % 2 == 1));
#if EFI_UNIT_TEST
if (verboseMode) {

View File

@ -23,9 +23,6 @@
#include "pch.h"
#if EFI_MAP_AVERAGING
#include "map_averaging.h"
#include "trigger_central.h"
#if EFI_SENSOR_CHART
@ -79,6 +76,11 @@ static void startAveraging(sampler* s) {
{ endAveraging, &averager });
}
void MapAverager::showInfo(const char* sensorName) const {
const auto value = get();
efiPrintf("Sensor \"%s\" is MAP averager: valid: %s value: %.2f averaged sample count: %d", sensorName, boolToString(value.Valid), value.Value, m_lastCounter);
}
void MapAverager::start(uint8_t cylinderIndex) {
chibios_rt::CriticalSectionLocker csl;
@ -134,24 +136,21 @@ void MapAverager::stop() {
}
}
#if HAL_USE_ADC
/**
* This method is invoked from ADC callback.
* @note This method is invoked OFTEN, this method is a potential bottleneck - the implementation should be
* as fast as possible
*/
void mapAveragingAdcCallback(float instantVoltage) {
void MapAveragingModule::submitSample(float volts) {
efiAssertVoid(ObdCode::CUSTOM_ERR_6650, getCurrentRemainingStack() > 128, "lowstck#9a");
SensorResult mapResult = getMapAvg(currentMapAverager).submit(instantVoltage);
SensorResult mapResult = getMapAvg(currentMapAverager).submit(volts);
float instantMap = mapResult.value_or(0);
#if EFI_TUNER_STUDIO
engine->outputChannels.instantMAPValue = instantMap;
#endif // EFI_TUNER_STUDIO
}
#endif
static void endAveraging(MapAverager* arg) {
arg->stop();
@ -170,60 +169,39 @@ static void applyMapMinBufferLength() {
}
}
void refreshMapAveragingPreCalc() {
int rpm = Sensor::getOrZero(SensorType::Rpm);
if (isValidRpm(rpm)) {
MAP_sensor_config_s * c = &engineConfiguration->map;
angle_t start = interpolate2d(rpm, c->samplingAngleBins, c->samplingAngle);
angle_t duration = interpolate2d(rpm, c->samplingWindowBins, c->samplingWindow);
efiAssertVoid(ObdCode::CUSTOM_ERR_MAP_START_ASSERT, !std::isnan(start), "start");
assertAngleRange(duration, "samplingDuration", ObdCode::CUSTOM_ERR_6563);
void MapAveragingModule::onFastCallback() {
float rpm = Sensor::getOrZero(SensorType::Rpm);
// Clamp the duration to slightly less than one cylinder period
float cylinderPeriod = engine->engineState.engineCycle / engineConfiguration->cylindersCount;
duration = clampF(10, duration, cylinderPeriod - 10);
MAP_sensor_config_s * c = &engineConfiguration->map;
angle_t offsetAngle = engine->triggerCentral.triggerFormDetails.eventAngles[0];
efiAssertVoid(ObdCode::CUSTOM_ERR_MAP_AVG_OFFSET, !std::isnan(offsetAngle), "offsetAngle");
angle_t start = interpolate2d(rpm, c->samplingAngleBins, c->samplingAngle);
efiAssertVoid(ObdCode::CUSTOM_ERR_MAP_START_ASSERT, !std::isnan(start), "start");
for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) {
angle_t cylinderOffset = getEngineCycle(getEngineRotationState()->getOperationMode()) * i / engineConfiguration->cylindersCount;
efiAssertVoid(ObdCode::CUSTOM_ERR_MAP_CYL_OFFSET, !std::isnan(cylinderOffset), "cylinderOffset");
// part of this formula related to specific cylinder offset is never changing - we can
// move the loop into start-up calculation and not have this loop as part of periodic calculation
// todo: change the logic as described above in order to reduce periodic CPU usage?
float cylinderStart = start + cylinderOffset - offsetAngle + tdcPosition();
wrapAngle(cylinderStart, "cylinderStart", ObdCode::CUSTOM_ERR_6562);
engine->engineState.mapAveragingStart[i] = cylinderStart;
}
engine->engineState.mapAveragingDuration = duration;
} else {
for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) {
engine->engineState.mapAveragingStart[i] = 0;
}
engine->engineState.mapAveragingDuration = 0;
for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) {
float cylinderStart = start + getCylinderAngle(i, ID2INDEX(getCylinderId(i)));;
wrapAngle(cylinderStart, "cylinderStart", ObdCode::CUSTOM_ERR_6562);
engine->engineState.mapAveragingStart[i] = cylinderStart;
}
angle_t duration = interpolate2d(rpm, c->samplingWindowBins, c->samplingWindow);
assertAngleRange(duration, "samplingDuration", ObdCode::CUSTOM_ERR_6563);
// Clamp the duration to slightly less than one cylinder period
float cylinderPeriod = engine->engineState.engineCycle / engineConfiguration->cylindersCount;
engine->engineState.mapAveragingDuration = clampF(10, duration, cylinderPeriod - 10);
}
/**
* Shaft Position callback used to schedule start and end of MAP averaging
*/
void mapAveragingTriggerCallback(efitick_t edgeTimestamp, angle_t currentPhase, angle_t nextPhase) {
#if EFI_ENGINE_CONTROL
int rpm = Sensor::getOrZero(SensorType::Rpm);
if (!isValidRpm(rpm)) {
// Callback to schedule the start of map averaging for each cylinder
void MapAveragingModule::onEnginePhase(float rpm,
efitick_t edgeTimestamp,
float currentPhase,
float nextPhase) {
if (!engineConfiguration->isMapAveragingEnabled) {
return;
}
ScopePerf perf(PE::MapAveragingTriggerCallback);
if (engineConfiguration->mapMinBufferLength != mapMinBufferLength) {
applyMapMinBufferLength();
}
int samplingCount = engineConfiguration->measureMapOnlyInOneCylinder ? 1 : engineConfiguration->cylindersCount;
for (int i = 0; i < samplingCount; i++) {
@ -239,15 +217,20 @@ void mapAveragingTriggerCallback(efitick_t edgeTimestamp, angle_t currentPhase,
}
auto& s = samplers[i];
s.cylinderIndex = i;
scheduleByAngle(&s.timer, edgeTimestamp, angleOffset, { startAveraging, &s });
}
#endif
}
void MapAveragingModule::onConfigurationChange(engine_configuration_s const * previousConfig) {
if (!previousConfig || engineConfiguration->mapMinBufferLength != previousConfig->mapMinBufferLength) {
applyMapMinBufferLength();
}
}
void initMapAveraging() {
for (size_t i = 0; i < efi::size(samplers); i++) {
samplers[i].cylinderIndex = i;
}
applyMapMinBufferLength();
}
#endif /* EFI_MAP_AVERAGING */

View File

@ -9,22 +9,11 @@
#include "sensor_converter_func.h"
#if EFI_MAP_AVERAGING
#if HAL_USE_ADC
void mapAveragingAdcCallback(float instantVoltage);
#endif
void initMapAveraging();
void refreshMapAveragingPreCalc();
void mapAveragingTriggerCallback(efitick_t edgeTimestamp, angle_t currentPhase, angle_t nextPhase);
// allow smoothing up to number of cylinders
#define MAX_MAP_BUFFER_LENGTH (MAX_CYLINDER_COUNT)
#endif /* EFI_MAP_AVERAGING */
class MapAverager : public StoredValueSensor {
public:
MapAverager(SensorType type, efidur_t timeout)
@ -54,3 +43,16 @@ private:
};
MapAverager& getMapAvg(size_t idx);
class MapAveragingModule : public EngineModule {
public:
void onConfigurationChange(engine_configuration_s const * previousConfig);
void onFastCallback() override;
void onEnginePhase(float rpm,
efitick_t edgeTimestamp,
float currentPhase,
float nextPhase) override;
void submitSample(float volts);
};

View File

@ -0,0 +1,6 @@
MODULES_INC += $(PROJECT_DIR)/controllers/modules/map_averaging
MODULES_CPPSRC += $(PROJECT_DIR)/controllers/modules/map_averaging/map_averaging.cpp
MODULES_INCLUDE += \#include "map_averaging.h"\n
MODULES_LIST += MapAveragingModule,
DDEFS += -DMODULE_MAP_AVERAGING

View File

@ -2,3 +2,7 @@ include $(PROJECT_DIR)/controllers/modules/fan/fan.mk
include $(PROJECT_DIR)/controllers/modules/fuel_pump/fuel_pump.mk
include $(PROJECT_DIR)/controllers/modules/gear_detector/gear_detector.mk
include $(PROJECT_DIR)/controllers/modules/trip_odometer/trip_odometer.mk
ifeq ($(NO_MAP_AVERAGING),)
include $(PROJECT_DIR)/controllers/modules/map_averaging/map_averaging.mk
endif

View File

@ -30,6 +30,10 @@ case SensorType::AuxLinear1:
return "AuxLinear1";
case SensorType::AuxLinear2:
return "AuxLinear2";
case SensorType::AuxLinear3:
return "AuxLinear3";
case SensorType::AuxLinear4:
return "AuxLinear4";
case SensorType::AuxSpeed1:
return "AuxSpeed1";
case SensorType::AuxSpeed2:

View File

@ -31,12 +31,12 @@ static void printMAPInfo() {
#if EFI_ANALOG_SENSORS
efiPrintf("instant value=%.2fkPa", Sensor::getOrZero(SensorType::Map));
#if EFI_MAP_AVERAGING
#ifdef MODULE_MAP_AVERAGING
efiPrintf("map type=%d/%s MAP=%.2fkPa mapMinBufferLength=%d", engineConfiguration->map.sensor.type,
getAir_pressure_sensor_type_e(engineConfiguration->map.sensor.type),
Sensor::getOrZero(SensorType::Map),
mapMinBufferLength);
#endif // EFI_MAP_AVERAGING
#endif // MODULE_MAP_AVERAGING
adc_channel_e mapAdc = engineConfiguration->map.sensor.hwChannel;
char pinNameBuffer[16];

View File

@ -9,7 +9,6 @@
#include "resistance_func.h"
#include "thermistor_func.h"
#include "identity_func.h"
#include "map_averaging.h"
void ProxySensor::showInfo(const char* sensorName) const {
efiPrintf("Sensor \"%s\" proxied from sensor \"%s\"", sensorName, getSensorName(m_proxiedSensor));
@ -69,11 +68,6 @@ void Lps25Sensor::showInfo(const char* sensorName) const {
efiPrintf("%s: LPS25 baro %.2f kPa", sensorName, get().Value);
}
void MapAverager::showInfo(const char* sensorName) const {
const auto value = get();
efiPrintf("Sensor \"%s\" is MAP averager: valid: %s value: %.2f averaged sample count: %d", sensorName, boolToString(value.Valid), value.Value, m_lastCounter);
}
void LinearFunc::showInfo(float testRawValue) const {
efiPrintf(" Linear function slope: %.2f offset: %.2f min: %.1f max: %.1f", m_a, m_b, m_minOutput, m_maxOutput);
const auto value = convert(testRawValue);

View File

@ -118,6 +118,8 @@ enum class SensorType : unsigned char {
AuxLinear1,
AuxLinear2,
AuxLinear3,
AuxLinear4,
// frequency sensors
AuxSpeed1,

View File

@ -80,10 +80,10 @@ void TriggerScheduler::schedule(AngleBasedEvent* event, action_s action) {
}
}
void TriggerScheduler::scheduleEventsUntilNextTriggerTooth(int rpm,
void TriggerScheduler::onEnginePhase(float rpm,
efitick_t edgeTimestamp, float currentPhase, float nextPhase) {
if (!isValidRpm(rpm)) {
if (!isValidRpm(rpm) || !EFI_SHAFT_POSITION_INPUT) {
// this might happen for instance in case of a single trigger event after a pause
return;
}

View File

@ -10,9 +10,11 @@ public:
action_s action,
float currentPhase, float nextPhase);
void scheduleEventsUntilNextTriggerTooth(int rpm,
efitick_t edgeTimestamp,
float currentPhase, float nextPhase);
void onEnginePhase(float /*rpm*/,
efitick_t /*edgeTimestamp*/,
angle_t /*currentPhase*/,
angle_t /*nextPhase*/)
override;
// For unit tests
AngleBasedEvent * getElementAtIndexForUnitTest(int index);

View File

@ -47,10 +47,6 @@
#include "mc33816.h"
#endif /* EFI_MC33816 */
#if EFI_MAP_AVERAGING
#include "map_averaging.h"
#endif
#if EFI_INTERNAL_FLASH
#include "flash_main.h"
#endif
@ -152,9 +148,11 @@ void onFastAdcComplete(adcsample_t*) {
// this callback is executed 10 000 times a second, it needs to be as fast as possible!
ScopePerf perf(PE::AdcCallbackFast);
#if EFI_MAP_AVERAGING
mapAveragingAdcCallback(adcToVoltsDivided(getFastAdc(fastMapSampleIndex), engineConfiguration->map.sensor.hwChannel));
#endif /* EFI_MAP_AVERAGING */
#ifdef MODULE_MAP_AVERAGING
engine->module<MapAveragingModule>()->submitSample(
adcToVoltsDivided(getFastAdc(fastMapSampleIndex), engineConfiguration->map.sensor.hwChannel)
);
#endif // MODULE_MAP_AVERAGING
#if EFI_SENSOR_CHART && EFI_SHAFT_POSITION_INPUT
if (getEngineState()->sensorChartMode == SC_AUX_FAST1) {

View File

@ -11,7 +11,6 @@
#if HAL_USE_ADC
#include "mpu_util.h"
#include "map_averaging.h"
#ifdef ADC_MUX_PIN
#error "ADC mux not yet supported on STM32H7"

View File

@ -23,6 +23,12 @@ static FunctionalSensor auxLinear1Sensor(SensorType::AuxLinear1, /* timeout = */
static LinearFunc auxLinear2Func;
static FunctionalSensor auxLinear2Sensor(SensorType::AuxLinear2, /* timeout = */ MS2NT(50));
static LinearFunc auxLinear3Func;
static FunctionalSensor auxLinear3Sensor(SensorType::AuxLinear3, /* timeout = */ MS2NT(50));
static LinearFunc auxLinear4Func;
static FunctionalSensor auxLinear4Sensor(SensorType::AuxLinear4, /* timeout = */ MS2NT(50));
/**
* @param bandwidth Hertz, used by low pass filter in to analog subscribers
*/
@ -57,6 +63,8 @@ void initFluidPressure() {
initFluidPressure(fuelPressureFuncHigh, fuelPressureSensorHigh, engineConfiguration->highPressureFuel, 100);
initFluidPressure(auxLinear1Func, auxLinear1Sensor, engineConfiguration->auxLinear1, 10);
initFluidPressure(auxLinear2Func, auxLinear2Sensor, engineConfiguration->auxLinear2, 10);
initFluidPressure(auxLinear3Func, auxLinear3Sensor, engineConfiguration->auxLinear3, 10);
initFluidPressure(auxLinear4Func, auxLinear4Sensor, engineConfiguration->auxLinear4, 10);
injectorPressure.setProxiedSensor(
engineConfiguration->injectorPressureType == IPT_High
@ -73,4 +81,6 @@ void deinitFluidPressure() {
AdcSubscription::UnsubscribeSensor(fuelPressureSensorHigh, engineConfiguration->highPressureFuel.hwChannel);
AdcSubscription::UnsubscribeSensor(auxLinear1Sensor, engineConfiguration->auxLinear1.hwChannel);
AdcSubscription::UnsubscribeSensor(auxLinear2Sensor, engineConfiguration->auxLinear2.hwChannel);
AdcSubscription::UnsubscribeSensor(auxLinear3Sensor, engineConfiguration->auxLinear3.hwChannel);
AdcSubscription::UnsubscribeSensor(auxLinear4Sensor, engineConfiguration->auxLinear4.hwChannel);
}

View File

@ -4,7 +4,6 @@
#include "linear_func.h"
#include "fallback_sensor.h"
#include "functional_sensor.h"
#include "map_averaging.h"
static LinearFunc baroConverter;
static FunctionalSensor baroSensor(SensorType::BarometricPressure, MS2NT(50));
@ -17,6 +16,7 @@ static FunctionalSensor slowMapSensor2(SensorType::MapSlow2, MS2NT(50));
static FunctionalSensor compressorDischargePress(SensorType::CompressorDischargePressure, MS2NT(50));
static FunctionalSensor throttleInletPress(SensorType::ThrottleInletPressure, MS2NT(50));
#ifdef MODULE_MAP_AVERAGING
// lowest reasonable idle is maybe 600 rpm
// one sample per cycle (1 cylinder, or "sample one cyl" mode) gives a period of 100ms
// add some margin -> 200ms timeout for fast MAP sampling
@ -26,6 +26,7 @@ MapAverager fastMapSensor2(SensorType::MapFast2, MS2NT(200));
MapAverager& getMapAvg(size_t idx) {
return idx == 0 ? fastMapSensor : fastMapSensor2;
}
#endif // MODULE_MAP_AVERAGING
// Combine MAP sensors: prefer fast sensor, but use slow if fast is unavailable.
static FallbackSensor mapCombiner(SensorType::Map, SensorType::MapFast, SensorType::MapSlow);
@ -103,8 +104,10 @@ void initMap() {
slowMapSensor.setFunction(mapConverter);
slowMapSensor2.setFunction(mapConverter);
#ifdef MODULE_MAP_AVERAGING
fastMapSensor.setFunction(mapConverter);
fastMapSensor2.setFunction(mapConverter);
#endif // MODULE_MAP_AVERAGING
compressorDischargePress.setFunction(mapConverter);
throttleInletPress.setFunction(mapConverter);
@ -112,8 +115,10 @@ void initMap() {
if (isAdcChannelValid(mapChannel)) {
slowMapSensor.Register();
slowMapSensor2.Register();
#ifdef MODULE_MAP_AVERAGING
fastMapSensor.Register();
fastMapSensor2.Register();
#endif // MODULE_MAP_AVERAGING
mapCombiner.Register();
mapCombiner2.Register();

View File

@ -106,7 +106,7 @@ struct_no_prefix persistent_config_s
struct_no_prefix engine_configuration_s
#define BLOCKING_FACTOR 750
#define BLOCKING_FACTOR 1320
#define SENT_INPUT_COUNT 1
@ -302,7 +302,7 @@ custom pin_output_mode_e 1 bits, U08, @OFFSET@, [0:1], @@pin_output_mode_e_enum@
#define pin_input_mode_e_enum "DEFAULT", "PULLUP", "PULLDOWN"
custom pin_input_mode_e 1 bits, U08, @OFFSET@, [0:1], @@pin_input_mode_e_enum@@
#define gppwm_channel_e_enum "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)", "Baro pressure", "EGT 1", "EGT 2"
#define gppwm_channel_e_enum "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)", "Baro pressure", "EGT 1", "EGT 2", "Aux Linear 3", "Aux Linear 4"
custom gppwm_channel_e 1 bits, U08, @OFFSET@, [0:4], @@gppwm_channel_e_enum@@
struct gppwm_channel
@ -1364,6 +1364,8 @@ uint16_t vvtActivationDelayMs;We need to give engine time to build oil pressure
linear_sensor_s auxLinear1
linear_sensor_s auxLinear2
linear_sensor_s auxLinear3
linear_sensor_s auxLinear4
output_pin_e tcu_tcc_onoff_solenoid
pin_output_mode_e tcu_tcc_onoff_solenoid_mode
@ -1443,8 +1445,6 @@ pin_input_mode_e[LUA_DIGITAL_INPUT_COUNT iterate] luaDigitalInputPinModes;
Gpio spi6misoPin;
Gpio spi6sckPin;
uint8_t[237] mainUnusedEnd;;"units", 1, 0, 0, 1, 0
! end of engine_configuration_s
end_struct

View File

@ -106,6 +106,8 @@
#define GAUGE_NAME_AUX_LINEAR_1 "Aux linear #1"
#define GAUGE_NAME_AUX_LINEAR_2 "Aux linear #2"
#define GAUGE_NAME_AUX_LINEAR_3 "Aux linear #3"
#define GAUGE_NAME_AUX_LINEAR_4 "Aux linear #4"
#define GAUGE_NAME_BOOST_OUTPUT "Boost: Output"
#define GAUGE_NAME_BOOST_CLOSED_LOOP "Boost: Closed loop"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1392,6 +1392,8 @@ gaugeCategory = Sensors - Extra 1
fuelTankLevelGauge = fuelTankLevel,"Fuel level", "%", 0, 100, 10, 20, 100, 100, 1, 1
AuxL1Gauge = auxLinear1, @@GAUGE_NAME_AUX_LINEAR_1@@, "", -100, 100, -100, -100, 100, 100, 2, 2
AuxL2Gauge = auxLinear2, @@GAUGE_NAME_AUX_LINEAR_2@@, "", -100, 100, -100, -100, 100, 100, 2, 2
AuxL3Gauge = auxLinear3, @@GAUGE_NAME_AUX_LINEAR_3@@, "", -100, 100, -100, -100, 100, 100, 2, 2
AuxL4Gauge = auxLinear4, @@GAUGE_NAME_AUX_LINEAR_4@@, "", -100, 100, -100, -100, 100, 100, 2, 2
gaugeCategory = Sensors - Extra 2
accelerationLatGauge = accelerationLat, @@GAUGE_NAME_ACCEL_LAT@@, "acc", -2, 2, -2, -1, 1, 2, 3, 1
@ -3140,9 +3142,25 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
field = "High voltage", auxLinear2_v2, {auxLinear2_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "High value", auxLinear2_value2, {auxLinear2_hwChannel != @@ADC_CHANNEL_NONE@@}
dialog = auxLinearSensor3, "Aux Linear Sensor #3"
field = "ADC input", auxLinear3_hwChannel
field = "Low voltage", auxLinear3_v1, {auxLinear3_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "Low value", auxLinear3_value1, {auxLinear3_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "High voltage", auxLinear3_v2, {auxLinear3_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "High value", auxLinear3_value2, {auxLinear3_hwChannel != @@ADC_CHANNEL_NONE@@}
dialog = auxLinearSensor4, "Aux Linear Sensor #4"
field = "ADC input", auxLinear4_hwChannel
field = "Low voltage", auxLinear4_v1, {auxLinear4_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "Low value", auxLinear4_value1, {auxLinear4_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "High voltage", auxLinear4_v2, {auxLinear4_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "High value", auxLinear4_value2, {auxLinear4_hwChannel != @@ADC_CHANNEL_NONE@@}
dialog = auxLinearSensors
panel = auxLinearSensor1
panel = auxLinearSensor2
panel = auxLinearSensor3
panel = auxLinearSensor4
field = auxSpeedSensorInputPin1, auxSpeedSensorInputPin1
field = auxSpeedSensorInputPin2, auxSpeedSensorInputPin2
@ -3704,6 +3722,11 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
settingOption = "Toyota C60" , totalGearsCount=5,gearRatio1=3.17,gearRatio2=2.05,gearRatio3=1.48,gearRatio4=1.17,gearRatio5=0.92,gearRatio6=0.73 ,finalGearRatio=4.53
settingOption = "Toyota EB60" , totalGearsCount=6,gearRatio1=3.54,gearRatio2=2.05,gearRatio3=1.38,gearRatio4=1.03,gearRatio5=0.88,gearRatio6=0.73 ,finalGearRatio=4.06
settingOption = "Toyota EB62" , totalGearsCount=6,gearRatio1=3.54,gearRatio2=2.05,gearRatio3=1.38,gearRatio4=0.98,gearRatio5=0.74,gearRatio6=0.66 ,finalGearRatio=4.06
settingOption = "Aisin AR5 5 speed" , totalGearsCount=5,gearRatio1=3.75,gearRatio2=2.26,gearRatio3=1.51,gearRatio4=1.00,gearRatio5=0.73
settingOption = "Toyota R154 5 speed" , totalGearsCount=5,gearRatio1=3.25,gearRatio2=1.96,gearRatio3=1.31,gearRatio4=1.00,gearRatio5=0.75
settingOption = "Toyota W55 5 speed" , totalGearsCount=5,gearRatio1=3.57,gearRatio2=2.06,gearRatio3=1.38,gearRatio4=1.00,gearRatio5=0.85
settingOption = "Toyota W58 5 speed" , totalGearsCount=5,gearRatio1=3.29,gearRatio2=1.89,gearRatio3=1.28,gearRatio4=1.00,gearRatio5=0.78
settingOption = "Toyota V160 6 speed" , totalGearsCount=6,gearRatio1=3.83,gearRatio2=2.36,gearRatio3=1.69,gearRatio4=1.31,gearRatio5=1.00,gearRatio6=0.79
settingOption = "BRZ/FRS/86 6 speed" , totalGearsCount=6,gearRatio1=3.63,gearRatio2=2.19,gearRatio3=1.54,gearRatio4=1.21,gearRatio5=1.00,gearRatio6=0.77
field = ""
field = "Forward gear count", totalGearsCount

View File

@ -80,7 +80,6 @@ char* itoa10(char *p, int num);
bool strEqualCaseInsensitive(const char *str1, const char *str2);
bool strEqual(const char *str1, const char *str2);
// Currently used by air-interp. tCharge mode (see EngineState::updateTChargeK()).
float limitRateOfChange(float newValue, float oldValue, float incrLimitPerSec, float decrLimitPerSec, float secsPassed);
bool isPhaseInRange(float test, float current, float next);

View File

@ -29,4 +29,15 @@ public class HighRevTest extends RusefiTestBase {
// tests bug 1873
EcuTestHelper.assertRpmDoesNotJump(60, 5, 110, FAIL, ecu.commandQueue);
}
@Test
public void testBenelliR3() {
ecu.setEngineType(engine_type_e.MRE_BENELLI_3_CYL);
// set idle RPM
ecu.changeRpm(1500);
// first let's get to RPM near limit
EcuTestHelper.assertRpmDoesNotJump(11000, 5, 40, FAIL, ecu.commandQueue);
// tests RpmLimit
EcuTestHelper.assertRpmDoesNotJump(12000, 5, 110, FAIL, ecu.commandQueue);
}
}

View File

@ -64,6 +64,8 @@ public enum SensorType {
LuaGauge2,
AuxLinear1,
AuxLinear2,
AuxLinear3,
AuxLinear4,
AuxSpeed1,
AuxSpeed2,
PlaceholderLast,

View File

@ -83,7 +83,7 @@ public class Fields {
public static final int bench_mode_e_BENCH_VVT_3_TARGET_BUMP = 19;
public static final int bench_mode_e_BENCH_VVT_4_TARGET_BUMP = 20;
public static final int blend_table_s_size = 188;
public static final int BLOCKING_FACTOR = 750;
public static final int BLOCKING_FACTOR = 1320;
public static final int BOOST_BLEND_COUNT = 2;
public static final int BOOST_LOAD_COUNT = 8;
public static final int BOOST_RPM_COUNT = 8;
@ -267,7 +267,7 @@ public class Fields {
public static final int ego_sensor_e_ES_Innovate_MTX_L = 1;
public static final int ego_sensor_e_ES_PLX = 4;
public static final int EGT_CHANNEL_COUNT = 8;
public static final int engine_configuration_s_size = 3404;
public static final int engine_configuration_s_size = 3204;
public static final int engine_load_mode_e_LM_ALPHA_N = 2;
public static final int engine_load_mode_e_LM_LUA = 3;
public static final int engine_load_mode_e_LM_MOCK = 100;
@ -416,6 +416,8 @@ public class Fields {
public static final String GAUGE_NAME_AIR_MASS = "Air: Cylinder airmass";
public static final String GAUGE_NAME_AUX_LINEAR_1 = "Aux linear #1";
public static final String GAUGE_NAME_AUX_LINEAR_2 = "Aux linear #2";
public static final String GAUGE_NAME_AUX_LINEAR_3 = "Aux linear #3";
public static final String GAUGE_NAME_AUX_LINEAR_4 = "Aux linear #4";
public static final String GAUGE_NAME_AUX_TEMP1 = "Aux temp 1";
public static final String GAUGE_NAME_AUX_TEMP2 = "Aux temp 2";
public static final String GAUGE_NAME_BARO_PRESSURE = "Barometric pressure";
@ -792,6 +794,8 @@ public class Fields {
public static final int gppwm_channel_e_GPPWM_AccelPedal = 9;
public static final int gppwm_channel_e_GPPWM_AuxLinear1 = 16;
public static final int gppwm_channel_e_GPPWM_AuxLinear2 = 17;
public static final int gppwm_channel_e_GPPWM_AuxLinear3 = 29;
public static final int gppwm_channel_e_GPPWM_AuxLinear4 = 30;
public static final int gppwm_channel_e_GPPWM_AuxTemp1 = 7;
public static final int gppwm_channel_e_GPPWM_AuxTemp2 = 8;
public static final int gppwm_channel_e_GPPWM_BaroPressure = 26;
@ -931,7 +935,7 @@ public class Fields {
public static final int PACK_MULT_TEMPERATURE = 100;
public static final int PACK_MULT_VOLTAGE = 1000;
public static final int PEDAL_TO_TPS_SIZE = 8;
public static final int persistent_config_s_size = 21000;
public static final int persistent_config_s_size = 20800;
public static final int pid_s_size = 20;
public static final int pin_input_mode_e_PI_DEFAULT = 0;
public static final int pin_input_mode_e_PI_PULLDOWN = 2;
@ -995,7 +999,6 @@ public class Fields {
public static final int SentEtbType_FORD_TYPE_1 = 2;
public static final int SentEtbType_GM_TYPE_1 = 1;
public static final int SentEtbType_NONE = 0;
public static final int SIGNATURE_HASH = 901366050;
public static final int spi_device_e_SPI_DEVICE_1 = 1;
public static final int spi_device_e_SPI_DEVICE_2 = 2;
public static final int spi_device_e_SPI_DEVICE_3 = 3;
@ -1034,7 +1037,7 @@ public class Fields {
public static final int TOOTH_PACKET_SIZE = 2;
public static final String TOP_DEAD_CENTER_MESSAGE = "r";
public static final int TORQUE_CURVE_SIZE = 6;
public static final int TOTAL_CONFIG_SIZE = 21000;
public static final int TOTAL_CONFIG_SIZE = 20800;
public static final int TPS_2_BYTE_PACKING_MULT = 100;
public static final int TPS_TPS_ACCEL_CLT_CORR_TABLE = 4;
public static final int TPS_TPS_ACCEL_TABLE = 8;
@ -1202,9 +1205,9 @@ public class Fields {
public static final int TS_RESPONSE_UNDERRUN = 0x80;
public static final int TS_RESPONSE_UNRECOGNIZED_COMMAND = 0x83;
public static final char TS_SET_LOGGER_SWITCH = 'l';
public static final String TS_SIGNATURE = "rusEFI (FOME) master.2024.08.28.f407-discovery.901366050";
public static final String TS_SIGNATURE = "rusEFI (FOME) master.2024.08.31.f407-discovery.3027027427";
public static final char TS_SINGLE_WRITE_COMMAND = 'W';
public static final int TS_TOTAL_OUTPUT_SIZE = 1384;
public static final int TS_TOTAL_OUTPUT_SIZE = 1292;
public static final String TS_TRIGGER_SCOPE_CHANNEL_1_NAME = "Channel 1";
public static final String TS_TRIGGER_SCOPE_CHANNEL_2_NAME = "Channel 2";
public static final int TS_TRIGGER_SCOPE_DISABLE = 5;
@ -2149,7 +2152,7 @@ public class Fields {
public static final Field GPPWM1_PWMFREQUENCY = Field.create("GPPWM1_PWMFREQUENCY", 2288, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GPPWM1_ONABOVEDUTY = Field.create("GPPWM1_ONABOVEDUTY", 2290, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field GPPWM1_OFFBELOWDUTY = Field.create("GPPWM1_OFFBELOWDUTY", 2291, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final String[] gppwm_channel_e = {"Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)", "Baro pressure", "EGT 1", "EGT 2"};
public static final String[] gppwm_channel_e = {"Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)", "Baro pressure", "EGT 1", "EGT 2", "Aux Linear 3", "Aux Linear 4"};
public static final Field GPPWM1_LOADAXIS = Field.create("GPPWM1_LOADAXIS", 2292, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field GPPWM1_RPMAXIS = Field.create("GPPWM1_RPMAXIS", 2293, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field GPPWM1_LOADBINS = Field.create("GPPWM1_LOADBINS", 2294, FieldType.INT16).setScale(0.1).setBaseOffset(0);
@ -2289,407 +2292,417 @@ public class Fields {
public static final Field AUXLINEAR2_VALUE1 = Field.create("AUXLINEAR2_VALUE1", 2908, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR2_V2 = Field.create("AUXLINEAR2_V2", 2912, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR2_VALUE2 = Field.create("AUXLINEAR2_VALUE2", 2916, FieldType.FLOAT).setBaseOffset(0);
public static final Field TCU_TCC_ONOFF_SOLENOID = Field.create("TCU_TCC_ONOFF_SOLENOID", 2920, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCC_ONOFF_SOLENOID_MODE = Field.create("TCU_TCC_ONOFF_SOLENOID_MODE", 2922, FieldType.INT8, pin_output_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCC_PWM_SOLENOID_MODE = Field.create("TCU_TCC_PWM_SOLENOID_MODE", 2923, FieldType.INT8, pin_output_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCC_PWM_SOLENOID = Field.create("TCU_TCC_PWM_SOLENOID", 2924, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCC_PWM_SOLENOID_FREQ = Field.create("TCU_TCC_PWM_SOLENOID_FREQ", 2926, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PC_SOLENOID_PIN = Field.create("TCU_PC_SOLENOID_PIN", 2928, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PC_SOLENOID_PIN_MODE = Field.create("TCU_PC_SOLENOID_PIN_MODE", 2930, FieldType.INT8, pin_output_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32_SOLENOID_PIN_MODE = Field.create("TCU_32_SOLENOID_PIN_MODE", 2931, FieldType.INT8, pin_output_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PC_SOLENOID_FREQ = Field.create("TCU_PC_SOLENOID_FREQ", 2932, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32_SOLENOID_PIN = Field.create("TCU_32_SOLENOID_PIN", 2934, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32_SOLENOID_FREQ = Field.create("TCU_32_SOLENOID_FREQ", 2936, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ACRPIN2 = Field.create("ACRPIN2", 2938, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field ETBMINIMUMPOSITION = Field.create("ETBMINIMUMPOSITION", 2940, FieldType.FLOAT).setBaseOffset(0);
public static final Field TUNEHIDINGKEY = Field.create("TUNEHIDINGKEY", 2944, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field AUXLINEAR3_HWCHANNEL = Field.create("AUXLINEAR3_HWCHANNEL", 2920, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field AUXLINEAR3_ALIGNMENTFILL_AT_1 = Field.create("AUXLINEAR3_ALIGNMENTFILL_AT_1", 2921, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field AUXLINEAR3_V1 = Field.create("AUXLINEAR3_V1", 2924, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR3_VALUE1 = Field.create("AUXLINEAR3_VALUE1", 2928, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR3_V2 = Field.create("AUXLINEAR3_V2", 2932, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR3_VALUE2 = Field.create("AUXLINEAR3_VALUE2", 2936, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR4_HWCHANNEL = Field.create("AUXLINEAR4_HWCHANNEL", 2940, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field AUXLINEAR4_ALIGNMENTFILL_AT_1 = Field.create("AUXLINEAR4_ALIGNMENTFILL_AT_1", 2941, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field AUXLINEAR4_V1 = Field.create("AUXLINEAR4_V1", 2944, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR4_VALUE1 = Field.create("AUXLINEAR4_VALUE1", 2948, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR4_V2 = Field.create("AUXLINEAR4_V2", 2952, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR4_VALUE2 = Field.create("AUXLINEAR4_VALUE2", 2956, FieldType.FLOAT).setBaseOffset(0);
public static final Field TCU_TCC_ONOFF_SOLENOID = Field.create("TCU_TCC_ONOFF_SOLENOID", 2960, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCC_ONOFF_SOLENOID_MODE = Field.create("TCU_TCC_ONOFF_SOLENOID_MODE", 2962, FieldType.INT8, pin_output_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCC_PWM_SOLENOID_MODE = Field.create("TCU_TCC_PWM_SOLENOID_MODE", 2963, FieldType.INT8, pin_output_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCC_PWM_SOLENOID = Field.create("TCU_TCC_PWM_SOLENOID", 2964, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCC_PWM_SOLENOID_FREQ = Field.create("TCU_TCC_PWM_SOLENOID_FREQ", 2966, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PC_SOLENOID_PIN = Field.create("TCU_PC_SOLENOID_PIN", 2968, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PC_SOLENOID_PIN_MODE = Field.create("TCU_PC_SOLENOID_PIN_MODE", 2970, FieldType.INT8, pin_output_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32_SOLENOID_PIN_MODE = Field.create("TCU_32_SOLENOID_PIN_MODE", 2971, FieldType.INT8, pin_output_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PC_SOLENOID_FREQ = Field.create("TCU_PC_SOLENOID_FREQ", 2972, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32_SOLENOID_PIN = Field.create("TCU_32_SOLENOID_PIN", 2974, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32_SOLENOID_FREQ = Field.create("TCU_32_SOLENOID_FREQ", 2976, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ACRPIN2 = Field.create("ACRPIN2", 2978, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field ETBMINIMUMPOSITION = Field.create("ETBMINIMUMPOSITION", 2980, FieldType.FLOAT).setBaseOffset(0);
public static final Field TUNEHIDINGKEY = Field.create("TUNEHIDINGKEY", 2984, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final String[] SentEtbType = {"None", "GM type 1", "Ford type 1"};
public static final Field SENTETBTYPE = Field.create("SENTETBTYPE", 2946, FieldType.INT8, SentEtbType).setScale(1.0).setBaseOffset(0);
public static final Field SENTETBTYPE = Field.create("SENTETBTYPE", 2986, FieldType.INT8, SentEtbType).setScale(1.0).setBaseOffset(0);
public static final String[] fuel_pressure_sensor_mode_e = {"Absolute", "Gauge", "Differential", "INVALID"};
public static final Field FUELPRESSURESENSORMODE = Field.create("FUELPRESSURESENSORMODE", 2947, FieldType.INT8, fuel_pressure_sensor_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS1 = Field.create("LUADIGITALINPUTPINS1", 2948, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS2 = Field.create("LUADIGITALINPUTPINS2", 2950, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS3 = Field.create("LUADIGITALINPUTPINS3", 2952, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS4 = Field.create("LUADIGITALINPUTPINS4", 2954, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS5 = Field.create("LUADIGITALINPUTPINS5", 2956, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS6 = Field.create("LUADIGITALINPUTPINS6", 2958, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS7 = Field.create("LUADIGITALINPUTPINS7", 2960, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS8 = Field.create("LUADIGITALINPUTPINS8", 2962, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field ALSMINRPM = Field.create("ALSMINRPM", 2964, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSMAXRPM = Field.create("ALSMAXRPM", 2966, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSMAXDURATION = Field.create("ALSMAXDURATION", 2968, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSMINCLT = Field.create("ALSMINCLT", 2970, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSMAXCLT = Field.create("ALSMAXCLT", 2971, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSMINTIMEBETWEEN = Field.create("ALSMINTIMEBETWEEN", 2972, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSETBPOSITION = Field.create("ALSETBPOSITION", 2973, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ACRELAYALTERNATORDUTYADDER = Field.create("ACRELAYALTERNATORDUTYADDER", 2974, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field INSTANTRPMRANGE = Field.create("INSTANTRPMRANGE", 2975, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSIDLEADD = Field.create("ALSIDLEADD", 2976, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field ALSETBADD = Field.create("ALSETBADD", 2980, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field ALSSKIPRATIO = Field.create("ALSSKIPRATIO", 2984, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field ALSMAXDRIVERTHROTTLEINTENT = Field.create("ALSMAXDRIVERTHROTTLEINTENT", 2988, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSACTIVATEPINMODE = Field.create("ALSACTIVATEPINMODE", 2989, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TPSSECONDARYMAXIMUM = Field.create("TPSSECONDARYMAXIMUM", 2990, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field PPSSECONDARYMAXIMUM = Field.create("PPSSECONDARYMAXIMUM", 2991, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES1 = Field.create("LUADIGITALINPUTPINMODES1", 2992, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES2 = Field.create("LUADIGITALINPUTPINMODES2", 2993, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES3 = Field.create("LUADIGITALINPUTPINMODES3", 2994, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES4 = Field.create("LUADIGITALINPUTPINMODES4", 2995, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES5 = Field.create("LUADIGITALINPUTPINMODES5", 2996, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES6 = Field.create("LUADIGITALINPUTPINMODES6", 2997, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES7 = Field.create("LUADIGITALINPUTPINMODES7", 2998, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES8 = Field.create("LUADIGITALINPUTPINMODES8", 2999, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field RPMHARDLIMITHYST = Field.create("RPMHARDLIMITHYST", 3000, FieldType.INT8).setScale(10.0).setBaseOffset(0);
public static final Field IGNTESTCOUNT = Field.create("IGNTESTCOUNT", 3001, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNTESTOFFTIME = Field.create("IGNTESTOFFTIME", 3002, FieldType.INT8).setScale(5.0).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_3003 = Field.create("ALIGNMENTFILL_AT_3003", 3003, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field CANVSSSCALING = Field.create("CANVSSSCALING", 3004, FieldType.INT16).setScale(1.0E-4).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_3006 = Field.create("ALIGNMENTFILL_AT_3006", 3006, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field OILTEMPSENSOR_TEMPC_1 = Field.create("OILTEMPSENSOR_TEMPC_1", 3008, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_TEMPC_2 = Field.create("OILTEMPSENSOR_TEMPC_2", 3012, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_TEMPC_3 = Field.create("OILTEMPSENSOR_TEMPC_3", 3016, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_RESISTANCE_1 = Field.create("OILTEMPSENSOR_RESISTANCE_1", 3020, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_RESISTANCE_2 = Field.create("OILTEMPSENSOR_RESISTANCE_2", 3024, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_RESISTANCE_3 = Field.create("OILTEMPSENSOR_RESISTANCE_3", 3028, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_BIAS_RESISTOR = Field.create("OILTEMPSENSOR_BIAS_RESISTOR", 3032, FieldType.INT).setScale(0.1).setBaseOffset(0);
public static final Field OILTEMPSENSOR_ADCCHANNEL = Field.create("OILTEMPSENSOR_ADCCHANNEL", 3036, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field OILTEMPSENSOR_ALIGNMENTFILL_AT_29 = Field.create("OILTEMPSENSOR_ALIGNMENTFILL_AT_29", 3037, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_TEMPC_1 = Field.create("FUELTEMPSENSOR_TEMPC_1", 3040, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_TEMPC_2 = Field.create("FUELTEMPSENSOR_TEMPC_2", 3044, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_TEMPC_3 = Field.create("FUELTEMPSENSOR_TEMPC_3", 3048, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_RESISTANCE_1 = Field.create("FUELTEMPSENSOR_RESISTANCE_1", 3052, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_RESISTANCE_2 = Field.create("FUELTEMPSENSOR_RESISTANCE_2", 3056, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_RESISTANCE_3 = Field.create("FUELTEMPSENSOR_RESISTANCE_3", 3060, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_BIAS_RESISTOR = Field.create("FUELTEMPSENSOR_BIAS_RESISTOR", 3064, FieldType.INT).setScale(0.1).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_ADCCHANNEL = Field.create("FUELTEMPSENSOR_ADCCHANNEL", 3068, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_ALIGNMENTFILL_AT_29 = Field.create("FUELTEMPSENSOR_ALIGNMENTFILL_AT_29", 3069, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_TEMPC_1 = Field.create("AMBIENTTEMPSENSOR_TEMPC_1", 3072, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_TEMPC_2 = Field.create("AMBIENTTEMPSENSOR_TEMPC_2", 3076, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_TEMPC_3 = Field.create("AMBIENTTEMPSENSOR_TEMPC_3", 3080, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_RESISTANCE_1 = Field.create("AMBIENTTEMPSENSOR_RESISTANCE_1", 3084, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_RESISTANCE_2 = Field.create("AMBIENTTEMPSENSOR_RESISTANCE_2", 3088, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_RESISTANCE_3 = Field.create("AMBIENTTEMPSENSOR_RESISTANCE_3", 3092, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_BIAS_RESISTOR = Field.create("AMBIENTTEMPSENSOR_BIAS_RESISTOR", 3096, FieldType.INT).setScale(0.1).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_ADCCHANNEL = Field.create("AMBIENTTEMPSENSOR_ADCCHANNEL", 3100, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_ALIGNMENTFILL_AT_29 = Field.create("AMBIENTTEMPSENSOR_ALIGNMENTFILL_AT_29", 3101, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_TEMPC_1 = Field.create("COMPRESSORDISCHARGETEMPERATURE_TEMPC_1", 3104, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_TEMPC_2 = Field.create("COMPRESSORDISCHARGETEMPERATURE_TEMPC_2", 3108, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_TEMPC_3 = Field.create("COMPRESSORDISCHARGETEMPERATURE_TEMPC_3", 3112, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_1 = Field.create("COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_1", 3116, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_2 = Field.create("COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_2", 3120, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_3 = Field.create("COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_3", 3124, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_BIAS_RESISTOR = Field.create("COMPRESSORDISCHARGETEMPERATURE_BIAS_RESISTOR", 3128, FieldType.INT).setScale(0.1).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_ADCCHANNEL = Field.create("COMPRESSORDISCHARGETEMPERATURE_ADCCHANNEL", 3132, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_ALIGNMENTFILL_AT_29 = Field.create("COMPRESSORDISCHARGETEMPERATURE_ALIGNMENTFILL_AT_29", 3133, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field THROTTLEINLETPRESSURECHANNEL = Field.create("THROTTLEINLETPRESSURECHANNEL", 3136, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGEPRESSURECHANNEL = Field.create("COMPRESSORDISCHARGEPRESSURECHANNEL", 3137, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field MAXINJECTORDUTYINSTANT = Field.create("MAXINJECTORDUTYINSTANT", 3138, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAXINJECTORDUTYSUSTAINED = Field.create("MAXINJECTORDUTYSUSTAINED", 3139, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAXINJECTORDUTYSUSTAINEDTIMEOUT = Field.create("MAXINJECTORDUTYSUSTAINEDTIMEOUT", 3140, FieldType.INT8).setScale(0.1).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_3141 = Field.create("ALIGNMENTFILL_AT_3141", 3141, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field SPEEDOMETEROUTPUTPIN = Field.create("SPEEDOMETEROUTPUTPIN", 3142, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field SPEEDOMETERPULSEPERKM = Field.create("SPEEDOMETERPULSEPERKM", 3144, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SPI4MOSIPIN = Field.create("SPI4MOSIPIN", 3146, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI4MISOPIN = Field.create("SPI4MISOPIN", 3148, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI4SCKPIN = Field.create("SPI4SCKPIN", 3150, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI5MOSIPIN = Field.create("SPI5MOSIPIN", 3152, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI5MISOPIN = Field.create("SPI5MISOPIN", 3154, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI5SCKPIN = Field.create("SPI5SCKPIN", 3156, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI6MOSIPIN = Field.create("SPI6MOSIPIN", 3158, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI6MISOPIN = Field.create("SPI6MISOPIN", 3160, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI6SCKPIN = Field.create("SPI6SCKPIN", 3162, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field MAINUNUSEDEND = Field.create("MAINUNUSEDEND", 3164, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_3401 = Field.create("ALIGNMENTFILL_AT_3401", 3401, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ETBBIASBINS = Field.create("ETBBIASBINS", 3404, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field ETBBIASVALUES = Field.create("ETBBIASVALUES", 3412, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IACPIDMULTTABLE = Field.create("IACPIDMULTTABLE", 3428, FieldType.INT8).setScale(0.05).setBaseOffset(0);
public static final Field IACPIDMULTLOADBINS = Field.create("IACPIDMULTLOADBINS", 3492, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IACPIDMULTRPMBINS = Field.create("IACPIDMULTRPMBINS", 3500, FieldType.INT8).setScale(10.0).setBaseOffset(0);
public static final Field SPARKDWELLRPMBINS = Field.create("SPARKDWELLRPMBINS", 3508, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SPARKDWELLVALUES = Field.create("SPARKDWELLVALUES", 3524, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field CLTIDLERPMBINS = Field.create("CLTIDLERPMBINS", 3540, FieldType.INT8).setScale(2.0).setBaseOffset(0);
public static final Field CLTIDLERPM = Field.create("CLTIDLERPM", 3556, FieldType.INT8).setScale(20.0).setBaseOffset(0);
public static final Field CLTTIMINGBINS = Field.create("CLTTIMINGBINS", 3572, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTTIMINGEXTRA = Field.create("CLTTIMINGEXTRA", 3604, FieldType.FLOAT).setBaseOffset(0);
public static final Field SCRIPTCURVE1BINS = Field.create("SCRIPTCURVE1BINS", 3636, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE1 = Field.create("SCRIPTCURVE1", 3668, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE2BINS = Field.create("SCRIPTCURVE2BINS", 3700, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE2 = Field.create("SCRIPTCURVE2", 3732, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE3BINS = Field.create("SCRIPTCURVE3BINS", 3764, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE3 = Field.create("SCRIPTCURVE3", 3780, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE4BINS = Field.create("SCRIPTCURVE4BINS", 3796, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE4 = Field.create("SCRIPTCURVE4", 3812, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE5BINS = Field.create("SCRIPTCURVE5BINS", 3828, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE5 = Field.create("SCRIPTCURVE5", 3844, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE6BINS = Field.create("SCRIPTCURVE6BINS", 3860, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE6 = Field.create("SCRIPTCURVE6", 3876, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BAROCORRPRESSUREBINS = Field.create("BAROCORRPRESSUREBINS", 3892, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BAROCORRRPMBINS = Field.create("BAROCORRRPMBINS", 3900, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BAROCORRTABLE = Field.create("BAROCORRTABLE", 3908, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field CRANKINGTPSCOEF = Field.create("CRANKINGTPSCOEF", 3940, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGTPSBINS = Field.create("CRANKINGTPSBINS", 3972, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGADVANCEBINS = Field.create("CRANKINGADVANCEBINS", 4004, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field CRANKINGADVANCE = Field.create("CRANKINGADVANCE", 4012, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IACCOASTINGRPMBINS = Field.create("IACCOASTINGRPMBINS", 4020, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field IACCOASTING = Field.create("IACCOASTING", 4036, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTTABLEOPENLOOP = Field.create("BOOSTTABLEOPENLOOP", 4052, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTRPMBINS = Field.create("BOOSTRPMBINS", 4116, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field BOOSTTABLECLOSEDLOOP = Field.create("BOOSTTABLECLOSEDLOOP", 4124, FieldType.INT8).setScale(2.0).setBaseOffset(0);
public static final Field BOOSTTPSBINS = Field.create("BOOSTTPSBINS", 4188, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field PEDALTOTPSTABLE = Field.create("PEDALTOTPSTABLE", 4196, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field PEDALTOTPSPEDALBINS = Field.create("PEDALTOTPSPEDALBINS", 4260, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field PEDALTOTPSRPMBINS = Field.create("PEDALTOTPSRPMBINS", 4268, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field CLTCRANKINGCORRBINS = Field.create("CLTCRANKINGCORRBINS", 4276, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTCRANKINGCORR = Field.create("CLTCRANKINGCORR", 4308, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTCRANKINGTAPERCORRBINS = Field.create("CLTCRANKINGTAPERCORRBINS", 4340, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field CLTCRANKINGTAPERCORR = Field.create("CLTCRANKINGTAPERCORR", 4348, FieldType.INT8).setScale(0.02).setBaseOffset(0);
public static final Field IDLEADVANCEBINS = Field.create("IDLEADVANCEBINS", 4356, FieldType.INT8).setScale(50.0).setBaseOffset(0);
public static final Field IDLEADVANCE = Field.create("IDLEADVANCE", 4364, FieldType.FLOAT).setBaseOffset(0);
public static final Field IDLEVERPMBINS = Field.create("IDLEVERPMBINS", 4396, FieldType.INT8).setScale(10.0).setBaseOffset(0);
public static final Field IDLEVELOADBINS = Field.create("IDLEVELOADBINS", 4400, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IDLEVETABLE = Field.create("IDLEVETABLE", 4404, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field LUASCRIPT = Field.create("LUASCRIPT", 4436, 8000, FieldType.STRING).setScale(1.0).setBaseOffset(0);
public static final Field CLTFUELCORRBINS = Field.create("CLTFUELCORRBINS", 12436, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTFUELCORR = Field.create("CLTFUELCORR", 12500, FieldType.FLOAT).setBaseOffset(0);
public static final Field IATFUELCORRBINS = Field.create("IATFUELCORRBINS", 12564, FieldType.FLOAT).setBaseOffset(0);
public static final Field IATFUELCORR = Field.create("IATFUELCORR", 12628, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGFUELCOEF = Field.create("CRANKINGFUELCOEF", 12692, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGFUELBINS = Field.create("CRANKINGFUELBINS", 12724, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGCYCLECOEF = Field.create("CRANKINGCYCLECOEF", 12756, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGCYCLEBINS = Field.create("CRANKINGCYCLEBINS", 12788, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTIDLECORRBINS = Field.create("CLTIDLECORRBINS", 12820, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTIDLECORR = Field.create("CLTIDLECORR", 12884, FieldType.FLOAT).setBaseOffset(0);
public static final Field MAFDECODING = Field.create("MAFDECODING", 12948, FieldType.INT).setScale(0.001).setBaseOffset(0);
public static final Field MAFDECODINGBINS = Field.create("MAFDECODINGBINS", 13204, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IGNITIONIATCORRTABLE = Field.create("IGNITIONIATCORRTABLE", 13332, FieldType.INT8).setScale(0.1).setBaseOffset(0);
public static final Field IGNITIONIATCORRTEMPBINS = Field.create("IGNITIONIATCORRTEMPBINS", 13396, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNITIONIATCORRLOADBINS = Field.create("IGNITIONIATCORRLOADBINS", 13404, FieldType.INT8).setScale(5.0).setBaseOffset(0);
public static final Field INJECTIONPHASE = Field.create("INJECTIONPHASE", 13412, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field INJPHASELOADBINS = Field.create("INJPHASELOADBINS", 13924, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field INJPHASERPMBINS = Field.create("INJPHASERPMBINS", 13956, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field TCUSOLENOIDTABLE = Field.create("TCUSOLENOIDTABLE", 13988, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPESTIMATETABLE = Field.create("MAPESTIMATETABLE", 14048, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field MAPESTIMATETPSBINS = Field.create("MAPESTIMATETPSBINS", 14560, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field MAPESTIMATERPMBINS = Field.create("MAPESTIMATERPMBINS", 14592, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE1 = Field.create("VVTTABLE1", 14624, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE1LOADBINS = Field.create("VVTTABLE1LOADBINS", 14688, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE1RPMBINS = Field.create("VVTTABLE1RPMBINS", 14704, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE2 = Field.create("VVTTABLE2", 14720, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE2LOADBINS = Field.create("VVTTABLE2LOADBINS", 14784, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE2RPMBINS = Field.create("VVTTABLE2RPMBINS", 14800, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNITIONTABLE = Field.create("IGNITIONTABLE", 14816, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNITIONLOADBINS = Field.create("IGNITIONLOADBINS", 15328, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNITIONRPMBINS = Field.create("IGNITIONRPMBINS", 15360, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VETABLE = Field.create("VETABLE", 15392, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VELOADBINS = Field.create("VELOADBINS", 15904, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VERPMBINS = Field.create("VERPMBINS", 15936, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field LAMBDATABLE = Field.create("LAMBDATABLE", 15968, FieldType.INT8).setScale(0.006802721088435374).setBaseOffset(0);
public static final Field LAMBDALOADBINS = Field.create("LAMBDALOADBINS", 16224, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field LAMBDARPMBINS = Field.create("LAMBDARPMBINS", 16256, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field TPSTPSACCELTABLE = Field.create("TPSTPSACCELTABLE", 16288, FieldType.FLOAT).setBaseOffset(0);
public static final Field TPSTPSACCELFROMRPMBINS = Field.create("TPSTPSACCELFROMRPMBINS", 16544, FieldType.FLOAT).setBaseOffset(0);
public static final Field TPSTPSACCELTORPMBINS = Field.create("TPSTPSACCELTORPMBINS", 16576, FieldType.FLOAT).setBaseOffset(0);
public static final Field SCRIPTTABLE1 = Field.create("SCRIPTTABLE1", 16608, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field SCRIPTTABLE1LOADBINS = Field.create("SCRIPTTABLE1LOADBINS", 16736, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE1RPMBINS = Field.create("SCRIPTTABLE1RPMBINS", 16752, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE2 = Field.create("SCRIPTTABLE2", 16768, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field SCRIPTTABLE2LOADBINS = Field.create("SCRIPTTABLE2LOADBINS", 16896, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE2RPMBINS = Field.create("SCRIPTTABLE2RPMBINS", 16912, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE3 = Field.create("SCRIPTTABLE3", 16928, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field SCRIPTTABLE3LOADBINS = Field.create("SCRIPTTABLE3LOADBINS", 17056, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE3RPMBINS = Field.create("SCRIPTTABLE3RPMBINS", 17072, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE4 = Field.create("SCRIPTTABLE4", 17088, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field SCRIPTTABLE4LOADBINS = Field.create("SCRIPTTABLE4LOADBINS", 17216, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE4RPMBINS = Field.create("SCRIPTTABLE4RPMBINS", 17232, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNTRIMLOADBINS = Field.create("IGNTRIMLOADBINS", 17248, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNTRIMRPMBINS = Field.create("IGNTRIMRPMBINS", 17256, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNTRIMS1_TABLE = Field.create("IGNTRIMS1_TABLE", 17264, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS2_TABLE = Field.create("IGNTRIMS2_TABLE", 17280, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS3_TABLE = Field.create("IGNTRIMS3_TABLE", 17296, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS4_TABLE = Field.create("IGNTRIMS4_TABLE", 17312, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS5_TABLE = Field.create("IGNTRIMS5_TABLE", 17328, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS6_TABLE = Field.create("IGNTRIMS6_TABLE", 17344, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS7_TABLE = Field.create("IGNTRIMS7_TABLE", 17360, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS8_TABLE = Field.create("IGNTRIMS8_TABLE", 17376, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS9_TABLE = Field.create("IGNTRIMS9_TABLE", 17392, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS10_TABLE = Field.create("IGNTRIMS10_TABLE", 17408, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS11_TABLE = Field.create("IGNTRIMS11_TABLE", 17424, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS12_TABLE = Field.create("IGNTRIMS12_TABLE", 17440, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMLOADBINS = Field.create("FUELTRIMLOADBINS", 17456, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field FUELTRIMRPMBINS = Field.create("FUELTRIMRPMBINS", 17464, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field FUELTRIMS1_TABLE = Field.create("FUELTRIMS1_TABLE", 17472, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS2_TABLE = Field.create("FUELTRIMS2_TABLE", 17488, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS3_TABLE = Field.create("FUELTRIMS3_TABLE", 17504, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS4_TABLE = Field.create("FUELTRIMS4_TABLE", 17520, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS5_TABLE = Field.create("FUELTRIMS5_TABLE", 17536, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS6_TABLE = Field.create("FUELTRIMS6_TABLE", 17552, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS7_TABLE = Field.create("FUELTRIMS7_TABLE", 17568, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS8_TABLE = Field.create("FUELTRIMS8_TABLE", 17584, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS9_TABLE = Field.create("FUELTRIMS9_TABLE", 17600, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS10_TABLE = Field.create("FUELTRIMS10_TABLE", 17616, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS11_TABLE = Field.create("FUELTRIMS11_TABLE", 17632, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS12_TABLE = Field.create("FUELTRIMS12_TABLE", 17648, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field CRANKINGFUELCOEFE100 = Field.create("CRANKINGFUELCOEFE100", 17664, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field TCU_PCAIRMASSBINS = Field.create("TCU_PCAIRMASSBINS", 17680, FieldType.INT8).setScale(0.02).setBaseOffset(0);
public static final Field TCU_PCVALSR = Field.create("TCU_PCVALSR", 17688, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALSN = Field.create("TCU_PCVALSN", 17696, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS1 = Field.create("TCU_PCVALS1", 17704, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS2 = Field.create("TCU_PCVALS2", 17712, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS3 = Field.create("TCU_PCVALS3", 17720, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS4 = Field.create("TCU_PCVALS4", 17728, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS12 = Field.create("TCU_PCVALS12", 17736, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS23 = Field.create("TCU_PCVALS23", 17744, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS34 = Field.create("TCU_PCVALS34", 17752, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS21 = Field.create("TCU_PCVALS21", 17760, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS32 = Field.create("TCU_PCVALS32", 17768, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS43 = Field.create("TCU_PCVALS43", 17776, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCCTPSBINS = Field.create("TCU_TCCTPSBINS", 17784, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCCLOCKSPEED = Field.create("TCU_TCCLOCKSPEED", 17792, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCCUNLOCKSPEED = Field.create("TCU_TCCUNLOCKSPEED", 17800, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32SPEEDBINS = Field.create("TCU_32SPEEDBINS", 17808, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32VALS = Field.create("TCU_32VALS", 17816, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field THROTTLE2TRIMTABLE = Field.create("THROTTLE2TRIMTABLE", 17824, FieldType.INT8).setScale(0.1).setBaseOffset(0);
public static final Field THROTTLE2TRIMTPSBINS = Field.create("THROTTLE2TRIMTPSBINS", 17860, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field THROTTLE2TRIMRPMBINS = Field.create("THROTTLE2TRIMRPMBINS", 17866, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field MAXKNOCKRETARDTABLE = Field.create("MAXKNOCKRETARDTABLE", 17872, FieldType.INT8).setScale(0.25).setBaseOffset(0);
public static final Field MAXKNOCKRETARDLOADBINS = Field.create("MAXKNOCKRETARDLOADBINS", 17908, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAXKNOCKRETARDRPMBINS = Field.create("MAXKNOCKRETARDRPMBINS", 17914, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field ALSTIMINGRETARDTABLE = Field.create("ALSTIMINGRETARDTABLE", 17920, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field ALSIGNRETARDLOADBINS = Field.create("ALSIGNRETARDLOADBINS", 17952, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSIGNRETARDRPMBINS = Field.create("ALSIGNRETARDRPMBINS", 17960, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSFUELADJUSTMENT = Field.create("ALSFUELADJUSTMENT", 17968, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field ALSFUELADJUSTMENTLOADBINS = Field.create("ALSFUELADJUSTMENTLOADBINS", 18000, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSFUELADJUSTMENTRPMBINS = Field.create("ALSFUELADJUSTMENTRPMBINS", 18008, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_TABLE = Field.create("IGNBLENDS1_TABLE", 18016, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS1_LOADBINS = Field.create("IGNBLENDS1_LOADBINS", 18144, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_RPMBINS = Field.create("IGNBLENDS1_RPMBINS", 18160, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_BLENDPARAMETER = Field.create("IGNBLENDS1_BLENDPARAMETER", 18176, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_YAXISOVERRIDE = Field.create("IGNBLENDS1_YAXISOVERRIDE", 18177, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_BLENDBINS = Field.create("IGNBLENDS1_BLENDBINS", 18178, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS1_BLENDVALUES = Field.create("IGNBLENDS1_BLENDVALUES", 18194, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDS1_ALIGNMENTFILL_AT_186 = Field.create("IGNBLENDS1_ALIGNMENTFILL_AT_186", 18202, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_TABLE = Field.create("IGNBLENDS2_TABLE", 18204, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS2_LOADBINS = Field.create("IGNBLENDS2_LOADBINS", 18332, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_RPMBINS = Field.create("IGNBLENDS2_RPMBINS", 18348, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_BLENDPARAMETER = Field.create("IGNBLENDS2_BLENDPARAMETER", 18364, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_YAXISOVERRIDE = Field.create("IGNBLENDS2_YAXISOVERRIDE", 18365, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_BLENDBINS = Field.create("IGNBLENDS2_BLENDBINS", 18366, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS2_BLENDVALUES = Field.create("IGNBLENDS2_BLENDVALUES", 18382, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDS2_ALIGNMENTFILL_AT_186 = Field.create("IGNBLENDS2_ALIGNMENTFILL_AT_186", 18390, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_TABLE = Field.create("IGNBLENDS3_TABLE", 18392, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS3_LOADBINS = Field.create("IGNBLENDS3_LOADBINS", 18520, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_RPMBINS = Field.create("IGNBLENDS3_RPMBINS", 18536, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_BLENDPARAMETER = Field.create("IGNBLENDS3_BLENDPARAMETER", 18552, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_YAXISOVERRIDE = Field.create("IGNBLENDS3_YAXISOVERRIDE", 18553, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_BLENDBINS = Field.create("IGNBLENDS3_BLENDBINS", 18554, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS3_BLENDVALUES = Field.create("IGNBLENDS3_BLENDVALUES", 18570, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDS3_ALIGNMENTFILL_AT_186 = Field.create("IGNBLENDS3_ALIGNMENTFILL_AT_186", 18578, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_TABLE = Field.create("IGNBLENDS4_TABLE", 18580, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS4_LOADBINS = Field.create("IGNBLENDS4_LOADBINS", 18708, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_RPMBINS = Field.create("IGNBLENDS4_RPMBINS", 18724, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_BLENDPARAMETER = Field.create("IGNBLENDS4_BLENDPARAMETER", 18740, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_YAXISOVERRIDE = Field.create("IGNBLENDS4_YAXISOVERRIDE", 18741, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_BLENDBINS = Field.create("IGNBLENDS4_BLENDBINS", 18742, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS4_BLENDVALUES = Field.create("IGNBLENDS4_BLENDVALUES", 18758, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDS4_ALIGNMENTFILL_AT_186 = Field.create("IGNBLENDS4_ALIGNMENTFILL_AT_186", 18766, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_TABLE = Field.create("VEBLENDS1_TABLE", 18768, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS1_LOADBINS = Field.create("VEBLENDS1_LOADBINS", 18896, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_RPMBINS = Field.create("VEBLENDS1_RPMBINS", 18912, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_BLENDPARAMETER = Field.create("VEBLENDS1_BLENDPARAMETER", 18928, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_YAXISOVERRIDE = Field.create("VEBLENDS1_YAXISOVERRIDE", 18929, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_BLENDBINS = Field.create("VEBLENDS1_BLENDBINS", 18930, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS1_BLENDVALUES = Field.create("VEBLENDS1_BLENDVALUES", 18946, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDS1_ALIGNMENTFILL_AT_186 = Field.create("VEBLENDS1_ALIGNMENTFILL_AT_186", 18954, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_TABLE = Field.create("VEBLENDS2_TABLE", 18956, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS2_LOADBINS = Field.create("VEBLENDS2_LOADBINS", 19084, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_RPMBINS = Field.create("VEBLENDS2_RPMBINS", 19100, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_BLENDPARAMETER = Field.create("VEBLENDS2_BLENDPARAMETER", 19116, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_YAXISOVERRIDE = Field.create("VEBLENDS2_YAXISOVERRIDE", 19117, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_BLENDBINS = Field.create("VEBLENDS2_BLENDBINS", 19118, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS2_BLENDVALUES = Field.create("VEBLENDS2_BLENDVALUES", 19134, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDS2_ALIGNMENTFILL_AT_186 = Field.create("VEBLENDS2_ALIGNMENTFILL_AT_186", 19142, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_TABLE = Field.create("VEBLENDS3_TABLE", 19144, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS3_LOADBINS = Field.create("VEBLENDS3_LOADBINS", 19272, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_RPMBINS = Field.create("VEBLENDS3_RPMBINS", 19288, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_BLENDPARAMETER = Field.create("VEBLENDS3_BLENDPARAMETER", 19304, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_YAXISOVERRIDE = Field.create("VEBLENDS3_YAXISOVERRIDE", 19305, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_BLENDBINS = Field.create("VEBLENDS3_BLENDBINS", 19306, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS3_BLENDVALUES = Field.create("VEBLENDS3_BLENDVALUES", 19322, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDS3_ALIGNMENTFILL_AT_186 = Field.create("VEBLENDS3_ALIGNMENTFILL_AT_186", 19330, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_TABLE = Field.create("VEBLENDS4_TABLE", 19332, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS4_LOADBINS = Field.create("VEBLENDS4_LOADBINS", 19460, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_RPMBINS = Field.create("VEBLENDS4_RPMBINS", 19476, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_BLENDPARAMETER = Field.create("VEBLENDS4_BLENDPARAMETER", 19492, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_YAXISOVERRIDE = Field.create("VEBLENDS4_YAXISOVERRIDE", 19493, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_BLENDBINS = Field.create("VEBLENDS4_BLENDBINS", 19494, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS4_BLENDVALUES = Field.create("VEBLENDS4_BLENDVALUES", 19510, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDS4_ALIGNMENTFILL_AT_186 = Field.create("VEBLENDS4_ALIGNMENTFILL_AT_186", 19518, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field THROTTLEESTIMATEEFFECTIVEAREABINS = Field.create("THROTTLEESTIMATEEFFECTIVEAREABINS", 19520, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field THROTTLEESTIMATEEFFECTIVEAREAVALUES = Field.create("THROTTLEESTIMATEEFFECTIVEAREAVALUES", 19544, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_TABLE = Field.create("BOOSTOPENLOOPBLENDS1_TABLE", 19568, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_LOADBINS = Field.create("BOOSTOPENLOOPBLENDS1_LOADBINS", 19696, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_RPMBINS = Field.create("BOOSTOPENLOOPBLENDS1_RPMBINS", 19712, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_BLENDPARAMETER = Field.create("BOOSTOPENLOOPBLENDS1_BLENDPARAMETER", 19728, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_YAXISOVERRIDE = Field.create("BOOSTOPENLOOPBLENDS1_YAXISOVERRIDE", 19729, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_BLENDBINS = Field.create("BOOSTOPENLOOPBLENDS1_BLENDBINS", 19730, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_BLENDVALUES = Field.create("BOOSTOPENLOOPBLENDS1_BLENDVALUES", 19746, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_ALIGNMENTFILL_AT_186 = Field.create("BOOSTOPENLOOPBLENDS1_ALIGNMENTFILL_AT_186", 19754, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_TABLE = Field.create("BOOSTOPENLOOPBLENDS2_TABLE", 19756, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_LOADBINS = Field.create("BOOSTOPENLOOPBLENDS2_LOADBINS", 19884, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_RPMBINS = Field.create("BOOSTOPENLOOPBLENDS2_RPMBINS", 19900, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_BLENDPARAMETER = Field.create("BOOSTOPENLOOPBLENDS2_BLENDPARAMETER", 19916, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_YAXISOVERRIDE = Field.create("BOOSTOPENLOOPBLENDS2_YAXISOVERRIDE", 19917, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_BLENDBINS = Field.create("BOOSTOPENLOOPBLENDS2_BLENDBINS", 19918, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_BLENDVALUES = Field.create("BOOSTOPENLOOPBLENDS2_BLENDVALUES", 19934, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_ALIGNMENTFILL_AT_186 = Field.create("BOOSTOPENLOOPBLENDS2_ALIGNMENTFILL_AT_186", 19942, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_TABLE = Field.create("BOOSTCLOSEDLOOPBLENDS1_TABLE", 19944, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_LOADBINS = Field.create("BOOSTCLOSEDLOOPBLENDS1_LOADBINS", 20072, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_RPMBINS = Field.create("BOOSTCLOSEDLOOPBLENDS1_RPMBINS", 20088, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_BLENDPARAMETER = Field.create("BOOSTCLOSEDLOOPBLENDS1_BLENDPARAMETER", 20104, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_YAXISOVERRIDE = Field.create("BOOSTCLOSEDLOOPBLENDS1_YAXISOVERRIDE", 20105, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_BLENDBINS = Field.create("BOOSTCLOSEDLOOPBLENDS1_BLENDBINS", 20106, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_BLENDVALUES = Field.create("BOOSTCLOSEDLOOPBLENDS1_BLENDVALUES", 20122, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_ALIGNMENTFILL_AT_186 = Field.create("BOOSTCLOSEDLOOPBLENDS1_ALIGNMENTFILL_AT_186", 20130, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_TABLE = Field.create("BOOSTCLOSEDLOOPBLENDS2_TABLE", 20132, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_LOADBINS = Field.create("BOOSTCLOSEDLOOPBLENDS2_LOADBINS", 20260, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_RPMBINS = Field.create("BOOSTCLOSEDLOOPBLENDS2_RPMBINS", 20276, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_BLENDPARAMETER = Field.create("BOOSTCLOSEDLOOPBLENDS2_BLENDPARAMETER", 20292, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_YAXISOVERRIDE = Field.create("BOOSTCLOSEDLOOPBLENDS2_YAXISOVERRIDE", 20293, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_BLENDBINS = Field.create("BOOSTCLOSEDLOOPBLENDS2_BLENDBINS", 20294, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_BLENDVALUES = Field.create("BOOSTCLOSEDLOOPBLENDS2_BLENDVALUES", 20310, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_ALIGNMENTFILL_AT_186 = Field.create("BOOSTCLOSEDLOOPBLENDS2_ALIGNMENTFILL_AT_186", 20318, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field LAMBDAMAXDEVIATIONTABLE = Field.create("LAMBDAMAXDEVIATIONTABLE", 20320, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field LAMBDAMAXDEVIATIONLOADBINS = Field.create("LAMBDAMAXDEVIATIONLOADBINS", 20336, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field LAMBDAMAXDEVIATIONRPMBINS = Field.create("LAMBDAMAXDEVIATIONRPMBINS", 20344, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field INJECTORSTAGINGTABLE = Field.create("INJECTORSTAGINGTABLE", 20352, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field INJECTORSTAGINGLOADBINS = Field.create("INJECTORSTAGINGLOADBINS", 20388, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field INJECTORSTAGINGRPMBINS = Field.create("INJECTORSTAGINGRPMBINS", 20400, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field WWCLTBINS = Field.create("WWCLTBINS", 20412, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field WWTAUCLTVALUES = Field.create("WWTAUCLTVALUES", 20420, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field WWBETACLTVALUES = Field.create("WWBETACLTVALUES", 20428, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field WWMAPBINS = Field.create("WWMAPBINS", 20436, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field WWTAUMAPVALUES = Field.create("WWTAUMAPVALUES", 20444, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field WWBETAMAPVALUES = Field.create("WWBETAMAPVALUES", 20452, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field HPFPLOBEPROFILEQUANTITYBINS = Field.create("HPFPLOBEPROFILEQUANTITYBINS", 20460, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field HPFPLOBEPROFILEANGLE = Field.create("HPFPLOBEPROFILEANGLE", 20476, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field HPFPDEADTIMEVOLTSBINS = Field.create("HPFPDEADTIMEVOLTSBINS", 20492, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field HPFPDEADTIMEMS = Field.create("HPFPDEADTIMEMS", 20500, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field HPFPTARGET = Field.create("HPFPTARGET", 20516, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field HPFPTARGETLOADBINS = Field.create("HPFPTARGETLOADBINS", 20716, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field HPFPTARGETRPMBINS = Field.create("HPFPTARGETRPMBINS", 20736, FieldType.INT8).setScale(50.0).setBaseOffset(0);
public static final Field HPFPCOMPENSATION = Field.create("HPFPCOMPENSATION", 20746, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field HPFPCOMPENSATIONLOADBINS = Field.create("HPFPCOMPENSATIONLOADBINS", 20846, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field HPFPCOMPENSATIONRPMBINS = Field.create("HPFPCOMPENSATIONRPMBINS", 20866, FieldType.INT8).setScale(50.0).setBaseOffset(0);
public static final Field KNOCKNOISERPMBINS = Field.create("KNOCKNOISERPMBINS", 20876, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field KNOCKBASENOISE = Field.create("KNOCKBASENOISE", 20908, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field TPSTSPCORRVALUESBINS = Field.create("TPSTSPCORRVALUESBINS", 20924, FieldType.INT8).setScale(50.0).setBaseOffset(0);
public static final Field TPSTSPCORRVALUES = Field.create("TPSTSPCORRVALUES", 20928, FieldType.INT8).setScale(0.02).setBaseOffset(0);
public static final Field CLTREVLIMITRPMBINS = Field.create("CLTREVLIMITRPMBINS", 20932, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field CLTREVLIMITRPM = Field.create("CLTREVLIMITRPM", 20936, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field FUELLEVELBINS = Field.create("FUELLEVELBINS", 20944, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field FUELLEVELVALUES = Field.create("FUELLEVELVALUES", 20960, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field DWELLVOLTAGECORRVOLTBINS = Field.create("DWELLVOLTAGECORRVOLTBINS", 20968, FieldType.INT8).setScale(0.1).setBaseOffset(0);
public static final Field DWELLVOLTAGECORRVALUES = Field.create("DWELLVOLTAGECORRVALUES", 20976, FieldType.INT8).setScale(0.02).setBaseOffset(0);
public static final Field MINIMUMOILPRESSUREBINS = Field.create("MINIMUMOILPRESSUREBINS", 20984, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field MINIMUMOILPRESSUREVALUES = Field.create("MINIMUMOILPRESSUREVALUES", 20992, FieldType.INT8).setScale(10.0).setBaseOffset(0);
public static final Field FUELPRESSURESENSORMODE = Field.create("FUELPRESSURESENSORMODE", 2987, FieldType.INT8, fuel_pressure_sensor_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS1 = Field.create("LUADIGITALINPUTPINS1", 2988, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS2 = Field.create("LUADIGITALINPUTPINS2", 2990, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS3 = Field.create("LUADIGITALINPUTPINS3", 2992, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS4 = Field.create("LUADIGITALINPUTPINS4", 2994, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS5 = Field.create("LUADIGITALINPUTPINS5", 2996, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS6 = Field.create("LUADIGITALINPUTPINS6", 2998, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS7 = Field.create("LUADIGITALINPUTPINS7", 3000, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINS8 = Field.create("LUADIGITALINPUTPINS8", 3002, FieldType.INT16, switch_input_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field ALSMINRPM = Field.create("ALSMINRPM", 3004, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSMAXRPM = Field.create("ALSMAXRPM", 3006, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSMAXDURATION = Field.create("ALSMAXDURATION", 3008, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSMINCLT = Field.create("ALSMINCLT", 3010, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSMAXCLT = Field.create("ALSMAXCLT", 3011, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSMINTIMEBETWEEN = Field.create("ALSMINTIMEBETWEEN", 3012, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSETBPOSITION = Field.create("ALSETBPOSITION", 3013, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ACRELAYALTERNATORDUTYADDER = Field.create("ACRELAYALTERNATORDUTYADDER", 3014, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field INSTANTRPMRANGE = Field.create("INSTANTRPMRANGE", 3015, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSIDLEADD = Field.create("ALSIDLEADD", 3016, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field ALSETBADD = Field.create("ALSETBADD", 3020, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field ALSSKIPRATIO = Field.create("ALSSKIPRATIO", 3024, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field ALSMAXDRIVERTHROTTLEINTENT = Field.create("ALSMAXDRIVERTHROTTLEINTENT", 3028, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALSACTIVATEPINMODE = Field.create("ALSACTIVATEPINMODE", 3029, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field TPSSECONDARYMAXIMUM = Field.create("TPSSECONDARYMAXIMUM", 3030, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field PPSSECONDARYMAXIMUM = Field.create("PPSSECONDARYMAXIMUM", 3031, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES1 = Field.create("LUADIGITALINPUTPINMODES1", 3032, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES2 = Field.create("LUADIGITALINPUTPINMODES2", 3033, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES3 = Field.create("LUADIGITALINPUTPINMODES3", 3034, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES4 = Field.create("LUADIGITALINPUTPINMODES4", 3035, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES5 = Field.create("LUADIGITALINPUTPINMODES5", 3036, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES6 = Field.create("LUADIGITALINPUTPINMODES6", 3037, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES7 = Field.create("LUADIGITALINPUTPINMODES7", 3038, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field LUADIGITALINPUTPINMODES8 = Field.create("LUADIGITALINPUTPINMODES8", 3039, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0);
public static final Field RPMHARDLIMITHYST = Field.create("RPMHARDLIMITHYST", 3040, FieldType.INT8).setScale(10.0).setBaseOffset(0);
public static final Field IGNTESTCOUNT = Field.create("IGNTESTCOUNT", 3041, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNTESTOFFTIME = Field.create("IGNTESTOFFTIME", 3042, FieldType.INT8).setScale(5.0).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_3043 = Field.create("ALIGNMENTFILL_AT_3043", 3043, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field CANVSSSCALING = Field.create("CANVSSSCALING", 3044, FieldType.INT16).setScale(1.0E-4).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_3046 = Field.create("ALIGNMENTFILL_AT_3046", 3046, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field OILTEMPSENSOR_TEMPC_1 = Field.create("OILTEMPSENSOR_TEMPC_1", 3048, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_TEMPC_2 = Field.create("OILTEMPSENSOR_TEMPC_2", 3052, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_TEMPC_3 = Field.create("OILTEMPSENSOR_TEMPC_3", 3056, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_RESISTANCE_1 = Field.create("OILTEMPSENSOR_RESISTANCE_1", 3060, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_RESISTANCE_2 = Field.create("OILTEMPSENSOR_RESISTANCE_2", 3064, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_RESISTANCE_3 = Field.create("OILTEMPSENSOR_RESISTANCE_3", 3068, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field OILTEMPSENSOR_BIAS_RESISTOR = Field.create("OILTEMPSENSOR_BIAS_RESISTOR", 3072, FieldType.INT).setScale(0.1).setBaseOffset(0);
public static final Field OILTEMPSENSOR_ADCCHANNEL = Field.create("OILTEMPSENSOR_ADCCHANNEL", 3076, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field OILTEMPSENSOR_ALIGNMENTFILL_AT_29 = Field.create("OILTEMPSENSOR_ALIGNMENTFILL_AT_29", 3077, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_TEMPC_1 = Field.create("FUELTEMPSENSOR_TEMPC_1", 3080, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_TEMPC_2 = Field.create("FUELTEMPSENSOR_TEMPC_2", 3084, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_TEMPC_3 = Field.create("FUELTEMPSENSOR_TEMPC_3", 3088, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_RESISTANCE_1 = Field.create("FUELTEMPSENSOR_RESISTANCE_1", 3092, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_RESISTANCE_2 = Field.create("FUELTEMPSENSOR_RESISTANCE_2", 3096, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_RESISTANCE_3 = Field.create("FUELTEMPSENSOR_RESISTANCE_3", 3100, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_BIAS_RESISTOR = Field.create("FUELTEMPSENSOR_BIAS_RESISTOR", 3104, FieldType.INT).setScale(0.1).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_ADCCHANNEL = Field.create("FUELTEMPSENSOR_ADCCHANNEL", 3108, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field FUELTEMPSENSOR_ALIGNMENTFILL_AT_29 = Field.create("FUELTEMPSENSOR_ALIGNMENTFILL_AT_29", 3109, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_TEMPC_1 = Field.create("AMBIENTTEMPSENSOR_TEMPC_1", 3112, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_TEMPC_2 = Field.create("AMBIENTTEMPSENSOR_TEMPC_2", 3116, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_TEMPC_3 = Field.create("AMBIENTTEMPSENSOR_TEMPC_3", 3120, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_RESISTANCE_1 = Field.create("AMBIENTTEMPSENSOR_RESISTANCE_1", 3124, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_RESISTANCE_2 = Field.create("AMBIENTTEMPSENSOR_RESISTANCE_2", 3128, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_RESISTANCE_3 = Field.create("AMBIENTTEMPSENSOR_RESISTANCE_3", 3132, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_BIAS_RESISTOR = Field.create("AMBIENTTEMPSENSOR_BIAS_RESISTOR", 3136, FieldType.INT).setScale(0.1).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_ADCCHANNEL = Field.create("AMBIENTTEMPSENSOR_ADCCHANNEL", 3140, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field AMBIENTTEMPSENSOR_ALIGNMENTFILL_AT_29 = Field.create("AMBIENTTEMPSENSOR_ALIGNMENTFILL_AT_29", 3141, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_TEMPC_1 = Field.create("COMPRESSORDISCHARGETEMPERATURE_TEMPC_1", 3144, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_TEMPC_2 = Field.create("COMPRESSORDISCHARGETEMPERATURE_TEMPC_2", 3148, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_TEMPC_3 = Field.create("COMPRESSORDISCHARGETEMPERATURE_TEMPC_3", 3152, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_1 = Field.create("COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_1", 3156, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_2 = Field.create("COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_2", 3160, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_3 = Field.create("COMPRESSORDISCHARGETEMPERATURE_RESISTANCE_3", 3164, FieldType.INT).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_BIAS_RESISTOR = Field.create("COMPRESSORDISCHARGETEMPERATURE_BIAS_RESISTOR", 3168, FieldType.INT).setScale(0.1).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_ADCCHANNEL = Field.create("COMPRESSORDISCHARGETEMPERATURE_ADCCHANNEL", 3172, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMPERATURE_ALIGNMENTFILL_AT_29 = Field.create("COMPRESSORDISCHARGETEMPERATURE_ALIGNMENTFILL_AT_29", 3173, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field THROTTLEINLETPRESSURECHANNEL = Field.create("THROTTLEINLETPRESSURECHANNEL", 3176, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGEPRESSURECHANNEL = Field.create("COMPRESSORDISCHARGEPRESSURECHANNEL", 3177, FieldType.INT8, adc_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field MAXINJECTORDUTYINSTANT = Field.create("MAXINJECTORDUTYINSTANT", 3178, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAXINJECTORDUTYSUSTAINED = Field.create("MAXINJECTORDUTYSUSTAINED", 3179, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAXINJECTORDUTYSUSTAINEDTIMEOUT = Field.create("MAXINJECTORDUTYSUSTAINEDTIMEOUT", 3180, FieldType.INT8).setScale(0.1).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_3181 = Field.create("ALIGNMENTFILL_AT_3181", 3181, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field SPEEDOMETEROUTPUTPIN = Field.create("SPEEDOMETEROUTPUTPIN", 3182, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0);
public static final Field SPEEDOMETERPULSEPERKM = Field.create("SPEEDOMETERPULSEPERKM", 3184, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SPI4MOSIPIN = Field.create("SPI4MOSIPIN", 3186, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI4MISOPIN = Field.create("SPI4MISOPIN", 3188, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI4SCKPIN = Field.create("SPI4SCKPIN", 3190, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI5MOSIPIN = Field.create("SPI5MOSIPIN", 3192, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI5MISOPIN = Field.create("SPI5MISOPIN", 3194, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI5SCKPIN = Field.create("SPI5SCKPIN", 3196, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI6MOSIPIN = Field.create("SPI6MOSIPIN", 3198, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI6MISOPIN = Field.create("SPI6MISOPIN", 3200, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field SPI6SCKPIN = Field.create("SPI6SCKPIN", 3202, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0);
public static final Field ETBBIASBINS = Field.create("ETBBIASBINS", 3204, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field ETBBIASVALUES = Field.create("ETBBIASVALUES", 3212, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IACPIDMULTTABLE = Field.create("IACPIDMULTTABLE", 3228, FieldType.INT8).setScale(0.05).setBaseOffset(0);
public static final Field IACPIDMULTLOADBINS = Field.create("IACPIDMULTLOADBINS", 3292, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IACPIDMULTRPMBINS = Field.create("IACPIDMULTRPMBINS", 3300, FieldType.INT8).setScale(10.0).setBaseOffset(0);
public static final Field SPARKDWELLRPMBINS = Field.create("SPARKDWELLRPMBINS", 3308, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SPARKDWELLVALUES = Field.create("SPARKDWELLVALUES", 3324, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field CLTIDLERPMBINS = Field.create("CLTIDLERPMBINS", 3340, FieldType.INT8).setScale(2.0).setBaseOffset(0);
public static final Field CLTIDLERPM = Field.create("CLTIDLERPM", 3356, FieldType.INT8).setScale(20.0).setBaseOffset(0);
public static final Field CLTTIMINGBINS = Field.create("CLTTIMINGBINS", 3372, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTTIMINGEXTRA = Field.create("CLTTIMINGEXTRA", 3404, FieldType.FLOAT).setBaseOffset(0);
public static final Field SCRIPTCURVE1BINS = Field.create("SCRIPTCURVE1BINS", 3436, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE1 = Field.create("SCRIPTCURVE1", 3468, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE2BINS = Field.create("SCRIPTCURVE2BINS", 3500, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE2 = Field.create("SCRIPTCURVE2", 3532, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE3BINS = Field.create("SCRIPTCURVE3BINS", 3564, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE3 = Field.create("SCRIPTCURVE3", 3580, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE4BINS = Field.create("SCRIPTCURVE4BINS", 3596, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE4 = Field.create("SCRIPTCURVE4", 3612, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE5BINS = Field.create("SCRIPTCURVE5BINS", 3628, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE5 = Field.create("SCRIPTCURVE5", 3644, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE6BINS = Field.create("SCRIPTCURVE6BINS", 3660, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCRIPTCURVE6 = Field.create("SCRIPTCURVE6", 3676, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BAROCORRPRESSUREBINS = Field.create("BAROCORRPRESSUREBINS", 3692, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BAROCORRRPMBINS = Field.create("BAROCORRRPMBINS", 3700, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BAROCORRTABLE = Field.create("BAROCORRTABLE", 3708, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field CRANKINGTPSCOEF = Field.create("CRANKINGTPSCOEF", 3740, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGTPSBINS = Field.create("CRANKINGTPSBINS", 3772, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGADVANCEBINS = Field.create("CRANKINGADVANCEBINS", 3804, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field CRANKINGADVANCE = Field.create("CRANKINGADVANCE", 3812, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IACCOASTINGRPMBINS = Field.create("IACCOASTINGRPMBINS", 3820, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field IACCOASTING = Field.create("IACCOASTING", 3836, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTTABLEOPENLOOP = Field.create("BOOSTTABLEOPENLOOP", 3852, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTRPMBINS = Field.create("BOOSTRPMBINS", 3916, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field BOOSTTABLECLOSEDLOOP = Field.create("BOOSTTABLECLOSEDLOOP", 3924, FieldType.INT8).setScale(2.0).setBaseOffset(0);
public static final Field BOOSTTPSBINS = Field.create("BOOSTTPSBINS", 3988, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field PEDALTOTPSTABLE = Field.create("PEDALTOTPSTABLE", 3996, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field PEDALTOTPSPEDALBINS = Field.create("PEDALTOTPSPEDALBINS", 4060, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field PEDALTOTPSRPMBINS = Field.create("PEDALTOTPSRPMBINS", 4068, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field CLTCRANKINGCORRBINS = Field.create("CLTCRANKINGCORRBINS", 4076, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTCRANKINGCORR = Field.create("CLTCRANKINGCORR", 4108, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTCRANKINGTAPERCORRBINS = Field.create("CLTCRANKINGTAPERCORRBINS", 4140, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field CLTCRANKINGTAPERCORR = Field.create("CLTCRANKINGTAPERCORR", 4148, FieldType.INT8).setScale(0.02).setBaseOffset(0);
public static final Field IDLEADVANCEBINS = Field.create("IDLEADVANCEBINS", 4156, FieldType.INT8).setScale(50.0).setBaseOffset(0);
public static final Field IDLEADVANCE = Field.create("IDLEADVANCE", 4164, FieldType.FLOAT).setBaseOffset(0);
public static final Field IDLEVERPMBINS = Field.create("IDLEVERPMBINS", 4196, FieldType.INT8).setScale(10.0).setBaseOffset(0);
public static final Field IDLEVELOADBINS = Field.create("IDLEVELOADBINS", 4200, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IDLEVETABLE = Field.create("IDLEVETABLE", 4204, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field LUASCRIPT = Field.create("LUASCRIPT", 4236, 8000, FieldType.STRING).setScale(1.0).setBaseOffset(0);
public static final Field CLTFUELCORRBINS = Field.create("CLTFUELCORRBINS", 12236, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTFUELCORR = Field.create("CLTFUELCORR", 12300, FieldType.FLOAT).setBaseOffset(0);
public static final Field IATFUELCORRBINS = Field.create("IATFUELCORRBINS", 12364, FieldType.FLOAT).setBaseOffset(0);
public static final Field IATFUELCORR = Field.create("IATFUELCORR", 12428, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGFUELCOEF = Field.create("CRANKINGFUELCOEF", 12492, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGFUELBINS = Field.create("CRANKINGFUELBINS", 12524, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGCYCLECOEF = Field.create("CRANKINGCYCLECOEF", 12556, FieldType.FLOAT).setBaseOffset(0);
public static final Field CRANKINGCYCLEBINS = Field.create("CRANKINGCYCLEBINS", 12588, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTIDLECORRBINS = Field.create("CLTIDLECORRBINS", 12620, FieldType.FLOAT).setBaseOffset(0);
public static final Field CLTIDLECORR = Field.create("CLTIDLECORR", 12684, FieldType.FLOAT).setBaseOffset(0);
public static final Field MAFDECODING = Field.create("MAFDECODING", 12748, FieldType.INT).setScale(0.001).setBaseOffset(0);
public static final Field MAFDECODINGBINS = Field.create("MAFDECODINGBINS", 13004, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IGNITIONIATCORRTABLE = Field.create("IGNITIONIATCORRTABLE", 13132, FieldType.INT8).setScale(0.1).setBaseOffset(0);
public static final Field IGNITIONIATCORRTEMPBINS = Field.create("IGNITIONIATCORRTEMPBINS", 13196, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNITIONIATCORRLOADBINS = Field.create("IGNITIONIATCORRLOADBINS", 13204, FieldType.INT8).setScale(5.0).setBaseOffset(0);
public static final Field INJECTIONPHASE = Field.create("INJECTIONPHASE", 13212, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field INJPHASELOADBINS = Field.create("INJPHASELOADBINS", 13724, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field INJPHASERPMBINS = Field.create("INJPHASERPMBINS", 13756, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field TCUSOLENOIDTABLE = Field.create("TCUSOLENOIDTABLE", 13788, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPESTIMATETABLE = Field.create("MAPESTIMATETABLE", 13848, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field MAPESTIMATETPSBINS = Field.create("MAPESTIMATETPSBINS", 14360, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field MAPESTIMATERPMBINS = Field.create("MAPESTIMATERPMBINS", 14392, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE1 = Field.create("VVTTABLE1", 14424, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE1LOADBINS = Field.create("VVTTABLE1LOADBINS", 14488, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE1RPMBINS = Field.create("VVTTABLE1RPMBINS", 14504, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE2 = Field.create("VVTTABLE2", 14520, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE2LOADBINS = Field.create("VVTTABLE2LOADBINS", 14584, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VVTTABLE2RPMBINS = Field.create("VVTTABLE2RPMBINS", 14600, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNITIONTABLE = Field.create("IGNITIONTABLE", 14616, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNITIONLOADBINS = Field.create("IGNITIONLOADBINS", 15128, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNITIONRPMBINS = Field.create("IGNITIONRPMBINS", 15160, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VETABLE = Field.create("VETABLE", 15192, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VELOADBINS = Field.create("VELOADBINS", 15704, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VERPMBINS = Field.create("VERPMBINS", 15736, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field LAMBDATABLE = Field.create("LAMBDATABLE", 15768, FieldType.INT8).setScale(0.006802721088435374).setBaseOffset(0);
public static final Field LAMBDALOADBINS = Field.create("LAMBDALOADBINS", 16024, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field LAMBDARPMBINS = Field.create("LAMBDARPMBINS", 16056, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field TPSTPSACCELTABLE = Field.create("TPSTPSACCELTABLE", 16088, FieldType.FLOAT).setBaseOffset(0);
public static final Field TPSTPSACCELFROMRPMBINS = Field.create("TPSTPSACCELFROMRPMBINS", 16344, FieldType.FLOAT).setBaseOffset(0);
public static final Field TPSTPSACCELTORPMBINS = Field.create("TPSTPSACCELTORPMBINS", 16376, FieldType.FLOAT).setBaseOffset(0);
public static final Field SCRIPTTABLE1 = Field.create("SCRIPTTABLE1", 16408, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field SCRIPTTABLE1LOADBINS = Field.create("SCRIPTTABLE1LOADBINS", 16536, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE1RPMBINS = Field.create("SCRIPTTABLE1RPMBINS", 16552, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE2 = Field.create("SCRIPTTABLE2", 16568, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field SCRIPTTABLE2LOADBINS = Field.create("SCRIPTTABLE2LOADBINS", 16696, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE2RPMBINS = Field.create("SCRIPTTABLE2RPMBINS", 16712, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE3 = Field.create("SCRIPTTABLE3", 16728, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field SCRIPTTABLE3LOADBINS = Field.create("SCRIPTTABLE3LOADBINS", 16856, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE3RPMBINS = Field.create("SCRIPTTABLE3RPMBINS", 16872, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE4 = Field.create("SCRIPTTABLE4", 16888, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field SCRIPTTABLE4LOADBINS = Field.create("SCRIPTTABLE4LOADBINS", 17016, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field SCRIPTTABLE4RPMBINS = Field.create("SCRIPTTABLE4RPMBINS", 17032, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNTRIMLOADBINS = Field.create("IGNTRIMLOADBINS", 17048, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNTRIMRPMBINS = Field.create("IGNTRIMRPMBINS", 17056, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNTRIMS1_TABLE = Field.create("IGNTRIMS1_TABLE", 17064, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS2_TABLE = Field.create("IGNTRIMS2_TABLE", 17080, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS3_TABLE = Field.create("IGNTRIMS3_TABLE", 17096, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS4_TABLE = Field.create("IGNTRIMS4_TABLE", 17112, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS5_TABLE = Field.create("IGNTRIMS5_TABLE", 17128, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS6_TABLE = Field.create("IGNTRIMS6_TABLE", 17144, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS7_TABLE = Field.create("IGNTRIMS7_TABLE", 17160, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS8_TABLE = Field.create("IGNTRIMS8_TABLE", 17176, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS9_TABLE = Field.create("IGNTRIMS9_TABLE", 17192, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS10_TABLE = Field.create("IGNTRIMS10_TABLE", 17208, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS11_TABLE = Field.create("IGNTRIMS11_TABLE", 17224, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field IGNTRIMS12_TABLE = Field.create("IGNTRIMS12_TABLE", 17240, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMLOADBINS = Field.create("FUELTRIMLOADBINS", 17256, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field FUELTRIMRPMBINS = Field.create("FUELTRIMRPMBINS", 17264, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field FUELTRIMS1_TABLE = Field.create("FUELTRIMS1_TABLE", 17272, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS2_TABLE = Field.create("FUELTRIMS2_TABLE", 17288, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS3_TABLE = Field.create("FUELTRIMS3_TABLE", 17304, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS4_TABLE = Field.create("FUELTRIMS4_TABLE", 17320, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS5_TABLE = Field.create("FUELTRIMS5_TABLE", 17336, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS6_TABLE = Field.create("FUELTRIMS6_TABLE", 17352, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS7_TABLE = Field.create("FUELTRIMS7_TABLE", 17368, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS8_TABLE = Field.create("FUELTRIMS8_TABLE", 17384, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS9_TABLE = Field.create("FUELTRIMS9_TABLE", 17400, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS10_TABLE = Field.create("FUELTRIMS10_TABLE", 17416, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS11_TABLE = Field.create("FUELTRIMS11_TABLE", 17432, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field FUELTRIMS12_TABLE = Field.create("FUELTRIMS12_TABLE", 17448, FieldType.INT8).setScale(0.2).setBaseOffset(0);
public static final Field CRANKINGFUELCOEFE100 = Field.create("CRANKINGFUELCOEFE100", 17464, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field TCU_PCAIRMASSBINS = Field.create("TCU_PCAIRMASSBINS", 17480, FieldType.INT8).setScale(0.02).setBaseOffset(0);
public static final Field TCU_PCVALSR = Field.create("TCU_PCVALSR", 17488, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALSN = Field.create("TCU_PCVALSN", 17496, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS1 = Field.create("TCU_PCVALS1", 17504, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS2 = Field.create("TCU_PCVALS2", 17512, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS3 = Field.create("TCU_PCVALS3", 17520, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS4 = Field.create("TCU_PCVALS4", 17528, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS12 = Field.create("TCU_PCVALS12", 17536, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS23 = Field.create("TCU_PCVALS23", 17544, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS34 = Field.create("TCU_PCVALS34", 17552, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS21 = Field.create("TCU_PCVALS21", 17560, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS32 = Field.create("TCU_PCVALS32", 17568, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_PCVALS43 = Field.create("TCU_PCVALS43", 17576, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCCTPSBINS = Field.create("TCU_TCCTPSBINS", 17584, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCCLOCKSPEED = Field.create("TCU_TCCLOCKSPEED", 17592, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_TCCUNLOCKSPEED = Field.create("TCU_TCCUNLOCKSPEED", 17600, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32SPEEDBINS = Field.create("TCU_32SPEEDBINS", 17608, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TCU_32VALS = Field.create("TCU_32VALS", 17616, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field THROTTLE2TRIMTABLE = Field.create("THROTTLE2TRIMTABLE", 17624, FieldType.INT8).setScale(0.1).setBaseOffset(0);
public static final Field THROTTLE2TRIMTPSBINS = Field.create("THROTTLE2TRIMTPSBINS", 17660, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field THROTTLE2TRIMRPMBINS = Field.create("THROTTLE2TRIMRPMBINS", 17666, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field MAXKNOCKRETARDTABLE = Field.create("MAXKNOCKRETARDTABLE", 17672, FieldType.INT8).setScale(0.25).setBaseOffset(0);
public static final Field MAXKNOCKRETARDLOADBINS = Field.create("MAXKNOCKRETARDLOADBINS", 17708, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAXKNOCKRETARDRPMBINS = Field.create("MAXKNOCKRETARDRPMBINS", 17714, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field ALSTIMINGRETARDTABLE = Field.create("ALSTIMINGRETARDTABLE", 17720, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field ALSIGNRETARDLOADBINS = Field.create("ALSIGNRETARDLOADBINS", 17752, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSIGNRETARDRPMBINS = Field.create("ALSIGNRETARDRPMBINS", 17760, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSFUELADJUSTMENT = Field.create("ALSFUELADJUSTMENT", 17768, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field ALSFUELADJUSTMENTLOADBINS = Field.create("ALSFUELADJUSTMENTLOADBINS", 17800, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALSFUELADJUSTMENTRPMBINS = Field.create("ALSFUELADJUSTMENTRPMBINS", 17808, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_TABLE = Field.create("IGNBLENDS1_TABLE", 17816, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS1_LOADBINS = Field.create("IGNBLENDS1_LOADBINS", 17944, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_RPMBINS = Field.create("IGNBLENDS1_RPMBINS", 17960, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_BLENDPARAMETER = Field.create("IGNBLENDS1_BLENDPARAMETER", 17976, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_YAXISOVERRIDE = Field.create("IGNBLENDS1_YAXISOVERRIDE", 17977, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS1_BLENDBINS = Field.create("IGNBLENDS1_BLENDBINS", 17978, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS1_BLENDVALUES = Field.create("IGNBLENDS1_BLENDVALUES", 17994, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDS1_ALIGNMENTFILL_AT_186 = Field.create("IGNBLENDS1_ALIGNMENTFILL_AT_186", 18002, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_TABLE = Field.create("IGNBLENDS2_TABLE", 18004, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS2_LOADBINS = Field.create("IGNBLENDS2_LOADBINS", 18132, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_RPMBINS = Field.create("IGNBLENDS2_RPMBINS", 18148, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_BLENDPARAMETER = Field.create("IGNBLENDS2_BLENDPARAMETER", 18164, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_YAXISOVERRIDE = Field.create("IGNBLENDS2_YAXISOVERRIDE", 18165, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS2_BLENDBINS = Field.create("IGNBLENDS2_BLENDBINS", 18166, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS2_BLENDVALUES = Field.create("IGNBLENDS2_BLENDVALUES", 18182, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDS2_ALIGNMENTFILL_AT_186 = Field.create("IGNBLENDS2_ALIGNMENTFILL_AT_186", 18190, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_TABLE = Field.create("IGNBLENDS3_TABLE", 18192, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS3_LOADBINS = Field.create("IGNBLENDS3_LOADBINS", 18320, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_RPMBINS = Field.create("IGNBLENDS3_RPMBINS", 18336, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_BLENDPARAMETER = Field.create("IGNBLENDS3_BLENDPARAMETER", 18352, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_YAXISOVERRIDE = Field.create("IGNBLENDS3_YAXISOVERRIDE", 18353, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS3_BLENDBINS = Field.create("IGNBLENDS3_BLENDBINS", 18354, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS3_BLENDVALUES = Field.create("IGNBLENDS3_BLENDVALUES", 18370, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDS3_ALIGNMENTFILL_AT_186 = Field.create("IGNBLENDS3_ALIGNMENTFILL_AT_186", 18378, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_TABLE = Field.create("IGNBLENDS4_TABLE", 18380, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS4_LOADBINS = Field.create("IGNBLENDS4_LOADBINS", 18508, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_RPMBINS = Field.create("IGNBLENDS4_RPMBINS", 18524, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_BLENDPARAMETER = Field.create("IGNBLENDS4_BLENDPARAMETER", 18540, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_YAXISOVERRIDE = Field.create("IGNBLENDS4_YAXISOVERRIDE", 18541, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field IGNBLENDS4_BLENDBINS = Field.create("IGNBLENDS4_BLENDBINS", 18542, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDS4_BLENDVALUES = Field.create("IGNBLENDS4_BLENDVALUES", 18558, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDS4_ALIGNMENTFILL_AT_186 = Field.create("IGNBLENDS4_ALIGNMENTFILL_AT_186", 18566, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_TABLE = Field.create("VEBLENDS1_TABLE", 18568, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS1_LOADBINS = Field.create("VEBLENDS1_LOADBINS", 18696, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_RPMBINS = Field.create("VEBLENDS1_RPMBINS", 18712, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_BLENDPARAMETER = Field.create("VEBLENDS1_BLENDPARAMETER", 18728, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_YAXISOVERRIDE = Field.create("VEBLENDS1_YAXISOVERRIDE", 18729, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS1_BLENDBINS = Field.create("VEBLENDS1_BLENDBINS", 18730, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS1_BLENDVALUES = Field.create("VEBLENDS1_BLENDVALUES", 18746, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDS1_ALIGNMENTFILL_AT_186 = Field.create("VEBLENDS1_ALIGNMENTFILL_AT_186", 18754, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_TABLE = Field.create("VEBLENDS2_TABLE", 18756, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS2_LOADBINS = Field.create("VEBLENDS2_LOADBINS", 18884, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_RPMBINS = Field.create("VEBLENDS2_RPMBINS", 18900, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_BLENDPARAMETER = Field.create("VEBLENDS2_BLENDPARAMETER", 18916, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_YAXISOVERRIDE = Field.create("VEBLENDS2_YAXISOVERRIDE", 18917, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS2_BLENDBINS = Field.create("VEBLENDS2_BLENDBINS", 18918, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS2_BLENDVALUES = Field.create("VEBLENDS2_BLENDVALUES", 18934, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDS2_ALIGNMENTFILL_AT_186 = Field.create("VEBLENDS2_ALIGNMENTFILL_AT_186", 18942, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_TABLE = Field.create("VEBLENDS3_TABLE", 18944, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS3_LOADBINS = Field.create("VEBLENDS3_LOADBINS", 19072, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_RPMBINS = Field.create("VEBLENDS3_RPMBINS", 19088, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_BLENDPARAMETER = Field.create("VEBLENDS3_BLENDPARAMETER", 19104, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_YAXISOVERRIDE = Field.create("VEBLENDS3_YAXISOVERRIDE", 19105, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS3_BLENDBINS = Field.create("VEBLENDS3_BLENDBINS", 19106, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS3_BLENDVALUES = Field.create("VEBLENDS3_BLENDVALUES", 19122, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDS3_ALIGNMENTFILL_AT_186 = Field.create("VEBLENDS3_ALIGNMENTFILL_AT_186", 19130, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_TABLE = Field.create("VEBLENDS4_TABLE", 19132, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS4_LOADBINS = Field.create("VEBLENDS4_LOADBINS", 19260, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_RPMBINS = Field.create("VEBLENDS4_RPMBINS", 19276, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_BLENDPARAMETER = Field.create("VEBLENDS4_BLENDPARAMETER", 19292, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_YAXISOVERRIDE = Field.create("VEBLENDS4_YAXISOVERRIDE", 19293, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field VEBLENDS4_BLENDBINS = Field.create("VEBLENDS4_BLENDBINS", 19294, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDS4_BLENDVALUES = Field.create("VEBLENDS4_BLENDVALUES", 19310, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDS4_ALIGNMENTFILL_AT_186 = Field.create("VEBLENDS4_ALIGNMENTFILL_AT_186", 19318, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field THROTTLEESTIMATEEFFECTIVEAREABINS = Field.create("THROTTLEESTIMATEEFFECTIVEAREABINS", 19320, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field THROTTLEESTIMATEEFFECTIVEAREAVALUES = Field.create("THROTTLEESTIMATEEFFECTIVEAREAVALUES", 19344, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_TABLE = Field.create("BOOSTOPENLOOPBLENDS1_TABLE", 19368, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_LOADBINS = Field.create("BOOSTOPENLOOPBLENDS1_LOADBINS", 19496, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_RPMBINS = Field.create("BOOSTOPENLOOPBLENDS1_RPMBINS", 19512, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_BLENDPARAMETER = Field.create("BOOSTOPENLOOPBLENDS1_BLENDPARAMETER", 19528, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_YAXISOVERRIDE = Field.create("BOOSTOPENLOOPBLENDS1_YAXISOVERRIDE", 19529, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_BLENDBINS = Field.create("BOOSTOPENLOOPBLENDS1_BLENDBINS", 19530, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_BLENDVALUES = Field.create("BOOSTOPENLOOPBLENDS1_BLENDVALUES", 19546, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS1_ALIGNMENTFILL_AT_186 = Field.create("BOOSTOPENLOOPBLENDS1_ALIGNMENTFILL_AT_186", 19554, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_TABLE = Field.create("BOOSTOPENLOOPBLENDS2_TABLE", 19556, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_LOADBINS = Field.create("BOOSTOPENLOOPBLENDS2_LOADBINS", 19684, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_RPMBINS = Field.create("BOOSTOPENLOOPBLENDS2_RPMBINS", 19700, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_BLENDPARAMETER = Field.create("BOOSTOPENLOOPBLENDS2_BLENDPARAMETER", 19716, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_YAXISOVERRIDE = Field.create("BOOSTOPENLOOPBLENDS2_YAXISOVERRIDE", 19717, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_BLENDBINS = Field.create("BOOSTOPENLOOPBLENDS2_BLENDBINS", 19718, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_BLENDVALUES = Field.create("BOOSTOPENLOOPBLENDS2_BLENDVALUES", 19734, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDS2_ALIGNMENTFILL_AT_186 = Field.create("BOOSTOPENLOOPBLENDS2_ALIGNMENTFILL_AT_186", 19742, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_TABLE = Field.create("BOOSTCLOSEDLOOPBLENDS1_TABLE", 19744, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_LOADBINS = Field.create("BOOSTCLOSEDLOOPBLENDS1_LOADBINS", 19872, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_RPMBINS = Field.create("BOOSTCLOSEDLOOPBLENDS1_RPMBINS", 19888, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_BLENDPARAMETER = Field.create("BOOSTCLOSEDLOOPBLENDS1_BLENDPARAMETER", 19904, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_YAXISOVERRIDE = Field.create("BOOSTCLOSEDLOOPBLENDS1_YAXISOVERRIDE", 19905, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_BLENDBINS = Field.create("BOOSTCLOSEDLOOPBLENDS1_BLENDBINS", 19906, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_BLENDVALUES = Field.create("BOOSTCLOSEDLOOPBLENDS1_BLENDVALUES", 19922, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS1_ALIGNMENTFILL_AT_186 = Field.create("BOOSTCLOSEDLOOPBLENDS1_ALIGNMENTFILL_AT_186", 19930, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_TABLE = Field.create("BOOSTCLOSEDLOOPBLENDS2_TABLE", 19932, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_LOADBINS = Field.create("BOOSTCLOSEDLOOPBLENDS2_LOADBINS", 20060, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_RPMBINS = Field.create("BOOSTCLOSEDLOOPBLENDS2_RPMBINS", 20076, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_BLENDPARAMETER = Field.create("BOOSTCLOSEDLOOPBLENDS2_BLENDPARAMETER", 20092, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_YAXISOVERRIDE = Field.create("BOOSTCLOSEDLOOPBLENDS2_YAXISOVERRIDE", 20093, FieldType.INT8, gppwm_channel_e).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_BLENDBINS = Field.create("BOOSTCLOSEDLOOPBLENDS2_BLENDBINS", 20094, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_BLENDVALUES = Field.create("BOOSTCLOSEDLOOPBLENDS2_BLENDVALUES", 20110, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDS2_ALIGNMENTFILL_AT_186 = Field.create("BOOSTCLOSEDLOOPBLENDS2_ALIGNMENTFILL_AT_186", 20118, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field LAMBDAMAXDEVIATIONTABLE = Field.create("LAMBDAMAXDEVIATIONTABLE", 20120, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field LAMBDAMAXDEVIATIONLOADBINS = Field.create("LAMBDAMAXDEVIATIONLOADBINS", 20136, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field LAMBDAMAXDEVIATIONRPMBINS = Field.create("LAMBDAMAXDEVIATIONRPMBINS", 20144, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field INJECTORSTAGINGTABLE = Field.create("INJECTORSTAGINGTABLE", 20152, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field INJECTORSTAGINGLOADBINS = Field.create("INJECTORSTAGINGLOADBINS", 20188, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field INJECTORSTAGINGRPMBINS = Field.create("INJECTORSTAGINGRPMBINS", 20200, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field WWCLTBINS = Field.create("WWCLTBINS", 20212, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field WWTAUCLTVALUES = Field.create("WWTAUCLTVALUES", 20220, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field WWBETACLTVALUES = Field.create("WWBETACLTVALUES", 20228, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field WWMAPBINS = Field.create("WWMAPBINS", 20236, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field WWTAUMAPVALUES = Field.create("WWTAUMAPVALUES", 20244, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field WWBETAMAPVALUES = Field.create("WWBETAMAPVALUES", 20252, FieldType.INT8).setScale(0.01).setBaseOffset(0);
public static final Field HPFPLOBEPROFILEQUANTITYBINS = Field.create("HPFPLOBEPROFILEQUANTITYBINS", 20260, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field HPFPLOBEPROFILEANGLE = Field.create("HPFPLOBEPROFILEANGLE", 20276, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field HPFPDEADTIMEVOLTSBINS = Field.create("HPFPDEADTIMEVOLTSBINS", 20292, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field HPFPDEADTIMEMS = Field.create("HPFPDEADTIMEMS", 20300, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field HPFPTARGET = Field.create("HPFPTARGET", 20316, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field HPFPTARGETLOADBINS = Field.create("HPFPTARGETLOADBINS", 20516, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field HPFPTARGETRPMBINS = Field.create("HPFPTARGETRPMBINS", 20536, FieldType.INT8).setScale(50.0).setBaseOffset(0);
public static final Field HPFPCOMPENSATION = Field.create("HPFPCOMPENSATION", 20546, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field HPFPCOMPENSATIONLOADBINS = Field.create("HPFPCOMPENSATIONLOADBINS", 20646, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field HPFPCOMPENSATIONRPMBINS = Field.create("HPFPCOMPENSATIONRPMBINS", 20666, FieldType.INT8).setScale(50.0).setBaseOffset(0);
public static final Field KNOCKNOISERPMBINS = Field.create("KNOCKNOISERPMBINS", 20676, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field KNOCKBASENOISE = Field.create("KNOCKBASENOISE", 20708, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field TPSTSPCORRVALUESBINS = Field.create("TPSTSPCORRVALUESBINS", 20724, FieldType.INT8).setScale(50.0).setBaseOffset(0);
public static final Field TPSTSPCORRVALUES = Field.create("TPSTSPCORRVALUES", 20728, FieldType.INT8).setScale(0.02).setBaseOffset(0);
public static final Field CLTREVLIMITRPMBINS = Field.create("CLTREVLIMITRPMBINS", 20732, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field CLTREVLIMITRPM = Field.create("CLTREVLIMITRPM", 20736, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field FUELLEVELBINS = Field.create("FUELLEVELBINS", 20744, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field FUELLEVELVALUES = Field.create("FUELLEVELVALUES", 20760, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field DWELLVOLTAGECORRVOLTBINS = Field.create("DWELLVOLTAGECORRVOLTBINS", 20768, FieldType.INT8).setScale(0.1).setBaseOffset(0);
public static final Field DWELLVOLTAGECORRVALUES = Field.create("DWELLVOLTAGECORRVALUES", 20776, FieldType.INT8).setScale(0.02).setBaseOffset(0);
public static final Field MINIMUMOILPRESSUREBINS = Field.create("MINIMUMOILPRESSUREBINS", 20784, FieldType.INT8).setScale(100.0).setBaseOffset(0);
public static final Field MINIMUMOILPRESSUREVALUES = Field.create("MINIMUMOILPRESSUREVALUES", 20792, FieldType.INT8).setScale(10.0).setBaseOffset(0);
}

View File

@ -23,6 +23,8 @@ public class TsOutputs {
public static final String GAUGE_NAME_AIR_MASS = "Air: Cylinder airmass";
public static final String GAUGE_NAME_AUX_LINEAR_1 = "Aux linear #1";
public static final String GAUGE_NAME_AUX_LINEAR_2 = "Aux linear #2";
public static final String GAUGE_NAME_AUX_LINEAR_3 = "Aux linear #3";
public static final String GAUGE_NAME_AUX_LINEAR_4 = "Aux linear #4";
public static final String GAUGE_NAME_AUX_TEMP1 = "Aux temp 1";
public static final String GAUGE_NAME_AUX_TEMP2 = "Aux temp 2";
public static final String GAUGE_NAME_BARO_PRESSURE = "Barometric pressure";
@ -339,297 +341,198 @@ public class TsOutputs {
public static final Field ISSEDGECOUNTER = Field.create("ISSEDGECOUNTER", 328, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field AUXLINEAR1 = Field.create("AUXLINEAR1", 332, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR2 = Field.create("AUXLINEAR2", 336, FieldType.FLOAT).setBaseOffset(0);
public static final Field FALLBACKMAP = Field.create("FALLBACKMAP", 340, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field INSTANTMAPVALUE = Field.create("INSTANTMAPVALUE", 342, FieldType.INT16).setScale(0.03333333333333333).setBaseOffset(0);
public static final Field MAXLOCKEDDURATION = Field.create("MAXLOCKEDDURATION", 344, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field CANWRITEOK = Field.create("CANWRITEOK", 346, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field CANWRITENOTOK = Field.create("CANWRITENOTOK", 348, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_350 = Field.create("ALIGNMENTFILL_AT_350", 350, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERPRIMARYFALL = Field.create("TRIGGERPRIMARYFALL", 352, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERPRIMARYRISE = Field.create("TRIGGERPRIMARYRISE", 356, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERSECONDARYFALL = Field.create("TRIGGERSECONDARYFALL", 360, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERSECONDARYRISE = Field.create("TRIGGERSECONDARYRISE", 364, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERVVTFALL = Field.create("TRIGGERVVTFALL", 368, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERVVTRISE = Field.create("TRIGGERVVTRISE", 372, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field STARTERSTATE = Field.create("STARTERSTATE", 376, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field STARTERRELAYDISABLE = Field.create("STARTERRELAYDISABLE", 377, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MULTISPARKCOUNTER = Field.create("MULTISPARKCOUNTER", 378, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field EXTIOVERFLOWCOUNT = Field.create("EXTIOVERFLOWCOUNT", 379, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_PTERM = Field.create("ALTERNATORSTATUS_PTERM", 380, FieldType.FLOAT).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_ITERM = Field.create("ALTERNATORSTATUS_ITERM", 384, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_DTERM = Field.create("ALTERNATORSTATUS_DTERM", 386, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_OUTPUT = Field.create("ALTERNATORSTATUS_OUTPUT", 388, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_ERROR = Field.create("ALTERNATORSTATUS_ERROR", 390, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_RESETCOUNTER = Field.create("ALTERNATORSTATUS_RESETCOUNTER", 392, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field IDLESTATUS_PTERM = Field.create("IDLESTATUS_PTERM", 396, FieldType.FLOAT).setBaseOffset(0);
public static final Field IDLESTATUS_ITERM = Field.create("IDLESTATUS_ITERM", 400, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IDLESTATUS_DTERM = Field.create("IDLESTATUS_DTERM", 402, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IDLESTATUS_OUTPUT = Field.create("IDLESTATUS_OUTPUT", 404, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IDLESTATUS_ERROR = Field.create("IDLESTATUS_ERROR", 406, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IDLESTATUS_RESETCOUNTER = Field.create("IDLESTATUS_RESETCOUNTER", 408, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field ETBSTATUS_PTERM = Field.create("ETBSTATUS_PTERM", 412, FieldType.FLOAT).setBaseOffset(0);
public static final Field ETBSTATUS_ITERM = Field.create("ETBSTATUS_ITERM", 416, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ETBSTATUS_DTERM = Field.create("ETBSTATUS_DTERM", 418, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ETBSTATUS_OUTPUT = Field.create("ETBSTATUS_OUTPUT", 420, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ETBSTATUS_ERROR = Field.create("ETBSTATUS_ERROR", 422, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ETBSTATUS_RESETCOUNTER = Field.create("ETBSTATUS_RESETCOUNTER", 424, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTSTATUS_PTERM = Field.create("BOOSTSTATUS_PTERM", 428, FieldType.FLOAT).setBaseOffset(0);
public static final Field BOOSTSTATUS_ITERM = Field.create("BOOSTSTATUS_ITERM", 432, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTSTATUS_DTERM = Field.create("BOOSTSTATUS_DTERM", 434, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTSTATUS_OUTPUT = Field.create("BOOSTSTATUS_OUTPUT", 436, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTSTATUS_ERROR = Field.create("BOOSTSTATUS_ERROR", 438, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTSTATUS_RESETCOUNTER = Field.create("BOOSTSTATUS_RESETCOUNTER", 440, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_PTERM = Field.create("WASTEGATEDCSTATUS_PTERM", 444, FieldType.FLOAT).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_ITERM = Field.create("WASTEGATEDCSTATUS_ITERM", 448, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_DTERM = Field.create("WASTEGATEDCSTATUS_DTERM", 450, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_OUTPUT = Field.create("WASTEGATEDCSTATUS_OUTPUT", 452, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_ERROR = Field.create("WASTEGATEDCSTATUS_ERROR", 454, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_RESETCOUNTER = Field.create("WASTEGATEDCSTATUS_RESETCOUNTER", 456, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field VVTSTATUS1_PTERM = Field.create("VVTSTATUS1_PTERM", 460, FieldType.FLOAT).setBaseOffset(0);
public static final Field VVTSTATUS1_ITERM = Field.create("VVTSTATUS1_ITERM", 464, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS1_DTERM = Field.create("VVTSTATUS1_DTERM", 466, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS1_OUTPUT = Field.create("VVTSTATUS1_OUTPUT", 468, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS1_ERROR = Field.create("VVTSTATUS1_ERROR", 470, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS1_RESETCOUNTER = Field.create("VVTSTATUS1_RESETCOUNTER", 472, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field VVTSTATUS2_PTERM = Field.create("VVTSTATUS2_PTERM", 476, FieldType.FLOAT).setBaseOffset(0);
public static final Field VVTSTATUS2_ITERM = Field.create("VVTSTATUS2_ITERM", 480, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS2_DTERM = Field.create("VVTSTATUS2_DTERM", 482, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS2_OUTPUT = Field.create("VVTSTATUS2_OUTPUT", 484, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS2_ERROR = Field.create("VVTSTATUS2_ERROR", 486, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS2_RESETCOUNTER = Field.create("VVTSTATUS2_RESETCOUNTER", 488, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field VVTSTATUS3_PTERM = Field.create("VVTSTATUS3_PTERM", 492, FieldType.FLOAT).setBaseOffset(0);
public static final Field VVTSTATUS3_ITERM = Field.create("VVTSTATUS3_ITERM", 496, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS3_DTERM = Field.create("VVTSTATUS3_DTERM", 498, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS3_OUTPUT = Field.create("VVTSTATUS3_OUTPUT", 500, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS3_ERROR = Field.create("VVTSTATUS3_ERROR", 502, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS3_RESETCOUNTER = Field.create("VVTSTATUS3_RESETCOUNTER", 504, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field VVTSTATUS4_PTERM = Field.create("VVTSTATUS4_PTERM", 508, FieldType.FLOAT).setBaseOffset(0);
public static final Field VVTSTATUS4_ITERM = Field.create("VVTSTATUS4_ITERM", 512, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS4_DTERM = Field.create("VVTSTATUS4_DTERM", 514, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS4_OUTPUT = Field.create("VVTSTATUS4_OUTPUT", 516, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS4_ERROR = Field.create("VVTSTATUS4_ERROR", 518, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS4_RESETCOUNTER = Field.create("VVTSTATUS4_RESETCOUNTER", 520, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field AUXSPEED1 = Field.create("AUXSPEED1", 524, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field AUXSPEED2 = Field.create("AUXSPEED2", 526, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ISSVALUE = Field.create("ISSVALUE", 528, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field RAWANALOGINPUT1 = Field.create("RAWANALOGINPUT1", 530, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT2 = Field.create("RAWANALOGINPUT2", 532, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT3 = Field.create("RAWANALOGINPUT3", 534, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT4 = Field.create("RAWANALOGINPUT4", 536, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT5 = Field.create("RAWANALOGINPUT5", 538, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT6 = Field.create("RAWANALOGINPUT6", 540, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT7 = Field.create("RAWANALOGINPUT7", 542, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT8 = Field.create("RAWANALOGINPUT8", 544, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field GPPWMOUTPUT1 = Field.create("GPPWMOUTPUT1", 546, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field GPPWMOUTPUT2 = Field.create("GPPWMOUTPUT2", 547, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field GPPWMOUTPUT3 = Field.create("GPPWMOUTPUT3", 548, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field GPPWMOUTPUT4 = Field.create("GPPWMOUTPUT4", 549, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field GPPWMXAXIS1 = Field.create("GPPWMXAXIS1", 550, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GPPWMXAXIS2 = Field.create("GPPWMXAXIS2", 552, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GPPWMXAXIS3 = Field.create("GPPWMXAXIS3", 554, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GPPWMXAXIS4 = Field.create("GPPWMXAXIS4", 556, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GPPWMYAXIS1 = Field.create("GPPWMYAXIS1", 558, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field GPPWMYAXIS2 = Field.create("GPPWMYAXIS2", 560, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field GPPWMYAXIS3 = Field.create("GPPWMYAXIS3", 562, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field GPPWMYAXIS4 = Field.create("GPPWMYAXIS4", 564, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field RAWBATTERY = Field.create("RAWBATTERY", 566, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field IGNBLENDPARAMETER1 = Field.create("IGNBLENDPARAMETER1", 568, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDPARAMETER2 = Field.create("IGNBLENDPARAMETER2", 570, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDPARAMETER3 = Field.create("IGNBLENDPARAMETER3", 572, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDPARAMETER4 = Field.create("IGNBLENDPARAMETER4", 574, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDBIAS1 = Field.create("IGNBLENDBIAS1", 576, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDBIAS2 = Field.create("IGNBLENDBIAS2", 577, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDBIAS3 = Field.create("IGNBLENDBIAS3", 578, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDBIAS4 = Field.create("IGNBLENDBIAS4", 579, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDOUTPUT1 = Field.create("IGNBLENDOUTPUT1", 580, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IGNBLENDOUTPUT2 = Field.create("IGNBLENDOUTPUT2", 582, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IGNBLENDOUTPUT3 = Field.create("IGNBLENDOUTPUT3", 584, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IGNBLENDOUTPUT4 = Field.create("IGNBLENDOUTPUT4", 586, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VEBLENDPARAMETER1 = Field.create("VEBLENDPARAMETER1", 588, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDPARAMETER2 = Field.create("VEBLENDPARAMETER2", 590, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDPARAMETER3 = Field.create("VEBLENDPARAMETER3", 592, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDPARAMETER4 = Field.create("VEBLENDPARAMETER4", 594, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDBIAS1 = Field.create("VEBLENDBIAS1", 596, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDBIAS2 = Field.create("VEBLENDBIAS2", 597, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDBIAS3 = Field.create("VEBLENDBIAS3", 598, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDBIAS4 = Field.create("VEBLENDBIAS4", 599, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDOUTPUT1 = Field.create("VEBLENDOUTPUT1", 600, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VEBLENDOUTPUT2 = Field.create("VEBLENDOUTPUT2", 602, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VEBLENDOUTPUT3 = Field.create("VEBLENDOUTPUT3", 604, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VEBLENDOUTPUT4 = Field.create("VEBLENDOUTPUT4", 606, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDPARAMETER1 = Field.create("BOOSTOPENLOOPBLENDPARAMETER1", 608, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDPARAMETER2 = Field.create("BOOSTOPENLOOPBLENDPARAMETER2", 610, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDBIAS1 = Field.create("BOOSTOPENLOOPBLENDBIAS1", 612, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDBIAS2 = Field.create("BOOSTOPENLOOPBLENDBIAS2", 613, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDOUTPUT1 = Field.create("BOOSTOPENLOOPBLENDOUTPUT1", 614, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDOUTPUT2 = Field.create("BOOSTOPENLOOPBLENDOUTPUT2", 615, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDPARAMETER1 = Field.create("BOOSTCLOSEDLOOPBLENDPARAMETER1", 616, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDPARAMETER2 = Field.create("BOOSTCLOSEDLOOPBLENDPARAMETER2", 618, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDBIAS1 = Field.create("BOOSTCLOSEDLOOPBLENDBIAS1", 620, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDBIAS2 = Field.create("BOOSTCLOSEDLOOPBLENDBIAS2", 621, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDOUTPUT1 = Field.create("BOOSTCLOSEDLOOPBLENDOUTPUT1", 622, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDOUTPUT2 = Field.create("BOOSTCLOSEDLOOPBLENDOUTPUT2", 624, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_626 = Field.create("ALIGNMENTFILL_AT_626", 626, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field COILSTATE1 = Field.create("COILSTATE1", 628, FieldType.BIT, 0).setBaseOffset(0);
public static final Field COILSTATE2 = Field.create("COILSTATE2", 628, FieldType.BIT, 1).setBaseOffset(0);
public static final Field COILSTATE3 = Field.create("COILSTATE3", 628, FieldType.BIT, 2).setBaseOffset(0);
public static final Field COILSTATE4 = Field.create("COILSTATE4", 628, FieldType.BIT, 3).setBaseOffset(0);
public static final Field COILSTATE5 = Field.create("COILSTATE5", 628, FieldType.BIT, 4).setBaseOffset(0);
public static final Field COILSTATE6 = Field.create("COILSTATE6", 628, FieldType.BIT, 5).setBaseOffset(0);
public static final Field COILSTATE7 = Field.create("COILSTATE7", 628, FieldType.BIT, 6).setBaseOffset(0);
public static final Field COILSTATE8 = Field.create("COILSTATE8", 628, FieldType.BIT, 7).setBaseOffset(0);
public static final Field COILSTATE9 = Field.create("COILSTATE9", 628, FieldType.BIT, 8).setBaseOffset(0);
public static final Field COILSTATE10 = Field.create("COILSTATE10", 628, FieldType.BIT, 9).setBaseOffset(0);
public static final Field COILSTATE11 = Field.create("COILSTATE11", 628, FieldType.BIT, 10).setBaseOffset(0);
public static final Field COILSTATE12 = Field.create("COILSTATE12", 628, FieldType.BIT, 11).setBaseOffset(0);
public static final Field INJECTORSTATE1 = Field.create("INJECTORSTATE1", 628, FieldType.BIT, 12).setBaseOffset(0);
public static final Field INJECTORSTATE2 = Field.create("INJECTORSTATE2", 628, FieldType.BIT, 13).setBaseOffset(0);
public static final Field INJECTORSTATE3 = Field.create("INJECTORSTATE3", 628, FieldType.BIT, 14).setBaseOffset(0);
public static final Field INJECTORSTATE4 = Field.create("INJECTORSTATE4", 628, FieldType.BIT, 15).setBaseOffset(0);
public static final Field INJECTORSTATE5 = Field.create("INJECTORSTATE5", 628, FieldType.BIT, 16).setBaseOffset(0);
public static final Field INJECTORSTATE6 = Field.create("INJECTORSTATE6", 628, FieldType.BIT, 17).setBaseOffset(0);
public static final Field INJECTORSTATE7 = Field.create("INJECTORSTATE7", 628, FieldType.BIT, 18).setBaseOffset(0);
public static final Field INJECTORSTATE8 = Field.create("INJECTORSTATE8", 628, FieldType.BIT, 19).setBaseOffset(0);
public static final Field INJECTORSTATE9 = Field.create("INJECTORSTATE9", 628, FieldType.BIT, 20).setBaseOffset(0);
public static final Field INJECTORSTATE10 = Field.create("INJECTORSTATE10", 628, FieldType.BIT, 21).setBaseOffset(0);
public static final Field INJECTORSTATE11 = Field.create("INJECTORSTATE11", 628, FieldType.BIT, 22).setBaseOffset(0);
public static final Field INJECTORSTATE12 = Field.create("INJECTORSTATE12", 628, FieldType.BIT, 23).setBaseOffset(0);
public static final Field OUTPUTREQUESTPERIOD = Field.create("OUTPUTREQUESTPERIOD", 632, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field MAPFAST = Field.create("MAPFAST", 636, FieldType.FLOAT).setBaseOffset(0);
public static final Field LUAGAUGES1 = Field.create("LUAGAUGES1", 640, FieldType.FLOAT).setBaseOffset(0);
public static final Field LUAGAUGES2 = Field.create("LUAGAUGES2", 644, FieldType.FLOAT).setBaseOffset(0);
public static final Field RAWMAF2 = Field.create("RAWMAF2", 648, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field MAFMEASURED2 = Field.create("MAFMEASURED2", 650, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCHEDULINGUSEDCOUNT = Field.create("SCHEDULINGUSEDCOUNT", 652, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GEGO = Field.create("GEGO", 654, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field TESTBENCHITER = Field.create("TESTBENCHITER", 656, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field OILTEMP = Field.create("OILTEMP", 658, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMP = Field.create("FUELTEMP", 660, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMP = Field.create("AMBIENTTEMP", 662, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMP = Field.create("COMPRESSORDISCHARGETEMP", 664, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGEPRESSURE = Field.create("COMPRESSORDISCHARGEPRESSURE", 666, FieldType.INT16).setScale(0.03333333333333333).setBaseOffset(0);
public static final Field THROTTLEINLETPRESSURE = Field.create("THROTTLEINLETPRESSURE", 668, FieldType.INT16).setScale(0.03333333333333333).setBaseOffset(0);
public static final Field IGNITIONONTIME = Field.create("IGNITIONONTIME", 670, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ENGINERUNTIME = Field.create("ENGINERUNTIME", 672, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field DISTANCETRAVELED = Field.create("DISTANCETRAVELED", 674, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field AFRGASOLINESCALE = Field.create("AFRGASOLINESCALE", 676, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field AFR2GASOLINESCALE = Field.create("AFR2GASOLINESCALE", 678, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field ACTUALLASTINJECTIONSTAGE2 = Field.create("ACTUALLASTINJECTIONSTAGE2", 680, FieldType.INT16).setScale(0.0033333333333333335).setBaseOffset(0);
public static final Field INJECTORDUTYCYCLESTAGE2 = Field.create("INJECTORDUTYCYCLESTAGE2", 682, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field PAD = Field.create("PAD", 683, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPAVERAGINGSAMPLES = Field.create("MAPAVERAGINGSAMPLES", 684, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER1 = Field.create("MAPPERCYLINDER1", 686, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER2 = Field.create("MAPPERCYLINDER2", 687, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER3 = Field.create("MAPPERCYLINDER3", 688, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER4 = Field.create("MAPPERCYLINDER4", 689, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER5 = Field.create("MAPPERCYLINDER5", 690, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER6 = Field.create("MAPPERCYLINDER6", 691, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER7 = Field.create("MAPPERCYLINDER7", 692, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER8 = Field.create("MAPPERCYLINDER8", 693, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER9 = Field.create("MAPPERCYLINDER9", 694, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER10 = Field.create("MAPPERCYLINDER10", 695, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER11 = Field.create("MAPPERCYLINDER11", 696, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER12 = Field.create("MAPPERCYLINDER12", 697, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND1 = Field.create("UNUSEDATTHEEND1", 698, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND2 = Field.create("UNUSEDATTHEEND2", 699, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND3 = Field.create("UNUSEDATTHEEND3", 700, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND4 = Field.create("UNUSEDATTHEEND4", 701, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND5 = Field.create("UNUSEDATTHEEND5", 702, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND6 = Field.create("UNUSEDATTHEEND6", 703, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND7 = Field.create("UNUSEDATTHEEND7", 704, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND8 = Field.create("UNUSEDATTHEEND8", 705, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND9 = Field.create("UNUSEDATTHEEND9", 706, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND10 = Field.create("UNUSEDATTHEEND10", 707, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND11 = Field.create("UNUSEDATTHEEND11", 708, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND12 = Field.create("UNUSEDATTHEEND12", 709, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND13 = Field.create("UNUSEDATTHEEND13", 710, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND14 = Field.create("UNUSEDATTHEEND14", 711, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND15 = Field.create("UNUSEDATTHEEND15", 712, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND16 = Field.create("UNUSEDATTHEEND16", 713, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND17 = Field.create("UNUSEDATTHEEND17", 714, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND18 = Field.create("UNUSEDATTHEEND18", 715, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND19 = Field.create("UNUSEDATTHEEND19", 716, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND20 = Field.create("UNUSEDATTHEEND20", 717, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND21 = Field.create("UNUSEDATTHEEND21", 718, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND22 = Field.create("UNUSEDATTHEEND22", 719, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND23 = Field.create("UNUSEDATTHEEND23", 720, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND24 = Field.create("UNUSEDATTHEEND24", 721, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND25 = Field.create("UNUSEDATTHEEND25", 722, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND26 = Field.create("UNUSEDATTHEEND26", 723, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND27 = Field.create("UNUSEDATTHEEND27", 724, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND28 = Field.create("UNUSEDATTHEEND28", 725, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND29 = Field.create("UNUSEDATTHEEND29", 726, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND30 = Field.create("UNUSEDATTHEEND30", 727, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND31 = Field.create("UNUSEDATTHEEND31", 728, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND32 = Field.create("UNUSEDATTHEEND32", 729, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND33 = Field.create("UNUSEDATTHEEND33", 730, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND34 = Field.create("UNUSEDATTHEEND34", 731, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND35 = Field.create("UNUSEDATTHEEND35", 732, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND36 = Field.create("UNUSEDATTHEEND36", 733, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND37 = Field.create("UNUSEDATTHEEND37", 734, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND38 = Field.create("UNUSEDATTHEEND38", 735, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND39 = Field.create("UNUSEDATTHEEND39", 736, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND40 = Field.create("UNUSEDATTHEEND40", 737, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND41 = Field.create("UNUSEDATTHEEND41", 738, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND42 = Field.create("UNUSEDATTHEEND42", 739, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND43 = Field.create("UNUSEDATTHEEND43", 740, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND44 = Field.create("UNUSEDATTHEEND44", 741, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND45 = Field.create("UNUSEDATTHEEND45", 742, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND46 = Field.create("UNUSEDATTHEEND46", 743, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND47 = Field.create("UNUSEDATTHEEND47", 744, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND48 = Field.create("UNUSEDATTHEEND48", 745, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND49 = Field.create("UNUSEDATTHEEND49", 746, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND50 = Field.create("UNUSEDATTHEEND50", 747, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND51 = Field.create("UNUSEDATTHEEND51", 748, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND52 = Field.create("UNUSEDATTHEEND52", 749, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND53 = Field.create("UNUSEDATTHEEND53", 750, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND54 = Field.create("UNUSEDATTHEEND54", 751, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND55 = Field.create("UNUSEDATTHEEND55", 752, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND56 = Field.create("UNUSEDATTHEEND56", 753, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND57 = Field.create("UNUSEDATTHEEND57", 754, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND58 = Field.create("UNUSEDATTHEEND58", 755, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND59 = Field.create("UNUSEDATTHEEND59", 756, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND60 = Field.create("UNUSEDATTHEEND60", 757, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND61 = Field.create("UNUSEDATTHEEND61", 758, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND62 = Field.create("UNUSEDATTHEEND62", 759, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND63 = Field.create("UNUSEDATTHEEND63", 760, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND64 = Field.create("UNUSEDATTHEEND64", 761, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND65 = Field.create("UNUSEDATTHEEND65", 762, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND66 = Field.create("UNUSEDATTHEEND66", 763, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND67 = Field.create("UNUSEDATTHEEND67", 764, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND68 = Field.create("UNUSEDATTHEEND68", 765, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND69 = Field.create("UNUSEDATTHEEND69", 766, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND70 = Field.create("UNUSEDATTHEEND70", 767, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND71 = Field.create("UNUSEDATTHEEND71", 768, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND72 = Field.create("UNUSEDATTHEEND72", 769, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND73 = Field.create("UNUSEDATTHEEND73", 770, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND74 = Field.create("UNUSEDATTHEEND74", 771, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND75 = Field.create("UNUSEDATTHEEND75", 772, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND76 = Field.create("UNUSEDATTHEEND76", 773, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND77 = Field.create("UNUSEDATTHEEND77", 774, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND78 = Field.create("UNUSEDATTHEEND78", 775, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND79 = Field.create("UNUSEDATTHEEND79", 776, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND80 = Field.create("UNUSEDATTHEEND80", 777, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND81 = Field.create("UNUSEDATTHEEND81", 778, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND82 = Field.create("UNUSEDATTHEEND82", 779, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND83 = Field.create("UNUSEDATTHEEND83", 780, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND84 = Field.create("UNUSEDATTHEEND84", 781, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND85 = Field.create("UNUSEDATTHEEND85", 782, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND86 = Field.create("UNUSEDATTHEEND86", 783, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND87 = Field.create("UNUSEDATTHEEND87", 784, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND88 = Field.create("UNUSEDATTHEEND88", 785, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND89 = Field.create("UNUSEDATTHEEND89", 786, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND90 = Field.create("UNUSEDATTHEEND90", 787, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND91 = Field.create("UNUSEDATTHEEND91", 788, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND92 = Field.create("UNUSEDATTHEEND92", 789, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND93 = Field.create("UNUSEDATTHEEND93", 790, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND94 = Field.create("UNUSEDATTHEEND94", 791, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND95 = Field.create("UNUSEDATTHEEND95", 792, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND96 = Field.create("UNUSEDATTHEEND96", 793, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND97 = Field.create("UNUSEDATTHEEND97", 794, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND98 = Field.create("UNUSEDATTHEEND98", 795, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND99 = Field.create("UNUSEDATTHEEND99", 796, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND100 = Field.create("UNUSEDATTHEEND100", 797, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND101 = Field.create("UNUSEDATTHEEND101", 798, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field UNUSEDATTHEEND102 = Field.create("UNUSEDATTHEEND102", 799, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field AUXLINEAR3 = Field.create("AUXLINEAR3", 340, FieldType.FLOAT).setBaseOffset(0);
public static final Field AUXLINEAR4 = Field.create("AUXLINEAR4", 344, FieldType.FLOAT).setBaseOffset(0);
public static final Field FALLBACKMAP = Field.create("FALLBACKMAP", 348, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field INSTANTMAPVALUE = Field.create("INSTANTMAPVALUE", 350, FieldType.INT16).setScale(0.03333333333333333).setBaseOffset(0);
public static final Field MAXLOCKEDDURATION = Field.create("MAXLOCKEDDURATION", 352, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field CANWRITEOK = Field.create("CANWRITEOK", 354, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field CANWRITENOTOK = Field.create("CANWRITENOTOK", 356, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_358 = Field.create("ALIGNMENTFILL_AT_358", 358, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERPRIMARYFALL = Field.create("TRIGGERPRIMARYFALL", 360, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERPRIMARYRISE = Field.create("TRIGGERPRIMARYRISE", 364, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERSECONDARYFALL = Field.create("TRIGGERSECONDARYFALL", 368, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERSECONDARYRISE = Field.create("TRIGGERSECONDARYRISE", 372, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERVVTFALL = Field.create("TRIGGERVVTFALL", 376, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field TRIGGERVVTRISE = Field.create("TRIGGERVVTRISE", 380, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field STARTERSTATE = Field.create("STARTERSTATE", 384, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field STARTERRELAYDISABLE = Field.create("STARTERRELAYDISABLE", 385, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MULTISPARKCOUNTER = Field.create("MULTISPARKCOUNTER", 386, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field EXTIOVERFLOWCOUNT = Field.create("EXTIOVERFLOWCOUNT", 387, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_PTERM = Field.create("ALTERNATORSTATUS_PTERM", 388, FieldType.FLOAT).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_ITERM = Field.create("ALTERNATORSTATUS_ITERM", 392, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_DTERM = Field.create("ALTERNATORSTATUS_DTERM", 394, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_OUTPUT = Field.create("ALTERNATORSTATUS_OUTPUT", 396, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_ERROR = Field.create("ALTERNATORSTATUS_ERROR", 398, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ALTERNATORSTATUS_RESETCOUNTER = Field.create("ALTERNATORSTATUS_RESETCOUNTER", 400, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field IDLESTATUS_PTERM = Field.create("IDLESTATUS_PTERM", 404, FieldType.FLOAT).setBaseOffset(0);
public static final Field IDLESTATUS_ITERM = Field.create("IDLESTATUS_ITERM", 408, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IDLESTATUS_DTERM = Field.create("IDLESTATUS_DTERM", 410, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IDLESTATUS_OUTPUT = Field.create("IDLESTATUS_OUTPUT", 412, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IDLESTATUS_ERROR = Field.create("IDLESTATUS_ERROR", 414, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IDLESTATUS_RESETCOUNTER = Field.create("IDLESTATUS_RESETCOUNTER", 416, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field ETBSTATUS_PTERM = Field.create("ETBSTATUS_PTERM", 420, FieldType.FLOAT).setBaseOffset(0);
public static final Field ETBSTATUS_ITERM = Field.create("ETBSTATUS_ITERM", 424, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ETBSTATUS_DTERM = Field.create("ETBSTATUS_DTERM", 426, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ETBSTATUS_OUTPUT = Field.create("ETBSTATUS_OUTPUT", 428, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ETBSTATUS_ERROR = Field.create("ETBSTATUS_ERROR", 430, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field ETBSTATUS_RESETCOUNTER = Field.create("ETBSTATUS_RESETCOUNTER", 432, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTSTATUS_PTERM = Field.create("BOOSTSTATUS_PTERM", 436, FieldType.FLOAT).setBaseOffset(0);
public static final Field BOOSTSTATUS_ITERM = Field.create("BOOSTSTATUS_ITERM", 440, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTSTATUS_DTERM = Field.create("BOOSTSTATUS_DTERM", 442, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTSTATUS_OUTPUT = Field.create("BOOSTSTATUS_OUTPUT", 444, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTSTATUS_ERROR = Field.create("BOOSTSTATUS_ERROR", 446, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTSTATUS_RESETCOUNTER = Field.create("BOOSTSTATUS_RESETCOUNTER", 448, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_PTERM = Field.create("WASTEGATEDCSTATUS_PTERM", 452, FieldType.FLOAT).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_ITERM = Field.create("WASTEGATEDCSTATUS_ITERM", 456, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_DTERM = Field.create("WASTEGATEDCSTATUS_DTERM", 458, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_OUTPUT = Field.create("WASTEGATEDCSTATUS_OUTPUT", 460, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_ERROR = Field.create("WASTEGATEDCSTATUS_ERROR", 462, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field WASTEGATEDCSTATUS_RESETCOUNTER = Field.create("WASTEGATEDCSTATUS_RESETCOUNTER", 464, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field VVTSTATUS1_PTERM = Field.create("VVTSTATUS1_PTERM", 468, FieldType.FLOAT).setBaseOffset(0);
public static final Field VVTSTATUS1_ITERM = Field.create("VVTSTATUS1_ITERM", 472, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS1_DTERM = Field.create("VVTSTATUS1_DTERM", 474, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS1_OUTPUT = Field.create("VVTSTATUS1_OUTPUT", 476, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS1_ERROR = Field.create("VVTSTATUS1_ERROR", 478, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS1_RESETCOUNTER = Field.create("VVTSTATUS1_RESETCOUNTER", 480, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field VVTSTATUS2_PTERM = Field.create("VVTSTATUS2_PTERM", 484, FieldType.FLOAT).setBaseOffset(0);
public static final Field VVTSTATUS2_ITERM = Field.create("VVTSTATUS2_ITERM", 488, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS2_DTERM = Field.create("VVTSTATUS2_DTERM", 490, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS2_OUTPUT = Field.create("VVTSTATUS2_OUTPUT", 492, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS2_ERROR = Field.create("VVTSTATUS2_ERROR", 494, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS2_RESETCOUNTER = Field.create("VVTSTATUS2_RESETCOUNTER", 496, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field VVTSTATUS3_PTERM = Field.create("VVTSTATUS3_PTERM", 500, FieldType.FLOAT).setBaseOffset(0);
public static final Field VVTSTATUS3_ITERM = Field.create("VVTSTATUS3_ITERM", 504, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS3_DTERM = Field.create("VVTSTATUS3_DTERM", 506, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS3_OUTPUT = Field.create("VVTSTATUS3_OUTPUT", 508, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS3_ERROR = Field.create("VVTSTATUS3_ERROR", 510, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS3_RESETCOUNTER = Field.create("VVTSTATUS3_RESETCOUNTER", 512, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field VVTSTATUS4_PTERM = Field.create("VVTSTATUS4_PTERM", 516, FieldType.FLOAT).setBaseOffset(0);
public static final Field VVTSTATUS4_ITERM = Field.create("VVTSTATUS4_ITERM", 520, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS4_DTERM = Field.create("VVTSTATUS4_DTERM", 522, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS4_OUTPUT = Field.create("VVTSTATUS4_OUTPUT", 524, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS4_ERROR = Field.create("VVTSTATUS4_ERROR", 526, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VVTSTATUS4_RESETCOUNTER = Field.create("VVTSTATUS4_RESETCOUNTER", 528, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field AUXSPEED1 = Field.create("AUXSPEED1", 532, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field AUXSPEED2 = Field.create("AUXSPEED2", 534, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ISSVALUE = Field.create("ISSVALUE", 536, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field RAWANALOGINPUT1 = Field.create("RAWANALOGINPUT1", 538, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT2 = Field.create("RAWANALOGINPUT2", 540, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT3 = Field.create("RAWANALOGINPUT3", 542, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT4 = Field.create("RAWANALOGINPUT4", 544, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT5 = Field.create("RAWANALOGINPUT5", 546, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT6 = Field.create("RAWANALOGINPUT6", 548, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT7 = Field.create("RAWANALOGINPUT7", 550, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field RAWANALOGINPUT8 = Field.create("RAWANALOGINPUT8", 552, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field GPPWMOUTPUT1 = Field.create("GPPWMOUTPUT1", 554, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field GPPWMOUTPUT2 = Field.create("GPPWMOUTPUT2", 555, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field GPPWMOUTPUT3 = Field.create("GPPWMOUTPUT3", 556, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field GPPWMOUTPUT4 = Field.create("GPPWMOUTPUT4", 557, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field GPPWMXAXIS1 = Field.create("GPPWMXAXIS1", 558, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GPPWMXAXIS2 = Field.create("GPPWMXAXIS2", 560, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GPPWMXAXIS3 = Field.create("GPPWMXAXIS3", 562, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GPPWMXAXIS4 = Field.create("GPPWMXAXIS4", 564, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GPPWMYAXIS1 = Field.create("GPPWMYAXIS1", 566, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field GPPWMYAXIS2 = Field.create("GPPWMYAXIS2", 568, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field GPPWMYAXIS3 = Field.create("GPPWMYAXIS3", 570, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field GPPWMYAXIS4 = Field.create("GPPWMYAXIS4", 572, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field RAWBATTERY = Field.create("RAWBATTERY", 574, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field IGNBLENDPARAMETER1 = Field.create("IGNBLENDPARAMETER1", 576, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDPARAMETER2 = Field.create("IGNBLENDPARAMETER2", 578, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDPARAMETER3 = Field.create("IGNBLENDPARAMETER3", 580, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDPARAMETER4 = Field.create("IGNBLENDPARAMETER4", 582, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field IGNBLENDBIAS1 = Field.create("IGNBLENDBIAS1", 584, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDBIAS2 = Field.create("IGNBLENDBIAS2", 585, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDBIAS3 = Field.create("IGNBLENDBIAS3", 586, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDBIAS4 = Field.create("IGNBLENDBIAS4", 587, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field IGNBLENDOUTPUT1 = Field.create("IGNBLENDOUTPUT1", 588, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IGNBLENDOUTPUT2 = Field.create("IGNBLENDOUTPUT2", 590, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IGNBLENDOUTPUT3 = Field.create("IGNBLENDOUTPUT3", 592, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field IGNBLENDOUTPUT4 = Field.create("IGNBLENDOUTPUT4", 594, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VEBLENDPARAMETER1 = Field.create("VEBLENDPARAMETER1", 596, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDPARAMETER2 = Field.create("VEBLENDPARAMETER2", 598, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDPARAMETER3 = Field.create("VEBLENDPARAMETER3", 600, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDPARAMETER4 = Field.create("VEBLENDPARAMETER4", 602, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field VEBLENDBIAS1 = Field.create("VEBLENDBIAS1", 604, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDBIAS2 = Field.create("VEBLENDBIAS2", 605, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDBIAS3 = Field.create("VEBLENDBIAS3", 606, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDBIAS4 = Field.create("VEBLENDBIAS4", 607, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field VEBLENDOUTPUT1 = Field.create("VEBLENDOUTPUT1", 608, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VEBLENDOUTPUT2 = Field.create("VEBLENDOUTPUT2", 610, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VEBLENDOUTPUT3 = Field.create("VEBLENDOUTPUT3", 612, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field VEBLENDOUTPUT4 = Field.create("VEBLENDOUTPUT4", 614, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDPARAMETER1 = Field.create("BOOSTOPENLOOPBLENDPARAMETER1", 616, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDPARAMETER2 = Field.create("BOOSTOPENLOOPBLENDPARAMETER2", 618, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDBIAS1 = Field.create("BOOSTOPENLOOPBLENDBIAS1", 620, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDBIAS2 = Field.create("BOOSTOPENLOOPBLENDBIAS2", 621, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDOUTPUT1 = Field.create("BOOSTOPENLOOPBLENDOUTPUT1", 622, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTOPENLOOPBLENDOUTPUT2 = Field.create("BOOSTOPENLOOPBLENDOUTPUT2", 623, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDPARAMETER1 = Field.create("BOOSTCLOSEDLOOPBLENDPARAMETER1", 624, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDPARAMETER2 = Field.create("BOOSTCLOSEDLOOPBLENDPARAMETER2", 626, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDBIAS1 = Field.create("BOOSTCLOSEDLOOPBLENDBIAS1", 628, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDBIAS2 = Field.create("BOOSTCLOSEDLOOPBLENDBIAS2", 629, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDOUTPUT1 = Field.create("BOOSTCLOSEDLOOPBLENDOUTPUT1", 630, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field BOOSTCLOSEDLOOPBLENDOUTPUT2 = Field.create("BOOSTCLOSEDLOOPBLENDOUTPUT2", 632, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_634 = Field.create("ALIGNMENTFILL_AT_634", 634, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field COILSTATE1 = Field.create("COILSTATE1", 636, FieldType.BIT, 0).setBaseOffset(0);
public static final Field COILSTATE2 = Field.create("COILSTATE2", 636, FieldType.BIT, 1).setBaseOffset(0);
public static final Field COILSTATE3 = Field.create("COILSTATE3", 636, FieldType.BIT, 2).setBaseOffset(0);
public static final Field COILSTATE4 = Field.create("COILSTATE4", 636, FieldType.BIT, 3).setBaseOffset(0);
public static final Field COILSTATE5 = Field.create("COILSTATE5", 636, FieldType.BIT, 4).setBaseOffset(0);
public static final Field COILSTATE6 = Field.create("COILSTATE6", 636, FieldType.BIT, 5).setBaseOffset(0);
public static final Field COILSTATE7 = Field.create("COILSTATE7", 636, FieldType.BIT, 6).setBaseOffset(0);
public static final Field COILSTATE8 = Field.create("COILSTATE8", 636, FieldType.BIT, 7).setBaseOffset(0);
public static final Field COILSTATE9 = Field.create("COILSTATE9", 636, FieldType.BIT, 8).setBaseOffset(0);
public static final Field COILSTATE10 = Field.create("COILSTATE10", 636, FieldType.BIT, 9).setBaseOffset(0);
public static final Field COILSTATE11 = Field.create("COILSTATE11", 636, FieldType.BIT, 10).setBaseOffset(0);
public static final Field COILSTATE12 = Field.create("COILSTATE12", 636, FieldType.BIT, 11).setBaseOffset(0);
public static final Field INJECTORSTATE1 = Field.create("INJECTORSTATE1", 636, FieldType.BIT, 12).setBaseOffset(0);
public static final Field INJECTORSTATE2 = Field.create("INJECTORSTATE2", 636, FieldType.BIT, 13).setBaseOffset(0);
public static final Field INJECTORSTATE3 = Field.create("INJECTORSTATE3", 636, FieldType.BIT, 14).setBaseOffset(0);
public static final Field INJECTORSTATE4 = Field.create("INJECTORSTATE4", 636, FieldType.BIT, 15).setBaseOffset(0);
public static final Field INJECTORSTATE5 = Field.create("INJECTORSTATE5", 636, FieldType.BIT, 16).setBaseOffset(0);
public static final Field INJECTORSTATE6 = Field.create("INJECTORSTATE6", 636, FieldType.BIT, 17).setBaseOffset(0);
public static final Field INJECTORSTATE7 = Field.create("INJECTORSTATE7", 636, FieldType.BIT, 18).setBaseOffset(0);
public static final Field INJECTORSTATE8 = Field.create("INJECTORSTATE8", 636, FieldType.BIT, 19).setBaseOffset(0);
public static final Field INJECTORSTATE9 = Field.create("INJECTORSTATE9", 636, FieldType.BIT, 20).setBaseOffset(0);
public static final Field INJECTORSTATE10 = Field.create("INJECTORSTATE10", 636, FieldType.BIT, 21).setBaseOffset(0);
public static final Field INJECTORSTATE11 = Field.create("INJECTORSTATE11", 636, FieldType.BIT, 22).setBaseOffset(0);
public static final Field INJECTORSTATE12 = Field.create("INJECTORSTATE12", 636, FieldType.BIT, 23).setBaseOffset(0);
public static final Field OUTPUTREQUESTPERIOD = Field.create("OUTPUTREQUESTPERIOD", 640, FieldType.INT).setScale(1.0).setBaseOffset(0);
public static final Field MAPFAST = Field.create("MAPFAST", 644, FieldType.FLOAT).setBaseOffset(0);
public static final Field LUAGAUGES1 = Field.create("LUAGAUGES1", 648, FieldType.FLOAT).setBaseOffset(0);
public static final Field LUAGAUGES2 = Field.create("LUAGAUGES2", 652, FieldType.FLOAT).setBaseOffset(0);
public static final Field RAWMAF2 = Field.create("RAWMAF2", 656, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field MAFMEASURED2 = Field.create("MAFMEASURED2", 658, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field SCHEDULINGUSEDCOUNT = Field.create("SCHEDULINGUSEDCOUNT", 660, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field GEGO = Field.create("GEGO", 662, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field TESTBENCHITER = Field.create("TESTBENCHITER", 664, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field OILTEMP = Field.create("OILTEMP", 666, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field FUELTEMP = Field.create("FUELTEMP", 668, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field AMBIENTTEMP = Field.create("AMBIENTTEMP", 670, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGETEMP = Field.create("COMPRESSORDISCHARGETEMP", 672, FieldType.INT16).setScale(0.01).setBaseOffset(0);
public static final Field COMPRESSORDISCHARGEPRESSURE = Field.create("COMPRESSORDISCHARGEPRESSURE", 674, FieldType.INT16).setScale(0.03333333333333333).setBaseOffset(0);
public static final Field THROTTLEINLETPRESSURE = Field.create("THROTTLEINLETPRESSURE", 676, FieldType.INT16).setScale(0.03333333333333333).setBaseOffset(0);
public static final Field IGNITIONONTIME = Field.create("IGNITIONONTIME", 678, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field ENGINERUNTIME = Field.create("ENGINERUNTIME", 680, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field DISTANCETRAVELED = Field.create("DISTANCETRAVELED", 682, FieldType.INT16).setScale(0.1).setBaseOffset(0);
public static final Field AFRGASOLINESCALE = Field.create("AFRGASOLINESCALE", 684, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field AFR2GASOLINESCALE = Field.create("AFR2GASOLINESCALE", 686, FieldType.INT16).setScale(0.001).setBaseOffset(0);
public static final Field ACTUALLASTINJECTIONSTAGE2 = Field.create("ACTUALLASTINJECTIONSTAGE2", 688, FieldType.INT16).setScale(0.0033333333333333335).setBaseOffset(0);
public static final Field INJECTORDUTYCYCLESTAGE2 = Field.create("INJECTORDUTYCYCLESTAGE2", 690, FieldType.INT8).setScale(0.5).setBaseOffset(0);
public static final Field PAD = Field.create("PAD", 691, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPAVERAGINGSAMPLES = Field.create("MAPAVERAGINGSAMPLES", 692, FieldType.INT16).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER1 = Field.create("MAPPERCYLINDER1", 694, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER2 = Field.create("MAPPERCYLINDER2", 695, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER3 = Field.create("MAPPERCYLINDER3", 696, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER4 = Field.create("MAPPERCYLINDER4", 697, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER5 = Field.create("MAPPERCYLINDER5", 698, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER6 = Field.create("MAPPERCYLINDER6", 699, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER7 = Field.create("MAPPERCYLINDER7", 700, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER8 = Field.create("MAPPERCYLINDER8", 701, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER9 = Field.create("MAPPERCYLINDER9", 702, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER10 = Field.create("MAPPERCYLINDER10", 703, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER11 = Field.create("MAPPERCYLINDER11", 704, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field MAPPERCYLINDER12 = Field.create("MAPPERCYLINDER12", 705, FieldType.INT8).setScale(1.0).setBaseOffset(0);
public static final Field ALIGNMENTFILL_AT_706 = Field.create("ALIGNMENTFILL_AT_706", 706, FieldType.INT8).setScale(1.0).setBaseOffset(0);
}

View File

@ -67,7 +67,6 @@
#define EFI_USE_UART_DMA FALSE
#define EFI_MAP_AVERAGING TRUE
#define EFI_ALTERNATOR_CONTROL TRUE
#define EFI_ENGINE_AUDI_AAN FALSE

View File

@ -20,7 +20,6 @@
#include "sensor_chart.h"
#include "bench_test.h"
#include "tunerstudio.h"
#include "map_averaging.h"
#include "mmc_card.h"
#include "memstreams.h"
#include <chprintf.h>

View File

@ -68,8 +68,6 @@
#define EFI_BOARD_TEST FALSE
#define EFI_MAP_AVERAGING TRUE
#define EFI_LUA TRUE
#define EFI_HPFP TRUE

View File

@ -104,6 +104,7 @@ EngineTestHelper::EngineTestHelper(engine_type_e engineType, configuration_callb
initDataStructures();
resetConfigurationExt(configurationCallback, engineType);
engineConfiguration->isMapAveragingEnabled = false;
validateConfig();

View File

@ -9,6 +9,8 @@
#include "spark_logic.h"
using ::testing::_;
using ::testing::InSequence;
using ::testing::StrictMock;
TEST(ignition, twoCoils) {
EngineTestHelper eth(engine_type_e::FRANKENSO_BMW_M73_F);
@ -148,3 +150,55 @@ TEST(ignition, CylinderTimingTrim) {
EXPECT_NEAR(engine->engineState.timingAdvance[2], unadjusted + 2, EPS4D);
EXPECT_NEAR(engine->engineState.timingAdvance[3], unadjusted + 4, EPS4D);
}
TEST(ignition, oddCylinderWastedSpark) {
StrictMock<MockExecutor> mockExec;
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
engine->scheduler.setMockExecutor(&mockExec);
engineConfiguration->cylindersCount = 1;
engineConfiguration->firingOrder = FO_1;
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
efitick_t nowNt1 = 1000000;
efitick_t nowNt2 = 2222222;
engine->rpmCalculator.oneDegreeUs = 100;
{
InSequence is;
// Should schedule one dwell+fire pair:
// Dwell 5 deg from now
float nt1deg = USF2NT(engine->rpmCalculator.oneDegreeUs);
efitick_t startTime = nowNt1 + nt1deg * 5;
EXPECT_CALL(mockExec, schedule(testing::NotNull(), _, startTime, _));
// Spark 15 deg from now
efitick_t endTime = startTime + nt1deg * 10;
EXPECT_CALL(mockExec, schedule(testing::NotNull(), _, endTime, _));
// Should schedule second dwell+fire pair, the out of phase copy
// Dwell 5 deg from now
startTime = nowNt2 + nt1deg * 5;
EXPECT_CALL(mockExec, schedule(testing::NotNull(), _, startTime, _));
// Spark 15 deg from now
endTime = startTime + nt1deg * 10;
EXPECT_CALL(mockExec, schedule(testing::NotNull(), _, endTime, _));
}
engine->ignitionState.sparkDwell = 1;
// dwell should start at 15 degrees ATDC and firing at 25 deg ATDC
engine->ignitionState.dwellAngle = 10;
engine->engineState.timingAdvance[0] = -25;
engine->engineState.useOddFireWastedSpark = true;
engineConfiguration->minimumIgnitionTiming = -25;
// expect to schedule the on-phase dwell and spark (not the wasted spark copy)
onTriggerEventSparkLogic(1200, nowNt1, 10, 30);
// expect to schedule second events, the out-of-phase dwell and spark (the wasted spark copy)
onTriggerEventSparkLogic(1200, nowNt2, 360 + 10, 360 + 30);
}

View File

@ -276,7 +276,7 @@ TEST(HPFP, Schedule) {
eth.assertTriggerEvent("h0", 0, &hpfp.m_event, (void*)&HpfpController::pinTurnOff, 270);
// Make the previous event happen, schedule the next.
engine->module<TriggerScheduler>()->scheduleEventsUntilNextTriggerTooth(
engine->module<TriggerScheduler>()->onEnginePhase(
1000, tick_per_deg * 0, 180, 360);
// Mock executor doesn't run events, so we run it manually
HpfpController::pinTurnOff(&hpfp);
@ -285,7 +285,7 @@ TEST(HPFP, Schedule) {
eth.assertTriggerEvent("h1", 0, &hpfp.m_event, (void*)&HpfpController::pinTurnOn, 450 - 37.6923065f);
// Make it happen
engine->module<TriggerScheduler>()->scheduleEventsUntilNextTriggerTooth(
engine->module<TriggerScheduler>()->onEnginePhase(
1000, tick_per_deg * 180, 360, 540);
// Since we have a mock scheduler, lets insert the correct timestamp in the scheduling