Dependencies:   BufferedSerial analogAverager voltageRegulator netStatReg analogMinMax CounterMinMax

Committer:
masterkookus
Date:
Tue Oct 01 15:51:59 2019 +0000
Revision:
9:d6e7981dfc89
Parent:
8:fa2a2c3a16ce
Child:
10:9da863a6da3e
Polling+Tap Command and Metering Command

Who changed what in which revision?

UserRevisionLine numberNew contents of line
masterkookus 0:03ab7f7596e2 1 #if !FEATURE_LWIP
masterkookus 0:03ab7f7596e2 2 #error [NOT_SUPPORTED] LWIP not supported for this target
masterkookus 0:03ab7f7596e2 3 #endif
masterkookus 0:03ab7f7596e2 4
masterkookus 0:03ab7f7596e2 5 #include "mbed.h"
masterkookus 0:03ab7f7596e2 6 #include "EthernetInterface.h"
masterkookus 0:03ab7f7596e2 7 #include "TCPServer.h"
masterkookus 0:03ab7f7596e2 8 #include "TCPSocket.h"
masterkookus 0:03ab7f7596e2 9 #include "BufferedSerial.h"
masterkookus 3:ac1f2af8bd0f 10 #include "nettime.h"
masterkookus 3:ac1f2af8bd0f 11 #include "netdevices.h"
masterkookus 7:be13a9037d41 12 #include "mydevices.h"
masterkookus 5:c656fd08007b 13 #include "platform/CircularBuffer.h"
masterkookus 8:fa2a2c3a16ce 14 #include "netDataTypes.h"
masterkookus 8:fa2a2c3a16ce 15 #include "selMsg.h"
masterkookus 8:fa2a2c3a16ce 16 #include "string.h"
masterkookus 0:03ab7f7596e2 17
masterkookus 7:be13a9037d41 18 Ticker nettimer;
masterkookus 0:03ab7f7596e2 19
masterkookus 6:9f97716eae76 20 struct netsys net1;
masterkookus 8:fa2a2c3a16ce 21 struct vRegData vReg1;
masterkookus 1:a57cbebba3fd 22
masterkookus 1:a57cbebba3fd 23 bool polltick;
masterkookus 0:03ab7f7596e2 24
masterkookus 7:be13a9037d41 25 BufferedSerial sport0(sport0tx, sport0rx, sport0buff, sport0mult); // UART2
masterkookus 0:03ab7f7596e2 26
masterkookus 7:be13a9037d41 27 CircularBuffer<char, 1024> receiveBuffer;
masterkookus 7:be13a9037d41 28 CircularBuffer<char, 64> sendLength;
masterkookus 7:be13a9037d41 29 CircularBuffer<char, 1024> sendBuffer;
masterkookus 9:d6e7981dfc89 30 CircularBuffer<char, 16> serrxbuffer;
masterkookus 5:c656fd08007b 31
masterkookus 0:03ab7f7596e2 32 Thread conchkthread[2];
masterkookus 4:98cdccfb17d6 33 Thread rxtxdatathread[5];
masterkookus 4:98cdccfb17d6 34
masterkookus 4:98cdccfb17d6 35 unsigned int currenttime=0;
masterkookus 0:03ab7f7596e2 36
masterkookus 5:c656fd08007b 37 nsapi_error_t ret;
masterkookus 5:c656fd08007b 38
masterkookus 2:ec972966689e 39 //Provides the deivce poll timing
masterkookus 1:a57cbebba3fd 40 void heartbeat()
masterkookus 1:a57cbebba3fd 41 {
masterkookus 3:ac1f2af8bd0f 42 //polltick=true;
masterkookus 3:ac1f2af8bd0f 43 setTick(true);
masterkookus 1:a57cbebba3fd 44 }
masterkookus 1:a57cbebba3fd 45
masterkookus 4:98cdccfb17d6 46 void confignetdevices(EthernetInterface *eth)
masterkookus 4:98cdccfb17d6 47 {
masterkookus 7:be13a9037d41 48 net1.cltPort=setclientport;
masterkookus 7:be13a9037d41 49 net1.srv_addr=setclientaddress;
masterkookus 6:9f97716eae76 50 net1.cltIsActive=false;
masterkookus 9:d6e7981dfc89 51 net1.serIsActive=false;
masterkookus 6:9f97716eae76 52 net1.cltCloseConnection=false;
masterkookus 6:9f97716eae76 53 net1.pollTime=0;
masterkookus 8:fa2a2c3a16ce 54 net1.pollTimeout=0;
masterkookus 7:be13a9037d41 55 net1.pollInterval=setpollinterval;
masterkookus 7:be13a9037d41 56 net1.pollRequestSent=false;
masterkookus 7:be13a9037d41 57 net1.pollResponseReceived=false;
masterkookus 8:fa2a2c3a16ce 58 net1.srv_sock.set_blocking(true);
masterkookus 8:fa2a2c3a16ce 59 net1.srv_sock.set_timeout(100);
masterkookus 7:be13a9037d41 60 net1.aliveTimeout=setservertimeout;
masterkookus 8:fa2a2c3a16ce 61 net1.srv.set_blocking(true);
masterkookus 8:fa2a2c3a16ce 62 net1.srv.set_timeout(100);
masterkookus 7:be13a9037d41 63 net1.pollEnabled=setpollenabled;
masterkookus 7:be13a9037d41 64 net1.pollTimeoutCount=0;
masterkookus 8:fa2a2c3a16ce 65 net1.pollState=0;
masterkookus 8:fa2a2c3a16ce 66 net1.pollTimeoutCount=0;
masterkookus 8:fa2a2c3a16ce 67 net1.sendRetryCount=0;
masterkookus 8:fa2a2c3a16ce 68 net1.messageFailCount=0;
masterkookus 8:fa2a2c3a16ce 69 net1.txMessageCount=0;
masterkookus 8:fa2a2c3a16ce 70 net1.rxMessageCount=0;
masterkookus 9:d6e7981dfc89 71 net1.connectCmd=false;
masterkookus 4:98cdccfb17d6 72
masterkookus 4:98cdccfb17d6 73 /* Open the server on ethernet stack */
masterkookus 4:98cdccfb17d6 74 net1.srv.open(eth);
masterkookus 6:9f97716eae76 75 net1.srvIsActive=false;
masterkookus 6:9f97716eae76 76 net1.srvCloseConnection=false;
masterkookus 4:98cdccfb17d6 77
masterkookus 4:98cdccfb17d6 78 /* Bind port 23 to the server */
masterkookus 7:be13a9037d41 79 net1.srvPort=setserverport;
masterkookus 6:9f97716eae76 80 net1.srv.bind(net1.srvPort);
masterkookus 4:98cdccfb17d6 81
masterkookus 4:98cdccfb17d6 82 /* Can handle 5 simultaneous connections */
masterkookus 4:98cdccfb17d6 83 net1.srv.listen(5);
masterkookus 7:be13a9037d41 84 sport0.baud(sport0baud);
masterkookus 4:98cdccfb17d6 85 }
masterkookus 4:98cdccfb17d6 86
masterkookus 7:be13a9037d41 87 void dataprocess(netsys *net2)
masterkookus 0:03ab7f7596e2 88 {
masterkookus 7:be13a9037d41 89 int txc;
masterkookus 5:c656fd08007b 90 char cchar;
masterkookus 5:c656fd08007b 91 char cbuf[256];
masterkookus 5:c656fd08007b 92 unsigned int clen=0;
masterkookus 5:c656fd08007b 93 unsigned int cbc;
masterkookus 8:fa2a2c3a16ce 94 float4byte valpack;
masterkookus 8:fa2a2c3a16ce 95 short2byte timepack;
masterkookus 5:c656fd08007b 96
masterkookus 4:98cdccfb17d6 97 while(1)
masterkookus 0:03ab7f7596e2 98 {
masterkookus 7:be13a9037d41 99 while (!receiveBuffer.empty())
masterkookus 5:c656fd08007b 100 {
masterkookus 7:be13a9037d41 101 receiveBuffer.pop(cchar);
masterkookus 8:fa2a2c3a16ce 102 cbuf[clen]=cchar;
masterkookus 5:c656fd08007b 103 clen++;
masterkookus 5:c656fd08007b 104 }
masterkookus 7:be13a9037d41 105 if (net2->pollRequestSent)
masterkookus 7:be13a9037d41 106 {
masterkookus 7:be13a9037d41 107 if (clen>0)
masterkookus 7:be13a9037d41 108 {
masterkookus 7:be13a9037d41 109 net2->pollResponseReceived=true;
masterkookus 7:be13a9037d41 110 }
masterkookus 7:be13a9037d41 111 }
masterkookus 9:d6e7981dfc89 112 if (net2->devMsgOpenRx)
masterkookus 9:d6e7981dfc89 113 {
masterkookus 9:d6e7981dfc89 114 sport0.write(cbuf,clen);
masterkookus 9:d6e7981dfc89 115 clen=0;
masterkookus 9:d6e7981dfc89 116 }
masterkookus 9:d6e7981dfc89 117 else if (clen>3)
masterkookus 5:c656fd08007b 118 {
masterkookus 7:be13a9037d41 119 for (cbc=0;cbc<clen-3;cbc++)
masterkookus 5:c656fd08007b 120 {
masterkookus 9:d6e7981dfc89 121 if (net2->serIsActive==true)
masterkookus 8:fa2a2c3a16ce 122 {
masterkookus 9:d6e7981dfc89 123 if ((cbuf[cbc]==0x4d) && (cbuf[cbc+1]==0x45) && (cbuf[cbc+2]==0x54))
masterkookus 8:fa2a2c3a16ce 124 {
masterkookus 9:d6e7981dfc89 125 sport0.write(cbuf,clen);
masterkookus 9:d6e7981dfc89 126 net2->devMsgOpenRx=true;
masterkookus 9:d6e7981dfc89 127 net2->devMsgReq=0;
masterkookus 9:d6e7981dfc89 128 clen=0;
masterkookus 9:d6e7981dfc89 129 break;
masterkookus 8:fa2a2c3a16ce 130 }
masterkookus 9:d6e7981dfc89 131
masterkookus 9:d6e7981dfc89 132 if ((cbuf[cbc]==0x54) && (cbuf[cbc+1]==0x41) && (cbuf[cbc+2]==0x50))
masterkookus 9:d6e7981dfc89 133 {
masterkookus 9:d6e7981dfc89 134 sport0.write(cbuf,clen);
masterkookus 9:d6e7981dfc89 135 net2->devMsgOpenRx=true;
masterkookus 9:d6e7981dfc89 136 net2->devMsgReq=0;
masterkookus 9:d6e7981dfc89 137 clen=0;
masterkookus 9:d6e7981dfc89 138 break;
masterkookus 9:d6e7981dfc89 139 }
masterkookus 9:d6e7981dfc89 140 if ((cbuf[cbc]==0x41) && (cbuf[cbc+1]==0x43) && (cbuf[cbc+2]==0x43))
masterkookus 7:be13a9037d41 141 {
masterkookus 8:fa2a2c3a16ce 142 sport0.write(cbuf,clen);
masterkookus 9:d6e7981dfc89 143 net2->devMsgPos=1;
masterkookus 9:d6e7981dfc89 144 clen=0;
masterkookus 9:d6e7981dfc89 145 break;
masterkookus 9:d6e7981dfc89 146 }
masterkookus 9:d6e7981dfc89 147 if (cbuf[cbc]==0x2a)
masterkookus 9:d6e7981dfc89 148 {
masterkookus 9:d6e7981dfc89 149 sport0.write(cbuf,clen);
masterkookus 9:d6e7981dfc89 150 net2->devMsgPos=2;
masterkookus 9:d6e7981dfc89 151 clen=0;
masterkookus 9:d6e7981dfc89 152 break;
masterkookus 9:d6e7981dfc89 153 }
masterkookus 9:d6e7981dfc89 154 if ((cbuf[cbc]==0x3d) && (cbuf[cbc+1]==0x3e))
masterkookus 9:d6e7981dfc89 155 {
masterkookus 9:d6e7981dfc89 156 sport0.write(cbuf,clen);
masterkookus 9:d6e7981dfc89 157 net2->devMsgPos=4;
masterkookus 9:d6e7981dfc89 158 clen=0;
masterkookus 9:d6e7981dfc89 159 break;
masterkookus 9:d6e7981dfc89 160 }
masterkookus 9:d6e7981dfc89 161 if ((cbuf[cbc]==0x3d))
masterkookus 9:d6e7981dfc89 162 {
masterkookus 9:d6e7981dfc89 163 sport0.write(cbuf,clen);
masterkookus 9:d6e7981dfc89 164 net2->devMsgPos=0;
masterkookus 8:fa2a2c3a16ce 165 clen=0;
masterkookus 8:fa2a2c3a16ce 166 break;
masterkookus 7:be13a9037d41 167 }
masterkookus 9:d6e7981dfc89 168 }
masterkookus 9:d6e7981dfc89 169 if ((cbuf[cbc]==0xA5) && (cbuf[cbc+1]==0xC0))
masterkookus 9:d6e7981dfc89 170 {
masterkookus 9:d6e7981dfc89 171 sport0.write(cbuf,clen);
masterkookus 9:d6e7981dfc89 172 net2->pollState=1;
masterkookus 9:d6e7981dfc89 173 clen=0;
masterkookus 9:d6e7981dfc89 174 break;
masterkookus 9:d6e7981dfc89 175 }
masterkookus 9:d6e7981dfc89 176 if ((cbuf[cbc]==0xA5) && (cbuf[cbc+1]==0xC1))
masterkookus 9:d6e7981dfc89 177 {
masterkookus 9:d6e7981dfc89 178 sport0.write(cbuf,clen);
masterkookus 9:d6e7981dfc89 179 if (vReg1.numAnalog!=cbuf[6])
masterkookus 7:be13a9037d41 180 {
masterkookus 9:d6e7981dfc89 181 printf("\r\nAnalog Channel Count Off\r\n");
masterkookus 9:d6e7981dfc89 182 net2->pollState=0;
masterkookus 9:d6e7981dfc89 183 clen=0;
masterkookus 9:d6e7981dfc89 184 break;
masterkookus 9:d6e7981dfc89 185 }
masterkookus 9:d6e7981dfc89 186 if (vReg1.numDigital!=cbuf[8])
masterkookus 9:d6e7981dfc89 187 {
masterkookus 9:d6e7981dfc89 188 printf("\r\nDigital Channel Count Off\r\n");
masterkookus 9:d6e7981dfc89 189 net2->pollState=0;
masterkookus 8:fa2a2c3a16ce 190 clen=0;
masterkookus 8:fa2a2c3a16ce 191 break;
masterkookus 7:be13a9037d41 192 }
masterkookus 9:d6e7981dfc89 193 char anum=16;
masterkookus 9:d6e7981dfc89 194 char nxc;
masterkookus 9:d6e7981dfc89 195 for (txc=0;txc<vReg1.numAnalog;txc++)
masterkookus 8:fa2a2c3a16ce 196 {
masterkookus 9:d6e7981dfc89 197 for (nxc=0;nxc<6;nxc++)
masterkookus 8:fa2a2c3a16ce 198 {
masterkookus 9:d6e7981dfc89 199 if(vReg1.analogs[txc].analogName[nxc]!=cbuf[anum+nxc])
masterkookus 9:d6e7981dfc89 200 {
masterkookus 9:d6e7981dfc89 201 printf("\r\nPoint %d Failed\r\n",txc);
masterkookus 9:d6e7981dfc89 202 break;
masterkookus 9:d6e7981dfc89 203 }
masterkookus 8:fa2a2c3a16ce 204 }
masterkookus 9:d6e7981dfc89 205 anum = anum + 11;
masterkookus 8:fa2a2c3a16ce 206 }
masterkookus 9:d6e7981dfc89 207 net2->pollState=2;
masterkookus 9:d6e7981dfc89 208 clen=0;
masterkookus 9:d6e7981dfc89 209 break;
masterkookus 9:d6e7981dfc89 210 }
masterkookus 9:d6e7981dfc89 211 if ((cbuf[cbc]==0xA5) && (cbuf[cbc+1]==0xD1))
masterkookus 9:d6e7981dfc89 212 {
masterkookus 9:d6e7981dfc89 213 char anum=cbc+4;
masterkookus 9:d6e7981dfc89 214 for (txc=0;txc<vReg1.numAnalog;txc++)
masterkookus 9:d6e7981dfc89 215 {
masterkookus 9:d6e7981dfc89 216 valpack.bytes[3]=cbuf[anum];
masterkookus 9:d6e7981dfc89 217 valpack.bytes[2]=cbuf[anum+1];
masterkookus 9:d6e7981dfc89 218 valpack.bytes[1]=cbuf[anum+2];
masterkookus 9:d6e7981dfc89 219 valpack.bytes[0]=cbuf[anum+3];
masterkookus 9:d6e7981dfc89 220 vReg1.analogs[txc].analog1Value = valpack.cmdflt;
masterkookus 9:d6e7981dfc89 221 anum = anum + 4;
masterkookus 9:d6e7981dfc89 222 printf("%.2f\r\n",vReg1.analogs[txc].analog1Value);
masterkookus 9:d6e7981dfc89 223 }
masterkookus 9:d6e7981dfc89 224 vReg1.timeStamp.month=cbuf[anum];
masterkookus 9:d6e7981dfc89 225 vReg1.timeStamp.day=cbuf[anum+1];
masterkookus 9:d6e7981dfc89 226 vReg1.timeStamp.year=cbuf[anum+2];
masterkookus 9:d6e7981dfc89 227 vReg1.timeStamp.hour=cbuf[anum+3];
masterkookus 9:d6e7981dfc89 228 vReg1.timeStamp.min=cbuf[anum+4];
masterkookus 9:d6e7981dfc89 229 vReg1.timeStamp.sec=cbuf[anum+5];
masterkookus 9:d6e7981dfc89 230 timepack.bytes[1]=cbuf[anum+6];
masterkookus 9:d6e7981dfc89 231 timepack.bytes[0]=cbuf[anum+7];
masterkookus 9:d6e7981dfc89 232 vReg1.timeStamp.msec=timepack.cmdshort;
masterkookus 9:d6e7981dfc89 233 printf("%d/%d/%d %d:%d:%d.%d\r\n",vReg1.timeStamp.month,vReg1.timeStamp.day,vReg1.timeStamp.year,vReg1.timeStamp.hour,vReg1.timeStamp.min,vReg1.timeStamp.sec,vReg1.timeStamp.msec);
masterkookus 9:d6e7981dfc89 234 anum=anum+8;
masterkookus 9:d6e7981dfc89 235 for (txc=0;txc<vReg1.numDigital;txc++)
masterkookus 9:d6e7981dfc89 236 {
masterkookus 9:d6e7981dfc89 237 vReg1.digitalTargets[txc]=cbuf[anum+txc];
masterkookus 9:d6e7981dfc89 238 }
masterkookus 9:d6e7981dfc89 239 clen=0;
masterkookus 9:d6e7981dfc89 240 break;
masterkookus 5:c656fd08007b 241 }
masterkookus 5:c656fd08007b 242 }
masterkookus 7:be13a9037d41 243 if (clen>0)
masterkookus 7:be13a9037d41 244 {
masterkookus 7:be13a9037d41 245 printf("Command not Received\r\n");
masterkookus 7:be13a9037d41 246 clen=0;
masterkookus 7:be13a9037d41 247 }
masterkookus 7:be13a9037d41 248 }
masterkookus 7:be13a9037d41 249 }
masterkookus 7:be13a9037d41 250 }
masterkookus 7:be13a9037d41 251
masterkookus 7:be13a9037d41 252 //Ethernet to Ethernet Send Data
masterkookus 7:be13a9037d41 253 void datantx(netsys *net2)
masterkookus 7:be13a9037d41 254 {
masterkookus 7:be13a9037d41 255 while(1)
masterkookus 7:be13a9037d41 256 {
masterkookus 6:9f97716eae76 257 if (net2->cltIsActive)
masterkookus 0:03ab7f7596e2 258 {
masterkookus 7:be13a9037d41 259 while (net2->sendState==3)
masterkookus 5:c656fd08007b 260 {
masterkookus 5:c656fd08007b 261 if (net2->connectRetry == true)
masterkookus 5:c656fd08007b 262 {
masterkookus 5:c656fd08007b 263 wait_ms(100);
masterkookus 5:c656fd08007b 264 }
masterkookus 9:d6e7981dfc89 265 net2->connectCmd=true;
masterkookus 6:9f97716eae76 266 ret = net2->srv_sock.connect(net2->srv_addr,net2->cltPort);
masterkookus 5:c656fd08007b 267 if (ret==0)
masterkookus 5:c656fd08007b 268 {
masterkookus 5:c656fd08007b 269 net2->connectRetry = false;
masterkookus 5:c656fd08007b 270 printf("Connected %d\r\n",ret);
masterkookus 8:fa2a2c3a16ce 271 net2->sendState=4;
masterkookus 8:fa2a2c3a16ce 272 }
masterkookus 8:fa2a2c3a16ce 273 else if (ret==-3015)
masterkookus 8:fa2a2c3a16ce 274 {
masterkookus 8:fa2a2c3a16ce 275 printf("May already be connected, attempting send.\r\n");
masterkookus 8:fa2a2c3a16ce 276 net2->connectRetry = false;
masterkookus 7:be13a9037d41 277 net2->sendState=4;
masterkookus 5:c656fd08007b 278 }
masterkookus 5:c656fd08007b 279 else
masterkookus 5:c656fd08007b 280 {
masterkookus 5:c656fd08007b 281 net2->connectRetry = true;
masterkookus 7:be13a9037d41 282 net2->sendRetryCount++;
masterkookus 5:c656fd08007b 283 printf("Connect Attempt Failed, Code: %d\r\n",ret);
masterkookus 7:be13a9037d41 284 if (net2->sendRetryCount>3)
masterkookus 5:c656fd08007b 285 {
masterkookus 5:c656fd08007b 286 printf("Communication Failed, Closing\r\n");
masterkookus 9:d6e7981dfc89 287 net2->connectCmd=false;
masterkookus 5:c656fd08007b 288 net2->connectRetry = false;
masterkookus 7:be13a9037d41 289 net2->sendRetryCount = 0;
masterkookus 5:c656fd08007b 290 net2->messageFailCount++;
masterkookus 6:9f97716eae76 291 net2->cltCloseConnection=true;
masterkookus 7:be13a9037d41 292 net2->sendState=0;
masterkookus 7:be13a9037d41 293 net2->sendTime=0;
masterkookus 5:c656fd08007b 294 }
masterkookus 5:c656fd08007b 295 }
masterkookus 5:c656fd08007b 296 }
masterkookus 7:be13a9037d41 297 while (net2->sendState==4)
masterkookus 5:c656fd08007b 298 {
masterkookus 5:c656fd08007b 299 if (net2->sendRetry == true)
masterkookus 5:c656fd08007b 300 {
masterkookus 5:c656fd08007b 301 wait_ms(100);
masterkookus 5:c656fd08007b 302 }
masterkookus 9:d6e7981dfc89 303 net2->connectCmd=false;
masterkookus 7:be13a9037d41 304 ret = net2->srv_sock.send(net2->sendString,net2->sendLen);
masterkookus 5:c656fd08007b 305 if (ret>=0)
masterkookus 5:c656fd08007b 306 {
masterkookus 5:c656fd08007b 307 printf("Send Result %d\r\n",ret);
masterkookus 5:c656fd08007b 308 net2->sendRetry = false;
masterkookus 5:c656fd08007b 309 net2->txMessageCount++;
masterkookus 8:fa2a2c3a16ce 310 net2->sendState=5;
masterkookus 7:be13a9037d41 311 net2->sendTime=0;
masterkookus 5:c656fd08007b 312 }
masterkookus 5:c656fd08007b 313 else
masterkookus 5:c656fd08007b 314 {
masterkookus 5:c656fd08007b 315 net2->sendRetry = true;
masterkookus 7:be13a9037d41 316 net2->sendRetryCount++;
masterkookus 5:c656fd08007b 317 printf("Send Attempt Failed, Code: %d\r\n",ret);
masterkookus 7:be13a9037d41 318 if (net2->sendRetryCount>3)
masterkookus 5:c656fd08007b 319 {
masterkookus 5:c656fd08007b 320 printf("Communication Failed, Closing\r\n");
masterkookus 5:c656fd08007b 321 net2->sendRetry = false;
masterkookus 7:be13a9037d41 322 net2->sendRetryCount = 0;
masterkookus 5:c656fd08007b 323 net2->messageFailCount++;
masterkookus 6:9f97716eae76 324 net2->cltCloseConnection=true;
masterkookus 7:be13a9037d41 325 net2->sendState=0;
masterkookus 7:be13a9037d41 326 net2->sendTime=0;
masterkookus 5:c656fd08007b 327 }
masterkookus 5:c656fd08007b 328 }
masterkookus 5:c656fd08007b 329 }
masterkookus 8:fa2a2c3a16ce 330 }
masterkookus 8:fa2a2c3a16ce 331 }
masterkookus 8:fa2a2c3a16ce 332 }
masterkookus 8:fa2a2c3a16ce 333
masterkookus 8:fa2a2c3a16ce 334 //Ethernet receive data and send to aux devices (serial, etc...)
masterkookus 8:fa2a2c3a16ce 335 void datancrx(netsys *net2)
masterkookus 8:fa2a2c3a16ce 336 {
masterkookus 8:fa2a2c3a16ce 337 char rxbuf[256];
masterkookus 8:fa2a2c3a16ce 338 int rxlen=0;
masterkookus 8:fa2a2c3a16ce 339 int rxc;
masterkookus 8:fa2a2c3a16ce 340 while (1)
masterkookus 8:fa2a2c3a16ce 341 {
masterkookus 8:fa2a2c3a16ce 342 while (net2->cltIsActive)
masterkookus 8:fa2a2c3a16ce 343 {
masterkookus 8:fa2a2c3a16ce 344 rxlen=net2->srv_sock.recv(rxbuf, sizeof(rxbuf));
masterkookus 8:fa2a2c3a16ce 345 if (rxlen>0)
masterkookus 5:c656fd08007b 346 {
masterkookus 8:fa2a2c3a16ce 347 net2->aliveTime=0;
masterkookus 8:fa2a2c3a16ce 348 for (rxc = 0;rxc<rxlen;rxc++)
masterkookus 8:fa2a2c3a16ce 349 {
masterkookus 8:fa2a2c3a16ce 350 receiveBuffer.push(rxbuf[rxc]);
masterkookus 8:fa2a2c3a16ce 351 }
masterkookus 8:fa2a2c3a16ce 352 printf("Client Received Data\r\n");
masterkookus 8:fa2a2c3a16ce 353 net2->rxMessageCount++;
masterkookus 5:c656fd08007b 354 }
masterkookus 0:03ab7f7596e2 355 }
masterkookus 0:03ab7f7596e2 356 }
masterkookus 0:03ab7f7596e2 357 }
masterkookus 0:03ab7f7596e2 358
masterkookus 7:be13a9037d41 359 //Ethernet receive data and send to aux devices (serial, etc...)
masterkookus 8:fa2a2c3a16ce 360 void datansrx(netsys *net2)
masterkookus 0:03ab7f7596e2 361 {
masterkookus 0:03ab7f7596e2 362 char rxbuf[256];
masterkookus 0:03ab7f7596e2 363 int rxlen=0;
masterkookus 5:c656fd08007b 364 int rxc;
masterkookus 0:03ab7f7596e2 365 while (1)
masterkookus 0:03ab7f7596e2 366 {
masterkookus 6:9f97716eae76 367 while (net2->srvIsActive)
masterkookus 0:03ab7f7596e2 368 {
masterkookus 0:03ab7f7596e2 369 rxlen=net2->clt_sock.recv(rxbuf, sizeof(rxbuf));
masterkookus 4:98cdccfb17d6 370 if (rxlen>0)
masterkookus 4:98cdccfb17d6 371 {
masterkookus 4:98cdccfb17d6 372 net2->aliveTime=0;
masterkookus 5:c656fd08007b 373 for (rxc = 0;rxc<rxlen;rxc++)
masterkookus 5:c656fd08007b 374 {
masterkookus 7:be13a9037d41 375 receiveBuffer.push(rxbuf[rxc]);
masterkookus 5:c656fd08007b 376 }
masterkookus 8:fa2a2c3a16ce 377 printf("Server Received Data\r\n");
masterkookus 5:c656fd08007b 378 net2->rxMessageCount++;
masterkookus 4:98cdccfb17d6 379 }
masterkookus 0:03ab7f7596e2 380 }
masterkookus 0:03ab7f7596e2 381 }
masterkookus 0:03ab7f7596e2 382 }
masterkookus 0:03ab7f7596e2 383
masterkookus 8:fa2a2c3a16ce 384 //Serial device to server
masterkookus 0:03ab7f7596e2 385 void datasrx(netsys *net2)
masterkookus 0:03ab7f7596e2 386 {
masterkookus 0:03ab7f7596e2 387 char rxbuf[256];
masterkookus 0:03ab7f7596e2 388 int rxlen=0;
masterkookus 9:d6e7981dfc89 389 int rxindex=0;
masterkookus 0:03ab7f7596e2 390 int rxc;
masterkookus 9:d6e7981dfc89 391 bool crRx = false;
masterkookus 9:d6e7981dfc89 392 int4byte cmdpack;
masterkookus 9:d6e7981dfc89 393
masterkookus 0:03ab7f7596e2 394 while (1)
masterkookus 0:03ab7f7596e2 395 {
masterkookus 9:d6e7981dfc89 396 rxlen=sport0.readable();
masterkookus 9:d6e7981dfc89 397 if (rxlen>0)
masterkookus 0:03ab7f7596e2 398 {
masterkookus 9:d6e7981dfc89 399 for (rxc=0;rxc<rxlen;rxc++)
masterkookus 9:d6e7981dfc89 400 {
masterkookus 9:d6e7981dfc89 401 rxbuf[rxindex+rxc]=sport0.getc();
masterkookus 9:d6e7981dfc89 402 if (rxbuf[rxindex+rxc]=='\r')
masterkookus 9:d6e7981dfc89 403 {
masterkookus 9:d6e7981dfc89 404 crRx=true;
masterkookus 9:d6e7981dfc89 405 }
masterkookus 9:d6e7981dfc89 406 }
masterkookus 9:d6e7981dfc89 407 rxindex=rxindex+rxlen;
masterkookus 9:d6e7981dfc89 408 printf("%d\r\n",rxlen);
masterkookus 9:d6e7981dfc89 409 printf("%d\r\n",rxindex);
masterkookus 9:d6e7981dfc89 410 rxlen=0;
masterkookus 9:d6e7981dfc89 411 if ((rxindex>2) && (crRx==true))
masterkookus 0:03ab7f7596e2 412 {
masterkookus 9:d6e7981dfc89 413 crRx=false;
masterkookus 9:d6e7981dfc89 414 for (rxc=0;rxc<=rxindex-3;rxc++)
masterkookus 0:03ab7f7596e2 415 {
masterkookus 9:d6e7981dfc89 416 cmdpack.bytes[3]=rxbuf[rxc];
masterkookus 9:d6e7981dfc89 417 cmdpack.bytes[2]=rxbuf[rxc+1];
masterkookus 9:d6e7981dfc89 418 cmdpack.bytes[1]=rxbuf[rxc+2];
masterkookus 9:d6e7981dfc89 419 cmdpack.bytes[0]=rxbuf[rxc+3];
masterkookus 9:d6e7981dfc89 420 printf("%08x\r\n",cmdpack.cmdint);
masterkookus 9:d6e7981dfc89 421 if (cmdpack.cmdint==0x4d45544d)
masterkookus 9:d6e7981dfc89 422 {
masterkookus 9:d6e7981dfc89 423 printf("MIN MAX METERING\r\n");
masterkookus 9:d6e7981dfc89 424 net2->devMsgReq=1;
masterkookus 9:d6e7981dfc89 425 net2->devMsgPos=2;
masterkookus 9:d6e7981dfc89 426 rxindex=0;
masterkookus 9:d6e7981dfc89 427 }
masterkookus 9:d6e7981dfc89 428 if (cmdpack.cmdint==0x54415052)
masterkookus 9:d6e7981dfc89 429 {
masterkookus 9:d6e7981dfc89 430 printf("TAP REPORT\r\n");
masterkookus 9:d6e7981dfc89 431 net2->devMsgReq=2;
masterkookus 9:d6e7981dfc89 432 net2->devMsgPos=2;
masterkookus 9:d6e7981dfc89 433 rxindex=0;
masterkookus 9:d6e7981dfc89 434 }
masterkookus 0:03ab7f7596e2 435 }
masterkookus 9:d6e7981dfc89 436 if (rxindex>0)
masterkookus 9:d6e7981dfc89 437 {
masterkookus 9:d6e7981dfc89 438 printf("Serial Command Not Found");
masterkookus 9:d6e7981dfc89 439 rxindex=0;
masterkookus 9:d6e7981dfc89 440 }
masterkookus 0:03ab7f7596e2 441 }
masterkookus 0:03ab7f7596e2 442 }
masterkookus 0:03ab7f7596e2 443 }
masterkookus 0:03ab7f7596e2 444 }
masterkookus 0:03ab7f7596e2 445
masterkookus 2:ec972966689e 446 //Checks for a Ethernet to Serial connection
masterkookus 0:03ab7f7596e2 447 void conchk(netsys *net2)
masterkookus 0:03ab7f7596e2 448 {
masterkookus 0:03ab7f7596e2 449 TCPServer *server=&(net2->srv);
masterkookus 0:03ab7f7596e2 450 TCPSocket *client_socket=&(net2->clt_sock);
masterkookus 0:03ab7f7596e2 451 SocketAddress *client_address=&(net2->clt_addr);
masterkookus 0:03ab7f7596e2 452
masterkookus 0:03ab7f7596e2 453 while(1)
masterkookus 0:03ab7f7596e2 454 {
masterkookus 5:c656fd08007b 455 while (server->accept(client_socket, client_address) < 0)
masterkookus 0:03ab7f7596e2 456 {
masterkookus 5:c656fd08007b 457 //printf("Connection Failed.\r\n");
masterkookus 0:03ab7f7596e2 458 }
masterkookus 6:9f97716eae76 459 printf("Server Port %d\r\n", net2->srvPort);
masterkookus 5:c656fd08007b 460 printf("accept %s:%d\r\n", client_address->get_ip_address(), client_address->get_port());
masterkookus 5:c656fd08007b 461 net2->aliveTime=0;
masterkookus 6:9f97716eae76 462 net2->srvIsActive=true;
masterkookus 0:03ab7f7596e2 463 }
masterkookus 0:03ab7f7596e2 464 }
masterkookus 0:03ab7f7596e2 465
masterkookus 0:03ab7f7596e2 466 int main()
masterkookus 0:03ab7f7596e2 467 {
masterkookus 0:03ab7f7596e2 468 EthernetInterface eth;
masterkookus 7:be13a9037d41 469 eth.set_network(setseveraddress,setsevermask,setsevergateway); //Use these parameters for static IP
masterkookus 0:03ab7f7596e2 470 eth.connect();
masterkookus 0:03ab7f7596e2 471
masterkookus 8:fa2a2c3a16ce 472 initVoltageRegulator(&vReg1);
masterkookus 8:fa2a2c3a16ce 473
masterkookus 0:03ab7f7596e2 474 printf("The target IP address is '%s'\r\n", eth.get_ip_address());
masterkookus 8:fa2a2c3a16ce 475 printf("%s\r\n",vReg1.analogs[0].analogName);
masterkookus 4:98cdccfb17d6 476 confignetdevices(&eth);
masterkookus 2:ec972966689e 477 /* Setup Ethernet to Serial Connection Thread */
masterkookus 0:03ab7f7596e2 478 conchkthread[0].start(callback(conchk,&net1));
masterkookus 2:ec972966689e 479 /* Setup polltick Ticker */
masterkookus 7:be13a9037d41 480 nettimer.attach_us(heartbeat,10000);
masterkookus 2:ec972966689e 481 /* Setup Ethernet to Serial transmit data Thread */
masterkookus 8:fa2a2c3a16ce 482 rxtxdatathread[0].start(callback(datansrx,&net1));
masterkookus 8:fa2a2c3a16ce 483 rxtxdatathread[1].start(callback(datancrx,&net1));
masterkookus 2:ec972966689e 484 /* Setup Ethernet to Serial receive data Thread */
masterkookus 8:fa2a2c3a16ce 485 rxtxdatathread[2].start(callback(datasrx,&net1));
masterkookus 8:fa2a2c3a16ce 486 rxtxdatathread[3].start(callback(datantx,&net1));
masterkookus 8:fa2a2c3a16ce 487 rxtxdatathread[4].start(callback(dataprocess,&net1));
masterkookus 7:be13a9037d41 488
masterkookus 7:be13a9037d41 489 unsigned int txc;
masterkookus 7:be13a9037d41 490 unsigned int sxc;
masterkookus 3:ac1f2af8bd0f 491
masterkookus 0:03ab7f7596e2 492 while (true) {
masterkookus 3:ac1f2af8bd0f 493
masterkookus 3:ac1f2af8bd0f 494 polltick=getTick();
masterkookus 3:ac1f2af8bd0f 495
masterkookus 3:ac1f2af8bd0f 496 if (polltick)
masterkookus 3:ac1f2af8bd0f 497 {
masterkookus 3:ac1f2af8bd0f 498 setTick(false);
masterkookus 3:ac1f2af8bd0f 499 incTime();
masterkookus 3:ac1f2af8bd0f 500 currenttime=getTime();
masterkookus 6:9f97716eae76 501 net1.pollTime++;
masterkookus 7:be13a9037d41 502 net1.sendTime++;
masterkookus 6:9f97716eae76 503 if (net1.srvIsActive)
masterkookus 0:03ab7f7596e2 504 {
masterkookus 4:98cdccfb17d6 505 net1.aliveTime++;
masterkookus 6:9f97716eae76 506 if (net1.aliveTime>net1.aliveTimeout)
masterkookus 4:98cdccfb17d6 507 {
masterkookus 4:98cdccfb17d6 508 printf("Closed\r\n");
masterkookus 4:98cdccfb17d6 509 net1.clt_sock.close();
masterkookus 6:9f97716eae76 510 net1.srvIsActive=false;
masterkookus 6:9f97716eae76 511 net1.srvCloseConnection=false;
masterkookus 4:98cdccfb17d6 512 }
masterkookus 4:98cdccfb17d6 513
masterkookus 0:03ab7f7596e2 514 }
masterkookus 7:be13a9037d41 515 if (net1.pollEnabled)
masterkookus 4:98cdccfb17d6 516 {
masterkookus 7:be13a9037d41 517 if (net1.pollTime >= net1.pollInterval)
masterkookus 7:be13a9037d41 518 {
masterkookus 9:d6e7981dfc89 519 if ((net1.sendState==0)||(net1.sendState==5))
masterkookus 7:be13a9037d41 520 {
masterkookus 9:d6e7981dfc89 521 if (net1.devMsgReq>0)
masterkookus 9:d6e7981dfc89 522 {
masterkookus 9:d6e7981dfc89 523 net1.serTimeoutCount=0;
masterkookus 9:d6e7981dfc89 524 sendLength.push(serCmdSeq[2][net1.devMsgPos]);
masterkookus 9:d6e7981dfc89 525 for (txc=0;txc<serCmdSeq[2][net1.devMsgPos];txc++)
masterkookus 9:d6e7981dfc89 526 {
masterkookus 9:d6e7981dfc89 527 sendBuffer.push(serCmd[serCmdSeq[net1.devMsgReq-1][net1.devMsgPos]][txc]);
masterkookus 9:d6e7981dfc89 528 }
masterkookus 9:d6e7981dfc89 529 if (net1.serIsActive==false)
masterkookus 9:d6e7981dfc89 530 {
masterkookus 9:d6e7981dfc89 531 net1.serIsActive=true;
masterkookus 9:d6e7981dfc89 532 }
masterkookus 9:d6e7981dfc89 533 }
masterkookus 9:d6e7981dfc89 534 else
masterkookus 9:d6e7981dfc89 535 {
masterkookus 9:d6e7981dfc89 536 sendLength.push(2);
masterkookus 9:d6e7981dfc89 537 for (txc=0;txc<2;txc++)
masterkookus 9:d6e7981dfc89 538 {
masterkookus 9:d6e7981dfc89 539 sendBuffer.push(fmCmd[net1.pollState][txc]);
masterkookus 9:d6e7981dfc89 540 }
masterkookus 9:d6e7981dfc89 541 }
masterkookus 9:d6e7981dfc89 542 if (net1.sendState==0)
masterkookus 9:d6e7981dfc89 543 {
masterkookus 9:d6e7981dfc89 544 net1.sendState=1;
masterkookus 9:d6e7981dfc89 545 net1.pollRequestSent=true;
masterkookus 9:d6e7981dfc89 546 }
masterkookus 7:be13a9037d41 547 }
masterkookus 7:be13a9037d41 548 net1.pollTime=0;
masterkookus 7:be13a9037d41 549 }
masterkookus 9:d6e7981dfc89 550 if ((net1.sendState==5) || (net1.serIsActive))
masterkookus 7:be13a9037d41 551 {
masterkookus 8:fa2a2c3a16ce 552 net1.pollTimeout++;
masterkookus 8:fa2a2c3a16ce 553 if (net1.pollTimeout==setpolltimeout)
masterkookus 7:be13a9037d41 554 {
masterkookus 8:fa2a2c3a16ce 555 if (net1.pollRequestSent)
masterkookus 7:be13a9037d41 556 {
masterkookus 8:fa2a2c3a16ce 557 printf("Poll Request Sent\r\n");
masterkookus 8:fa2a2c3a16ce 558 if (net1.pollResponseReceived==false)
masterkookus 8:fa2a2c3a16ce 559 {
masterkookus 8:fa2a2c3a16ce 560 printf("Poll Response Not Received\r\n");
masterkookus 8:fa2a2c3a16ce 561 }
masterkookus 8:fa2a2c3a16ce 562 else
masterkookus 8:fa2a2c3a16ce 563 {
masterkookus 8:fa2a2c3a16ce 564 printf("Poll Response Received\r\n");
masterkookus 8:fa2a2c3a16ce 565 }
masterkookus 7:be13a9037d41 566 net1.pollRequestSent=false;
masterkookus 8:fa2a2c3a16ce 567 net1.pollResponseReceived=false;
masterkookus 9:d6e7981dfc89 568 if (net1.serIsActive==false)
masterkookus 9:d6e7981dfc89 569 {
masterkookus 9:d6e7981dfc89 570 net1.cltCloseConnection=true;
masterkookus 9:d6e7981dfc89 571 net1.sendState=0;
masterkookus 9:d6e7981dfc89 572 }
masterkookus 9:d6e7981dfc89 573 }
masterkookus 9:d6e7981dfc89 574 if (net1.serIsActive)
masterkookus 9:d6e7981dfc89 575 {
masterkookus 9:d6e7981dfc89 576 net1.devMsgOpenRx=false;
masterkookus 9:d6e7981dfc89 577 if ((net1.serTimeoutCount==sertimeoutperiods) || (net1.devMsgReq==0))
masterkookus 9:d6e7981dfc89 578 {
masterkookus 9:d6e7981dfc89 579 net1.cltCloseConnection=true;
masterkookus 9:d6e7981dfc89 580 net1.devMsgReq=0;
masterkookus 9:d6e7981dfc89 581 net1.serIsActive=false;
masterkookus 9:d6e7981dfc89 582 net1.sendState=0;
masterkookus 9:d6e7981dfc89 583 }
masterkookus 9:d6e7981dfc89 584 else
masterkookus 9:d6e7981dfc89 585 {
masterkookus 9:d6e7981dfc89 586 net1.pollTimeout=0;
masterkookus 9:d6e7981dfc89 587 net1.serTimeoutCount++;
masterkookus 9:d6e7981dfc89 588 printf("Serial Active Timeout Count: %d\r\n",net1.serTimeoutCount);
masterkookus 9:d6e7981dfc89 589 }
masterkookus 7:be13a9037d41 590 }
masterkookus 7:be13a9037d41 591 }
masterkookus 7:be13a9037d41 592 }
masterkookus 8:fa2a2c3a16ce 593 else
masterkookus 8:fa2a2c3a16ce 594 {
masterkookus 8:fa2a2c3a16ce 595 net1.pollTimeout=0;
masterkookus 8:fa2a2c3a16ce 596 }
masterkookus 7:be13a9037d41 597 }
masterkookus 7:be13a9037d41 598 if (net1.sendTime == 10)
masterkookus 7:be13a9037d41 599 {
masterkookus 7:be13a9037d41 600 switch (net1.sendState)
masterkookus 5:c656fd08007b 601 {
masterkookus 5:c656fd08007b 602 case 1:
masterkookus 7:be13a9037d41 603 if (!sendLength.empty())
masterkookus 7:be13a9037d41 604 {
masterkookus 7:be13a9037d41 605 sendLength.pop(net1.sendLen);
masterkookus 7:be13a9037d41 606 for (sxc=0;sxc<net1.sendLen;sxc++)
masterkookus 7:be13a9037d41 607 {
masterkookus 7:be13a9037d41 608 sendBuffer.pop(net1.sendString[sxc]);
masterkookus 7:be13a9037d41 609 }
masterkookus 7:be13a9037d41 610 }
masterkookus 7:be13a9037d41 611 else
masterkookus 7:be13a9037d41 612 {
masterkookus 7:be13a9037d41 613 net1.sendState=0;
masterkookus 7:be13a9037d41 614 }
masterkookus 6:9f97716eae76 615 ret=net1.srv_sock.open(&eth);
masterkookus 5:c656fd08007b 616 printf("Socket%d\r\n",ret);
masterkookus 5:c656fd08007b 617 if (ret < 0)
masterkookus 5:c656fd08007b 618 {
masterkookus 8:fa2a2c3a16ce 619 if (ret==-3003)
masterkookus 8:fa2a2c3a16ce 620 {
masterkookus 8:fa2a2c3a16ce 621 printf("May already be attached, attempting connect.\r\n");
masterkookus 8:fa2a2c3a16ce 622 }
masterkookus 8:fa2a2c3a16ce 623 else
masterkookus 8:fa2a2c3a16ce 624 {
masterkookus 8:fa2a2c3a16ce 625 net1.attachRetry = true;
masterkookus 8:fa2a2c3a16ce 626 net1.sendRetryCount=0;
masterkookus 8:fa2a2c3a16ce 627 net1.sendState=2;
masterkookus 8:fa2a2c3a16ce 628 net1.sendTime=0;
masterkookus 8:fa2a2c3a16ce 629 break;
masterkookus 8:fa2a2c3a16ce 630 }
masterkookus 5:c656fd08007b 631 }
masterkookus 7:be13a9037d41 632 net1.sendState=3;
masterkookus 7:be13a9037d41 633 net1.sendTime=11;
masterkookus 6:9f97716eae76 634 net1.cltIsActive=true;
masterkookus 5:c656fd08007b 635 break;
masterkookus 5:c656fd08007b 636 case 2:
masterkookus 6:9f97716eae76 637 ret=net1.srv_sock.open(&eth);
masterkookus 5:c656fd08007b 638 printf("Socket%d\r\n",ret);
masterkookus 5:c656fd08007b 639 if (ret < 0)
masterkookus 5:c656fd08007b 640 {
masterkookus 7:be13a9037d41 641 net1.attachRetry = true;
masterkookus 7:be13a9037d41 642 net1.sendRetryCount++;
masterkookus 7:be13a9037d41 643 net1.sendTime=0;
masterkookus 5:c656fd08007b 644 printf("Attach Attempt Failed, Code: %d\r\n",ret);
masterkookus 7:be13a9037d41 645 if (net1.sendRetryCount>3)
masterkookus 5:c656fd08007b 646 {
masterkookus 5:c656fd08007b 647 printf("Communication Failed, Closing\r\n");
masterkookus 7:be13a9037d41 648 net1.attachRetry = false;
masterkookus 7:be13a9037d41 649 net1.sendRetryCount = 0;
masterkookus 6:9f97716eae76 650 net1.messageFailCount++;
masterkookus 7:be13a9037d41 651 net1.sendState=0;
masterkookus 7:be13a9037d41 652 net1.sendTime=0;
masterkookus 5:c656fd08007b 653 }
masterkookus 5:c656fd08007b 654 break;
masterkookus 5:c656fd08007b 655 }
masterkookus 7:be13a9037d41 656 net1.sendState=0;
masterkookus 7:be13a9037d41 657 net1.attachRetry = false;
masterkookus 7:be13a9037d41 658 net1.sendTime=11;
masterkookus 6:9f97716eae76 659 net1.cltIsActive=true;
masterkookus 5:c656fd08007b 660 break;
masterkookus 5:c656fd08007b 661 default:
masterkookus 7:be13a9037d41 662 net1.sendTime=0;
masterkookus 7:be13a9037d41 663 if (!sendLength.empty())
masterkookus 7:be13a9037d41 664 {
masterkookus 8:fa2a2c3a16ce 665 if (net1.sendState==5)
masterkookus 8:fa2a2c3a16ce 666 {
masterkookus 9:d6e7981dfc89 667
masterkookus 9:d6e7981dfc89 668 sendLength.pop(net1.sendLen);
masterkookus 9:d6e7981dfc89 669 for (sxc=0;sxc<net1.sendLen;sxc++)
masterkookus 8:fa2a2c3a16ce 670 {
masterkookus 9:d6e7981dfc89 671 sendBuffer.pop(net1.sendString[sxc]);
masterkookus 8:fa2a2c3a16ce 672 }
masterkookus 8:fa2a2c3a16ce 673 net1.sendState=4;
masterkookus 8:fa2a2c3a16ce 674 }
masterkookus 8:fa2a2c3a16ce 675 else
masterkookus 8:fa2a2c3a16ce 676 {
masterkookus 8:fa2a2c3a16ce 677 net1.sendState=1;
masterkookus 8:fa2a2c3a16ce 678 }
masterkookus 7:be13a9037d41 679 }
masterkookus 5:c656fd08007b 680 break;
masterkookus 5:c656fd08007b 681 }
masterkookus 4:98cdccfb17d6 682 }
masterkookus 1:a57cbebba3fd 683 }
masterkookus 8:fa2a2c3a16ce 684 if (net1.cltCloseConnection==true)
masterkookus 8:fa2a2c3a16ce 685 {
masterkookus 8:fa2a2c3a16ce 686 printf("Client Socket Closed\r\n");
masterkookus 8:fa2a2c3a16ce 687 net1.srv_sock.close();
masterkookus 8:fa2a2c3a16ce 688 net1.cltIsActive=false;
masterkookus 8:fa2a2c3a16ce 689 net1.cltCloseConnection=false;
masterkookus 8:fa2a2c3a16ce 690 net1.sendState=0;
masterkookus 8:fa2a2c3a16ce 691 }
masterkookus 0:03ab7f7596e2 692 }
masterkookus 0:03ab7f7596e2 693 }