diff --git a/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.cpp b/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.cpp index c6320730d4..ac5596da72 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.cpp +++ b/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.cpp @@ -354,6 +354,8 @@ case CAN_BUS_NBC_FIAT: return "CAN_BUS_NBC_FIAT"; case CAN_BUS_NBC_VAG: return "CAN_BUS_NBC_VAG"; +case CAN_BUS_W202_C180: + return "CAN_BUS_W202_C180"; case Internal_ForceMyEnumIntSize_can_nbc: return "Internal_ForceMyEnumIntSize_can_nbc"; } diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp index 796d9729c8..2ceab057b8 100644 --- a/firmware/controllers/algo/auto_generated_enums.cpp +++ b/firmware/controllers/algo/auto_generated_enums.cpp @@ -498,6 +498,8 @@ case CAN_BUS_NBC_FIAT: return "CAN_BUS_NBC_FIAT"; case CAN_BUS_NBC_VAG: return "CAN_BUS_NBC_VAG"; +case CAN_BUS_W202_C180: + return "CAN_BUS_W202_C180"; case Internal_ForceMyEnumIntSize_can_nbc: return "Internal_ForceMyEnumIntSize_can_nbc"; } diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index 7830469e24..4b976c05ce 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -784,6 +784,7 @@ typedef enum { CAN_BUS_NBC_VAG = 2, CAN_BUS_MAZDA_RX8 = 3, CAN_BUS_NBC_BMW = 4, + CAN_BUS_W202_C180 = 5, Internal_ForceMyEnumIntSize_can_nbc = ENUM_32_BITS, } can_nbc_e; diff --git a/firmware/controllers/can/can_dash.cpp b/firmware/controllers/can/can_dash.cpp index d4aae8eede..c9c418e310 100644 --- a/firmware/controllers/can/can_dash.cpp +++ b/firmware/controllers/can/can_dash.cpp @@ -43,6 +43,11 @@ EXTERN_ENGINE; #define CAN_VAG_CLT 0x288 #define CAN_VAG_CLT_V2 0x420 #define CAN_VAG_IMMO 0x3D0 +//w202 DASH +#define W202_STAT_1 0x308 +#define W202_STAT_2 0x608 +#define W202_ALIVE 0x210 +#define W202_STAT_3 0x310 void canDashboardBMW(void) { //BMW Dashboard @@ -143,4 +148,53 @@ void canDashboardVAG(void) { } } +void canDashboardW202(void) { + + { + CanTxMessage msg(W202_STAT_1); + msg[0] = 0x08; // Unknown + msg.setShortValue(GET_RPM(), 1); //RPM + msg[3] = 0x00; // 0x01 - tank blink, 0x02 - EPC + msg[4] = 0x00; // Unknown + msg[5] = 0x00; // Unknown + msg[6] = 0x00; // Unknown - oil info + msg[7] = 0x00; // Unknown - oil info + } + + { + CanTxMessage msg(W202_STAT_2); //dlc 7 + msg[0] = (int)(getCoolantTemperature()+40); // CLT - 0x80 ~ 80C + msg[1] = 0x3D; // TBD + msg[2] = 0x63; // Const + msg[3] = 0x41; // Const + msg[4] = 0x00; // Unknown + msg[5] = 0x05; // Const + msg[6] = 0x50; // TBD + msg[7] = 0x00; // Unknown + } + + { + CanTxMessage msg(W202_ALIVE); + msg[0] = 0x0A; // Const + msg[1] = 0x18; // Const + msg[2] = 0x00; // Const + msg[3] = 0x00; // Const + msg[4] = 0xC0; // Const + msg[5] = 0x00; // Const + msg[6] = 0x00; // Const + msg[7] = 0x00; // Const + } + + { + CanTxMessage msg(W202_STAT_3); + msg[0] = 0x00; // Const + msg[1] = 0x00; // Const + msg[2] = 0x6D; // TBD + msg[3] = 0x7B; // Const + msg[4] = 0x21; // TBD + msg[5] = 0x07; // Const + msg[6] = 0x33; // Const + msg[7] = 0x05; // Const + } +} #endif // EFI_CAN_SUPPORT diff --git a/firmware/controllers/can/can_dash.h b/firmware/controllers/can/can_dash.h index 234cf8692f..ced3a5a842 100644 --- a/firmware/controllers/can/can_dash.h +++ b/firmware/controllers/can/can_dash.h @@ -11,3 +11,4 @@ void canDashboardBMW(); void canDashboardFiat(); void canDashboardVAG(); void canMazdaRX8(); +void canDashboardW202(); diff --git a/firmware/controllers/can/can_tx.cpp b/firmware/controllers/can/can_tx.cpp index 09f6ed0eb7..b36aa4bcd4 100644 --- a/firmware/controllers/can/can_tx.cpp +++ b/firmware/controllers/can/can_tx.cpp @@ -45,6 +45,9 @@ void CanWrite::PeriodicTask(efitime_t nowNt) { case CAN_BUS_MAZDA_RX8: canMazdaRX8(); break; + case CAN_BUS_W202_C180: + canDashboardW202(); + break; default: break; }