00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _POLLD_H_
00025 #define _POLLD_H_
00026
00027 #include "definitions.h"
00028
00029 #include "packet.h"
00030 #include "network.h"
00031 #include "list.hh"
00032 #include "sched.hh"
00033 #include "priority.h"
00034
00035
00036 #include <qapp.h>
00037 #include <qlist.h>
00038 #include <qstring.h>
00039 #include <qsocketnotifier.h>
00040
00041
00042
00043 #include <unistd.h>
00044 #include <netdb.h>
00045 #include <netinet/in.h>
00046
00047
00048 class Polld : public QApplication
00049 {
00050 friend class Scheduler;
00051 Q_OBJECT;
00052 public :
00053 Polld(int argc,char* argv[]);
00054 ~Polld();
00055 protected:
00056 int socketConnect(char * );
00057 void stackData();
00058 void initialize(void);
00059 void emptyDevDataQueue(void);
00060 void sendDevData(void );
00061 devDataPacket * makeDevPacket (char *,char *,int );
00062 devDataPacket * makeDevPacket (char *,char *,double);
00063 signals :
00064
00065 void start();
00066 void Timeout();
00067 protected slots :
00068 int sendCommand(char ,char *,int ,char *);
00069 void sendParameters();
00070
00071 void sendData();
00072 void commandReceived();
00073 void dataReceived();
00074 void startMeasurement();
00075 void TriggerTimerEvent();
00076 void SendError( char * );
00077 private:
00078
00079
00080 QList< devDataPacket> *DevSQueue;
00081 QList<devDataPacket> *DevRQueue;
00082
00083 devDataPacket *d_packet;
00084 command_packet c_packet;
00085 devDataPacket *r_d_packet;
00086 dataPacket dat_packet;
00087 QSocketNotifier *CommandNotifier;
00088 QSocketNotifier *DataReceivedNotifier;
00089 int sockD;
00090 int data_sfd;
00091 int send_data_sfd;
00092 int cmd_sfd;
00093 int cmdr_sfd;
00094 int par_sfd;
00095 int mdata_sfd;
00096 struct hostent *hp;
00097 struct hostent *host,hostBackup;
00098 struct sockaddr_in server;
00099 struct sockaddr_in server_max;
00100 struct sockaddr_in client;
00101 struct sockaddr_in client_pd;
00102 struct sockaddr_in cmdClient_max;
00103 struct sockaddr_in cmdClient_pd;
00104 struct sockaddr_in cmdServer_max;
00105 struct sockaddr_in cmdServer_pd;
00106 struct sockaddr_in dataServer;
00107 struct sockaddr_in dataClient;
00108 struct sockaddr name;
00109 int sockd;
00110 int flag;
00111 int a_sfd;
00112 int b_sfd;
00113 int c_sfd;
00114 int d_sfd;
00115 int e_sfd;
00116 unsigned int server_len;
00117 unsigned int client_len;
00118 unsigned int client_pd_len;
00119 unsigned int cmdClient_max_len;
00120 unsigned int cmdClient_pd_len;
00121 unsigned int cmdServer_max_len;
00122 unsigned int dataServer_max_len;
00123
00124 sockaddr_in server_addr;
00125 sockaddr_in data_send;
00126 sockaddr_in cmd_client_addr;
00127 sockaddr_in cmd_server_addr;
00128 sockaddr_in cmd_send;
00129 sockaddr_in cmd_receive;
00130 sockaddr_in par_send;
00131 sockaddr_in par_receive;
00132 sockaddr_in par_server_max_addr;
00133 sockaddr_in par_server_pd_addr;
00134 sockaddr_in par_client_max_addr;
00135 sockaddr_in par_client_pd_addr;
00136 sockaddr_in cmd_server_pd_addr;
00137 sockaddr_in cmd_client_pd_addr;
00138 sockaddr_in cmd_server_max_addr;
00139 sockaddr_in cmd_client_max_addr;
00140 unsigned int data_send_len;
00141 unsigned int cmd_server_addr_len;
00142 unsigned int cmd_server_max_addr_len;
00143 unsigned int cmd_server_pd_addr_len;
00144 unsigned int cmd_client_max_addr_len;
00145 unsigned int cmd_client_pd_addr_len;
00146 unsigned int par_server_pd_addr_len;
00147 unsigned int par_client_max_addr_len;
00148 unsigned int par_server_max_addr_len;
00149 unsigned int par_client_pd_addr_len;
00150
00151 int main_sfd ;
00152 int cmd_main_sfd ;
00153 int cmd_main_sfd2;
00154 int par_main_sfd ;
00155 int par_main_sfd2 ;
00156
00157
00158
00159 int orig_sfd,orig_sfd1,orig_sfd2,o_sfd1,o_sfd2;
00160 List *Devices;
00161 Pr_list Priority;
00162 Scheduler *Schedule;
00163
00164 int data_send_interval;
00165 int stopflag;
00166 int pause_flag;
00167 int save_flag;
00168 int m_running;
00169 int continue_flag;
00170 int n;
00171 int triggermode;
00172 int monitor;
00173 int trigger_period;
00174 int act_channel,max_channels;
00175 int act_int,max_integrations;
00176 int send_period;
00177 bool readytosend;
00178 int wait;
00179 int cmdvalue;
00180 bool suspend;
00181 char cmdname[MAX_NAME_LENGTH];
00182 char *buf[BUFSIZE];
00183
00184 QTimer *intTrigger;
00185 QTimer *sendMData;
00186 QTimer *send1;
00187 QString *str;
00188 };
00189
00190 #endif
00191