#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] | 
 1.5.8
 1.5.8