.pragma library



// Type d'historique :
const HISTORIQUE_TYPE_SYSTEME       = 0;
const HISTORIQUE_TYPE_CIRCUITS      = 1;
const HISTORIQUE_TYPE_CAPTEURS      = 2;
const HISTORIQUE_TYPE_RESERVOIRS    = 3;
const HISTORIQUE_TYPE_BATTERIES     = 4;
const HISTORIQUE_TYPE_USB           = 5;


// Sous-types d'historique :
    //-------------------------------------------------------------
    // Système :
const HISTORIQUE_SOUS_TYPE_SYSTEME_REINIT                                           = 1;
const HISTORIQUE_SOUS_TYPE_SYSTEME_ERREUR_MYSQL                                     = 2;
const HISTORIQUE_SOUS_TYPE_SYSTEME_CONNEXION_USER                                   = 3;
const HISTORIQUE_SOUS_TYPE_SYSTEME_REBOOT                                           = 4;
const HISTORIQUE_SOUS_TYPE_SYSTEME_ARRET                                            = 5;
const HISTORIQUE_SOUS_TYPE_SYSTEME_TIME_OUT_CONNEXION                               = 6;
const HISTORIQUE_SOUS_TYPE_SYSTEME_DECONNEXION_USER                                 = 7;
const HISTORIQUE_SOUS_TYPE_SYSTEME_CONFIGURATION_INVALIDE_DEMARRAGE_IMPOSSIBLE      = 8;
const HISTORIQUE_SOUS_TYPE_SYSTEME_SIGNAL_RECU                                      = 9;        // La valeur du signal reçu est stocké dans Valeur
const HISTORIQUE_SOUS_TYPE_SYSTEME_DEMANDE_REINIT                                   = 10;
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_VEILLE                                = 11;       // La nouvelle valeur de 'veille' est stockée dans Valeur
const HISTORIQUE_SOUS_TYPE_SYSTEME_ERREUR_SAUVEGARDE_BDD							= 12;		// Le message d'info sur l'erreur est stocké dans le complément.

const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_DEMANDE_ACTIVATION                         = 20;       // La Valeur indique dans quel sens (On ou Off)
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_ETAT                            = 21;       // La Valeur indique dans quel sens (On ou Off)
const HISTORIQUE_SOUS_TYPE_SYSTEME_ERREUR_CHANGEMENT_ETAT                           = 22;       // La Valeur indique dans quel sens (On ou Off) le changement était demandé et a échoué
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_ETABLISSEMENT_LIAISON               = 23;
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_ETAT_NON_SOLLICITE                    = 24;       // La Valeur indique dans quel sens (On ou Off) le modem se trouve alors qu'il ne devrait pas
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_REVISION_FIRMWARE                     = 25;       // La valeur de révision est stockée dans Complément
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_IMEI                                  = 26;       // Le n° est stocké dans Complément

const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_IMSI							= 27;       // Le n° est stocké dans Complément
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_ICCID							= 28;       // Le n° est stocké dans Complément
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_NO_TELEPHONE					= 29;		// Le n° est stocké dans Complément
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_APN                             = 30;		// Le n° est stocké dans Complément
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_FTP                                 = 31;		// Le code d'erreur reçu du modem est stocké dans Valeur et la réponse complète du modem dans Complement
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_GNSS								= 32;		// Le cycle d'acquisition n'a pas pu être réalisé complètement. Le nombre de cycles valides est indiqué dans Valeur.
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_M_BUS_PLEIN                         = 33;		// Le nombre de refus de nouvelle commande dans le buffer de commandes est trop important. Le nb de refus consécutifs est dans Valeur
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_PERTE_LIAISON_4G_LTE                       = 34;
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ETABLISSEMENT_LIAISON_4G_LTE               = 35;

