// // Warning: don't edit - generated by generate_ecu_code.pl processing ../dev/kafas20.json: KAF 5D: Camera based driver assistance system // This generated code makes it easier to process CANBUS messages from the KAF ecu in a BMW i3 // case I3_PID_KAF__FASTA_FLA_DATA: { // 0x4001 if (datalen < 24) { ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__FASTA_FLA_DATA", 24); break; } unsigned long STAT_FLA_OP_TIME_WERT = (RXBUF_UINT32(0)); // Duration of FLA activated by driver [s] / Zeitdauer FLA durch Fahrer aktiviert [s] ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_FLA_OP_TIME_WERT", STAT_FLA_OP_TIME_WERT, "\"s\""); unsigned long STAT_DELTA_TIME_FLA_NIGHT_WERT = (RXBUF_UINT32(4)); // Duration in the ambient brightness FLA activation allowed [s] / Zeitdauer in der Umgebungshelligkeit FLA // Aktivierung erlaubt [s] ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_DELTA_TIME_FLA_NIGHT_WERT", STAT_DELTA_TIME_FLA_NIGHT_WERT, "\"s\""); unsigned long STAT_DELTA_TIME_FLA_ACT_HB_WERT = (RXBUF_UINT32(8)); // Duration of switch-on recommendation FLA [s] / Zeitdauer Einschaltempfehlung FLA [s] ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_DELTA_TIME_FLA_ACT_HB_WERT", STAT_DELTA_TIME_FLA_ACT_HB_WERT, "\"s\""); unsigned long STAT_DELTA_TIME_FLA_ACT_LB_WERT = (RXBUF_UINT32(12)); // Duration of switch-off recommendation [s] / Zeitdauer Abschaltempfehlung [s] ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_DELTA_TIME_FLA_ACT_LB_WERT", STAT_DELTA_TIME_FLA_ACT_LB_WERT, "\"s\""); unsigned long STAT_FLA_COUNT_OVERRIDE_WERT = (RXBUF_UINT32(16)); // Number of driver overloads / Anzahl Übersteuerung durch Fahrer ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_FLA_COUNT_OVERRIDE_WERT", STAT_FLA_COUNT_OVERRIDE_WERT, "\"Counts\""); unsigned long STAT_OPTIME_TOTAL_WERT = (RXBUF_UINT32(20)); // Absolute operating time counter [s] / Absoluter Betriebszeitzähler [s] ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_FASTA_FLA_DATA", "STAT_OPTIME_TOTAL_WERT", STAT_OPTIME_TOTAL_WERT, "\"s\""); // ========== Add your processing here ========== hexdump(rxbuf, type, pid); break; } case I3_PID_KAF__KAFAS_ECU_DATA: { // 0x4002 if (datalen < 38) { ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__KAFAS_ECU_DATA", 38); break; } unsigned short STAT_CNTRY_CODE_WERT = (RXBUF_UINT(0)); // ISO Country Code of the country in which the vehicle covered the most kilometers. / ISO Country Code des // Landes in welchem das Fahrzeug die meisten Kilometer zurückgelegt hat. ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_CNTRY_CODE_WERT", STAT_CNTRY_CODE_WERT, "\"Counts\""); unsigned long STAT_OPTIME_TOTAL_WERT_0X4002 = (RXBUF_UINT32(2)); // Absolute operating time counter / Absoluter Betriebszeitzähler ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_OPTIME_TOTAL_WERT_0X4002", STAT_OPTIME_TOTAL_WERT_0X4002, "\"s\""); unsigned long STAT_OPTIME_NIGHT_WERT = (RXBUF_UINT32(6)); // Operating time at night. Based on BV-Algo overnight decision / Betriebszeit in der Nacht. Basiert auf BV-Algo // Nachtentscheidung ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_OPTIME_NIGHT_WERT", STAT_OPTIME_NIGHT_WERT, "\"s\""); unsigned long STAT_OPTIME_WIPER_WERT = (RXBUF_UINT32(10)); // Operating time during rain. Based on Algo Rain Decision / Betriebszeit während Regen. Basiert auf Algo // Regenentscheidung ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_OPTIME_WIPER_WERT", STAT_OPTIME_WIPER_WERT, "\"s\""); unsigned long STAT_DRIVEN_DIST_TOTAL_WERT = (RXBUF_UINT32(14)); // Absolutely driven kilometers / Absolut gefahrene Kilometer ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_TOTAL_WERT", STAT_DRIVEN_DIST_TOTAL_WERT, "\"km\""); unsigned long STAT_DRIVEN_DIST_URBAN_WERT = (RXBUF_UINT32(18)); // Total kilometers driven on urban or residential area roads / Absolut gefahrene Kilometer auf Straßentyp Urban // oder Residential Area ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_URBAN_WERT", STAT_DRIVEN_DIST_URBAN_WERT, "\"km\""); unsigned long STAT_DRIVEN_DIST_RURAL_WERT = (RXBUF_UINT32(22)); // Absolute kilometers driven on the rural or highway type / Absolut gefahrene Kilometer auf Straßentyp Rural // oder Highway ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_RURAL_WERT", STAT_DRIVEN_DIST_RURAL_WERT, "\"km\""); unsigned long STAT_DRIVEN_DIST_MOWAY_WERT = (RXBUF_UINT32(26)); // Absolute kilometers driven on road type Motorway / Absolut gefahrene Kilometer auf Straßentyp Motorway ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_MOWAY_WERT", STAT_DRIVEN_DIST_MOWAY_WERT, "\"km\""); unsigned long STAT_DRIVEN_DIST_NA_WERT = (RXBUF_UINT32(30)); // Absolute kilometers driven with no available road type / Absolut gefahrene Kilometer ohne verfügbaren // Straßentyp ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_DRIVEN_DIST_NA_WERT", STAT_DRIVEN_DIST_NA_WERT, "\"km\""); unsigned short STAT_AMNT_EYEQ_RESET_WERT = (RXBUF_UINT(34)); // Number of resets of the BV processor performed during normal operation / Anzahl der erfolgten Resets des // BV-Prozessors während normalem Betrieb ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_AMNT_EYEQ_RESET_WERT", STAT_AMNT_EYEQ_RESET_WERT, "\"Counts\""); unsigned short STAT_AMNT_ONLINE_CALIB_WERT = (RXBUF_UINT(36)); // Counter for the completed online calibration processes / Zähler über die Erfolgten Online-Kalibriervorgänge ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_ECU_DATA", "STAT_AMNT_ONLINE_CALIB_WERT", STAT_AMNT_ONLINE_CALIB_WERT, "\"Counts\""); // ========== Add your processing here ========== hexdump(rxbuf, type, pid); break; } case I3_PID_KAF__KAFAS_TLC_DATA: { // 0x4003 if (datalen < 20) { ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__KAFAS_TLC_DATA", 20); break; } unsigned long STAT_TLC_DRIV_LEFT_AVAIL_WERT = (RXBUF_UINT32(0)); // Absolute kilometers driven with availability on the left / Absolut gefahrene Kilometer mit Verfübarkeit auf // der linken Seite ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_DRIV_LEFT_AVAIL_WERT", STAT_TLC_DRIV_LEFT_AVAIL_WERT, "\"km\""); unsigned long STAT_TLC_DRIV_RIGHT_AVAIL_WERT = (RXBUF_UINT32(4)); // Absolute kilometers driven with availability on the right / Absolut gefahrene Kilometer mit Verfübarkeit auf // der rechten Seite ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_DRIV_RIGHT_AVAIL_WERT", STAT_TLC_DRIV_RIGHT_AVAIL_WERT, "\"km\""); unsigned long STAT_TLC_DRIV_DIST_REL_SPD_WERT = (RXBUF_UINT32(8)); // Absolutely driven with active TLC and relevant speed / Absolut gefahrene mit aktivem TLC und relavanter // Geschwindigkeit ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_DRIV_DIST_REL_SPD_WERT", STAT_TLC_DRIV_DIST_REL_SPD_WERT, "\"km\""); unsigned short STAT_TLC_AMNT_WARN_WERT = (RXBUF_UINT(12)); // Number of issued TLC warnings / Anzahl ausgegebener TLC Warnungen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_AMNT_WARN_WERT", STAT_TLC_AMNT_WARN_WERT, "\"Counts\""); unsigned short STAT_TLC_AMNT_DEACT_WERT = (RXBUF_UINT(14)); // Number of times the TLC function was deactivated by the driver / Anzahl der Deaktivierung der TLC-Funktion // durch den Fahrer ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_AMNT_DEACT_WERT", STAT_TLC_AMNT_DEACT_WERT, "\"Counts\""); unsigned long STAT_TLC_DRIV_DIST_ACT_WERT = (RXBUF_UINT32(16)); // Kilometers driven with activated TLC / Gefahrene Kilometer mit aktiviertem TLC ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_TLC_DATA", "STAT_TLC_DRIV_DIST_ACT_WERT", STAT_TLC_DRIV_DIST_ACT_WERT, "\"km\""); // ========== Add your processing here ========== hexdump(rxbuf, type, pid); break; } case I3_PID_KAF_KAFAS_FCW_DATA: { // 0x4004 if (datalen < 42) { ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_KAFAS_FCW_DATA", 42); break; } unsigned long STAT_FCW_DRIVEN_DIST_ACT_WERT = (RXBUF_UINT32(0)); // Total kilometers driven with activated FCW function / Absolut gefahrene Kilometer mit aktivierter FCW Funktion ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_ACT_WERT", STAT_FCW_DRIVEN_DIST_ACT_WERT, "\"km\""); unsigned long STAT_FCW_DRIVEN_DIST_FS_WERT = (RXBUF_UINT32(4)); // Total kilometers driven in fail safe mode / Absolut gefahrene Kilometer im Fail Safe Mode ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FS_WERT", STAT_FCW_DRIVEN_DIST_FS_WERT, "\"km\""); unsigned long STAT_FCW_DRIVEN_DIST_FS_ACT_WERT = (RXBUF_UINT32(8)); // Total kilometers driven with activated FCW function in fail safe mode / Absolut gefahrene Kilometer mit // aktivierter FCW Funktion im Fail Safe Mode ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FS_ACT_WERT", STAT_FCW_DRIVEN_DIST_FS_ACT_WERT, "\"km\""); unsigned long STAT_FCW_DRIVEN_DIST_FOR_OFF_WERT = (RXBUF_UINT32(12)); // Absolutely driven kilometers with activated FCW function and advance warning level off / Absolut gefahrene // Kilometer mit aktivierter FCW Funktion und Vorwarnstufe aus ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FOR_OFF_WERT", STAT_FCW_DRIVEN_DIST_FOR_OFF_WERT, "\"km\""); unsigned long STAT_FCW_DRIVEN_DIST_FOR_EARLY_WERT = (RXBUF_UINT32(16)); // Total kilometers traveled with activated FCW function and early warning level / Absolut gefahrene Kilometer // mit aktivierter FCW Funktion und Vorwarnstufe früh ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FOR_EARLY_WERT", STAT_FCW_DRIVEN_DIST_FOR_EARLY_WERT, "\"km\""); unsigned long STAT_FCW_DRIVEN_DIST_FOR_LATE_WERT = (RXBUF_UINT32(20)); // Total kilometers driven with activated FCW function and late warning level / Absolut gefahrene Kilometer mit // aktivierter FCW Funktion und Vorwarnstufe spät ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DRIVEN_DIST_FOR_LATE_WERT", STAT_FCW_DRIVEN_DIST_FOR_LATE_WERT, "\"km\""); unsigned short STAT_FCW_AMNT_FOR_WERT = (RXBUF_UINT(24)); // Number of pre-warnings / Anzahl der Vorwarnungen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_FOR_WERT", STAT_FCW_AMNT_FOR_WERT, "\"Counts\""); unsigned short STAT_FCW_AMNT_ACUTE_WERT = (RXBUF_UINT(26)); // Number of acute warnings / Anzahl der Akutwarnungen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_ACUTE_WERT", STAT_FCW_AMNT_ACUTE_WERT, "\"Counts\""); unsigned short STAT_FCW_AMNT_ACUTE_45_WERT = (RXBUF_UINT(28)); // Number of acute warnings in the range 0 km / h¿ 45 km / h / Anzahl der Akutwarnungen im Bereich 0 km/h¿ 45 // km/h ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_ACUTE_45_WERT", STAT_FCW_AMNT_ACUTE_45_WERT, "\"Counts\""); unsigned short STAT_FCW_AMNT_ACUTE_90_WERT = (RXBUF_UINT(30)); // Number of acute warnings in the range 45 km / h¿ 90 km / h / Anzahl der Akutwarnungen im Bereich 45 km/h¿ 90 // km/h ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_ACUTE_90_WERT", STAT_FCW_AMNT_ACUTE_90_WERT, "\"Counts\""); unsigned short STAT_FCW_AMNT_ACUTE_135_WERT = (RXBUF_UINT(32)); // Number of acute warnings in the range 90 km / h¿ 135 km / h / Anzahl der Akutwarnungen im Bereich 90 km/h¿ 135 // km/h ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_AMNT_ACUTE_135_WERT", STAT_FCW_AMNT_ACUTE_135_WERT, "\"Counts\""); unsigned short STAT_FCW_PREFILLS_WERT = (RXBUF_UINT(34)); // Number of pre-fill requests triggered by FCW / Anzahl der von FCW ausgelösten Pre-Fill Anforderungen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_PREFILLS_WERT", STAT_FCW_PREFILLS_WERT, "\"Counts\""); unsigned short STAT_FCW_PRECRASH_WERT = (RXBUF_UINT(36)); // Number of pre-crash messages triggered by FCW / Anzahl der von FCW ausgelösten Pre-Crash Meldungen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_PRECRASH_WERT", STAT_FCW_PRECRASH_WERT, "\"Counts\""); unsigned short STAT_FCW_DEACT_WERT = (RXBUF_UINT(38)); // Number of times the FCW function has been deactivated by the driver / Anzahl der Deaktivierung der // FCW-Funktion durch den Fahrer ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_DEACT_WERT", STAT_FCW_DEACT_WERT, "\"Counts\""); unsigned short STAT_FCW_FS_CC_WERT = (RXBUF_UINT(40)); // Number of triggered Fail-Save CC messages / Anzahl der ausgelösten Fail-Save CC-Meldungen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "KAFAS_FCW_DATA", "STAT_FCW_FS_CC_WERT", STAT_FCW_FS_CC_WERT, "\"Counts\""); // ========== Add your processing here ========== hexdump(rxbuf, type, pid); break; } case I3_PID_KAF__KAFAS_SLI_DATA: { // 0x4005 if (datalen < 27) { ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__KAFAS_SLI_DATA", 27); break; } unsigned long STAT_SLI_AMT_CAM_DET_WERT = (RXBUF_UINT32(0)); // Number of camera detections of traffic signs / Anzahl der Kameradetektionen von Verkehrsschildern ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_AMT_CAM_DET_WERT", STAT_SLI_AMT_CAM_DET_WERT, "\"Counts\""); char STAT_SLI_MATCH_URBAN_WERT = (RXBUF_UCHAR(4)); // Share of camera detection that match the explicit speed limits on the street type Urban or Residential Area / // Anteil der Kameradetektion die mit den expliziten Speed Limits auf dem Straßentyp Urban oder Residential Area // übereinstimmen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_MATCH_URBAN_WERT", STAT_SLI_MATCH_URBAN_WERT, "\"Counts\""); char STAT_SLI_MATCH_RURAL_WERT = (RXBUF_UCHAR(5)); // Proportion of camera detection that corresponds to the explicit speed limits on the road type rural or highway // / Anteil der Kameradetektion die mit den expliziten Speed Limits auf dem Straßentyp Rural oder Highway // übereinstimmen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_MATCH_RURAL_WERT", STAT_SLI_MATCH_RURAL_WERT, "\"Counts\""); char STAT_SLI_MATCH_MOWAY_WERT = (RXBUF_UCHAR(6)); // Percentage of camera detection that corresponds to the explicit speed limits on the road type Motorway / // Anteil der Kameradetektion die mit den expliziten Speed Limits auf dem Straßentyp Motorway übereinstimmen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_MATCH_MOWAY_WERT", STAT_SLI_MATCH_MOWAY_WERT, "\"Counts\""); unsigned short STAT_SLI_REP_URBAN_WERT = (RXBUF_UINT(7)); // Average distance at which signs repeat on the street type Urban or Residential Area / Durschnittlich Enfernung // in welcher sich Schilder auf dem Straßentyp Urbanoder Residential Area wiederholen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_REP_URBAN_WERT", STAT_SLI_REP_URBAN_WERT, "\"m\""); unsigned short STAT_SLI_REP_RURAL_WERT = (RXBUF_UINT(9)); // Average distance at which signs repeat on the road type rural or highway / Durschnittlich Enfernung in welcher // sich Schilder auf dem Straßentyp Rural oder Highway wiederholen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_REP_RURAL_WERT", STAT_SLI_REP_RURAL_WERT, "\"m\""); unsigned short STAT_SLI_REP_MOWAY_WERT = (RXBUF_UINT(11)); // Average distance at which signs repeat on the road type Motorway / Durschnittlich Enfernung in welcher sich // Schilder auf dem Straßentyp Motorway wiederholen ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_REP_MOWAY_WERT", STAT_SLI_REP_MOWAY_WERT, "\"m\""); unsigned long STAT_SLI_OVER_SLI_WERT = (RXBUF_UINT32(13)); // Distance driven at least 20 km / h above the detected speed limit / Gefahrene Entfernung mit mindestens 20 // km/h über dem erkannten Speed Limit ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_OVER_SLI_WERT", STAT_SLI_OVER_SLI_WERT, "\"km\""); unsigned short STAT_SLI_SSS_TIME_WERT = (RXBUF_UINT(17)); // Number of recognized additional characters with time restriction / Anzahl der erkannten Zusatzzeichen mit // Zeitbeschränkung ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_SSS_TIME_WERT", STAT_SLI_SSS_TIME_WERT, "\"Counts\""); unsigned long STAT_SLI_NPI_WERT = (RXBUF_UINT32(19)); // Kilometers driven with no overtaking recognized / Gefahrene Kilometer mit erkanntem Überholverbot ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%lu%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_NPI_WERT", STAT_SLI_NPI_WERT, "\"km\""); unsigned short STAT_SLI_NP_WITHDRAW_DIST_WERT = (RXBUF_UINT(23)); // Number of cancellations of overtaking ban due to exceeding the stopping distance / Anzahl Aufhebungen // Überholverbot infolge Überschreitung Haltedistanz ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_NP_WITHDRAW_DIST_WERT", STAT_SLI_NP_WITHDRAW_DIST_WERT, "\"Counts\""); unsigned short STAT_SLI_NP_WITHDRAW_SIGN_WERT = (RXBUF_UINT(25)); // Number of cancellations No overtaking due to detection of a lifting sign / Anzahl Aufhebungen Überholverbot // infolge Detektion Aufhebungsschild ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "_KAFAS_SLI_DATA", "STAT_SLI_NP_WITHDRAW_SIGN_WERT", STAT_SLI_NP_WITHDRAW_SIGN_WERT, "\"Counts\""); // ========== Add your processing here ========== hexdump(rxbuf, type, pid); break; } case I3_PID_KAF__STATUS_SAFETY_DIAG_INFO: { // 0x400E if (datalen < 7) { ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__STATUS_SAFETY_DIAG_INFO", 7); break; } unsigned char STAT_BYTE_0_FAULT_WERT = (RXBUF_UCHAR(0)); // The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 // UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2 UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5 // VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7 V_BAT1_freeze_fault / The parameter values shall indicate 0 for // fault_not_present and 1 for fault_present. Bit: 0 UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2 // UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5 VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7 // V_BAT1_freeze_fault ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_0_FAULT_WERT", STAT_BYTE_0_FAULT_WERT, "\"HEX\""); unsigned char STAT_BYTE_1_FAULT_WERT = (RXBUF_UCHAR(1)); // The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 // UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2 UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5 // VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7 V_BAT1_freeze_fault / The parameter values shall indicate 0 for // fault_not_present and 1 for fault_present. Bit: 0 UP1V0D_freeze_fault 1 UP1V8D_freeze_fault 2 // UP2V5D_freeze_fault 3 UP3V3D_freeze_fault 4 UP5V0D_freeze_fault 5 VTEMP1_freeze_fault 6 VTEMP2_freeze_fault 7 // V_BAT1_freeze_fault ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_1_FAULT_WERT", STAT_BYTE_1_FAULT_WERT, "\"HEX\""); unsigned char STAT_BYTE_2_FAULT_WERT = (RXBUF_UCHAR(2)); // The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 // UP1V0D_voltage_fault 1 UP1V8D_voltage_fault 2 UP2V5D_voltage_fault 3 UP3V3D_voltage_fault 4 // UP5V0D_voltage_fault 5 VTEMP1_temperature_fault 6 VTEMP2_temperature_fault 7 V_BAT1_voltage_fault / The // parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 UP1V0D_voltage_fault // 1 UP1V8D_voltage_fault 2 UP2V5D_voltage_fault 3 UP3V3D_voltage_fault 4 UP5V0D_voltage_fault 5 // VTEMP1_temperature_fault 6 VTEMP2_temperature_fault 7 V_BAT1_voltage_fault ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_2_FAULT_WERT", STAT_BYTE_2_FAULT_WERT, "\"HEX\""); unsigned char STAT_BYTE_3_FAULT_WERT = (RXBUF_UCHAR(3)); // The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 // ECU_inconsistent_temperature_fault / The parameter values shall indicate 0 for fault_not_present and 1 for // fault_present. Bit: 0 ECU_inconsistent_temperature_fault ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_3_FAULT_WERT", STAT_BYTE_3_FAULT_WERT, "\"HEX\""); unsigned char STAT_BYTE_4_FAULT_WERT = (RXBUF_UCHAR(4)); // The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 Eq2Unavailable 1 // Eq2FaultHandlingAliveError 2 Eq2FaultHandlingCrcError 3 VideoError_400 4 TempStatus_400 5 CamLVDS_Defect_400 6 // CamEEP_Fail_400 7 BurntPixel_400 / The parameter values shall indicate 0 for fault_not_present and 1 for // fault_present. Bit: 0 Eq2Unavailable 1 Eq2FaultHandlingAliveError 2 Eq2FaultHandlingCrcError 3 VideoError_400 // 4 TempStatus_400 5 CamLVDS_Defect_400 6 CamEEP_Fail_400 7 BurntPixel_400 ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_4_FAULT_WERT", STAT_BYTE_4_FAULT_WERT, "\"HEX\""); unsigned char STAT_BYTE_5_FAULT_WERT = (RXBUF_UCHAR(5)); // The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 DDR_Failure_400 1 // WdgMSafetyAliveSupervisonFault / The parameter values shall indicate 0 for fault_not_present and 1 for // fault_present. Bit: 0 DDR_Failure_400 1 WdgMSafetyAliveSupervisonFault ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_5_FAULT_WERT", STAT_BYTE_5_FAULT_WERT, "\"HEX\""); unsigned char STAT_BYTE_6_FAULT_WERT = (RXBUF_UCHAR(6)); // The parameter values shall indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 ActiveFaultClass // Bit 0 * 1 ActiveFaultClass Bit 1 * 2 ActiveFaultClass Bit 2 * 3 (not disp_drasy_available) 4 (not // aAssistFunctionAvailable) 5 (not qAssistActive) 6 Not in use 7 Safe state entered disp_drasy_available means // that the bit is 0 when the signal is available, and 1 when it is not available / The parameter values shall // indicate 0 for fault_not_present and 1 for fault_present. Bit: 0 ActiveFaultClass Bit 0* 1 ActiveFaultClass // Bit 1* 2 ActiveFaultClass Bit 2* 3 (not disp_drasy_available) 4 (not aAssistFunctionAvailable) 5 (not // qAssistActive) 6 Not in use 7 Safe state entered disp_drasy_available means that the bit is 0 when the // signal is availablem, and 1 when it is not available ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_SAFETY_DIAG_INFO", "STAT_BYTE_6_FAULT_WERT", STAT_BYTE_6_FAULT_WERT, "\"HEX\""); // ========== Add your processing here ========== hexdump(rxbuf, type, pid); break; } case I3_PID_KAF__STATUS_WARNZEITPUNKT_FCW: { // 0x400F if (datalen < 1) { ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF__STATUS_WARNZEITPUNKT_FCW", 1); break; } unsigned char STAT_WARN_FLAV_FCW = (RXBUF_UCHAR(0)); // currently selected warning flavor / currently selected warning flavor ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%x%s\n", "KAF", "_STATUS_WARNZEITPUNKT_FCW", "STAT_WARN_FLAV_FCW", STAT_WARN_FLAV_FCW, "\"0-n\""); // ========== Add your processing here ========== hexdump(rxbuf, type, pid); break; } case I3_PID_KAF_FASTA_PPP_DATA: { // 0x4010 if (datalen < 50) { ESP_LOGW(TAG, "Received %d bytes for %s, expected %d", datalen, "I3_PID_KAF_FASTA_PPP_DATA", 50); break; } unsigned short STAT_PPP_WARNING_ZONE = (RXBUF_UINT(0)); // Type of warning zone / Art der Warnzone ESP_LOGD(TAG, "From ECU %s, pid %s: got %s=%u%s\n", "KAF", "FASTA_PPP_DATA", "STAT_PPP_WARNING_ZONE", STAT_PPP_WARNING_ZONE, "\"0-n\""); unsigned short STAT_PPP_AMNT_DZ_EVENTS_0_TO_20_WERT = (RXBUF_UINT(2)); // The parameter is determined by counting the number of DZ events in the range 0