C:/Documents and Settings/panazol/Mes documents/transfert LPNHE/SlowControlPilot/serveur.c File Reference

#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 Documentation

#define __MAIN__


Function Documentation

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 :

initCaseString()

initialisation des variables etat[], etatPhotoDiode[],etatMax, tempFanTable

readConfigFile()

ouverture du device file (driver)

InitSocketServeur()

InitSocketServeurMessage()

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

releaseServeur()

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()


Variable Documentation

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]

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 maskGPOLocateTable[MAX_SEUIL]

float moyTemp[NB_SENSOR][MAX_SEUIL]

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


Generated on Tue Jan 27 11:35:50 2009 for CtrlSecurity Serveur by  doxygen 1.5.8