This demonstrates the process of communicating through ethernet to a SEL-2431 Voltage Regulator Control Panel using SEL Fast Message. Basic device commands and data cna be requested and displayed over a connected serial port. This is a basic version and full testing and documentation has yet to be completed.
Dependencies: BufferedSerial analogAverager voltageRegulator netStatReg analogMinMax CounterMinMax
main.cpp@8:fa2a2c3a16ce, 2019-09-26 (annotated)
- Committer:
- masterkookus
- Date:
- Thu Sep 26 18:40:53 2019 +0000
- Revision:
- 8:fa2a2c3a16ce
- Parent:
- 7:be13a9037d41
- Child:
- 9:d6e7981dfc89
Command Response and Data Storage;
Who changed what in which revision?
User | Revision | Line number | New 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 | 5:c656fd08007b | 30 | |
masterkookus | 0:03ab7f7596e2 | 31 | Thread conchkthread[2]; |
masterkookus | 4:98cdccfb17d6 | 32 | Thread rxtxdatathread[5]; |
masterkookus | 4:98cdccfb17d6 | 33 | |
masterkookus | 4:98cdccfb17d6 | 34 | unsigned int currenttime=0; |
masterkookus | 0:03ab7f7596e2 | 35 | |
masterkookus | 5:c656fd08007b | 36 | nsapi_error_t ret; |
masterkookus | 5:c656fd08007b | 37 | |
masterkookus | 2:ec972966689e | 38 | //Provides the deivce poll timing |
masterkookus | 1:a57cbebba3fd | 39 | void heartbeat() |
masterkookus | 1:a57cbebba3fd | 40 | { |
masterkookus | 3:ac1f2af8bd0f | 41 | //polltick=true; |
masterkookus | 3:ac1f2af8bd0f | 42 | setTick(true); |
masterkookus | 1:a57cbebba3fd | 43 | } |
masterkookus | 1:a57cbebba3fd | 44 | |
masterkookus | 4:98cdccfb17d6 | 45 | void confignetdevices(EthernetInterface *eth) |
masterkookus | 4:98cdccfb17d6 | 46 | { |
masterkookus | 7:be13a9037d41 | 47 | net1.cltPort=setclientport; |
masterkookus | 7:be13a9037d41 | 48 | net1.srv_addr=setclientaddress; |
masterkookus | 6:9f97716eae76 | 49 | net1.cltIsActive=false; |
masterkookus | 6:9f97716eae76 | 50 | net1.cltCloseConnection=false; |
masterkookus | 6:9f97716eae76 | 51 | net1.pollTime=0; |
masterkookus | 8:fa2a2c3a16ce | 52 | net1.pollTimeout=0; |
masterkookus | 7:be13a9037d41 | 53 | net1.pollInterval=setpollinterval; |
masterkookus | 7:be13a9037d41 | 54 | net1.pollRequestSent=false; |
masterkookus | 7:be13a9037d41 | 55 | net1.pollResponseReceived=false; |
masterkookus | 8:fa2a2c3a16ce | 56 | net1.srv_sock.set_blocking(true); |
masterkookus | 8:fa2a2c3a16ce | 57 | net1.srv_sock.set_timeout(100); |
masterkookus | 7:be13a9037d41 | 58 | net1.aliveTimeout=setservertimeout; |
masterkookus | 8:fa2a2c3a16ce | 59 | net1.srv.set_blocking(true); |
masterkookus | 8:fa2a2c3a16ce | 60 | net1.srv.set_timeout(100); |
masterkookus | 7:be13a9037d41 | 61 | net1.pollEnabled=setpollenabled; |
masterkookus | 7:be13a9037d41 | 62 | net1.pollTimeoutCount=0; |
masterkookus | 8:fa2a2c3a16ce | 63 | net1.pollState=0; |
masterkookus | 8:fa2a2c3a16ce | 64 | net1.pollTimeoutCount=0; |
masterkookus | 8:fa2a2c3a16ce | 65 | net1.sendRetryCount=0; |
masterkookus | 8:fa2a2c3a16ce | 66 | net1.messageFailCount=0; |
masterkookus | 8:fa2a2c3a16ce | 67 | net1.txMessageCount=0; |
masterkookus | 8:fa2a2c3a16ce | 68 | net1.rxMessageCount=0; |
masterkookus | 4:98cdccfb17d6 | 69 | |
masterkookus | 4:98cdccfb17d6 | 70 | /* Open the server on ethernet stack */ |
masterkookus | 4:98cdccfb17d6 | 71 | net1.srv.open(eth); |
masterkookus | 6:9f97716eae76 | 72 | net1.srvIsActive=false; |
masterkookus | 6:9f97716eae76 | 73 | net1.srvCloseConnection=false; |
masterkookus | 4:98cdccfb17d6 | 74 | |
masterkookus | 4:98cdccfb17d6 | 75 | /* Bind port 23 to the server */ |
masterkookus | 7:be13a9037d41 | 76 | net1.srvPort=setserverport; |
masterkookus | 6:9f97716eae76 | 77 | net1.srv.bind(net1.srvPort); |
masterkookus | 4:98cdccfb17d6 | 78 | |
masterkookus | 4:98cdccfb17d6 | 79 | /* Can handle 5 simultaneous connections */ |
masterkookus | 4:98cdccfb17d6 | 80 | net1.srv.listen(5); |
masterkookus | 7:be13a9037d41 | 81 | sport0.baud(sport0baud); |
masterkookus | 4:98cdccfb17d6 | 82 | } |
masterkookus | 4:98cdccfb17d6 | 83 | |
masterkookus | 7:be13a9037d41 | 84 | void dataprocess(netsys *net2) |
masterkookus | 0:03ab7f7596e2 | 85 | { |
masterkookus | 7:be13a9037d41 | 86 | int txc; |
masterkookus | 5:c656fd08007b | 87 | char cchar; |
masterkookus | 5:c656fd08007b | 88 | char cbuf[256]; |
masterkookus | 5:c656fd08007b | 89 | unsigned int clen=0; |
masterkookus | 5:c656fd08007b | 90 | unsigned int cbc; |
masterkookus | 8:fa2a2c3a16ce | 91 | int4byte cmdpack; |
masterkookus | 8:fa2a2c3a16ce | 92 | float4byte valpack; |
masterkookus | 8:fa2a2c3a16ce | 93 | short2byte timepack; |
masterkookus | 5:c656fd08007b | 94 | |
masterkookus | 4:98cdccfb17d6 | 95 | while(1) |
masterkookus | 0:03ab7f7596e2 | 96 | { |
masterkookus | 7:be13a9037d41 | 97 | while (!receiveBuffer.empty()) |
masterkookus | 5:c656fd08007b | 98 | { |
masterkookus | 7:be13a9037d41 | 99 | receiveBuffer.pop(cchar); |
masterkookus | 8:fa2a2c3a16ce | 100 | cbuf[clen]=cchar; |
masterkookus | 5:c656fd08007b | 101 | clen++; |
masterkookus | 5:c656fd08007b | 102 | } |
masterkookus | 7:be13a9037d41 | 103 | if (net2->pollRequestSent) |
masterkookus | 7:be13a9037d41 | 104 | { |
masterkookus | 7:be13a9037d41 | 105 | if (clen>0) |
masterkookus | 7:be13a9037d41 | 106 | { |
masterkookus | 7:be13a9037d41 | 107 | net2->pollResponseReceived=true; |
masterkookus | 7:be13a9037d41 | 108 | } |
masterkookus | 7:be13a9037d41 | 109 | } |
masterkookus | 5:c656fd08007b | 110 | if (clen>3) |
masterkookus | 5:c656fd08007b | 111 | { |
masterkookus | 7:be13a9037d41 | 112 | for (cbc=0;cbc<clen-3;cbc++) |
masterkookus | 5:c656fd08007b | 113 | { |
masterkookus | 8:fa2a2c3a16ce | 114 | //printf("Length: %d\r\n",clen); |
masterkookus | 8:fa2a2c3a16ce | 115 | //printf("%c%c%c%c\r\n",cbuf[cbc],cbuf[cbc+1],cbuf[cbc+2],cbuf[cbc+3]); |
masterkookus | 8:fa2a2c3a16ce | 116 | if (net2->sendState==3) |
masterkookus | 8:fa2a2c3a16ce | 117 | { |
masterkookus | 8:fa2a2c3a16ce | 118 | cmdpack.bytes[3]=cbuf[cbc]; |
masterkookus | 8:fa2a2c3a16ce | 119 | cmdpack.bytes[2]=cbuf[cbc+1]; |
masterkookus | 8:fa2a2c3a16ce | 120 | cmdpack.bytes[1]=cbuf[cbc+2]; |
masterkookus | 8:fa2a2c3a16ce | 121 | cmdpack.bytes[0]=0x00; |
masterkookus | 8:fa2a2c3a16ce | 122 | //printf("%08x\r\n",cmdpack.cmdint); |
masterkookus | 8:fa2a2c3a16ce | 123 | if (cmdpack.cmdint&0xF0000000) |
masterkookus | 8:fa2a2c3a16ce | 124 | { |
masterkookus | 8:fa2a2c3a16ce | 125 | printf("Telnet Command Received\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 126 | cbc=cbc+3; |
masterkookus | 8:fa2a2c3a16ce | 127 | if (cbc>=clen) |
masterkookus | 8:fa2a2c3a16ce | 128 | { |
masterkookus | 8:fa2a2c3a16ce | 129 | clen=0; |
masterkookus | 8:fa2a2c3a16ce | 130 | } |
masterkookus | 8:fa2a2c3a16ce | 131 | } |
masterkookus | 8:fa2a2c3a16ce | 132 | } |
masterkookus | 8:fa2a2c3a16ce | 133 | else |
masterkookus | 5:c656fd08007b | 134 | { |
masterkookus | 8:fa2a2c3a16ce | 135 | //printf("%c%c%c%c\r\n",cbuf[cbc],cbuf[cbc+1],cbuf[cbc+2],cbuf[cbc+3]); |
masterkookus | 8:fa2a2c3a16ce | 136 | cmdpack.bytes[3]=cbuf[cbc]; |
masterkookus | 8:fa2a2c3a16ce | 137 | cmdpack.bytes[2]=cbuf[cbc+1]; |
masterkookus | 8:fa2a2c3a16ce | 138 | cmdpack.bytes[1]=0x00; |
masterkookus | 8:fa2a2c3a16ce | 139 | cmdpack.bytes[0]=0x00; |
masterkookus | 8:fa2a2c3a16ce | 140 | if (cmdpack.cmdint==0xA5C00000) |
masterkookus | 7:be13a9037d41 | 141 | { |
masterkookus | 8:fa2a2c3a16ce | 142 | sport0.write(cbuf,clen); |
masterkookus | 8:fa2a2c3a16ce | 143 | /*sendLength.push(tstlen); |
masterkookus | 8:fa2a2c3a16ce | 144 | for (txc=0;txc<2;txc++) |
masterkookus | 8:fa2a2c3a16ce | 145 | { |
masterkookus | 8:fa2a2c3a16ce | 146 | sendBuffer.push(tstcmd[txc]); |
masterkookus | 8:fa2a2c3a16ce | 147 | }*/ |
masterkookus | 8:fa2a2c3a16ce | 148 | net2->pollState=1; |
masterkookus | 8:fa2a2c3a16ce | 149 | clen=0; |
masterkookus | 8:fa2a2c3a16ce | 150 | break; |
masterkookus | 7:be13a9037d41 | 151 | } |
masterkookus | 8:fa2a2c3a16ce | 152 | if (cmdpack.cmdint==0xA5C10000) |
masterkookus | 7:be13a9037d41 | 153 | { |
masterkookus | 8:fa2a2c3a16ce | 154 | sport0.write(cbuf,clen); |
masterkookus | 8:fa2a2c3a16ce | 155 | if (vReg1.numAnalog!=cbuf[6]) |
masterkookus | 8:fa2a2c3a16ce | 156 | { |
masterkookus | 8:fa2a2c3a16ce | 157 | printf("\r\nAnalog Channel Count Off\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 158 | net2->pollState=0; |
masterkookus | 8:fa2a2c3a16ce | 159 | break; |
masterkookus | 8:fa2a2c3a16ce | 160 | } |
masterkookus | 8:fa2a2c3a16ce | 161 | if (vReg1.numDigital!=cbuf[8]) |
masterkookus | 8:fa2a2c3a16ce | 162 | { |
masterkookus | 8:fa2a2c3a16ce | 163 | printf("\r\nDigital Channel Count Off\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 164 | net2->pollState=0; |
masterkookus | 8:fa2a2c3a16ce | 165 | break; |
masterkookus | 8:fa2a2c3a16ce | 166 | } |
masterkookus | 8:fa2a2c3a16ce | 167 | char anum=16; |
masterkookus | 8:fa2a2c3a16ce | 168 | char nxc; |
masterkookus | 8:fa2a2c3a16ce | 169 | for (txc=0;txc<vReg1.numAnalog;txc++) |
masterkookus | 8:fa2a2c3a16ce | 170 | { |
masterkookus | 8:fa2a2c3a16ce | 171 | for (nxc=0;nxc<6;nxc++) |
masterkookus | 8:fa2a2c3a16ce | 172 | { |
masterkookus | 8:fa2a2c3a16ce | 173 | //printf("%c %c",vReg1.analogs[txc].analogName[nxc],cbuf[anum+nxc]); |
masterkookus | 8:fa2a2c3a16ce | 174 | if(vReg1.analogs[txc].analogName[nxc]!=cbuf[anum+nxc]) |
masterkookus | 8:fa2a2c3a16ce | 175 | { |
masterkookus | 8:fa2a2c3a16ce | 176 | printf("\r\nPoint %d Failed\r\n",txc); |
masterkookus | 8:fa2a2c3a16ce | 177 | break; |
masterkookus | 8:fa2a2c3a16ce | 178 | } |
masterkookus | 8:fa2a2c3a16ce | 179 | } |
masterkookus | 8:fa2a2c3a16ce | 180 | anum = anum + 11; |
masterkookus | 8:fa2a2c3a16ce | 181 | //printf("\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 182 | } |
masterkookus | 8:fa2a2c3a16ce | 183 | net2->pollState=2; |
masterkookus | 8:fa2a2c3a16ce | 184 | clen=0; |
masterkookus | 8:fa2a2c3a16ce | 185 | break; |
masterkookus | 7:be13a9037d41 | 186 | } |
masterkookus | 8:fa2a2c3a16ce | 187 | if (cmdpack.cmdint==0xA5D10000) |
masterkookus | 8:fa2a2c3a16ce | 188 | { |
masterkookus | 8:fa2a2c3a16ce | 189 | char anum=4; |
masterkookus | 8:fa2a2c3a16ce | 190 | for (txc=0;txc<vReg1.numAnalog;txc++) |
masterkookus | 8:fa2a2c3a16ce | 191 | { |
masterkookus | 8:fa2a2c3a16ce | 192 | valpack.bytes[3]=cbuf[anum]; |
masterkookus | 8:fa2a2c3a16ce | 193 | valpack.bytes[2]=cbuf[anum+1]; |
masterkookus | 8:fa2a2c3a16ce | 194 | valpack.bytes[1]=cbuf[anum+2]; |
masterkookus | 8:fa2a2c3a16ce | 195 | valpack.bytes[0]=cbuf[anum+3]; |
masterkookus | 8:fa2a2c3a16ce | 196 | vReg1.analogs[txc].analog1Value = valpack.cmdflt; |
masterkookus | 8:fa2a2c3a16ce | 197 | anum = anum + 4; |
masterkookus | 8:fa2a2c3a16ce | 198 | //printf("%02x, %02x %02x %02x\r\n",cbuf[anum],cbuf[anum+1],cbuf[anum+2],cbuf[anum+3]); |
masterkookus | 8:fa2a2c3a16ce | 199 | //printf("%02x, %02x %02x %02x\r\n",valpack.bytes[3],valpack.bytes[2],valpack.bytes[1],valpack.bytes[0]); |
masterkookus | 8:fa2a2c3a16ce | 200 | //printf("%f\r\n",valpack.cmdflt); |
masterkookus | 8:fa2a2c3a16ce | 201 | printf("%.2f\r\n",vReg1.analogs[txc].analog1Value); |
masterkookus | 8:fa2a2c3a16ce | 202 | } |
masterkookus | 8:fa2a2c3a16ce | 203 | printf("%d\r\n",anum); |
masterkookus | 8:fa2a2c3a16ce | 204 | vReg1.timeStamp.month=cbuf[anum]; |
masterkookus | 8:fa2a2c3a16ce | 205 | vReg1.timeStamp.day=cbuf[anum+1]; |
masterkookus | 8:fa2a2c3a16ce | 206 | vReg1.timeStamp.year=cbuf[anum+2]; |
masterkookus | 8:fa2a2c3a16ce | 207 | vReg1.timeStamp.hour=cbuf[anum+3]; |
masterkookus | 8:fa2a2c3a16ce | 208 | vReg1.timeStamp.min=cbuf[anum+4]; |
masterkookus | 8:fa2a2c3a16ce | 209 | vReg1.timeStamp.sec=cbuf[anum+5]; |
masterkookus | 8:fa2a2c3a16ce | 210 | timepack.bytes[1]=cbuf[anum+6]; |
masterkookus | 8:fa2a2c3a16ce | 211 | timepack.bytes[0]=cbuf[anum+7]; |
masterkookus | 8:fa2a2c3a16ce | 212 | vReg1.timeStamp.msec=timepack.cmdshort; |
masterkookus | 8:fa2a2c3a16ce | 213 | 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 | 8:fa2a2c3a16ce | 214 | anum=anum+8; |
masterkookus | 8:fa2a2c3a16ce | 215 | for (txc=0;txc<vReg1.numDigital;txc++) |
masterkookus | 8:fa2a2c3a16ce | 216 | { |
masterkookus | 8:fa2a2c3a16ce | 217 | vReg1.digitalTargets[txc]=cbuf[anum+txc]; |
masterkookus | 8:fa2a2c3a16ce | 218 | } |
masterkookus | 8:fa2a2c3a16ce | 219 | clen=0; |
masterkookus | 8:fa2a2c3a16ce | 220 | break; |
masterkookus | 8:fa2a2c3a16ce | 221 | } |
masterkookus | 5:c656fd08007b | 222 | } |
masterkookus | 5:c656fd08007b | 223 | } |
masterkookus | 7:be13a9037d41 | 224 | if (clen>0) |
masterkookus | 7:be13a9037d41 | 225 | { |
masterkookus | 7:be13a9037d41 | 226 | printf("Command not Received\r\n"); |
masterkookus | 7:be13a9037d41 | 227 | clen=0; |
masterkookus | 7:be13a9037d41 | 228 | } |
masterkookus | 7:be13a9037d41 | 229 | } |
masterkookus | 7:be13a9037d41 | 230 | } |
masterkookus | 7:be13a9037d41 | 231 | } |
masterkookus | 7:be13a9037d41 | 232 | |
masterkookus | 7:be13a9037d41 | 233 | //Ethernet to Ethernet Send Data |
masterkookus | 7:be13a9037d41 | 234 | void datantx(netsys *net2) |
masterkookus | 7:be13a9037d41 | 235 | { |
masterkookus | 7:be13a9037d41 | 236 | while(1) |
masterkookus | 7:be13a9037d41 | 237 | { |
masterkookus | 6:9f97716eae76 | 238 | if (net2->cltIsActive) |
masterkookus | 0:03ab7f7596e2 | 239 | { |
masterkookus | 7:be13a9037d41 | 240 | while (net2->sendState==3) |
masterkookus | 5:c656fd08007b | 241 | { |
masterkookus | 5:c656fd08007b | 242 | if (net2->connectRetry == true) |
masterkookus | 5:c656fd08007b | 243 | { |
masterkookus | 5:c656fd08007b | 244 | wait_ms(100); |
masterkookus | 5:c656fd08007b | 245 | } |
masterkookus | 6:9f97716eae76 | 246 | ret = net2->srv_sock.connect(net2->srv_addr,net2->cltPort); |
masterkookus | 5:c656fd08007b | 247 | if (ret==0) |
masterkookus | 5:c656fd08007b | 248 | { |
masterkookus | 5:c656fd08007b | 249 | net2->connectRetry = false; |
masterkookus | 5:c656fd08007b | 250 | printf("Connected %d\r\n",ret); |
masterkookus | 8:fa2a2c3a16ce | 251 | //net2->cltCloseConnection=true; |
masterkookus | 8:fa2a2c3a16ce | 252 | net2->sendState=4; |
masterkookus | 8:fa2a2c3a16ce | 253 | } |
masterkookus | 8:fa2a2c3a16ce | 254 | else if (ret==-3015) |
masterkookus | 8:fa2a2c3a16ce | 255 | { |
masterkookus | 8:fa2a2c3a16ce | 256 | printf("May already be connected, attempting send.\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 257 | net2->connectRetry = false; |
masterkookus | 7:be13a9037d41 | 258 | net2->sendState=4; |
masterkookus | 5:c656fd08007b | 259 | } |
masterkookus | 5:c656fd08007b | 260 | else |
masterkookus | 5:c656fd08007b | 261 | { |
masterkookus | 5:c656fd08007b | 262 | net2->connectRetry = true; |
masterkookus | 7:be13a9037d41 | 263 | net2->sendRetryCount++; |
masterkookus | 5:c656fd08007b | 264 | printf("Connect Attempt Failed, Code: %d\r\n",ret); |
masterkookus | 7:be13a9037d41 | 265 | if (net2->sendRetryCount>3) |
masterkookus | 5:c656fd08007b | 266 | { |
masterkookus | 5:c656fd08007b | 267 | printf("Communication Failed, Closing\r\n"); |
masterkookus | 5:c656fd08007b | 268 | net2->connectRetry = false; |
masterkookus | 7:be13a9037d41 | 269 | net2->sendRetryCount = 0; |
masterkookus | 5:c656fd08007b | 270 | net2->messageFailCount++; |
masterkookus | 6:9f97716eae76 | 271 | net2->cltCloseConnection=true; |
masterkookus | 7:be13a9037d41 | 272 | net2->sendState=0; |
masterkookus | 7:be13a9037d41 | 273 | net2->sendTime=0; |
masterkookus | 5:c656fd08007b | 274 | } |
masterkookus | 5:c656fd08007b | 275 | } |
masterkookus | 5:c656fd08007b | 276 | } |
masterkookus | 7:be13a9037d41 | 277 | while (net2->sendState==4) |
masterkookus | 5:c656fd08007b | 278 | { |
masterkookus | 5:c656fd08007b | 279 | if (net2->sendRetry == true) |
masterkookus | 5:c656fd08007b | 280 | { |
masterkookus | 5:c656fd08007b | 281 | wait_ms(100); |
masterkookus | 5:c656fd08007b | 282 | } |
masterkookus | 7:be13a9037d41 | 283 | ret = net2->srv_sock.send(net2->sendString,net2->sendLen); |
masterkookus | 5:c656fd08007b | 284 | if (ret>=0) |
masterkookus | 5:c656fd08007b | 285 | { |
masterkookus | 5:c656fd08007b | 286 | printf("Send Result %d\r\n",ret); |
masterkookus | 5:c656fd08007b | 287 | net2->sendRetry = false; |
masterkookus | 5:c656fd08007b | 288 | net2->txMessageCount++; |
masterkookus | 8:fa2a2c3a16ce | 289 | //net2->cltCloseConnection=true; |
masterkookus | 8:fa2a2c3a16ce | 290 | net2->sendState=5; |
masterkookus | 7:be13a9037d41 | 291 | net2->sendTime=0; |
masterkookus | 5:c656fd08007b | 292 | } |
masterkookus | 5:c656fd08007b | 293 | else |
masterkookus | 5:c656fd08007b | 294 | { |
masterkookus | 5:c656fd08007b | 295 | net2->sendRetry = true; |
masterkookus | 7:be13a9037d41 | 296 | net2->sendRetryCount++; |
masterkookus | 5:c656fd08007b | 297 | printf("Send Attempt Failed, Code: %d\r\n",ret); |
masterkookus | 7:be13a9037d41 | 298 | if (net2->sendRetryCount>3) |
masterkookus | 5:c656fd08007b | 299 | { |
masterkookus | 5:c656fd08007b | 300 | printf("Communication Failed, Closing\r\n"); |
masterkookus | 5:c656fd08007b | 301 | net2->sendRetry = false; |
masterkookus | 7:be13a9037d41 | 302 | net2->sendRetryCount = 0; |
masterkookus | 5:c656fd08007b | 303 | net2->messageFailCount++; |
masterkookus | 6:9f97716eae76 | 304 | net2->cltCloseConnection=true; |
masterkookus | 7:be13a9037d41 | 305 | net2->sendState=0; |
masterkookus | 7:be13a9037d41 | 306 | net2->sendTime=0; |
masterkookus | 5:c656fd08007b | 307 | } |
masterkookus | 5:c656fd08007b | 308 | } |
masterkookus | 5:c656fd08007b | 309 | } |
masterkookus | 8:fa2a2c3a16ce | 310 | } |
masterkookus | 8:fa2a2c3a16ce | 311 | } |
masterkookus | 8:fa2a2c3a16ce | 312 | } |
masterkookus | 8:fa2a2c3a16ce | 313 | |
masterkookus | 8:fa2a2c3a16ce | 314 | //Ethernet receive data and send to aux devices (serial, etc...) |
masterkookus | 8:fa2a2c3a16ce | 315 | void datancrx(netsys *net2) |
masterkookus | 8:fa2a2c3a16ce | 316 | { |
masterkookus | 8:fa2a2c3a16ce | 317 | char rxbuf[256]; |
masterkookus | 8:fa2a2c3a16ce | 318 | int rxlen=0; |
masterkookus | 8:fa2a2c3a16ce | 319 | int rxc; |
masterkookus | 8:fa2a2c3a16ce | 320 | while (1) |
masterkookus | 8:fa2a2c3a16ce | 321 | { |
masterkookus | 8:fa2a2c3a16ce | 322 | while (net2->cltIsActive) |
masterkookus | 8:fa2a2c3a16ce | 323 | { |
masterkookus | 8:fa2a2c3a16ce | 324 | rxlen=net2->srv_sock.recv(rxbuf, sizeof(rxbuf)); |
masterkookus | 8:fa2a2c3a16ce | 325 | if (rxlen>0) |
masterkookus | 5:c656fd08007b | 326 | { |
masterkookus | 8:fa2a2c3a16ce | 327 | net2->aliveTime=0; |
masterkookus | 8:fa2a2c3a16ce | 328 | for (rxc = 0;rxc<rxlen;rxc++) |
masterkookus | 8:fa2a2c3a16ce | 329 | { |
masterkookus | 8:fa2a2c3a16ce | 330 | receiveBuffer.push(rxbuf[rxc]); |
masterkookus | 8:fa2a2c3a16ce | 331 | } |
masterkookus | 8:fa2a2c3a16ce | 332 | printf("Client Received Data\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 333 | net2->rxMessageCount++; |
masterkookus | 5:c656fd08007b | 334 | } |
masterkookus | 0:03ab7f7596e2 | 335 | } |
masterkookus | 0:03ab7f7596e2 | 336 | } |
masterkookus | 0:03ab7f7596e2 | 337 | } |
masterkookus | 0:03ab7f7596e2 | 338 | |
masterkookus | 7:be13a9037d41 | 339 | //Ethernet receive data and send to aux devices (serial, etc...) |
masterkookus | 8:fa2a2c3a16ce | 340 | void datansrx(netsys *net2) |
masterkookus | 0:03ab7f7596e2 | 341 | { |
masterkookus | 0:03ab7f7596e2 | 342 | char rxbuf[256]; |
masterkookus | 0:03ab7f7596e2 | 343 | int rxlen=0; |
masterkookus | 5:c656fd08007b | 344 | int rxc; |
masterkookus | 0:03ab7f7596e2 | 345 | while (1) |
masterkookus | 0:03ab7f7596e2 | 346 | { |
masterkookus | 6:9f97716eae76 | 347 | while (net2->srvIsActive) |
masterkookus | 0:03ab7f7596e2 | 348 | { |
masterkookus | 0:03ab7f7596e2 | 349 | rxlen=net2->clt_sock.recv(rxbuf, sizeof(rxbuf)); |
masterkookus | 4:98cdccfb17d6 | 350 | if (rxlen>0) |
masterkookus | 4:98cdccfb17d6 | 351 | { |
masterkookus | 4:98cdccfb17d6 | 352 | net2->aliveTime=0; |
masterkookus | 5:c656fd08007b | 353 | for (rxc = 0;rxc<rxlen;rxc++) |
masterkookus | 5:c656fd08007b | 354 | { |
masterkookus | 7:be13a9037d41 | 355 | receiveBuffer.push(rxbuf[rxc]); |
masterkookus | 5:c656fd08007b | 356 | } |
masterkookus | 8:fa2a2c3a16ce | 357 | printf("Server Received Data\r\n"); |
masterkookus | 5:c656fd08007b | 358 | net2->rxMessageCount++; |
masterkookus | 4:98cdccfb17d6 | 359 | } |
masterkookus | 0:03ab7f7596e2 | 360 | } |
masterkookus | 0:03ab7f7596e2 | 361 | } |
masterkookus | 0:03ab7f7596e2 | 362 | } |
masterkookus | 0:03ab7f7596e2 | 363 | |
masterkookus | 8:fa2a2c3a16ce | 364 | //Serial device to server |
masterkookus | 0:03ab7f7596e2 | 365 | void datasrx(netsys *net2) |
masterkookus | 0:03ab7f7596e2 | 366 | { |
masterkookus | 0:03ab7f7596e2 | 367 | char rxbuf[256]; |
masterkookus | 0:03ab7f7596e2 | 368 | int rxlen=0; |
masterkookus | 0:03ab7f7596e2 | 369 | int rxc; |
masterkookus | 0:03ab7f7596e2 | 370 | while (1) |
masterkookus | 0:03ab7f7596e2 | 371 | { |
masterkookus | 6:9f97716eae76 | 372 | while (net2->srvIsActive) |
masterkookus | 0:03ab7f7596e2 | 373 | { |
masterkookus | 0:03ab7f7596e2 | 374 | rxlen=sport0.readable(); |
masterkookus | 0:03ab7f7596e2 | 375 | if (rxlen>0) |
masterkookus | 0:03ab7f7596e2 | 376 | { |
masterkookus | 0:03ab7f7596e2 | 377 | for (rxc = 0;rxc<rxlen;rxc++) |
masterkookus | 0:03ab7f7596e2 | 378 | { |
masterkookus | 0:03ab7f7596e2 | 379 | rxbuf[rxc] = sport0.getc(); |
masterkookus | 0:03ab7f7596e2 | 380 | } |
masterkookus | 4:98cdccfb17d6 | 381 | net2->aliveTime=0; |
masterkookus | 0:03ab7f7596e2 | 382 | net2->clt_sock.send(rxbuf, rxlen); |
masterkookus | 6:9f97716eae76 | 383 | net2->txMessageCount++; |
masterkookus | 0:03ab7f7596e2 | 384 | } |
masterkookus | 0:03ab7f7596e2 | 385 | } |
masterkookus | 0:03ab7f7596e2 | 386 | } |
masterkookus | 0:03ab7f7596e2 | 387 | } |
masterkookus | 0:03ab7f7596e2 | 388 | |
masterkookus | 2:ec972966689e | 389 | //Checks for a Ethernet to Serial connection |
masterkookus | 0:03ab7f7596e2 | 390 | void conchk(netsys *net2) |
masterkookus | 0:03ab7f7596e2 | 391 | { |
masterkookus | 0:03ab7f7596e2 | 392 | TCPServer *server=&(net2->srv); |
masterkookus | 0:03ab7f7596e2 | 393 | TCPSocket *client_socket=&(net2->clt_sock); |
masterkookus | 0:03ab7f7596e2 | 394 | SocketAddress *client_address=&(net2->clt_addr); |
masterkookus | 0:03ab7f7596e2 | 395 | |
masterkookus | 0:03ab7f7596e2 | 396 | while(1) |
masterkookus | 0:03ab7f7596e2 | 397 | { |
masterkookus | 5:c656fd08007b | 398 | while (server->accept(client_socket, client_address) < 0) |
masterkookus | 0:03ab7f7596e2 | 399 | { |
masterkookus | 5:c656fd08007b | 400 | //printf("Connection Failed.\r\n"); |
masterkookus | 0:03ab7f7596e2 | 401 | } |
masterkookus | 6:9f97716eae76 | 402 | printf("Server Port %d\r\n", net2->srvPort); |
masterkookus | 5:c656fd08007b | 403 | printf("accept %s:%d\r\n", client_address->get_ip_address(), client_address->get_port()); |
masterkookus | 5:c656fd08007b | 404 | net2->aliveTime=0; |
masterkookus | 6:9f97716eae76 | 405 | net2->srvIsActive=true; |
masterkookus | 0:03ab7f7596e2 | 406 | } |
masterkookus | 0:03ab7f7596e2 | 407 | } |
masterkookus | 0:03ab7f7596e2 | 408 | |
masterkookus | 0:03ab7f7596e2 | 409 | int main() |
masterkookus | 0:03ab7f7596e2 | 410 | { |
masterkookus | 0:03ab7f7596e2 | 411 | EthernetInterface eth; |
masterkookus | 7:be13a9037d41 | 412 | eth.set_network(setseveraddress,setsevermask,setsevergateway); //Use these parameters for static IP |
masterkookus | 0:03ab7f7596e2 | 413 | eth.connect(); |
masterkookus | 0:03ab7f7596e2 | 414 | |
masterkookus | 8:fa2a2c3a16ce | 415 | initVoltageRegulator(&vReg1); |
masterkookus | 8:fa2a2c3a16ce | 416 | |
masterkookus | 0:03ab7f7596e2 | 417 | printf("The target IP address is '%s'\r\n", eth.get_ip_address()); |
masterkookus | 8:fa2a2c3a16ce | 418 | printf("%s\r\n",vReg1.analogs[0].analogName); |
masterkookus | 4:98cdccfb17d6 | 419 | confignetdevices(ð); |
masterkookus | 2:ec972966689e | 420 | /* Setup Ethernet to Serial Connection Thread */ |
masterkookus | 0:03ab7f7596e2 | 421 | conchkthread[0].start(callback(conchk,&net1)); |
masterkookus | 2:ec972966689e | 422 | /* Setup polltick Ticker */ |
masterkookus | 7:be13a9037d41 | 423 | nettimer.attach_us(heartbeat,10000); |
masterkookus | 2:ec972966689e | 424 | /* Setup Ethernet to Serial transmit data Thread */ |
masterkookus | 8:fa2a2c3a16ce | 425 | rxtxdatathread[0].start(callback(datansrx,&net1)); |
masterkookus | 8:fa2a2c3a16ce | 426 | rxtxdatathread[1].start(callback(datancrx,&net1)); |
masterkookus | 2:ec972966689e | 427 | /* Setup Ethernet to Serial receive data Thread */ |
masterkookus | 8:fa2a2c3a16ce | 428 | rxtxdatathread[2].start(callback(datasrx,&net1)); |
masterkookus | 8:fa2a2c3a16ce | 429 | rxtxdatathread[3].start(callback(datantx,&net1)); |
masterkookus | 8:fa2a2c3a16ce | 430 | rxtxdatathread[4].start(callback(dataprocess,&net1)); |
masterkookus | 7:be13a9037d41 | 431 | |
masterkookus | 7:be13a9037d41 | 432 | unsigned int txc; |
masterkookus | 7:be13a9037d41 | 433 | unsigned int sxc; |
masterkookus | 3:ac1f2af8bd0f | 434 | |
masterkookus | 0:03ab7f7596e2 | 435 | while (true) { |
masterkookus | 3:ac1f2af8bd0f | 436 | |
masterkookus | 3:ac1f2af8bd0f | 437 | polltick=getTick(); |
masterkookus | 3:ac1f2af8bd0f | 438 | |
masterkookus | 3:ac1f2af8bd0f | 439 | if (polltick) |
masterkookus | 3:ac1f2af8bd0f | 440 | { |
masterkookus | 3:ac1f2af8bd0f | 441 | setTick(false); |
masterkookus | 3:ac1f2af8bd0f | 442 | incTime(); |
masterkookus | 3:ac1f2af8bd0f | 443 | currenttime=getTime(); |
masterkookus | 6:9f97716eae76 | 444 | net1.pollTime++; |
masterkookus | 7:be13a9037d41 | 445 | net1.sendTime++; |
masterkookus | 6:9f97716eae76 | 446 | if (net1.srvIsActive) |
masterkookus | 0:03ab7f7596e2 | 447 | { |
masterkookus | 4:98cdccfb17d6 | 448 | net1.aliveTime++; |
masterkookus | 6:9f97716eae76 | 449 | if (net1.aliveTime>net1.aliveTimeout) |
masterkookus | 4:98cdccfb17d6 | 450 | { |
masterkookus | 4:98cdccfb17d6 | 451 | printf("Closed\r\n"); |
masterkookus | 4:98cdccfb17d6 | 452 | net1.clt_sock.close(); |
masterkookus | 6:9f97716eae76 | 453 | net1.srvIsActive=false; |
masterkookus | 6:9f97716eae76 | 454 | net1.srvCloseConnection=false; |
masterkookus | 4:98cdccfb17d6 | 455 | } |
masterkookus | 4:98cdccfb17d6 | 456 | |
masterkookus | 0:03ab7f7596e2 | 457 | } |
masterkookus | 7:be13a9037d41 | 458 | if (net1.pollEnabled) |
masterkookus | 4:98cdccfb17d6 | 459 | { |
masterkookus | 7:be13a9037d41 | 460 | if (net1.pollTime >= net1.pollInterval) |
masterkookus | 7:be13a9037d41 | 461 | { |
masterkookus | 8:fa2a2c3a16ce | 462 | sendLength.push(2); |
masterkookus | 8:fa2a2c3a16ce | 463 | for (txc=0;txc<2;txc++) |
masterkookus | 7:be13a9037d41 | 464 | { |
masterkookus | 8:fa2a2c3a16ce | 465 | sendBuffer.push(fmCmd[net1.pollState][txc]); |
masterkookus | 7:be13a9037d41 | 466 | } |
masterkookus | 7:be13a9037d41 | 467 | if (net1.sendState==0) |
masterkookus | 7:be13a9037d41 | 468 | { |
masterkookus | 7:be13a9037d41 | 469 | net1.sendState=1; |
masterkookus | 7:be13a9037d41 | 470 | net1.pollRequestSent=true; |
masterkookus | 7:be13a9037d41 | 471 | } |
masterkookus | 7:be13a9037d41 | 472 | net1.pollTime=0; |
masterkookus | 7:be13a9037d41 | 473 | } |
masterkookus | 8:fa2a2c3a16ce | 474 | if (net1.sendState==5) |
masterkookus | 7:be13a9037d41 | 475 | { |
masterkookus | 8:fa2a2c3a16ce | 476 | net1.pollTimeout++; |
masterkookus | 8:fa2a2c3a16ce | 477 | if (net1.pollTimeout==setpolltimeout) |
masterkookus | 7:be13a9037d41 | 478 | { |
masterkookus | 8:fa2a2c3a16ce | 479 | if (net1.pollRequestSent) |
masterkookus | 7:be13a9037d41 | 480 | { |
masterkookus | 8:fa2a2c3a16ce | 481 | printf("Poll Request Sent\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 482 | if (net1.pollResponseReceived==false) |
masterkookus | 8:fa2a2c3a16ce | 483 | { |
masterkookus | 8:fa2a2c3a16ce | 484 | printf("Poll Response Not Received\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 485 | } |
masterkookus | 8:fa2a2c3a16ce | 486 | else |
masterkookus | 8:fa2a2c3a16ce | 487 | { |
masterkookus | 8:fa2a2c3a16ce | 488 | printf("Poll Response Received\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 489 | } |
masterkookus | 7:be13a9037d41 | 490 | net1.pollRequestSent=false; |
masterkookus | 8:fa2a2c3a16ce | 491 | net1.pollResponseReceived=false; |
masterkookus | 8:fa2a2c3a16ce | 492 | net1.cltCloseConnection=true; |
masterkookus | 8:fa2a2c3a16ce | 493 | net1.sendState=0; |
masterkookus | 7:be13a9037d41 | 494 | } |
masterkookus | 7:be13a9037d41 | 495 | } |
masterkookus | 7:be13a9037d41 | 496 | } |
masterkookus | 8:fa2a2c3a16ce | 497 | else |
masterkookus | 8:fa2a2c3a16ce | 498 | { |
masterkookus | 8:fa2a2c3a16ce | 499 | net1.pollTimeout=0; |
masterkookus | 8:fa2a2c3a16ce | 500 | } |
masterkookus | 7:be13a9037d41 | 501 | } |
masterkookus | 7:be13a9037d41 | 502 | if (net1.sendTime == 10) |
masterkookus | 7:be13a9037d41 | 503 | { |
masterkookus | 7:be13a9037d41 | 504 | switch (net1.sendState) |
masterkookus | 5:c656fd08007b | 505 | { |
masterkookus | 5:c656fd08007b | 506 | case 1: |
masterkookus | 7:be13a9037d41 | 507 | if (!sendLength.empty()) |
masterkookus | 7:be13a9037d41 | 508 | { |
masterkookus | 7:be13a9037d41 | 509 | sendLength.pop(net1.sendLen); |
masterkookus | 7:be13a9037d41 | 510 | for (sxc=0;sxc<net1.sendLen;sxc++) |
masterkookus | 7:be13a9037d41 | 511 | { |
masterkookus | 7:be13a9037d41 | 512 | sendBuffer.pop(net1.sendString[sxc]); |
masterkookus | 7:be13a9037d41 | 513 | } |
masterkookus | 7:be13a9037d41 | 514 | } |
masterkookus | 7:be13a9037d41 | 515 | else |
masterkookus | 7:be13a9037d41 | 516 | { |
masterkookus | 7:be13a9037d41 | 517 | net1.sendState=0; |
masterkookus | 7:be13a9037d41 | 518 | } |
masterkookus | 6:9f97716eae76 | 519 | ret=net1.srv_sock.open(ð); |
masterkookus | 5:c656fd08007b | 520 | printf("Socket%d\r\n",ret); |
masterkookus | 5:c656fd08007b | 521 | if (ret < 0) |
masterkookus | 5:c656fd08007b | 522 | { |
masterkookus | 8:fa2a2c3a16ce | 523 | if (ret==-3003) |
masterkookus | 8:fa2a2c3a16ce | 524 | { |
masterkookus | 8:fa2a2c3a16ce | 525 | printf("May already be attached, attempting connect.\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 526 | } |
masterkookus | 8:fa2a2c3a16ce | 527 | else |
masterkookus | 8:fa2a2c3a16ce | 528 | { |
masterkookus | 8:fa2a2c3a16ce | 529 | net1.attachRetry = true; |
masterkookus | 8:fa2a2c3a16ce | 530 | net1.sendRetryCount=0; |
masterkookus | 8:fa2a2c3a16ce | 531 | net1.sendState=2; |
masterkookus | 8:fa2a2c3a16ce | 532 | net1.sendTime=0; |
masterkookus | 8:fa2a2c3a16ce | 533 | break; |
masterkookus | 8:fa2a2c3a16ce | 534 | } |
masterkookus | 5:c656fd08007b | 535 | } |
masterkookus | 7:be13a9037d41 | 536 | net1.sendState=3; |
masterkookus | 7:be13a9037d41 | 537 | net1.sendTime=11; |
masterkookus | 6:9f97716eae76 | 538 | net1.cltIsActive=true; |
masterkookus | 5:c656fd08007b | 539 | break; |
masterkookus | 5:c656fd08007b | 540 | case 2: |
masterkookus | 6:9f97716eae76 | 541 | ret=net1.srv_sock.open(ð); |
masterkookus | 5:c656fd08007b | 542 | printf("Socket%d\r\n",ret); |
masterkookus | 5:c656fd08007b | 543 | if (ret < 0) |
masterkookus | 5:c656fd08007b | 544 | { |
masterkookus | 7:be13a9037d41 | 545 | net1.attachRetry = true; |
masterkookus | 7:be13a9037d41 | 546 | net1.sendRetryCount++; |
masterkookus | 7:be13a9037d41 | 547 | net1.sendTime=0; |
masterkookus | 5:c656fd08007b | 548 | printf("Attach Attempt Failed, Code: %d\r\n",ret); |
masterkookus | 7:be13a9037d41 | 549 | if (net1.sendRetryCount>3) |
masterkookus | 5:c656fd08007b | 550 | { |
masterkookus | 5:c656fd08007b | 551 | printf("Communication Failed, Closing\r\n"); |
masterkookus | 7:be13a9037d41 | 552 | net1.attachRetry = false; |
masterkookus | 7:be13a9037d41 | 553 | net1.sendRetryCount = 0; |
masterkookus | 6:9f97716eae76 | 554 | net1.messageFailCount++; |
masterkookus | 7:be13a9037d41 | 555 | net1.sendState=0; |
masterkookus | 7:be13a9037d41 | 556 | net1.sendTime=0; |
masterkookus | 5:c656fd08007b | 557 | } |
masterkookus | 5:c656fd08007b | 558 | break; |
masterkookus | 5:c656fd08007b | 559 | } |
masterkookus | 7:be13a9037d41 | 560 | net1.sendState=0; |
masterkookus | 7:be13a9037d41 | 561 | net1.attachRetry = false; |
masterkookus | 7:be13a9037d41 | 562 | net1.sendTime=11; |
masterkookus | 6:9f97716eae76 | 563 | net1.cltIsActive=true; |
masterkookus | 5:c656fd08007b | 564 | break; |
masterkookus | 5:c656fd08007b | 565 | default: |
masterkookus | 7:be13a9037d41 | 566 | net1.sendTime=0; |
masterkookus | 7:be13a9037d41 | 567 | if (!sendLength.empty()) |
masterkookus | 7:be13a9037d41 | 568 | { |
masterkookus | 8:fa2a2c3a16ce | 569 | if (net1.sendState==5) |
masterkookus | 8:fa2a2c3a16ce | 570 | { |
masterkookus | 8:fa2a2c3a16ce | 571 | if (!sendLength.empty()) |
masterkookus | 8:fa2a2c3a16ce | 572 | { |
masterkookus | 8:fa2a2c3a16ce | 573 | sendLength.pop(net1.sendLen); |
masterkookus | 8:fa2a2c3a16ce | 574 | for (sxc=0;sxc<net1.sendLen;sxc++) |
masterkookus | 8:fa2a2c3a16ce | 575 | { |
masterkookus | 8:fa2a2c3a16ce | 576 | sendBuffer.pop(net1.sendString[sxc]); |
masterkookus | 8:fa2a2c3a16ce | 577 | } |
masterkookus | 8:fa2a2c3a16ce | 578 | } |
masterkookus | 8:fa2a2c3a16ce | 579 | net1.sendState=4; |
masterkookus | 8:fa2a2c3a16ce | 580 | } |
masterkookus | 8:fa2a2c3a16ce | 581 | else |
masterkookus | 8:fa2a2c3a16ce | 582 | { |
masterkookus | 8:fa2a2c3a16ce | 583 | net1.sendState=1; |
masterkookus | 8:fa2a2c3a16ce | 584 | } |
masterkookus | 7:be13a9037d41 | 585 | } |
masterkookus | 5:c656fd08007b | 586 | break; |
masterkookus | 5:c656fd08007b | 587 | } |
masterkookus | 4:98cdccfb17d6 | 588 | } |
masterkookus | 1:a57cbebba3fd | 589 | } |
masterkookus | 8:fa2a2c3a16ce | 590 | if (net1.cltCloseConnection==true) |
masterkookus | 8:fa2a2c3a16ce | 591 | { |
masterkookus | 8:fa2a2c3a16ce | 592 | printf("Client Socket Closed\r\n"); |
masterkookus | 8:fa2a2c3a16ce | 593 | net1.srv_sock.close(); |
masterkookus | 8:fa2a2c3a16ce | 594 | net1.cltIsActive=false; |
masterkookus | 8:fa2a2c3a16ce | 595 | net1.cltCloseConnection=false; |
masterkookus | 8:fa2a2c3a16ce | 596 | net1.sendState=0; |
masterkookus | 8:fa2a2c3a16ce | 597 | } |
masterkookus | 0:03ab7f7596e2 | 598 | } |
masterkookus | 0:03ab7f7596e2 | 599 | } |