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@6:9f97716eae76, 2019-09-19 (annotated)
- Committer:
- masterkookus
- Date:
- Thu Sep 19 18:14:31 2019 +0000
- Revision:
- 6:9f97716eae76
- Parent:
- 5:c656fd08007b
- Child:
- 7:be13a9037d41
Single struct for Server/Client Device
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 | 5:c656fd08007b | 12 | #include "platform/CircularBuffer.h" |
masterkookus | 0:03ab7f7596e2 | 13 | |
masterkookus | 5:c656fd08007b | 14 | static const char* mbedIp = "10.150.1.242"; //IP |
masterkookus | 0:03ab7f7596e2 | 15 | static const char* mbedMask = "255.255.255.0"; // Mask |
masterkookus | 0:03ab7f7596e2 | 16 | static const char* mbedGateway = "10.150.1.245"; //Gateway |
masterkookus | 0:03ab7f7596e2 | 17 | |
masterkookus | 0:03ab7f7596e2 | 18 | Ticker nettimer[2]; |
masterkookus | 0:03ab7f7596e2 | 19 | |
masterkookus | 6:9f97716eae76 | 20 | struct netsys net1; |
masterkookus | 1:a57cbebba3fd | 21 | |
masterkookus | 1:a57cbebba3fd | 22 | bool polltick; |
masterkookus | 0:03ab7f7596e2 | 23 | |
masterkookus | 0:03ab7f7596e2 | 24 | BufferedSerial sport0(PD_5, PD_6, 256, 4); // UART2 |
masterkookus | 0:03ab7f7596e2 | 25 | |
masterkookus | 5:c656fd08007b | 26 | CircularBuffer<char, 256> cmdbuf; |
masterkookus | 5:c656fd08007b | 27 | |
masterkookus | 0:03ab7f7596e2 | 28 | Thread conchkthread[2]; |
masterkookus | 4:98cdccfb17d6 | 29 | Thread rxtxdatathread[5]; |
masterkookus | 4:98cdccfb17d6 | 30 | |
masterkookus | 4:98cdccfb17d6 | 31 | unsigned int currenttime=0; |
masterkookus | 0:03ab7f7596e2 | 32 | |
masterkookus | 5:c656fd08007b | 33 | nsapi_error_t ret; |
masterkookus | 5:c656fd08007b | 34 | |
masterkookus | 2:ec972966689e | 35 | //Provides the deivce poll timing |
masterkookus | 1:a57cbebba3fd | 36 | void heartbeat() |
masterkookus | 1:a57cbebba3fd | 37 | { |
masterkookus | 3:ac1f2af8bd0f | 38 | //polltick=true; |
masterkookus | 3:ac1f2af8bd0f | 39 | setTick(true); |
masterkookus | 1:a57cbebba3fd | 40 | } |
masterkookus | 1:a57cbebba3fd | 41 | |
masterkookus | 4:98cdccfb17d6 | 42 | void confignetdevices(EthernetInterface *eth) |
masterkookus | 4:98cdccfb17d6 | 43 | { |
masterkookus | 6:9f97716eae76 | 44 | net1.cltPort=23; |
masterkookus | 6:9f97716eae76 | 45 | net1.srv_addr="10.150.1.241"; |
masterkookus | 6:9f97716eae76 | 46 | net1.cltIsActive=false; |
masterkookus | 6:9f97716eae76 | 47 | net1.cltCloseConnection=false; |
masterkookus | 6:9f97716eae76 | 48 | net1.pollTimeout=200; |
masterkookus | 6:9f97716eae76 | 49 | net1.pollTime=0; |
masterkookus | 6:9f97716eae76 | 50 | net1.pollInterval=200; |
masterkookus | 6:9f97716eae76 | 51 | net1.srv_sock.set_blocking(false); |
masterkookus | 6:9f97716eae76 | 52 | net1.aliveTimeout=50; |
masterkookus | 5:c656fd08007b | 53 | net1.srv.set_blocking(false); |
masterkookus | 4:98cdccfb17d6 | 54 | |
masterkookus | 4:98cdccfb17d6 | 55 | /* Open the server on ethernet stack */ |
masterkookus | 4:98cdccfb17d6 | 56 | net1.srv.open(eth); |
masterkookus | 6:9f97716eae76 | 57 | net1.srvIsActive=false; |
masterkookus | 6:9f97716eae76 | 58 | net1.srvCloseConnection=false; |
masterkookus | 4:98cdccfb17d6 | 59 | |
masterkookus | 4:98cdccfb17d6 | 60 | /* Bind port 23 to the server */ |
masterkookus | 6:9f97716eae76 | 61 | net1.srvPort=23; |
masterkookus | 6:9f97716eae76 | 62 | net1.srv.bind(net1.srvPort); |
masterkookus | 4:98cdccfb17d6 | 63 | |
masterkookus | 4:98cdccfb17d6 | 64 | /* Can handle 5 simultaneous connections */ |
masterkookus | 4:98cdccfb17d6 | 65 | net1.srv.listen(5); |
masterkookus | 4:98cdccfb17d6 | 66 | sport0.baud(9600); |
masterkookus | 4:98cdccfb17d6 | 67 | } |
masterkookus | 4:98cdccfb17d6 | 68 | |
masterkookus | 4:98cdccfb17d6 | 69 | //Ethernet to Ethernet Send Command |
masterkookus | 4:98cdccfb17d6 | 70 | void datapolltx(netsys *net2) |
masterkookus | 0:03ab7f7596e2 | 71 | { |
masterkookus | 5:c656fd08007b | 72 | char cchar; |
masterkookus | 5:c656fd08007b | 73 | char cbuf[256]; |
masterkookus | 5:c656fd08007b | 74 | unsigned int clen=0; |
masterkookus | 5:c656fd08007b | 75 | unsigned int cbc; |
masterkookus | 5:c656fd08007b | 76 | union packer4byte |
masterkookus | 5:c656fd08007b | 77 | { |
masterkookus | 5:c656fd08007b | 78 | unsigned int cmdint; |
masterkookus | 5:c656fd08007b | 79 | char bytes[4]; |
masterkookus | 5:c656fd08007b | 80 | }; |
masterkookus | 5:c656fd08007b | 81 | packer4byte cmdpack; |
masterkookus | 5:c656fd08007b | 82 | |
masterkookus | 4:98cdccfb17d6 | 83 | while(1) |
masterkookus | 0:03ab7f7596e2 | 84 | { |
masterkookus | 5:c656fd08007b | 85 | while (!cmdbuf.empty()) |
masterkookus | 5:c656fd08007b | 86 | { |
masterkookus | 5:c656fd08007b | 87 | cmdbuf.pop(cchar); |
masterkookus | 5:c656fd08007b | 88 | clen++; |
masterkookus | 5:c656fd08007b | 89 | cbuf[clen]=cchar; |
masterkookus | 5:c656fd08007b | 90 | } |
masterkookus | 5:c656fd08007b | 91 | if (clen>3) |
masterkookus | 5:c656fd08007b | 92 | { |
masterkookus | 5:c656fd08007b | 93 | printf("%d\r\n",clen); |
masterkookus | 5:c656fd08007b | 94 | //clen=0; |
masterkookus | 5:c656fd08007b | 95 | for (cbc=0;cbc<clen-5;cbc++) |
masterkookus | 5:c656fd08007b | 96 | { |
masterkookus | 5:c656fd08007b | 97 | cmdpack.bytes[3]=cbuf[cbc]; |
masterkookus | 5:c656fd08007b | 98 | cmdpack.bytes[2]=cbuf[cbc+1]; |
masterkookus | 5:c656fd08007b | 99 | cmdpack.bytes[1]=cbuf[cbc+2]; |
masterkookus | 5:c656fd08007b | 100 | cmdpack.bytes[0]=cbuf[cbc+3]; |
masterkookus | 5:c656fd08007b | 101 | if (cmdpack.cmdint==0x5469636b) |
masterkookus | 5:c656fd08007b | 102 | { |
masterkookus | 6:9f97716eae76 | 103 | printf("Tock"); |
masterkookus | 5:c656fd08007b | 104 | net2->pollTime=net2->pollInterval; |
masterkookus | 5:c656fd08007b | 105 | net2->pollState=1; |
masterkookus | 5:c656fd08007b | 106 | clen=0; |
masterkookus | 5:c656fd08007b | 107 | break; |
masterkookus | 5:c656fd08007b | 108 | } |
masterkookus | 5:c656fd08007b | 109 | } |
masterkookus | 5:c656fd08007b | 110 | } |
masterkookus | 6:9f97716eae76 | 111 | if (net2->cltIsActive) |
masterkookus | 0:03ab7f7596e2 | 112 | { |
masterkookus | 5:c656fd08007b | 113 | while (net2->pollState==3) |
masterkookus | 5:c656fd08007b | 114 | { |
masterkookus | 5:c656fd08007b | 115 | if (net2->connectRetry == true) |
masterkookus | 5:c656fd08007b | 116 | { |
masterkookus | 5:c656fd08007b | 117 | wait_ms(100); |
masterkookus | 5:c656fd08007b | 118 | } |
masterkookus | 6:9f97716eae76 | 119 | ret = net2->srv_sock.connect(net2->srv_addr,net2->cltPort); |
masterkookus | 5:c656fd08007b | 120 | if (ret==0) |
masterkookus | 5:c656fd08007b | 121 | { |
masterkookus | 5:c656fd08007b | 122 | net2->connectRetry = false; |
masterkookus | 5:c656fd08007b | 123 | printf("Connected %d\r\n",ret); |
masterkookus | 6:9f97716eae76 | 124 | net2->cltCloseConnection=true; |
masterkookus | 5:c656fd08007b | 125 | net2->pollState=4; |
masterkookus | 5:c656fd08007b | 126 | } |
masterkookus | 5:c656fd08007b | 127 | else |
masterkookus | 5:c656fd08007b | 128 | { |
masterkookus | 5:c656fd08007b | 129 | net2->connectRetry = true; |
masterkookus | 5:c656fd08007b | 130 | net2->pollRetryCount++; |
masterkookus | 5:c656fd08007b | 131 | printf("Connect Attempt Failed, Code: %d\r\n",ret); |
masterkookus | 5:c656fd08007b | 132 | if (net2->pollRetryCount>3) |
masterkookus | 5:c656fd08007b | 133 | { |
masterkookus | 5:c656fd08007b | 134 | printf("Communication Failed, Closing\r\n"); |
masterkookus | 5:c656fd08007b | 135 | net2->connectRetry = false; |
masterkookus | 5:c656fd08007b | 136 | net2->pollRetryCount = 0; |
masterkookus | 5:c656fd08007b | 137 | net2->messageFailCount++; |
masterkookus | 6:9f97716eae76 | 138 | net2->cltCloseConnection=true; |
masterkookus | 5:c656fd08007b | 139 | net2->pollState=0; |
masterkookus | 5:c656fd08007b | 140 | } |
masterkookus | 5:c656fd08007b | 141 | } |
masterkookus | 5:c656fd08007b | 142 | } |
masterkookus | 5:c656fd08007b | 143 | while (net2->pollState==4) |
masterkookus | 5:c656fd08007b | 144 | { |
masterkookus | 5:c656fd08007b | 145 | if (net2->sendRetry == true) |
masterkookus | 5:c656fd08007b | 146 | { |
masterkookus | 5:c656fd08007b | 147 | wait_ms(100); |
masterkookus | 5:c656fd08007b | 148 | } |
masterkookus | 6:9f97716eae76 | 149 | ret = net2->srv_sock.send("Tock\r\n",strlen("Tock\r\n")); |
masterkookus | 5:c656fd08007b | 150 | if (ret>=0) |
masterkookus | 5:c656fd08007b | 151 | { |
masterkookus | 5:c656fd08007b | 152 | printf("Send Result %d\r\n",ret); |
masterkookus | 5:c656fd08007b | 153 | net2->sendRetry = false; |
masterkookus | 5:c656fd08007b | 154 | net2->txMessageCount++; |
masterkookus | 6:9f97716eae76 | 155 | net2->cltCloseConnection=true; |
masterkookus | 5:c656fd08007b | 156 | net2->pollState=0; |
masterkookus | 5:c656fd08007b | 157 | } |
masterkookus | 5:c656fd08007b | 158 | else |
masterkookus | 5:c656fd08007b | 159 | { |
masterkookus | 5:c656fd08007b | 160 | net2->sendRetry = true; |
masterkookus | 5:c656fd08007b | 161 | net2->pollRetryCount++; |
masterkookus | 5:c656fd08007b | 162 | printf("Send Attempt Failed, Code: %d\r\n",ret); |
masterkookus | 5:c656fd08007b | 163 | if (net2->pollRetryCount>3) |
masterkookus | 5:c656fd08007b | 164 | { |
masterkookus | 5:c656fd08007b | 165 | printf("Communication Failed, Closing\r\n"); |
masterkookus | 5:c656fd08007b | 166 | net2->sendRetry = false; |
masterkookus | 5:c656fd08007b | 167 | net2->pollRetryCount = 0; |
masterkookus | 5:c656fd08007b | 168 | net2->messageFailCount++; |
masterkookus | 6:9f97716eae76 | 169 | net2->cltCloseConnection=true; |
masterkookus | 5:c656fd08007b | 170 | net2->pollState=0; |
masterkookus | 5:c656fd08007b | 171 | } |
masterkookus | 5:c656fd08007b | 172 | } |
masterkookus | 5:c656fd08007b | 173 | } |
masterkookus | 6:9f97716eae76 | 174 | if (net2->cltCloseConnection==true) |
masterkookus | 5:c656fd08007b | 175 | { |
masterkookus | 6:9f97716eae76 | 176 | net2->srv_sock.close(); |
masterkookus | 6:9f97716eae76 | 177 | net2->cltIsActive=false; |
masterkookus | 5:c656fd08007b | 178 | } |
masterkookus | 0:03ab7f7596e2 | 179 | } |
masterkookus | 0:03ab7f7596e2 | 180 | } |
masterkookus | 0:03ab7f7596e2 | 181 | } |
masterkookus | 0:03ab7f7596e2 | 182 | |
masterkookus | 2:ec972966689e | 183 | //Ethernet to Serial transmit data |
masterkookus | 0:03ab7f7596e2 | 184 | void datanrx(netsys *net2) |
masterkookus | 0:03ab7f7596e2 | 185 | { |
masterkookus | 0:03ab7f7596e2 | 186 | char rxbuf[256]; |
masterkookus | 0:03ab7f7596e2 | 187 | int rxlen=0; |
masterkookus | 5:c656fd08007b | 188 | int rxc; |
masterkookus | 0:03ab7f7596e2 | 189 | while (1) |
masterkookus | 0:03ab7f7596e2 | 190 | { |
masterkookus | 6:9f97716eae76 | 191 | while (net2->srvIsActive) |
masterkookus | 0:03ab7f7596e2 | 192 | { |
masterkookus | 0:03ab7f7596e2 | 193 | rxlen=net2->clt_sock.recv(rxbuf, sizeof(rxbuf)); |
masterkookus | 4:98cdccfb17d6 | 194 | if (rxlen>0) |
masterkookus | 4:98cdccfb17d6 | 195 | { |
masterkookus | 4:98cdccfb17d6 | 196 | net2->aliveTime=0; |
masterkookus | 4:98cdccfb17d6 | 197 | sport0.write(rxbuf,rxlen); |
masterkookus | 5:c656fd08007b | 198 | for (rxc = 0;rxc<rxlen;rxc++) |
masterkookus | 5:c656fd08007b | 199 | { |
masterkookus | 5:c656fd08007b | 200 | cmdbuf.push(rxbuf[rxc]); |
masterkookus | 5:c656fd08007b | 201 | } |
masterkookus | 5:c656fd08007b | 202 | net2->rxMessageCount++; |
masterkookus | 4:98cdccfb17d6 | 203 | } |
masterkookus | 0:03ab7f7596e2 | 204 | } |
masterkookus | 0:03ab7f7596e2 | 205 | } |
masterkookus | 0:03ab7f7596e2 | 206 | } |
masterkookus | 0:03ab7f7596e2 | 207 | |
masterkookus | 2:ec972966689e | 208 | //Ethernet to Serial receive data |
masterkookus | 0:03ab7f7596e2 | 209 | void datasrx(netsys *net2) |
masterkookus | 0:03ab7f7596e2 | 210 | { |
masterkookus | 0:03ab7f7596e2 | 211 | char rxbuf[256]; |
masterkookus | 0:03ab7f7596e2 | 212 | int rxlen=0; |
masterkookus | 0:03ab7f7596e2 | 213 | int rxc; |
masterkookus | 0:03ab7f7596e2 | 214 | while (1) |
masterkookus | 0:03ab7f7596e2 | 215 | { |
masterkookus | 6:9f97716eae76 | 216 | while (net2->srvIsActive) |
masterkookus | 0:03ab7f7596e2 | 217 | { |
masterkookus | 0:03ab7f7596e2 | 218 | rxlen=sport0.readable(); |
masterkookus | 0:03ab7f7596e2 | 219 | if (rxlen>0) |
masterkookus | 0:03ab7f7596e2 | 220 | { |
masterkookus | 0:03ab7f7596e2 | 221 | for (rxc = 0;rxc<rxlen;rxc++) |
masterkookus | 0:03ab7f7596e2 | 222 | { |
masterkookus | 0:03ab7f7596e2 | 223 | rxbuf[rxc] = sport0.getc(); |
masterkookus | 0:03ab7f7596e2 | 224 | } |
masterkookus | 4:98cdccfb17d6 | 225 | net2->aliveTime=0; |
masterkookus | 0:03ab7f7596e2 | 226 | net2->clt_sock.send(rxbuf, rxlen); |
masterkookus | 6:9f97716eae76 | 227 | net2->txMessageCount++; |
masterkookus | 0:03ab7f7596e2 | 228 | } |
masterkookus | 0:03ab7f7596e2 | 229 | } |
masterkookus | 0:03ab7f7596e2 | 230 | } |
masterkookus | 0:03ab7f7596e2 | 231 | } |
masterkookus | 0:03ab7f7596e2 | 232 | |
masterkookus | 2:ec972966689e | 233 | //Checks for a Ethernet to Serial connection |
masterkookus | 0:03ab7f7596e2 | 234 | void conchk(netsys *net2) |
masterkookus | 0:03ab7f7596e2 | 235 | { |
masterkookus | 0:03ab7f7596e2 | 236 | TCPServer *server=&(net2->srv); |
masterkookus | 0:03ab7f7596e2 | 237 | TCPSocket *client_socket=&(net2->clt_sock); |
masterkookus | 0:03ab7f7596e2 | 238 | SocketAddress *client_address=&(net2->clt_addr); |
masterkookus | 0:03ab7f7596e2 | 239 | |
masterkookus | 0:03ab7f7596e2 | 240 | while(1) |
masterkookus | 0:03ab7f7596e2 | 241 | { |
masterkookus | 5:c656fd08007b | 242 | while (server->accept(client_socket, client_address) < 0) |
masterkookus | 0:03ab7f7596e2 | 243 | { |
masterkookus | 5:c656fd08007b | 244 | //printf("Connection Failed.\r\n"); |
masterkookus | 0:03ab7f7596e2 | 245 | } |
masterkookus | 6:9f97716eae76 | 246 | printf("Server Port %d\r\n", net2->srvPort); |
masterkookus | 5:c656fd08007b | 247 | printf("accept %s:%d\r\n", client_address->get_ip_address(), client_address->get_port()); |
masterkookus | 5:c656fd08007b | 248 | net2->aliveTime=0; |
masterkookus | 6:9f97716eae76 | 249 | net2->srvIsActive=true; |
masterkookus | 0:03ab7f7596e2 | 250 | } |
masterkookus | 0:03ab7f7596e2 | 251 | } |
masterkookus | 0:03ab7f7596e2 | 252 | |
masterkookus | 0:03ab7f7596e2 | 253 | int main() |
masterkookus | 0:03ab7f7596e2 | 254 | { |
masterkookus | 0:03ab7f7596e2 | 255 | EthernetInterface eth; |
masterkookus | 0:03ab7f7596e2 | 256 | eth.set_network(mbedIp,mbedMask,mbedGateway); //Use these parameters for static IP |
masterkookus | 0:03ab7f7596e2 | 257 | eth.connect(); |
masterkookus | 0:03ab7f7596e2 | 258 | |
masterkookus | 0:03ab7f7596e2 | 259 | printf("The target IP address is '%s'\r\n", eth.get_ip_address()); |
masterkookus | 4:98cdccfb17d6 | 260 | confignetdevices(ð); |
masterkookus | 2:ec972966689e | 261 | /* Setup Ethernet to Serial Connection Thread */ |
masterkookus | 0:03ab7f7596e2 | 262 | conchkthread[0].start(callback(conchk,&net1)); |
masterkookus | 2:ec972966689e | 263 | /* Setup polltick Ticker */ |
masterkookus | 3:ac1f2af8bd0f | 264 | nettimer[1].attach_us(heartbeat,10000); |
masterkookus | 2:ec972966689e | 265 | /* Setup Ethernet to Serial transmit data Thread */ |
masterkookus | 0:03ab7f7596e2 | 266 | rxtxdatathread[0].start(callback(datanrx,&net1)); |
masterkookus | 2:ec972966689e | 267 | /* Setup Ethernet to Serial receive data Thread */ |
masterkookus | 0:03ab7f7596e2 | 268 | rxtxdatathread[1].start(callback(datasrx,&net1)); |
masterkookus | 6:9f97716eae76 | 269 | rxtxdatathread[2].start(callback(datapolltx,&net1)); |
masterkookus | 3:ac1f2af8bd0f | 270 | |
masterkookus | 0:03ab7f7596e2 | 271 | while (true) { |
masterkookus | 3:ac1f2af8bd0f | 272 | |
masterkookus | 3:ac1f2af8bd0f | 273 | polltick=getTick(); |
masterkookus | 3:ac1f2af8bd0f | 274 | |
masterkookus | 3:ac1f2af8bd0f | 275 | if (polltick) |
masterkookus | 3:ac1f2af8bd0f | 276 | { |
masterkookus | 3:ac1f2af8bd0f | 277 | setTick(false); |
masterkookus | 3:ac1f2af8bd0f | 278 | incTime(); |
masterkookus | 3:ac1f2af8bd0f | 279 | currenttime=getTime(); |
masterkookus | 6:9f97716eae76 | 280 | net1.pollTime++; |
masterkookus | 6:9f97716eae76 | 281 | if (net1.srvIsActive) |
masterkookus | 0:03ab7f7596e2 | 282 | { |
masterkookus | 4:98cdccfb17d6 | 283 | net1.aliveTime++; |
masterkookus | 6:9f97716eae76 | 284 | if (net1.aliveTime>net1.aliveTimeout) |
masterkookus | 4:98cdccfb17d6 | 285 | { |
masterkookus | 4:98cdccfb17d6 | 286 | printf("Closed\r\n"); |
masterkookus | 4:98cdccfb17d6 | 287 | net1.clt_sock.close(); |
masterkookus | 6:9f97716eae76 | 288 | net1.srvIsActive=false; |
masterkookus | 6:9f97716eae76 | 289 | net1.srvCloseConnection=false; |
masterkookus | 4:98cdccfb17d6 | 290 | } |
masterkookus | 4:98cdccfb17d6 | 291 | |
masterkookus | 0:03ab7f7596e2 | 292 | } |
masterkookus | 6:9f97716eae76 | 293 | if (net1.pollTime >= net1.pollInterval) |
masterkookus | 4:98cdccfb17d6 | 294 | { |
masterkookus | 6:9f97716eae76 | 295 | switch (net1.pollState) |
masterkookus | 5:c656fd08007b | 296 | { |
masterkookus | 5:c656fd08007b | 297 | case 1: |
masterkookus | 5:c656fd08007b | 298 | |
masterkookus | 6:9f97716eae76 | 299 | ret=net1.srv_sock.open(ð); |
masterkookus | 5:c656fd08007b | 300 | printf("Socket%d\r\n",ret); |
masterkookus | 5:c656fd08007b | 301 | if (ret < 0) |
masterkookus | 5:c656fd08007b | 302 | { |
masterkookus | 6:9f97716eae76 | 303 | net1.pollRetry = true; |
masterkookus | 6:9f97716eae76 | 304 | net1.pollRetryCount=0; |
masterkookus | 6:9f97716eae76 | 305 | net1.pollState=2; |
masterkookus | 6:9f97716eae76 | 306 | net1.pollTime=net1.pollInterval-10; |
masterkookus | 5:c656fd08007b | 307 | break; |
masterkookus | 5:c656fd08007b | 308 | } |
masterkookus | 6:9f97716eae76 | 309 | net1.pollState=3; |
masterkookus | 6:9f97716eae76 | 310 | net1.pollTime=0; |
masterkookus | 6:9f97716eae76 | 311 | net1.cltIsActive=true; |
masterkookus | 5:c656fd08007b | 312 | break; |
masterkookus | 5:c656fd08007b | 313 | case 2: |
masterkookus | 6:9f97716eae76 | 314 | ret=net1.srv_sock.open(ð); |
masterkookus | 5:c656fd08007b | 315 | printf("Socket%d\r\n",ret); |
masterkookus | 5:c656fd08007b | 316 | if (ret < 0) |
masterkookus | 5:c656fd08007b | 317 | { |
masterkookus | 6:9f97716eae76 | 318 | net1.pollRetry = true; |
masterkookus | 6:9f97716eae76 | 319 | net1.pollRetryCount++; |
masterkookus | 6:9f97716eae76 | 320 | net1.pollTime=net1.pollInterval-10; |
masterkookus | 5:c656fd08007b | 321 | printf("Attach Attempt Failed, Code: %d\r\n",ret); |
masterkookus | 6:9f97716eae76 | 322 | if (net1.pollRetryCount>3) |
masterkookus | 5:c656fd08007b | 323 | { |
masterkookus | 5:c656fd08007b | 324 | printf("Communication Failed, Closing\r\n"); |
masterkookus | 6:9f97716eae76 | 325 | net1.pollRetry = false; |
masterkookus | 6:9f97716eae76 | 326 | net1.pollRetryCount = 0; |
masterkookus | 6:9f97716eae76 | 327 | net1.messageFailCount++; |
masterkookus | 6:9f97716eae76 | 328 | net1.pollState=0; |
masterkookus | 6:9f97716eae76 | 329 | net1.pollTime=0; |
masterkookus | 5:c656fd08007b | 330 | } |
masterkookus | 5:c656fd08007b | 331 | break; |
masterkookus | 5:c656fd08007b | 332 | } |
masterkookus | 6:9f97716eae76 | 333 | net1.pollState=0; |
masterkookus | 6:9f97716eae76 | 334 | net1.pollRetry = false; |
masterkookus | 6:9f97716eae76 | 335 | net1.pollTime=0; |
masterkookus | 6:9f97716eae76 | 336 | net1.cltIsActive=true; |
masterkookus | 5:c656fd08007b | 337 | break; |
masterkookus | 5:c656fd08007b | 338 | default: |
masterkookus | 5:c656fd08007b | 339 | break; |
masterkookus | 5:c656fd08007b | 340 | } |
masterkookus | 4:98cdccfb17d6 | 341 | } |
masterkookus | 1:a57cbebba3fd | 342 | } |
masterkookus | 0:03ab7f7596e2 | 343 | } |
masterkookus | 0:03ab7f7596e2 | 344 | } |