docs for canDashboardHaltech

This commit is contained in:
rusefillc 2024-02-24 12:54:01 -05:00
parent 39440dc29c
commit aba4b7d79f
1 changed files with 71 additions and 70 deletions

View File

@ -132,7 +132,7 @@ void canDashboardHaltech(CanCycle cycle);
//BMW Dashboard //BMW Dashboard
//todo: we use 50ms fixed cycle, trace is needed to check for correct period //todo: we use 50ms fixed cycle, trace is needed to check for correct period
static void canDashboardBmwE46(CanCycle cycle) { static void canDashboardBmwE46(CanCycle cycle) {
if (cycle.isInterval(CI::_50ms)) { if (cycle.isInterval(CI::_50ms)) {
{ {
CanTxMessage msg(CanCategory::NBC, CAN_BMW_E46_SPEED); CanTxMessage msg(CanCategory::NBC, CAN_BMW_E46_SPEED);
@ -288,7 +288,7 @@ void canDashboardW202(CanCycle cycle) {
msg[5] = 0x00; // Const msg[5] = 0x00; // Const
msg[6] = 0x00; // Const msg[6] = 0x00; // Const
msg[7] = 0x00; // Const msg[7] = 0x00; // Const
} }
{ {
CanTxMessage msg(CanCategory::NBC, W202_STAT_3); CanTxMessage msg(CanCategory::NBC, W202_STAT_3);
@ -371,7 +371,7 @@ void canDashboardVagMqb(CanCycle cycle) {
// ignition ON // ignition ON
msg[2] = 3; msg[2] = 3;
} }
{ //RPM { //RPM
CanTxMessage msg(CanCategory::NBC, 0x107, 8); CanTxMessage msg(CanCategory::NBC, 0x107, 8);
msg[3] = ((int)(Sensor::getOrZero(SensorType::Rpm) / 3.5)) & 0xFF; msg[3] = ((int)(Sensor::getOrZero(SensorType::Rpm) / 3.5)) & 0xFF;
@ -383,7 +383,7 @@ void canDashboardVagMqb(CanCycle cycle) {
static void canDashboardBmwE90(CanCycle cycle) { static void canDashboardBmwE90(CanCycle cycle) {
if (cycle.isInterval(CI::_50ms)) { if (cycle.isInterval(CI::_50ms)) {
{ //T15 'turn-on' { //T15 'turn-on'
CanTxMessage msg(CanCategory::NBC, E90_T15, 5); CanTxMessage msg(CanCategory::NBC, E90_T15, 5);
msg[0] = 0x45; msg[0] = 0x45;
@ -435,7 +435,7 @@ static void canDashboardBmwE90(CanCycle cycle) {
msg[0] = seatbeltcnt; msg[0] = seatbeltcnt;
msg[1] = 0xFF; msg[1] = 0xFF;
} }
{ {
//Brake counter 100ms //Brake counter 100ms
brakecnt_1 += 16; brakecnt_1 += 16;
@ -487,7 +487,7 @@ static void canDashboardBmwE90(CanCycle cycle) {
} }
{ //E90_SPEED { //E90_SPEED
auto vehicleSpeed = Sensor::getOrZero(SensorType::VehicleSpeed); auto vehicleSpeed = Sensor::getOrZero(SensorType::VehicleSpeed);
float mph = vehicleSpeed * 0.6213712; float mph = vehicleSpeed * 0.6213712;
mph_ctr = ((TIME_I2MS(chVTGetSystemTime()) - mph_timer) / 50); mph_ctr = ((TIME_I2MS(chVTGetSystemTime()) - mph_timer) / 50);
mph_a = (mph_ctr * mph / 2); mph_a = (mph_ctr * mph / 2);
@ -533,8 +533,9 @@ static void canDashboardBmwE90(CanCycle cycle) {
} }
} }
// https://support.haltech.com/portal/en/kb/articles/haltech-can-ecu-broadcast-protocol
void canDashboardHaltech(CanCycle cycle) { void canDashboardHaltech(CanCycle cycle) {
uint16_t tmp; uint16_t tmp;
if (cycle.isInterval(CI::_20ms)) { if (cycle.isInterval(CI::_20ms)) {
@ -546,7 +547,7 @@ void canDashboardHaltech(CanCycle cycle) {
msg[0] = (tmp >> 8); msg[0] = (tmp >> 8);
msg[1] = (tmp & 0x00ff); msg[1] = (tmp & 0x00ff);
/* MAP */ /* MAP */
tmp = (((uint16_t)(Sensor::getOrZero(SensorType::Map))) * 10); tmp = (((uint16_t)(Sensor::getOrZero(SensorType::Map))) * 10);
msg[2] = (tmp >> 8); msg[2] = (tmp >> 8);
msg[3] = (tmp & 0x00ff); msg[3] = (tmp & 0x00ff);
/* TPS y = x/10 */ /* TPS y = x/10 */
@ -559,7 +560,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x361 - 50Hz rate */ /* 0x361 - 50Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x361, 8); CanTxMessage msg(CanCategory::NBC, 0x361, 8);
/* Fuel pressure */ /* Fuel pressure */
tmp = (uint16_t)((Sensor::getOrZero(SensorType::FuelPressureLow) + 101.3) * 10); tmp = (uint16_t)((Sensor::getOrZero(SensorType::FuelPressureLow) + 101.3) * 10);
@ -575,12 +576,12 @@ void canDashboardHaltech(CanCycle cycle) {
msg[5] = (tmp & 0x00ff); msg[5] = (tmp & 0x00ff);
/* Wastegate Pressure */ /* Wastegate Pressure */
msg[6] = 0; msg[6] = 0;
msg[7] = 0; msg[7] = 0;
} }
#if EFI_ENGINE_CONTROL #if EFI_ENGINE_CONTROL
/* 0x362 - 50Hz rate */ /* 0x362 - 50Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x362, 6); CanTxMessage msg(CanCategory::NBC, 0x362, 6);
/* Injection Stage 1 Duty Cycle - y = x/10 */ /* Injection Stage 1 Duty Cycle - y = x/10 */
uint16_t rpm = Sensor::getOrZero(SensorType::Rpm); uint16_t rpm = Sensor::getOrZero(SensorType::Rpm);
@ -593,15 +594,15 @@ void canDashboardHaltech(CanCycle cycle) {
/* Ignition Angle (Leading) - y = x/10 */ /* Ignition Angle (Leading) - y = x/10 */
float timing = engine->engineState.timingAdvance[0]; float timing = engine->engineState.timingAdvance[0];
int16_t ignAngle = ((timing > 360 ? timing - 720 : timing) * 10); int16_t ignAngle = ((timing > 360 ? timing - 720 : timing) * 10);
msg[4] = (ignAngle >> 8); msg[4] = (ignAngle >> 8);
msg[5] = (ignAngle & 0x00ff); msg[5] = (ignAngle & 0x00ff);
} }
#endif // EFI_ENGINE_CONTROL #endif // EFI_ENGINE_CONTROL
/* todo: 0x3E5 = 50Hz rate */ /* todo: 0x3E5 = 50Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E5, 8); CanTxMessage msg(CanCategory::NBC, 0x3E5, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -612,9 +613,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3EA = 50Hz rate */ /* todo: 0x3EA = 50Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3EA, 8); CanTxMessage msg(CanCategory::NBC, 0x3EA, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -625,9 +626,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3EB = 50Hz rate */ /* todo: 0x3EB = 50Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3EB, 8); CanTxMessage msg(CanCategory::NBC, 0x3EB, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -638,9 +639,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3EC = 50Hz rate */ /* todo: 0x3EC = 50Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3EC, 8); CanTxMessage msg(CanCategory::NBC, 0x3EC, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -651,16 +652,16 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3ED = 50Hz rate */ /* todo: 0x3ED = 50Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3ED, 2); CanTxMessage msg(CanCategory::NBC, 0x3ED, 2);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
} }
/* todo: 0x471 = 50Hz rate */ /* todo: 0x471 = 50Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x471, 2); CanTxMessage msg(CanCategory::NBC, 0x471, 2);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -668,9 +669,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
if (cycle.isInterval(CI::_50ms)) { if (cycle.isInterval(CI::_50ms)) {
/* 0x363 - 20Hz rate */ /* 0x363 - 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x363, 4); CanTxMessage msg(CanCategory::NBC, 0x363, 4);
/* Wheel Slip */ /* Wheel Slip */
msg[0] = 0x00; msg[0] = 0x00;
@ -681,7 +682,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x368 - 20Hz rate */ /* 0x368 - 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x368, 8); CanTxMessage msg(CanCategory::NBC, 0x368, 8);
/* Wideband Sensor 1 */ /* Wideband Sensor 1 */
tmp = (uint16_t)(Sensor::getOrZero(SensorType::Lambda1) * 1000); tmp = (uint16_t)(Sensor::getOrZero(SensorType::Lambda1) * 1000);
@ -694,14 +695,14 @@ void canDashboardHaltech(CanCycle cycle) {
/* Wideband Sensor 3 */ /* Wideband Sensor 3 */
msg[4] = 0x00; msg[4] = 0x00;
msg[5] = 0x00; msg[5] = 0x00;
/* Wideband Sensor 4 */ /* Wideband Sensor 4 */
msg[6] = 0x00; msg[6] = 0x00;
msg[7] = 0x00; msg[7] = 0x00;
} }
#if EFI_SHAFT_POSITION_INPUT #if EFI_SHAFT_POSITION_INPUT
/* 0x369 - 20Hz rate */ /* 0x369 - 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x369, 8); CanTxMessage msg(CanCategory::NBC, 0x369, 8);
/* Trigger System Error Count */ /* Trigger System Error Count */
tmp = engine->triggerCentral.triggerState.totalTriggerErrorCounter; tmp = engine->triggerCentral.triggerState.totalTriggerErrorCounter;
@ -715,14 +716,14 @@ void canDashboardHaltech(CanCycle cycle) {
msg[4] = 0x00; msg[4] = 0x00;
msg[5] = 0x00; msg[5] = 0x00;
/* Trigger Sync Level ?? */ /* Trigger Sync Level ?? */
msg[6] = 0x00; msg[6] = 0x00;
msg[7] = 0x00; msg[7] = 0x00;
} }
#endif // EFI_SHAFT_POSITION_INPUT #endif // EFI_SHAFT_POSITION_INPUT
/* 0x36A - 20Hz rate */ /* 0x36A - 20Hz rate */
/* todo: one day we should split this */ /* todo: one day we should split this */
{ {
CanTxMessage msg(CanCategory::NBC, 0x36A, 4); CanTxMessage msg(CanCategory::NBC, 0x36A, 4);
/* Knock Level 1 */ /* Knock Level 1 */
tmp = (engine->module<KnockController>()->m_knockLevel * 100); tmp = (engine->module<KnockController>()->m_knockLevel * 100);
@ -734,7 +735,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x36B - 20Hz rate */ /* 0x36B - 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x36B, 8); CanTxMessage msg(CanCategory::NBC, 0x36B, 8);
/* Break Pressure */ /* Break Pressure */
msg[0] = 0x00; msg[0] = 0x00;
@ -751,7 +752,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x36C = 20Hz rate */ /* 0x36C = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x36C, 8); CanTxMessage msg(CanCategory::NBC, 0x36C, 8);
/* Wheel Speed Front Left */ /* Wheel Speed Front Left */
auto vehicleSpeed = Sensor::getOrZero(SensorType::VehicleSpeed); auto vehicleSpeed = Sensor::getOrZero(SensorType::VehicleSpeed);
@ -770,7 +771,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x36D = 20Hz rate */ /* 0x36D = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x36D, 8); CanTxMessage msg(CanCategory::NBC, 0x36D, 8);
/* Unused */ /* Unused */
msg[0] = 0x00; msg[0] = 0x00;
@ -783,10 +784,10 @@ void canDashboardHaltech(CanCycle cycle) {
/* Exhaust Cam Angle 2 */ /* Exhaust Cam Angle 2 */
msg[6] = 0x00; msg[6] = 0x00;
msg[7] = 0x00; msg[7] = 0x00;
} }
/* 0x36E = 20Hz rate */ /* 0x36E = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x36E, 8); CanTxMessage msg(CanCategory::NBC, 0x36E, 8);
/* Engine Limiting Active 0 = off/1=on*/ /* Engine Limiting Active 0 = off/1=on*/
msg[0] = 0x00; msg[0] = 0x00;
@ -803,7 +804,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x36F = 20Hz rate */ /* 0x36F = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x36F, 4); CanTxMessage msg(CanCategory::NBC, 0x36F, 4);
/* Generic Output 1 Duty Cycle */ /* Generic Output 1 Duty Cycle */
msg[0] = 0x00; msg[0] = 0x00;
@ -814,7 +815,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x370 = 20Hz rate */ /* 0x370 = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x370, 8); CanTxMessage msg(CanCategory::NBC, 0x370, 8);
/* Vehicle Speed */ /* Vehicle Speed */
auto vehicleSpeed = Sensor::getOrZero(SensorType::VehicleSpeed); auto vehicleSpeed = Sensor::getOrZero(SensorType::VehicleSpeed);
@ -833,9 +834,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3E6 = 20Hz rate */ /* todo: 0x3E6 = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E6, 8); CanTxMessage msg(CanCategory::NBC, 0x3E6, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -846,9 +847,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3E7 = 20Hz rate */ /* todo: 0x3E7 = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E7, 8); CanTxMessage msg(CanCategory::NBC, 0x3E7, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -857,11 +858,11 @@ void canDashboardHaltech(CanCycle cycle) {
msg[6] = 0x00; msg[6] = 0x00;
msg[7] = 0x00; msg[7] = 0x00;
} }
/* todo: 0x3E8 = 20Hz rate */ /* todo: 0x3E8 = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E8, 8); CanTxMessage msg(CanCategory::NBC, 0x3E8, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -872,9 +873,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3E9 = 20Hz rate */ /* todo: 0x3E9 = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E9, 8); CanTxMessage msg(CanCategory::NBC, 0x3E9, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -885,9 +886,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3EE = 20Hz rate */ /* todo: 0x3EE = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3EE, 8); CanTxMessage msg(CanCategory::NBC, 0x3EE, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -898,9 +899,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3EF = 20Hz rate */ /* todo: 0x3EF = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3EF, 8); CanTxMessage msg(CanCategory::NBC, 0x3EF, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -911,9 +912,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x470 = 20Hz rate */ /* todo: 0x470 = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x470, 8); CanTxMessage msg(CanCategory::NBC, 0x470, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -924,9 +925,9 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x472 = 20Hz rate */ /* todo: 0x472 = 20Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x472, 8); CanTxMessage msg(CanCategory::NBC, 0x472, 8);
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x00; msg[1] = 0x00;
msg[2] = 0x00; msg[2] = 0x00;
msg[3] = 0x00; msg[3] = 0x00;
@ -934,13 +935,13 @@ void canDashboardHaltech(CanCycle cycle) {
msg[5] = 0x00; msg[5] = 0x00;
msg[6] = 0x00; msg[6] = 0x00;
msg[7] = 0x00; msg[7] = 0x00;
} }
} }
if (cycle.isInterval(CI::_100ms)) { if (cycle.isInterval(CI::_100ms)) {
/* 0x371 = 10Hz rate */ /* 0x371 = 10Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x371, 4); CanTxMessage msg(CanCategory::NBC, 0x371, 4);
/* Fuel Flow */ /* Fuel Flow */
msg[0] = 0x00; msg[0] = 0x00;
@ -951,7 +952,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x372 = 10Hz rate */ /* 0x372 = 10Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x372, 8); CanTxMessage msg(CanCategory::NBC, 0x372, 8);
/* Battery Voltage */ /* Battery Voltage */
tmp = (uint16_t)(Sensor::getOrZero(SensorType::BatteryVoltage) * 10); tmp = (uint16_t)(Sensor::getOrZero(SensorType::BatteryVoltage) * 10);
@ -968,9 +969,9 @@ void canDashboardHaltech(CanCycle cycle) {
msg[6] = (tmp >> 8); msg[6] = (tmp >> 8);
msg[7] = (tmp & 0x00ff); msg[7] = (tmp & 0x00ff);
} }
/* 0x373 = 10Hz rate */ /* 0x373 = 10Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x373, 8); CanTxMessage msg(CanCategory::NBC, 0x373, 8);
/* EGT1 */ /* EGT1 */
msg[0] = 0x00; msg[0] = 0x00;
@ -987,7 +988,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x374 = 10Hz rate */ /* 0x374 = 10Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x374, 8); CanTxMessage msg(CanCategory::NBC, 0x374, 8);
/* EGT5 */ /* EGT5 */
msg[0] = 0x00; msg[0] = 0x00;
@ -1004,7 +1005,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x375 = 10Hz rate */ /* 0x375 = 10Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x375, 8); CanTxMessage msg(CanCategory::NBC, 0x375, 8);
/* EGT9 */ /* EGT9 */
msg[0] = 0x00; msg[0] = 0x00;
@ -1021,7 +1022,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x376 = 10Hz rate */ /* 0x376 = 10Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x376, 8); CanTxMessage msg(CanCategory::NBC, 0x376, 8);
/* Ambient Air Temperature */ /* Ambient Air Temperature */
msg[0] = 0x00; msg[0] = 0x00;
@ -1040,7 +1041,7 @@ void canDashboardHaltech(CanCycle cycle) {
if (cycle.isInterval(CI::_200ms)) { if (cycle.isInterval(CI::_200ms)) {
/* 0x3E0 = 5Hz rate */ /* 0x3E0 = 5Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E0, 8); CanTxMessage msg(CanCategory::NBC, 0x3E0, 8);
/* Coolant temperature in K y = x/10 */ /* Coolant temperature in K y = x/10 */
tmp = ((Sensor::getOrZero(SensorType::Clt) + 273.15) * 10); tmp = ((Sensor::getOrZero(SensorType::Clt) + 273.15) * 10);
@ -1059,7 +1060,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x3E1 = 5Hz rate */ /* 0x3E1 = 5Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E1, 6); CanTxMessage msg(CanCategory::NBC, 0x3E1, 6);
/* Gearbox Oil Temperature */ /* Gearbox Oil Temperature */
msg[0] = 0x00; msg[0] = 0x00;
@ -1073,7 +1074,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x3E2 = 5Hz rate */ /* 0x3E2 = 5Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E2, 2); CanTxMessage msg(CanCategory::NBC, 0x3E2, 2);
/* Fuel Level in Liters */ /* Fuel Level in Liters */
tmp = (Sensor::getOrZero(SensorType::FuelLevel)* 10); tmp = (Sensor::getOrZero(SensorType::FuelLevel)* 10);
@ -1082,7 +1083,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* 0x3E3 = 5Hz rate */ /* 0x3E3 = 5Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E3, 8); CanTxMessage msg(CanCategory::NBC, 0x3E3, 8);
/* Fuel Trim Short Term Bank 1*/ /* Fuel Trim Short Term Bank 1*/
msg[0] = 0x00; msg[0] = 0x00;
@ -1099,7 +1100,7 @@ void canDashboardHaltech(CanCycle cycle) {
} }
/* todo: 0x3E4 = 5Hz rate */ /* todo: 0x3E4 = 5Hz rate */
{ {
CanTxMessage msg(CanCategory::NBC, 0x3E4, 8); CanTxMessage msg(CanCategory::NBC, 0x3E4, 8);
msg[0] = 0x00; //unused msg[0] = 0x00; //unused
/* Switch status */ /* Switch status */
@ -1187,7 +1188,7 @@ struct Aim5f4 {
}; };
static void populateFrame(Aim5f4& msg) { static void populateFrame(Aim5f4& msg) {
float deltaKpa = Sensor::getOrZero(SensorType::Map) float deltaKpa = Sensor::getOrZero(SensorType::Map)
- Sensor::get(SensorType::BarometricPressure).value_or(101.325); - Sensor::get(SensorType::BarometricPressure).value_or(101.325);
float boostBar = deltaKpa / 100; float boostBar = deltaKpa / 100;