const HISTORIQUE_SOUS_TYPE_SYSTEME_MODULES_NOUVEAU_MODULE                           = 40;		// L'adresse K-Bus où est apparu le module est dans 'id'. Le Type de module est dans Valeur. L'adresse MAC est dans Complément
const HISTORIQUE_SOUS_TYPE_SYSTEME_MODULES_SUPPRESSION_MODULE                       = 41;		// L'adresse K-Bus où était le module est dans 'id'. Le Type de module est dans Valeur. L'adresse MAC est dans Complément

const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_DEBUT_OK						= 50;		// Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur
const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_DEBUT_NOK                     = 51;		// Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur
const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_FIN_OK						= 52;		// Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur
const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_FIN_NOK						= 53;		// Le nom du fichier source et du fichier destination sont stockés dans complément

const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_DEBUT_OK					= 60;		// Le nom du fichier source et du fichier destination sont stockés dans complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_DEBUT_NOK					= 61;		// Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur
const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_FIN_OK						= 62;		// Le nom du fichier source et du fichier destination sont stockés dans complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_FIN_NOK                     = 63;		// Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur
const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_LIST_NOK							= 64;		// Le nom du fichier de LIST est stocké dans complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_NOMBRE_FICHIERS_LOCAUX_TROP_ELEVE	= 65;		// Le nombre maxi admissible est stocké dans Valeur
const HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_NOMBRE_FICHIERS_SERVEUR_TROP_ELEVE	= 66;		// Le nombre maxi admissible est stocké dans Valeur

const HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_DEBUT_OK							= 70;		// Le nom du fichier utilisé pour l'upload est dans le complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_DEBUT_NOK                         = 71;		// Le nom du fichier utilisé pour l'upload est dans le complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_FIN_OK							= 72;		// Le nom du fichier utilisé pour l'upload est dans le complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_FIN_NOK							= 73;		// Le nom du fichier utilisé pour l'upload est dans le complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_VALIDER_OK						= 74;		// Le nom du fichier est dans le complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_VALIDER_NOK          			= 75;		// Le nom du fichier est dans le complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_CHARGER_OK						= 76;		// Le nom du fichier est dans le complément.
const HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_CHARGER_NOK						= 77;		// Le nom du fichier est dans le complément.

const HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_DEBUT_OK                         = 80;		// Le nom du fichier utilisé pour l'upload est dans le complément. L'ID de la carte dans ID
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_DEBUT_NOK						= 81;		// Le nom du fichier utilisé pour l'upload est dans le complément. L'ID de la carte dans ID
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_ERASE_FLASH_NOK					= 82;		// Le nom du fichier utilisé pour l'upload est dans le complément. L'ID de la carte dans ID
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_ECRITURE_FLASH_NOK				= 83;		// Le nom du fichier utilisé pour l'upload est dans le complément. L'ID de la carte dans ID
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_CRC_FLASH_NOK					= 84;		// Le nom du fichier utilisé pour l'upload est dans le complément. L'ID de la carte dans ID
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_FIN_OK							= 85;		// Le nom du fichier utilisé pour l'upload est dans le complément. L'ID de la carte dans ID
const HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_FIN_NOK							= 86;		// Le nom du fichier utilisé pour l'upload est dans le complément. L'ID de la carte dans ID



const HISTORIQUE_SOUS_TYPE_SYSTEME_UART_BUFFER_RX_PLEIN                             = 100;		// L'ID précise quel UART
const HISTORIQUE_SOUS_TYPE_SYSTEME_BUS_BUFFER_COMMANDES_PLEIN						= 101;		// L'ID précise quel bus ('M' ou 'C')

const HISTORIQUE_SOUS_TYPE_SYSTEME_BACKLIGHT_CHANGEMENT_CONSIGNE					= 110;		// La valeur indique la nouvelle consigne
const HISTORIQUE_SOUS_TYPE_SYSTEME_VOLUME_CHANGEMENT_CONSIGNE						= 111;		// La valeur indique la nouvelle consigne
const HISTORIQUE_SOUS_TYPE_SYSTEME_LEDS_CHANGEMENT_CONSIGNE                         = 112;		// La valeur indique la nouvelle consigne



