Structure des données du fichier cyloop, constantes,
accès aux bits de certaines variables.
*/
// types de données utilisées dans le fichier cyloop
typedef unsigned char octet; // entier de 0 à 255
typedef unsigned short uint16; // entier de 0 à 65535
typedef unsigned long uint32; // entier de 0 à 4294067295
typedef short int16; // entier de -32768 à 32767
typedef long int32; // entier de -2147483648 à 2147483647
// une contante importante : nombre de secondes par jour
#define secjour 86400
// constantes booléennes
#define OUI 1
#define NON 0
// bits du champ caract_gen de la structure desc_cyloop
#define cycle_decl 1 // un début de cycle doit être déclenché par un appel de cyldecl
#define temps_utc 2 // début de cycles calculés en temps universel (UTC ou GMT)
#define cycle_ireg 4 // utilisation cycle de durée irrégulière basé sur le calendrier
#define cycle_annuel 8 // utilisation d'un cycle annuel
// bits du champ etat_cyloop de la structure desc_cyloop
#define heure_ete 1 // heure d'été lors de la dernière mise à jour d'une variable
#define mask_heure_hiver 0xFE // complément du bit heure_ete
// #define mask_cyl_nonfait 0xF9 // complément des bits cylincr_fait et cyladdval_fait
// bits du champ typedon de la structure desc_var
#define cmoy_sep 1 // champ coef_moy distinct pour chaque instant du cycle
#define cpt_cycle_vide 2 // compter les cycles vides dans les calculs de ponderation
#define cumul_donnees 4 // autoriser plusieurs mises à jours à chaque instant du cycle
#define compteur 8 // la variable est un compteur de passages
#define donnees_32bits 0x10 // données sur 4 octets (significatif si compteur)
#define val_float 0x20 // données en virgule flottante (significatif si pas compteur)
#define mem_min_max 0x40 // mémorisation des valeurs min et max des données
#define cpt_toute_don 0x80 // si cumul_donnees les compteur de passage sont mis à jour chaque fois
// structure décrivant l'entête du fichier cyloop (16 octets)
typedef struct
{
octet signature [3]; // Pour vérifier de c'est bien un fichier cyloop
octet nb_var; // Nombre de variables mémorisées dans le fichier cyloop
octet caract_gen; // Caractéristiques générales du fichier cyloop
octet etat_cyloop; // Bits d'état du fichier cyloop
uint16 nb_don_cycle; // Nombre de données par cycle de mesure
uint32 deb_cycle; // Instant de démarrage du cycle courant
uint32 duree_cycle; // Durée en secondes du cycle courant
} desc_cyloop;
// structure décrivant une/la variable du fichier cyloop (6 ou 8 octets)
typedef struct
{
uint16 der_enreg; // Numéro de la dernière donnée mise à jour dans le cycle actuel
octet typedon; // Caractéristiques de la variable
octet ponderation; // Coefficient de pondération pour les valeurs des cycles précédents
uint16 extention; // Champ disponible pour utilisation ultérieure
uint16 coef_moy; // Champ optionnel pour calcul valeur moyenne des données
} desc_var;