#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