#include "my.h"
#include "HESSDAQDefine.h"
#include "HESSDAQControl.h"
#include "cpu_def.h"
#include "ctrlsecurity_def.h"
#include "CtrlSecurityPilot.h"
Defines | |
#define | __MAIN__ |
Functions | |
void * | threadGPIO (void *pointStruc) |
void * | threadTemperature (void *pointStruc) |
void * | threadFan (void *pointStruc) |
void * | threadPhotodiode (void *pointStruc) |
void * | fils (void *pointStruc) |
int | appli (int no_client_socket) |
int | InitSocketServeur (Sem_et_int ind) |
int | InitSocketServeurMessage (Sem_et_int ind) |
int | parse2 (char *bloc, int debut) |
int | initServeur (void) |
int | releaseServeur (void) |
int | main (void) |
Variables | |
int | fin = 1 |
int | tempOnOff = 0 |
int | photodiodeOnOff = 0 |
int | tempNbMoy = 0 |
int | photodiodeNbMoy = 0 |
float | seuilTemp [MAX_SEUIL] |
float | seuilTempDecrease [MAX_SEUIL] |
float | seuilPhotodiodeIncrease [10] |
float | seuilPhotodiodeDecrease [10] |
int | nbSeuilTemp = 5 |
int | nbSeuilPhotodiode = 3 |
int | etat [NB_SENSOR] |
int | etatPhotoDiode [NB_PHOTODIODE] |
int | etatMax |
int | numSonde |
float | moyTemp [NB_SENSOR][MAX_SEUIL] |
int | autoMod |
int | fanOutOnOff = 0 |
int | directionGPIO [NB_GPIO] |
unsigned int | ValueOutGPIO [NB_GPIO] |
unsigned int | ValueInGPIO [NB_GPIO] |
char | descriptionGPIO [NB_GPIO][80] |
int | client_socket |
int | client_socketMessage = -1 |
float | valeurMoyTemp [NB_SENSOR] |
int | valeurLuFan [NB_FAN] |
int *** | tempFanTable |
int | calculFan [NB_FAN] |
int | globale = 0 |
char | alerteMessage [SIZE_BUFFER] |
unsigned int | seuilGPOLocateTable [MAX_SEUIL] |
int | maskGPOLocateTable [MAX_SEUIL] |
unsigned int | seuilInOutGPOLocateTable0 [NB_GPIO] |
int | maskInOutGPOLocateTable0 [NB_GPIO] |
unsigned int | seuilInOutGPOLocateTable1 [NB_GPIO] |
int | maskInOutGPOLocateTable1 [NB_GPIO] |
char | buffer [SIZE_BUFFER] |
int | ma_socket |
int | ma_socketMessage |
char | caseString [NB_CASE][SIZE_STRING] |
char | caseStringCmd [NB_CASE_CMD][SIZE_STRING] |
Sem_et_int | ind |
Sem_et_int | indMessage |
sem_t | semaphore_i |
#define __MAIN__ |
int appli | ( | int | no_client_socket | ) |
Description : lit puis traite l'ordre du client (socket)
Retour de la foncton
-> -1 = erreur sur la lecture de la socket
-> 0 = ok fin de la lecture et traitement de l'ordre
detail de la fonction :
-> lecture de l'ordre du client sur la socket
--> traitement l'ordre ou des ordres lues sur la socket parse2()
void * fils | ( | void * | pointStruc | ) |
Description : lance le process de lecture des ordres du client (vi socket)
detail de la fonction :
-> boucle while tant fin_a <>0
--> attend un ordre du client via socket (ma_socket);
---> traite le contenu de l'ordre
int initServeur | ( | void | ) |
Description : Initialise le programme serveur
Valeur de retour : 0 = ok 1 = pb
detail de la fonction :
initialisation des variables etat[], etatPhotoDiode[],etatMax, tempFanTable
ouverture du device file (driver)
init des semaphores
int InitSocketServeur | ( | Sem_et_int | ind | ) |
Description : Permet de crée un socket pour communiquer les messages.
Valeur de retour : 0 = ok -1 = pb
detail de la fonction :
creation de socket
bind serveur - socket
ecoute sur la socket
accept la connexion
int InitSocketServeurMessage | ( | Sem_et_int | ind | ) |
Description : Permet de crée un socket pour communiquer les messages.
Valeur de retour : 0 = ok -1 = pb
detail de la fonction :
creation de socket
bind serveur - socket
ecoute sur la socket
accept la connexion
int main | ( | void | ) |
Description : point d'entree du programme serveur
detail de la fonction
initialisation du programme serveur : initServeur()
creation des threads
threadTemperature() threadGPIO() threadFan() threadPhotodiode() fils()
boucle infini tant que variable globale !=2
int parse2 | ( | char * | bloc, | |
int | debut | |||
) |
Description : Permet de decouper le bloc et d'affecter les variables ou faire des actions en fonction des balises
Valeur de retour :
-> 0 = fin pas trouve de balise <>
-> val = position dans le bloc de la prochaine balise
detail de la fonction :
--> cherche le debut et fin de balise "<" ">"
--> cherche le nom de la balise
--> cherche la valeur de la balise
--> cherche la correspondance de cette balise avec la liste dans le tableau caseStringCmd[]
--> en fonction de l'index trouve via le tableau caseStringCmd[] le programme va effectuer les actions actions (switch(qui) -> case
int releaseServeur | ( | void | ) |
Description : Prepare le fin du programme
Valeur de retour :
-> 0 = ok
-> 1 = pb
detail de la fonction :
destruction des semaphores
appel fonction finPrg()
void * threadFan | ( | void * | pointStruc | ) |
Description : lance le process de lecture des vitesses des ventillateurs
variable delaysleepFan = temps entre chaque lecture
detail de la fonction :
-> boucle infini tant que variable globale !=2
-> Lecture des registres de ventillateurs cPCI_Zone_Fan_DAC_Register_Read() cPCI_Fan_Status_Read();
void * threadGPIO | ( | void * | pointStruc | ) |
Description : lance le process de lecture des entree du GPIO variable delaysleepGPIO = temps entre chaque lecture observation : Probleme a finir (write dans le registre le resultat detail de la fonction :
-> boucle infini tant que variable globale !=2
-> Lecture des GPIO cPCI_GPIO_Status_Read() cPCI_GPIO_Update_Read() cPCI_GPIO_Report_Read()
-> Avertir le client via des socket le changement d'un bit des GPIO d'entree
void * threadPhotodiode | ( | void * | pointStruc | ) |
Description : lance le process de lecture des photodiodes
variable delaysleepPhotodiode = temps entre chaque lecture
detail de la fonction :
-> boucle infini tant que variable globale !=2
-> lecture de toutes les photodiodes NB_PHOTODIODE cPCI_Photodiode_Ctrl_Write() cPCI_Photodiode_Ctrl_Write() cPCI_Photodiode_Ctrl_Write() cPCI_Photodiode_Value_Read()
-> si resultat > seuil (seuilPhotodiodeIncrease[])
. -> regarde si etat maximum n'est pas atteint nbSeuilPhotodiode
. -> prepare une alerte et augmente l'etat de cette photodiode : etatPhotoDiode[]
. -> regarde si etat mamimal n'est pas atteint 0
. -> si le resultat est en dessous du seuil de lumiere rangee dans seuilPhotodiodeDecrease[]
. -> prepare une alerte et diminue l'etat de cette photodiode etatPhotoDiode[]
. -> si changement d'etat pour cette photodiode on envoi un message au client
void * threadTemperature | ( | void * | pointStruc | ) |
Description : lance le process de monitoring et controle des temperatures
variable delaysleepTemperature = temps entre chaque lecture
detail de la fonction :
-> attendre que le client demarre pour se connecter sur lui via un socket
-> init temp ctrl register cPCI_Temp_Ctrl_Read() cPCI_Temp_Ctrl_Write()
-> boucle infini tant que variable globale !=2
. -> pour les 32 sondes de temperatures NB_SENSOR
. -> si la sonde est validee
. -> lecture du registre temperature cPCI_Temp_MUX_Write() cPCI_Temp_MUX_Read() cPCI_Temp_MUX_VALUE_Read()
. -> rangement du resultat dans le tableau moyTemp[] et recalcul de la moyenne
. -> si le resultat depasse le seuil de temperature rangee dans seuilTemp[]
. -> regarde si etat maximum n'est pas atteint nbSeuilTemp
. -> prepare une alerte et augmente l'etat de cette sonde
. -> regarde si etat mamimal n'est pas atteint 0
. -> si le resultat est en dessous du seuil de temperature rangee dans seuilTempDecrease[]
. -> prepare une alerte et diminue l'etat de cette sonde
. -> si changement envoi un message au client
. -> si changement d'etat pour au moins 1 sonde
. -> alors on recalcul la vitesse des ventillateurs
. -> on calcul l'etat max de toutes les sondes
. -> si le mode automatique des ventillateurs est activee autoMod bit 0=1
. -> on change la vitesse des ventillateurs avec calculFan[] cPCI_Zone_Fan_DAC_Register_Write(); cPCI_Zone_Fan_DAC_Register_Read(); cPCI_Fan_Status_Read()
. -> si le mode automatique des GPIO est activee autoMod bit 1=1
. -> on change les GPIO en fonction maskGPOLocateTable seuilGPOLocateTable cPCI_GPIO_Update_Read() cPCI_GPIO_Update_Write()
char alerteMessage[SIZE_BUFFER] |
int autoMod |
char buffer[SIZE_BUFFER] |
int calculFan[NB_FAN] |
char caseString[NB_CASE][SIZE_STRING] |
char caseStringCmd[NB_CASE_CMD][SIZE_STRING] |
int client_socket |
int client_socketMessage = -1 |
char descriptionGPIO[NB_GPIO][80] |
int directionGPIO[NB_GPIO] |
int etat[NB_SENSOR] |
int etatMax |
int etatPhotoDiode[NB_PHOTODIODE] |
int fanOutOnOff = 0 |
int fin = 1 |
int globale = 0 |
int ma_socket |
int ma_socketMessage |
int maskGPOLocateTable[MAX_SEUIL] |
int maskInOutGPOLocateTable0[NB_GPIO] |
int maskInOutGPOLocateTable1[NB_GPIO] |
float moyTemp[NB_SENSOR][MAX_SEUIL] |
int nbSeuilPhotodiode = 3 |
int nbSeuilTemp = 5 |
int numSonde |
int photodiodeNbMoy = 0 |
int photodiodeOnOff = 0 |
sem_t semaphore_i |
unsigned int seuilGPOLocateTable[MAX_SEUIL] |
unsigned int seuilInOutGPOLocateTable0[NB_GPIO] |
unsigned int seuilInOutGPOLocateTable1[NB_GPIO] |
float seuilPhotodiodeDecrease[10] |
float seuilPhotodiodeIncrease[10] |
float seuilTemp[MAX_SEUIL] |
float seuilTempDecrease[MAX_SEUIL] |
int*** tempFanTable |
int tempNbMoy = 0 |
int tempOnOff = 0 |
int valeurLuFan[NB_FAN] |
float valeurMoyTemp[NB_SENSOR] |
unsigned int ValueInGPIO[NB_GPIO] |
unsigned int ValueOutGPIO[NB_GPIO] |