25 #define CAN_FIAT_MOTOR_INFO 0x561
26 #define CAN_MAZDA_RX_RPM_SPEED 0x201
27 #define CAN_MAZDA_RX_STEERING_WARNING 0x300
28 #define CAN_MAZDA_RX_STATUS_1 0x212
29 #define CAN_MAZDA_RX_STATUS_2 0x420
32 #define W202_STAT_1 0x308
33 #define W202_STAT_2 0x608
34 #define W202_ALIVE 0x210
35 #define W202_STAT_3 0x310
38 #define E90_ABS_COUNTER 0x0C0
39 #define E90_SEATBELT_COUNTER 0x0D7
42 #define E90_BRAKE_COUNTER 0x19E
43 #define E90_SPEED 0x1A6
44 #define E90_TEMP 0x1D0
45 #define E90_GEAR 0x1D2
46 #define E90_FUEL 0x349
47 #define E90_EBRAKE 0x34F
48 #define E90_TIME 0x39E
50 #define HONDA_SPEED_158 0x158
51 #define HONDA_TACH_1DC 0x1DC
59 #define GENESIS_COUPLE_RPM_316 0x316
60 #define GENESIS_COUPLE_COOLANT_329 0x329
61 #define GENESIS_COUPLE_SENSORS_382 0x382
63 #define GENESIS_COUPLE_AC_ENABLE_18F 0x18F
156 msg[0] = (uint8_t)(
clt.value_or(0) + 69);
167 if (!
clt.Valid ||
clt.Value > 105) {
413 float mph = vehicleSpeed * 0.6213712;
421 mph_timer = TIME_I2MS(chVTGetSystemTime());
438 .
year = 0, .month = 0, .day = 0,
439 .hour = 0, .minute = 0, .second = 0,
443 msg[0] = dateTime.
hour;
446 msg[3] = dateTime.
day;
447 msg[4] = (dateTime.
month << 4) | 0x0F;
448 msg[5] = dateTime.
year & 0xFF;
449 msg[6] = (dateTime.
year >> 8) | 0xF0;
485 #if EFI_ENGINE_CONTROL
497 int16_t ignAngle = ((timing > 360 ? timing - 720 : timing) * 10);
600 #if EFI_SHAFT_POSITION_INPUT
981 #if EFI_LAUNCH_CONTROL
1017 scaled_channel<uint16_t, 1>
Rpm;
1018 scaled_channel<uint16_t, 650> Tps;
1019 scaled_channel<uint16_t, 650> Pps;
1020 scaled_channel<uint16_t, 100> Vss;
1031 scaled_channel<uint16_t, 10> WheelSpeedFR;
1032 scaled_channel<uint16_t, 10> WheelSpeedFL;
1033 scaled_channel<uint16_t, 10> WheelSpeedRR;
1034 scaled_channel<uint16_t, 10> WheelSpeedRL;
1039 msg.WheelSpeedFR = 0;
1040 msg.WheelSpeedFL = 0;
1041 msg.WheelSpeedRR = 0;
1042 msg.WheelSpeedRL = 0;
1046 scaled_channel<uint16_t, 190>
Iat;
1047 scaled_channel<uint16_t, 190> Ect;
1048 scaled_channel<uint16_t, 190> FuelT;
1049 scaled_channel<uint16_t, 190> OilT;
1060 scaled_channel<uint16_t, 10>
Map;
1061 scaled_channel<uint16_t, 10> Baro;
1062 scaled_channel<uint16_t, 1000> OilP;
1063 scaled_channel<uint16_t, 20> FuelP;
1077 scaled_channel<uint16_t, 10000> Boost;
1078 scaled_channel<uint16_t, 3200> Vbat;
1079 scaled_channel<uint16_t, 10> FuelUse;
1080 scaled_channel<int16_t, 1> Gear;
1086 float boostBar = deltaKpa / 100;
1088 msg.Boost = boostBar;
1095 scaled_channel<uint16_t, 1> ShiftFlag;
1096 scaled_channel<uint16_t, 1> GearTime;
1097 scaled_channel<uint16_t, 1> TpsV;
1098 scaled_channel<uint16_t, 100>
FuelLevel;
1111 scaled_channel<uint16_t, 2000>
Lambda1;
1112 scaled_channel<uint16_t, 2000>
Lambda2;
1113 scaled_channel<uint16_t, 10> LambdaTemp1;
1114 scaled_channel<uint16_t, 10> LambdaTemp2;
1120 msg.LambdaTemp1 = 0;
1121 msg.LambdaTemp2 = 0;
1125 scaled_channel<uint16_t, 10> LambdaErr1;
1126 scaled_channel<uint16_t, 10> LambdaErr2;
1127 scaled_channel<uint16_t, 2000> LambdaTarget1;
1128 scaled_channel<uint16_t, 2000> LambdaTarget2;
1132 #if EFI_ENGINE_CONTROL
1174 case CAN_BUS_NBC_NONE:
1176 case CAN_BUS_BMW_E46:
1179 case CAN_BUS_Haltech:
1182 case CAN_BUS_NBC_FIAT:
1185 case CAN_BUS_NBC_VAG:
1188 case CAN_BUS_MAZDA_RX8:
1191 case CAN_BUS_W202_C180:
1194 case CAN_BUS_BMW_E90:
1200 case CAN_BUS_NISSAN_VQ:
1203 case CAN_BUS_GENESIS_COUPE:
1209 case CAN_BUS_MS_SIMPLE_BROADCAST:
const char * getCan_nbc_e(can_nbc_e value)
static uint8_t brakecnt_2
static void canDashboardBmwE46(CanCycle cycle)
void canMazdaRX8(CanCycle cycle)
static void canDashboardBmwE90(CanCycle cycle)
constexpr uint8_t e90_temp_offset
PUBLIC_API_WEAK void boardUpdateDash(CanCycle cycle)
void canDashboardW202(CanCycle cycle)
static time_msecs_t mph_ctr
static uint8_t rpmcounter
static uint16_t mph_counter
void canDashboardAim(CanCycle cycle)
void canDashboardVAG(CanCycle cycle)
static uint8_t abscounter
void canDashboardGenesisCoupe(CanCycle cycle)
void canDashboardFiat(CanCycle cycle)
static uint8_t brakecnt_1
static uint8_t seatbeltcnt
static void populateFrame(Aim5f0 &msg)
static bool cluster_time_set
void canDashboardVagMqb(CanCycle cycle)
void canDashboardHaltech(CanCycle cycle)
void updateDash(CanCycle cycle)
static time_msecs_t mph_timer
void canDashboardTS(CanCycle cycle)
void canDashboardNissanVQ(CanCycle cycle)
bool isInterval(CanInterval interval)
void setBit(size_t byteIdx, size_t bitIdx)
Set a single bit in the transmit buffer. Useful for single-bit flags.
void setShortValueMsb(uint16_t value, size_t offset)
void setShortValue(uint16_t value, size_t offset)
Write a 16-bit short value to the buffer. Note: this writes in little endian byte order.
FuelComputer fuelComputer
TriggerCentral triggerCentral
LaunchControlBase launchController
constexpr auto & module()
RegisteredOutputPin fanRelay
RegisteredOutputPin fanRelay2
angle_t timingAdvance[MAX_CYLINDER_COUNT]
bool getLogicValue() const
virtual SensorResult get() const =0
static float getOrZero(SensorType type)
PrimaryTriggerDecoder triggerState
int getHwEventCounter(int index) const
uint32_t totalTriggerErrorCounter
uint16_t SWAP_UINT16(uint16_t x)
percent_t getInjectorDutyCycle(int rpm)
static CCM_OPTIONAL FunctionalSensor clt(SensorType::Clt, MS2NT(10))
engine_configuration_s * engineConfiguration
efidatetime_t getRtcDateTime()
m_knockLevel("Knock: Current level", SensorCategory.SENSOR_INPUTS, FieldType.INT, 932, 1.0, 0.0, 0.0, "Volts")
bool canBroadcastUseChannelTwo
scaled_channel< uint16_t, 10000, 1 > targetLambda
static CanTsChannel canChannel