const HISTORIQUE_SOUS_TYPE_SYSTEME_WIFI_MISE_A_JOUR_CONFIG                  		= 130;      // Les informations sur la nouvelle config sont stockées dans Complément

    //-------------------------------------------------------------
    // Circuits :
const HISTORIQUE_SOUS_TYPE_CIRCUITS_CHANGEMENT_CONSIGNE                             = 1;

const HISTORIQUE_SOUS_TYPE_CIRCUITS_OK                                              = 10;       // La valeur de limitation (en mA) est stockée dans Valeur
const HISTORIQUE_SOUS_TYPE_CIRCUITS_LIMITATION										= 11;       // La valeur de limitation (en mA) est stockée dans Valeur
const HISTORIQUE_SOUS_TYPE_CIRCUITS_PROTECTION										= 12;       // La valeur de limitation (en mA) est stockée dans Valeur
const HISTORIQUE_SOUS_TYPE_CIRCUITS_DISJONCTE										= 13;       // La valeur de limitation (en mA) est stockée dans Valeur
const HISTORIQUE_SOUS_TYPE_CIRCUITS_CC_BATTERIE                                     = 14;       // La valeur de limitation (en mA) est stockée dans Valeur
const HISTORIQUE_SOUS_TYPE_CIRCUITS_OPEN_LOAD										= 15;       // La valeur de limitation (en mA) est stockée dans Valeur

const HISTORIQUE_SOUS_TYPE_CIRCUITS_CREATION										= 20;
const HISTORIQUE_SOUS_TYPE_CIRCUITS_MODIFICATION									= 21;
const HISTORIQUE_SOUS_TYPE_CIRCUITS_SUPPRESSION                                     = 22;

const HISTORIQUE_SOUS_TYPE_CIRCUITS_CONFIGURATION_INVALIDE							= 30;		// L'ID précise la clé primaire. Valeur contient l'ID_Carte actuellement configuré

const HISTORIQUE_SOUS_TYPE_CIRCUIT_EXPIRATION_TIME_OUT                              = 40;       // La nouvelle valeur de consigne est stockée dans Valeur. De plus, Complément comprend 'origine_consigne/id_origine_consigne'.

    //-------------------------------------------------------------
    // Capteurs :
const HISTORIQUE_SOUS_TYPE_CAPTEURS_CAPTEUR_PASSAGE_OK                              = 1;		// L'ID précise la clé primaire. VAleur contient la valeur du capteur au moment du changement
const HISTORIQUE_SOUS_TYPE_CAPTEURS_CAPTEUR_PASSAGE_ALERTE                          = 2;		// L'ID précise la clé primaire. VAleur contient la valeur du capteur au moment du changement
const HISTORIQUE_SOUS_TYPE_CAPTEURS_CAPTEUR_PASSAGE_ALARME                          = 3;		// L'ID précise la clé primaire. VAleur contient la valeur du capteur au moment du changement

    //-------------------------------------------------------------
    // Batteries :
const HISTORIQUE_SOUS_TYPE_BATTERIES_PASSAGE_NIVEAU_NORMAL							= 1;		// L'ID précise la batterie. La valeur indique l'ancien état
const HISTORIQUE_SOUS_TYPE_BATTERIES_PASSAGE_NIVEAU_ALERTE							= 2;		// L'ID précise la batterie. La valeur indique l'ancien état
const HISTORIQUE_SOUS_TYPE_BATTERIES_PASSAGE_NIVEAU_ALARME							= 3;		// L'ID précise la batterie. La valeur indique l'ancien état

    //-------------------------------------------------------------
    // Réservoirs :
