Ajout des fonctions de 'sonnette' vers ship2net
This commit is contained in:
+5
-2
@@ -340,7 +340,7 @@ char tmp[MAX_LONGUEUR_BUFFER_TEMPORAIRE_DEBUG];
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// NOUVEAU : marquage des lignes archivées (remplace l'incrémentation
|
||||
// Marquage des lignes archivées (remplace l'incrémentation
|
||||
// de No_paquet). Même filtre que celui utilisé pour le dump (donc
|
||||
// 'AND Type=0' repris pour TB_Mesures_circuits), pour ne marquer que
|
||||
// ce qui vient réellement d'être archivé (cf synthèse §32.4) :
|
||||
@@ -363,7 +363,7 @@ char tmp[MAX_LONGUEUR_BUFFER_TEMPORAIRE_DEBUG];
|
||||
}
|
||||
if (retour_commande != 0) break;
|
||||
|
||||
// NOUVEAU : remise à 'normale' - cette archive vient d'être confirmée transmise avec succès, le signal
|
||||
// Remise à 'normale' de l'origine de la BDD : cette archive vient d'être confirmée transmise avec succès, le signal
|
||||
// 'factory'/'restauration' n'a donc plus besoin d'être retransmis à la prochaine archive (cf synthèse §35) :
|
||||
sprintf(requete, "UPDATE TB_Systeme SET Valeur='normale' WHERE Nom='Origine_bdd' ");
|
||||
if (mysql_query(bdd.pointeur, requete) != 0)
|
||||
@@ -410,6 +410,9 @@ char tmp[MAX_LONGUEUR_BUFFER_TEMPORAIRE_DEBUG];
|
||||
remove(nom_fichier_sauvegarde);
|
||||
sprintf(commande, "%s.%s", nom_fichier_sauvegarde, SUFFIXE_NOM_FICHIER_COMPRESSE_SAUVEGARDE_BDD);
|
||||
remove(commande);
|
||||
|
||||
// Alerte Ship2net :
|
||||
sonnette_vps("evenement");
|
||||
}
|
||||
|
||||
affichage_debug(__FILE__, __LINE__, "Fin de sauvegarde de la BDD", TYPE_MESSAGE_DEBUG_PAR_DEFAUT);
|
||||
|
||||
@@ -350,6 +350,9 @@ char tmp[MAX_LONGUEUR_BUFFER_TEMPORAIRE_DEBUG];
|
||||
// Enregistrement historique :
|
||||
enregistrement_historique(TYPE_SOURCE_HISTORIQUE_EVENTS, EVENT_DECLENCHEMENT, events.events[no_event].cle_primaire, 0, NULL);
|
||||
|
||||
// Alerte Ship2net :
|
||||
if (events.events[no_event].alarme_email || events.events[no_event].alarme_sms) sonnette_vps("evenement");
|
||||
|
||||
declenchement_event(no_event);
|
||||
|
||||
if (events.events[no_event].conditions_horaires.nb > 0) events.events[no_event].sequenceur.etat = ETAT_SEQUENCEUR_EVENT_REPOS; // S'il y a condition horaire, on revient directement au repos, en attente de la prochaine condition horaire.
|
||||
@@ -374,6 +377,9 @@ char tmp[MAX_LONGUEUR_BUFFER_TEMPORAIRE_DEBUG];
|
||||
// Enregistrement historique :
|
||||
enregistrement_historique(TYPE_SOURCE_HISTORIQUE_EVENTS, EVENT_FIN_DECLENCHEMENT, events.events[no_event].cle_primaire, 0, NULL);
|
||||
|
||||
// Alerte Ship2net :
|
||||
if (events.events[no_event].alarme_email || events.events[no_event].alarme_sms) sonnette_vps("evenement");
|
||||
|
||||
events.events[no_event].sequenceur.etat = ETAT_SEQUENCEUR_EVENT_REPOS; // Retour au repos
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "main.h"
|
||||
|
||||
// Prototypes :
|
||||
time_t maintenant_monotone(void);
|
||||
void date_courante(char* chaine, bool flag_ns, int format);
|
||||
int8_t set_date_heure(struct Struct_date date, struct Struct_heure heure);
|
||||
void delai_dixieme_sec(uint16_t tempo);
|
||||
@@ -28,6 +29,19 @@ volatile uint16_t tempo_delai_dixieme_sec;
|
||||
|
||||
|
||||
|
||||
//**********************************************************************************************************************************************************************************
|
||||
// Fonction MAINTENANT_MONOTONE
|
||||
// Renvoie un nombre de secondes insensible aux mises à l'heure
|
||||
// Reçoit : Rien
|
||||
// Retour : Valeur en secondes du compteur
|
||||
//**********************************************************************************************************************************************************************************
|
||||
time_t maintenant_monotone(void)
|
||||
{
|
||||
struct timespec t;
|
||||
clock_gettime(CLOCK_MONOTONIC, &t);
|
||||
return t.tv_sec;
|
||||
}
|
||||
|
||||
|
||||
//**********************************************************************************************************************************************************************************
|
||||
// Fonction DATE_COURANTE
|
||||
|
||||
@@ -1225,6 +1225,7 @@ struct Struct_systeme
|
||||
bool flag_new_download; // Positionné à TRUE (par 'modem.c') quand de nouveaux fichiers ont été downloadés du serveur. Permet à 'systeme.c' de lancer l'analyse de ces fichiers.
|
||||
uint16_t compteur_sauvegarde_bdd; // En secondes
|
||||
uint16_t compteur_check_new_download; // En secondes
|
||||
time_t instant_derniere_sonnette;
|
||||
char cm3p_soft_version[MAX_TAILLE_VERSION_SOFT]; // Contient la version de soft de l'application
|
||||
char package_version[MAX_TAILLE_VERSION_SOFT]; // Contient la version de package sous la forme 'AAMMJJ_HHMMSS'
|
||||
char package_no_version[MAX_TAILLE_VERSION_SOFT]; // Contient le numéro de la version du package. Par exemple : "1.0.7"
|
||||
@@ -1410,6 +1411,7 @@ extern int8_t init_events(void);
|
||||
extern void gestion_events(void);
|
||||
|
||||
// Fonctions.c
|
||||
extern time_t maintenant_monotone(void);
|
||||
extern void date_courante(char* chaine, bool flag_ns, int format);
|
||||
extern int8_t set_date_heure(struct Struct_date date, struct Struct_heure heure);
|
||||
extern void delai_dixieme_sec(uint16_t tempo);
|
||||
@@ -1504,6 +1506,7 @@ extern struct Struct_json_version parse_json_version(char * nom_fichier, bool ve
|
||||
extern int8_t send_signal (int32_t pid, int32_t signal);
|
||||
extern int32_t get_pid_from_name (char * nom, char * parametres);
|
||||
extern int32_t get_pid_numbers_from_name (char * nom, char * parametres);
|
||||
extern void sonnette_vps(const char *motif);
|
||||
|
||||
// Usb.c
|
||||
extern int8_t init_usb(void);
|
||||
|
||||
@@ -29,6 +29,7 @@ int32_t get_pid_from_name (char * nom, char * parametres);
|
||||
int32_t get_pid_numbers_from_name (char * nom, char * parametres);
|
||||
int8_t version_compute_module(void);
|
||||
void affichage_ligne_version_compute_module(char * tmp, char * titre, char * valeur);
|
||||
void sonnette_vps(const char *motif);
|
||||
|
||||
|
||||
// Variables globales :
|
||||
@@ -435,6 +436,14 @@ char tmp[MAX_LONGUEUR_BUFFER_TEMPORAIRE_DEBUG];
|
||||
}
|
||||
}
|
||||
|
||||
//=============================================
|
||||
// Envoi des heartbeats au VPS pour Ship2net :
|
||||
if (systeme.generation_shipbase >= GENERATION_SHIPBASE_V3)
|
||||
{
|
||||
if ((maintenant_monotone() - systeme.instant_derniere_sonnette) >= SYSTEME_PERIODE_HEARTBEAT_SHIP2NET) sonnette_vps("vie");
|
||||
}
|
||||
|
||||
|
||||
//==================================
|
||||
// Sauvegarde régulière de la BDD :
|
||||
if (systeme.compteur_sauvegarde_bdd == 0)
|
||||
@@ -2182,3 +2191,16 @@ char chaine[MAX_LONGUEUR_BUFFER_TEMPORAIRE_DEBUG];
|
||||
strcat(tmp, chaine);
|
||||
}
|
||||
|
||||
|
||||
//==================================================================================================================================================================
|
||||
// Fonction : Lance la sonnette en arrière-plan : l'Appli n'attend jamais le réseau.
|
||||
// Reçoit : Le motif à encapsuler dans le message de la sonnette
|
||||
// Renvoit : Rien
|
||||
//==================================================================================================================================================================
|
||||
void sonnette_vps(const char *motif)
|
||||
{
|
||||
char commande[96];
|
||||
snprintf(commande, sizeof(commande), "/usr/local/bin/sonnette_vps %s >/dev/null 2>&1 &", motif);
|
||||
if (system(commande) == -1) { /* rien : le battement suivant ou le retour du réseau sonnera */ }
|
||||
systeme.instant_derniere_sonnette = maintenant_monotone();
|
||||
}
|
||||
@@ -50,6 +50,7 @@
|
||||
#define SYSTEME_TIME_OUT_LECTURE_ID_CARTES 10 // En x 100ms SDIR #304
|
||||
#define SYSTEME_TIME_OUT_ANNUAIRE_ONE_WIRE 5 // En x 100ms
|
||||
#define SYSTEME_TEMPO_ATTENTE_CONFIG_CARTES 30 // En x 10ms NB : tempo non critique car permet juste d'éviter de recevoir des commandes UP sur des cartes non configurées (donc générant des retours d'erreur vers le Compagnon). NB : les commandes UP génériques ET avec Haute Priorité passent quand même pendant ce temps...
|
||||
#define SYSTEME_PERIODE_HEARTBEAT_SHIP2NET 600 // En secondes Le VPS déclare le bateau injoignable au-delà de 720 s sans signal
|
||||
#define SYSTEME_ATTENTE_DEMARRAGE_COMPTEUR_BOUCLE_PRINCIPALE 5 // en secondes. Défini l'attente avant prise en compte des mesures de nb de boucles principales
|
||||
#define SYSTEME_ATTENTE_BOUCLE_PRINCIPALE_TEMPO 1000 // en nanosecondes théoriquement... Cf ci-dessous
|
||||
// Mesures effectuées le 28/04/2018, le 02/09/2020 et le 26/03/2021 sur CM3+ pour ShipHeart :
|
||||
|
||||
Reference in New Issue
Block a user