/**
 * @file dtc_defs.h
 *
 * @brief Header file for Diagnostic Trouble Code (DTC) definitions in the ChainLube application.
 *
 * This file contains definitions for Diagnostic Trouble Codes (DTC) in the ChainLube project.
 * It includes enums for DTC active status, severity levels, and specific DTC codes.
 * The file also defines an array of DTC definitions and a timestamp indicating the generation time.
 *
 * @note This file is auto-generated by a script on 2024-01-10 18:37:05.
 *
 * @author Marcel Peterkau
 * @date   10.01.2024
 */

#ifndef DTC_DEFS_H
#define DTC_DEFS_H

#include <stdint.h>

typedef uint32_t DTCNum_t;

typedef enum
{
  DTC_INACTIVE,
  DTC_ACTIVE,
  DTC_PREVIOUS
} DTCActive_t;

typedef enum
{
  DTC_NONE,
  DTC_INFO,
  DTC_WARN,
  DTC_CRITICAL
} DTCSeverity_t;

typedef struct {
  DTCNum_t code;
  DTCSeverity_t severity;
} DTC_t;

#define DTC_NO_DTC                     0
#define DTC_TANK_EMPTY                 1
#define DTC_TANK_LOW                   2
#define DTC_NO_EEPROM_FOUND            3
#define DTC_EEPROM_CFG_BAD             4
#define DTC_EEPROM_PDS_BAD             5
#define DTC_EEPROM_PDSADRESS_BAD       6
#define DTC_EEPROM_VERSION_BAD         7
#define DTC_FLASHFS_ERROR              8
#define DTC_FLASHFS_VERSION_ERROR      9
#define DTC_NO_GPS_SERIAL              10
#define DTC_CAN_TRANSCEIVER_FAILED     11
#define DTC_NO_CAN_SIGNAL              12
#define DTC_EEPROM_CFG_SANITY          13
#define DTC_FAKE_DTC_INFO              14
#define DTC_FAKE_DTC_WARN              15
#define DTC_FAKE_DTC_CRIT              16
#define DTC_LAST_DTC                   17

const DTC_t dtc_definitions[] = {
    { DTC_NO_DTC                    , DTC_NONE     }, // No Error
    { DTC_TANK_EMPTY                , DTC_CRITICAL }, // Ölvorrat ist komplett leer. Den Ölvorrat auffüllen und im Menu 'Wartung' zurück setzen
    { DTC_TANK_LOW                  , DTC_WARN     }, // Ölvorrat ist unter der Warnschwelle. Den Ölvorrat demnächst auffüllen und im Menu 'Wartung' zurück setzen
    { DTC_NO_EEPROM_FOUND           , DTC_CRITICAL }, // Es wurde kein EEPROM gefunden. Dies lässt einen Hardware-Defekt vermuten.
    { DTC_EEPROM_CFG_BAD            , DTC_CRITICAL }, // Die Checksumme der Config-Partition des EEPROM ist ungültig. Setzen sie den EEPROM-Bereich 'CFG' im Menu 'Wartung' zurück
    { DTC_EEPROM_PDS_BAD            , DTC_CRITICAL }, // Die Checksumme der Betriebsdaten-Partition des EEPROM ist ungültig. Setzen sie den EEPROM-Bereich 'PDS' im Menu 'Wartung' zurück
    { DTC_EEPROM_PDSADRESS_BAD      , DTC_CRITICAL }, // Die Adresse der Betriebsdaten-Partition im EEPROM ist ungültig. Setzen sie den EEPROM-Bereich 'PDS' im Menu 'Wartung' zurück
    { DTC_EEPROM_VERSION_BAD        , DTC_CRITICAL }, // Die Layout-Version des EEPROM stimmt nicht mit der Firmware-Version überein. Setzen sie den EEPROM-Bereich 'CFG' im Menu 'Wartung' zurück
    { DTC_FLASHFS_ERROR             , DTC_CRITICAL }, // Der Flashspeicher konnte nicht initialisiert werden. Aktualisieren sie Flash & Firmware
    { DTC_FLASHFS_VERSION_ERROR     , DTC_CRITICAL }, // Die Version des Flashspeicher stimmt nicht mit der Firmware-Version überein. Aktualisieren sie den Flash mit der passenden Update-Datei
    { DTC_NO_GPS_SERIAL             , DTC_CRITICAL }, // Es wurde kein GPS-Signal über die serielle Schnittstelle empfangen, Prüfen sie die Verbindung und das GPS-Modul
    { DTC_CAN_TRANSCEIVER_FAILED    , DTC_CRITICAL }, // Es konnte keine Verbindung zum CAN-Transceiver hergestellt werden. Prüfen Sie die Hardware auf Defekte
    { DTC_NO_CAN_SIGNAL             , DTC_WARN     }, // Es konnte kein CAN-Signal empfangen werden. Prüfen sie die Verbindung und die Einstellungen
    { DTC_EEPROM_CFG_SANITY         , DTC_WARN     }, // Ein oder mehrer Einstellungswerte sind ausserhalb plausibler Werte. Prüfen Sie Ihre Einstellungen
    { DTC_FAKE_DTC_INFO             , DTC_INFO     }, // Ein Dummy-DTC der Schwere "Info" für Debugging-Zwecke
    { DTC_FAKE_DTC_WARN             , DTC_WARN     }, // Ein Dummy-DTC der Schwere "Warnung" für Debugging-Zwecke
    { DTC_FAKE_DTC_CRIT             , DTC_CRITICAL }, // Ein Dummy-DTC der Schwere "Kritisch" für Debugging-Zwecke
    { DTC_LAST_DTC                  , DTC_NONE     }  // Last Error
};

#endif // DTC_DEFS_H

// CODEGENERATOR_CHECKSUM: 23dff82a4745f67041012080b05ec367c2dd44c6bb02974143b227ba49682b6f