00001 #include <stdio.h> 00002 #include <stdlib.h> 00003 #include <errno.h> 00004 #include <signal.h> 00005 #include <string.h> 00006 #include <unistd.h> 00007 #include <netdb.h> 00008 #include <netinet/in.h> 00009 #include <sys/socket.h> 00010 #include <arpa/inet.h> 00011 #include <semaphore.h> 00012 #include <pthread.h> 00013 #include <sys/types.h> 00014 #include <sys/stat.h> 00015 #include <fcntl.h> 00016 #include <unistd.h> 00017 #include <sys/ioctl.h> 00018 #include <stdio.h> 00019 #include <string.h> 00020 #include <stdlib.h> 00021 #include <sys/mman.h> 00022 #include <errno.h> 00023 #include <ctype.h> 00024 #include <time.h> 00025 #include <termios.h> 00026 00027 // declaration define 00028 #define SERVEURNAME "192.168.1.167" 00029 00030 #define NB_CASE 22 00031 #define NB_CASE_CMD 32 00032 #define NB_FAN 16 00033 #define NB_SENSOR 32 00034 #define NB_PHOTODIODE 8 00035 #define NB_GPIO 32 00036 00037 #define SIZE_BUFFER 512 00038 #define MAX_SEUIL 10 00039 #define SIZE_STRING 80 00040 #define BLOC_SIZE 4096 00041 00042 #define DELAY_SLEEP_FAN 100 00043 #define DELAY_TEMPERATURE 30 00044 #define DELAY_SLEEP_GPIO 100 00045 #define DELAY_SLEEP_PHOTODIODE 100 00046 00047 typedef struct { 00048 int valAdd; 00049 sem_t * sem; 00050 struct sockaddr_in mon_address; 00051 struct sockaddr_in client_address; 00052 socklen_t mon_address_longueur; 00053 int client_socket; 00054 } Sem_et_int; 00055 00056 /* configure variable global */ 00057 extern int client_socket; 00058 extern int file_desc; 00059 extern int ma_socket; 00060 extern int ma_socketMessage; 00061 extern char *server_name; 00062 extern struct sockaddr_in serverSockAddr,serverSockAddrMessage; 00063 extern struct hostent *serverHostEnt,*serverHostEntMessage ; 00064 extern long hostAddr,hostAddrMessage; 00065 extern int*** tempFanTable; 00066 extern char caseString[NB_CASE][SIZE_STRING]; 00067 extern char caseStringCmd[NB_CASE_CMD][SIZE_STRING]; 00068 extern int tempOnOff; 00069 extern int fanOutOnOff; 00070 extern int photodiodeOnOff; 00071 extern int tempNbMoy; 00072 extern int photodiodeNbMoy; 00073 extern float seuilTemp[10]; 00074 extern float seuilTempDecrease[10]; 00075 extern float seuilPhotodiodeIncrease[10]; 00076 extern float seuilPhotodiodeDecrease[10]; 00077 extern int nbSeuilTemp; 00078 extern int nbSeuilPhotodiode; 00079 extern int autoMod; 00080 extern unsigned int seuilGPOLocateTable[MAX_SEUIL]; 00081 extern int maskGPOLocateTable[MAX_SEUIL]; 00082 extern int directionGPIO[NB_GPIO]; 00083 extern unsigned int ValueOutGPIO[NB_GPIO]; 00084 extern unsigned int ValueInGPIO[NB_GPIO]; 00085 extern char descriptionGPIO[NB_GPIO][80]; 00086 extern float valeurMoyTemp[NB_SENSOR]; 00087 extern int etat[NB_SENSOR]; 00088 extern int etatMax; 00089 extern int numSonde; 00090 extern float moyTemp[NB_SENSOR][MAX_SEUIL]; 00091 extern int calculFan[NB_FAN]; 00092 extern int fin; 00093 extern int numSonde; 00094 extern int val; 00095 extern int fin; 00096 extern unsigned int param; 00097 extern int valeurLuFan[NB_FAN]; 00098 extern int calculFan[NB_FAN]; 00099 extern unsigned int seuilGPOLocateTable[MAX_SEUIL]; 00100 extern int maskGPOLocateTable[MAX_SEUIL]; 00101 extern unsigned int seuilInOutGPOLocateTable0[NB_GPIO]; 00102 extern int maskInOutGPOLocateTable0[NB_GPIO]; 00103 extern unsigned int seuilInOutGPOLocateTable1[NB_GPIO]; 00104 extern int maskInOutGPOLocateTable1[NB_GPIO]; 00105 extern int etatPhotoDiode[NB_PHOTODIODE]; 00106 00107 00108 // declaration des fonctions 00109 extern void clean(char *buffer); 00110 extern void purger(void); 00111 extern int userKey(void); 00112 extern int parse2(char *bloc,int debut); 00113 extern int connectServeur(void); 00114 extern int connectServeurMessage(void); 00115 extern void showMenu(void); 00116 extern void doCommand(void); 00117 extern int InitSocketServeurMessage(Sem_et_int ind) ; 00118 extern void finPrg(void); 00119 extern void *listenServerMessage(void *toto); 00120 extern void cmdAllFan(int value); 00121 extern void initSocket2(void); 00122 extern int strpos(char *chaine, char *ch); 00123 extern int readConfigFile(char *fileName); 00124 extern void reset(void); 00125 extern int initCaseString(void); 00126 extern void tempFanlocateTable(char *valeur); 00127 extern void cmdAllFan(int value);