const HISTORIQUE_SOUS_TYPE_RESERVOIRS_PASSAGE_NIVEAU_NORMAL							= 1;        // L'ID précise le Réservoir. La valeur indique l'ancien état
const HISTORIQUE_SOUS_TYPE_RESERVOIRS_PASSAGE_NIVEAU_ALERTE							= 2;        // L'ID précise le Réservoir. La valeur indique l'ancien état
const HISTORIQUE_SOUS_TYPE_RESERVOIRS_PASSAGE_NIVEAU_ALARME							= 3;        // L'ID précise le Réservoir. La valeur indique l'ancien état

    //-------------------------------------------------------------
    // USB :
const HISTORIQUE_SOUS_TYPE_USB_CHANGEMENT_CONSIGNE									= 1;		// La valeur indique le nouvel état

const HISTORIQUE_SOUS_TYPE_USB_PASSAGE_OK											= 10;		// L'ID contient le n° du port (1 à 3)
const HISTORIQUE_SOUS_TYPE_USB_PASSAGE_DEFAUT										= 11;		// L'ID contient le n° du port (1 à 3)





//=====================================================================================
// Fonctions  : Génère une chaine avec le libellé de l'événement.
// Reçoit :     Le type, le SOUS_TYPE, le nom de l'ID concerné, la valeur et le
//              complément de l'événement.
//              NB : le nom de l'ID peut être une chaine vide. dans ce cas, le texte
//              généré suppose que l'on connait de façon non ambigüe l'objet concerné
//              (c'est utile quand on affiche l'historique d'un circuit particulier par
//              exemple).
// Retour :     La chaine générée
//=====================================================================================
function historique_libelle(type, event, nom_id, valeur, complement)
{
var libelle;
var texte_nom;
var texte_event_systeme;
var texte_valeur_systeme;

    if (nom_id === "") texte_nom = "";
    else texte_nom = "'" + nom_id + "' ";

    texte_event_systeme = "";
    texte_valeur_systeme = "";

    switch (type)
    {
        //----------------------------------------------------------------------------------------------------------------
        case HISTORIQUE_TYPE_SYSTEME:
            switch (event)
            {
                case HISTORIQUE_SOUS_TYPE_SYSTEME_REINIT:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_REINIT"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_ERREUR_MYSQL:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_ERREUR_MYSQL"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CONNEXION_USER:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CONNEXION_USER"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_REBOOT:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_REBOOT"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_ARRET:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_ARRET"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_TIME_OUT_CONNEXION:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_TIME_OUT_CONNEXION"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_DECONNEXION_USER:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_DECONNEXION_USER"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CONFIGURATION_INVALIDE_DEMARRAGE_IMPOSSIBLE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CONFIGURATION_INVALIDE_DEMARRAGE_IMPOSSIBLE"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_SIGNAL_RECU:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_SIGNAL_RECU"; texte_valeur_systeme = valeur;   break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_DEMANDE_REINIT:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_DEMANDE_REINIT"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_VEILLE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_VEILLE"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_ERREUR_SAUVEGARDE_BDD : texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_ERREUR_SAUVEGARDE_BDD"; break;

                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_DEMANDE_ACTIVATION:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_DEMANDE_ACTIVATION"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_ETAT:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_ETAT"; texte_valeur_systeme = valeur;   break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_ERREUR_CHANGEMENT_ETAT:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_ERREUR_CHANGEMENT_ETAT"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_ETABLISSEMENT_LIAISON:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_ETABLISSEMENT_LIAISON"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_ETAT_NON_SOLLICITE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_ETAT_NON_SOLLICITE"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_REVISION_FIRMWARE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_REVISION_FIRMWARE"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_IMEI:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHANGEMENT_IMEI"; break;

                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_IMSI:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_IMSI"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_ICCID:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_ICCID"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_NO_TELEPHONE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_NO_TELEPHONE"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_APN:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_CHANGEMENT_APN"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_FTP:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_FTP"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_GNSS:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_GNSS"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_M_BUS_PLEIN:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ERREUR_M_BUS_PLEIN"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_PERTE_LIAISON_4G_LTE:   texte_event_systeme = "SYSTEME_MODEM_PERTE_LIAISON_4G_LTE"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_MODEM_ETABLISSEMENT_LIAISON_4G_LTE:   texte_event_systeme = "SYSTEME_MODEM_ETABLISSEMENT_LIAISON_4G_LTE"; break;

                case SYSTEME_MODULES_NOUVEAU_MODULE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODULES_NOUVEAU_MODULE"; break;
                case SYSTEME_MODULES_SUPPRESSION_MODULE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_MODULES_SUPPRESSION_MODULE"; break;

                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_DEBUT_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_DEBUT_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_DEBUT_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_DEBUT_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_FIN_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_FIN_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_FIN_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_UPLOAD_FICHIER_FIN_NOK"; break;

                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_DEBUT_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_DEBUT_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_DEBUT_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_DEBUT_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_FIN_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_FIN_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_FIN_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_FICHIER_FIN_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_LIST_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_LIST_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_NOMBRE_FICHIERS_LOCAUX_TROP_ELEVE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_NOMBRE_FICHIERS_LOCAUX_TROP_ELEVE"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_NOMBRE_FICHIERS_SERVEUR_TROP_ELEVE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_FTP_DOWNLOAD_NOMBRE_FICHIERS_SERVEUR_TROP_ELEVE"; break;

                case HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_DEBUT_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_DEBUT_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_DEBUT_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_DEBUT_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_FIN_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_FIN_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_FIN_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_EXECUTION_BASH_FIN_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_VALIDER_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_VALIDER_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_VALIDER_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_VALIDER_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_CHARGER_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_CHARGER_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_CHARGER_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_COPIE_ARCHIVE_A_CHARGER_NOK"; break;

                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_DEBUT_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_DEBUT_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_DEBUT_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_DEBUT_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_ERASE_FLASH_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_ERASE_FLASH_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_ECRITURE_FLASH_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_ECRITURE_FLASH_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_CRC_FLASH_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_CRC_FLASH_NOK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_FIN_OK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_FIN_OK"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_FIN_NOK:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_CHARGEMENT_CODE_FIN_NOK"; break;


                case HISTORIQUE_SOUS_TYPE_SYSTEME_UART_BUFFER_RX_PLEIN:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_UART_BUFFER_RX_PLEIN"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_BUS_BUFFER_COMMANDES_PLEIN:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_BUS_BUFFER_COMMANDES_PLEIN"; break;

                case HISTORIQUE_SOUS_TYPE_SYSTEME_BACKLIGHT_CHANGEMENT_CONSIGNE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_BACKLIGHT_CHANGEMENT_CONSIGNE"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_VOLUME_CHANGEMENT_CONSIGNE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_VOLUME_CHANGEMENT_CONSIGNE"; break;
                case HISTORIQUE_SOUS_TYPE_SYSTEME_LEDS_CHANGEMENT_CONSIGNE:   texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_LEDS_CHANGEMENT_CONSIGNE"; break;


                case HISTORIQUE_SOUS_TYPE_SYSTEME_WIFI_MISE_A_JOUR_CONFIG : texte_event_systeme = "HISTORIQUE_SOUS_TYPE_SYSTEME_WIFI_MISE_A_JOUR_CONFIG"; break;

                default : libelle = "Evénement de type SYSTEME avec code de sous-type inconnu [" + event + "]";
            }

            texte_event_systeme = texte_event_systeme.replace('HISTORIQUE_SOUS_TYPE_SYSTEME_', '');
            texte_event_systeme = texte_event_systeme.replace(/_/g, ' ');
            if (texte_event_systeme !== "") libelle = "Evénement système de type '" + texte_event_systeme.replace(/_/g, ' ') + "' [" + event + "]";     // le 'g' permet de remplacer toutes les occurences (sinon, seule la première sera remplacée)
            if (texte_valeur_systeme !== "") libelle = libelle + " avec valeur = [" + texte_valeur_systeme + "]";

            break;

        //----------------------------------------------------------------------------------------------------------------
        case HISTORIQUE_TYPE_CIRCUITS:


            switch (event)
            {
                case HISTORIQUE_SOUS_TYPE_CIRCUITS_CHANGEMENT_CONSIGNE:
                    if (valeur === 0) libelle = qsTr("Commande 'OFF' du circuit %1").arg(texte_nom);
                    else if (valeur === 100) libelle = qsTr("Commande 'ON' du circuit %1").arg(texte_nom);
                    else libelle = qsTr("Commande à %1 % du circuit %2").arg(valeur).arg(texte_nom);
                    break;

                case HISTORIQUE_SOUS_TYPE_CIRCUITS_OK:                  libelle = qsTr("Le circuit %1 est revenu à son état de fonctionnement normal").arg(texte_nom);    break;
                case HISTORIQUE_SOUS_TYPE_CIRCUITS_LIMITATION:          libelle = qsTr("L'alimentation du circuit %1 a été coupée car sa limite de courant (%2 A) a été dépassée").arg(texte_nom).arg(valeur.toFixed(2));    break;
                case HISTORIQUE_SOUS_TYPE_CIRCUITS_PROTECTION:          libelle = qsTr("L'alimentation du circuit %1 a été coupée car les circuits de protection interne ont détecté une anomalie").arg(texte_nom);    break;
                case HISTORIQUE_SOUS_TYPE_CIRCUITS_DISJONCTE:           libelle = qsTr("L'alimentation du circuit %1 a été coupée car le seuil de disjonction a été dépassé").arg(texte_nom);    break;
                case HISTORIQUE_SOUS_TYPE_CIRCUITS_CC_BATTERIE:         libelle = qsTr("Le circuit %1 est en court-circuit avec le + batterie").arg(texte_nom);    break;
                case HISTORIQUE_SOUS_TYPE_CIRCUITS_OPEN_LOAD:           libelle = qsTr("L'alimentation du circuit %1 a été coupée car la consommation totale du module a été dépassé").arg(texte_nom);    break;

                case HISTORIQUE_SOUS_TYPE_CIRCUITS_CREATION:            libelle = qsTr("Le circuit %1 a été créé").arg(texte_nom);    break;
                case HISTORIQUE_SOUS_TYPE_CIRCUITS_MODIFICATION:        libelle = qsTr("La configuration du circuit %1 a été modifiée").arg(texte_nom);    break;
                case HISTORIQUE_SOUS_TYPE_CIRCUITS_SUPPRESSION:         libelle = qsTr("Le circuit %1 a été supprimé").arg(texte_nom);    break;

                case HISTORIQUE_SOUS_TYPE_CIRCUITS_CONFIGURATION_INVALIDE:  libelle = qsTr("La configuration du circuit %1 est invalide car le module sur lequel le circuit est configuré n'est pas présent").arg(texte_nom);    break;

                case HISTORIQUE_SOUS_TYPE_CIRCUIT_EXPIRATION_TIME_OUT:  libelle = qsTr("Le circuit %1 a fonctionné trop longtemps (> %2 secondes). Il a donc été désactivé automatiquement.").arg(texte_nom).arg(valeur);    break;

                default : libelle = qsTr("Evénement de type CIRCUITS avec code de sous-type inconnu [%1]").arg(event)
            }
            break;

        //----------------------------------------------------------------------------------------------------------------
        case HISTORIQUE_TYPE_CAPTEURS:
            switch (event)
            {
                case HISTORIQUE_SOUS_TYPE_CAPTEURS_CAPTEUR_PASSAGE_OK:      libelle = qsTr("Le capteur %1 est repassé à l'état normal").arg(texte_nom);    break;

                case HISTORIQUE_SOUS_TYPE_CAPTEURS_CAPTEUR_PASSAGE_ALERTE:  libelle = qsTr("Le capteur %1 est passé à l'état ALERTE").arg(texte_nom);    break;

                case HISTORIQUE_SOUS_TYPE_CAPTEURS_CAPTEUR_PASSAGE_ALARME:  libelle = qsTr("Le capteur %1 est passé à l'état ALARME").arg(texte_nom);    break;

                default : libelle = qsTr("Evénement de type CAPTEURS avec code de sous-type inconnu [%1]").arg(event)
            }
            break;

        //----------------------------------------------------------------------------------------------------------------
        case HISTORIQUE_TYPE_BATTERIES:
            switch (event)
            {
                case HISTORIQUE_SOUS_TYPE_BATTERIES_PASSAGE_NIVEAU_NORMAL: libelle = qsTr("Le niveau de charge de la batterie %1 est repassé au niveau normal").arg(texte_nom);    break;
                case HISTORIQUE_SOUS_TYPE_BATTERIES_PASSAGE_NIVEAU_ALERTE:
                    if (valeur === HISTORIQUE_SOUS_TYPE_BATTERIES_PASSAGE_NIVEAU_NORMAL) libelle = qsTr("Le niveau de charge de la batterie %1 est passé en dessous du niveau d'alerte").arg(texte_nom);
                    else libelle = qsTr("Le niveau de charge de la batterie %1 est passé au-dessus du niveau d'alarme (il est maintenant au niveau d'alerte uniquement)").arg(texte_nom);
                    break;
                case HISTORIQUE_SOUS_TYPE_BATTERIES_PASSAGE_NIVEAU_ALARME: libelle = qsTr("Le niveau de charge de la batterie %1 est passé en-dessous du niveau d'alarme").arg(texte_nom); break;

                default : libelle = qsTr("Evénement de type BATTERIES avec code de sous-type inconnu [%1]").arg(event)
            }
            break;

        //----------------------------------------------------------------------------------------------------------------
        case HISTORIQUE_TYPE_RESERVOIRS:
            switch (event)
            {
                case HISTORIQUE_SOUS_TYPE_RESERVOIRS_PASSAGE_NIVEAU_NORMAL: libelle = qsTr("Le niveau du réservoir %1 est repassé au niveau normal").arg(texte_nom);    break;
                case HISTORIQUE_SOUS_TYPE_RESERVOIRS_PASSAGE_NIVEAU_ALERTE:
                    if (valeur === HISTORIQUE_SOUS_TYPE_RESERVOIRS_PASSAGE_NIVEAU_NORMAL) libelle = qsTr("Le niveau du réservoir %1 est passé en dessous du niveau d'alerte").arg(texte_nom);
                    else libelle = qsTr("Le niveau du réservoir %1 est passé au-dessus du niveau d'alarme (il est maintenant au niveau d'alerte uniquement)").arg(texte_nom);
                    break;
                case HISTORIQUE_SOUS_TYPE_RESERVOIRS_PASSAGE_NIVEAU_ALARME: libelle = qsTr("Le niveau du réservoir %1 est passé en-dessous du niveau d'alarme").arg(texte_nom); break;

                default : libelle = qsTr("Evénement de type RESERVOIRS avec code de sous-type inconnu [%1]").arg(event)
            }
            break;

        //----------------------------------------------------------------------------------------------------------------
        case HISTORIQUE_TYPE_USB:
            switch (event)
            {
                case HISTORIQUE_SOUS_TYPE_USB_CHANGEMENT_CONSIGNE:  libelle = qsTr("La consigne des ports USB est passée à %1").arg(valeur);    break;

                case HISTORIQUE_SOUS_TYPE_USB_PASSAGE_OK:   libelle = qsTr("L'état des ports USB est redevenu normal"); break;
                case HISTORIQUE_SOUS_TYPE_USB_PASSAGE_DEFAUT:   libelle = qsTr("Défaut détecté sur les ports USB");  break;

                default : libelle = qsTr("Evénement de type USB avec code de sous-type inconnu [%1]").arg(event)
            }
            break;

        //----------------------------------------------------------------------------------------------------------------
        default : libelle = qsTr("Evénement de type INCONNU (avec code de sous-type [%1]").arg(event)
    }


    return(libelle);
}
