lib for realteimMM funcs
Coms.cpp@5:3906f93b8b39, 2018-02-16 (annotated)
- Committer:
- GTNicholson
- Date:
- Fri Feb 16 10:03:35 2018 +0000
- Revision:
- 5:3906f93b8b39
- Parent:
- 0:9f82ee1feae7
Changing Pin assignment
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
GTNicholson | 0:9f82ee1feae7 | 1 | #include "Coms.h" |
GTNicholson | 0:9f82ee1feae7 | 2 | #include "mbed.h" |
GTNicholson | 0:9f82ee1feae7 | 3 | #include "rtos.h" |
GTNicholson | 0:9f82ee1feae7 | 4 | #include "EthernetInterface.h" |
GTNicholson | 0:9f82ee1feae7 | 5 | |
GTNicholson | 0:9f82ee1feae7 | 6 | EthernetInterface eth; |
GTNicholson | 0:9f82ee1feae7 | 7 | TCPSocketConnection sock; |
GTNicholson | 0:9f82ee1feae7 | 8 | |
GTNicholson | 0:9f82ee1feae7 | 9 | int Coms::EthernetInitialise (char* IPAddress, char* NetworkMask, char* DefaultGateway) |
GTNicholson | 0:9f82ee1feae7 | 10 | { |
GTNicholson | 0:9f82ee1feae7 | 11 | int error; |
GTNicholson | 0:9f82ee1feae7 | 12 | int retrys = 5; |
GTNicholson | 0:9f82ee1feae7 | 13 | int retval; |
GTNicholson | 0:9f82ee1feae7 | 14 | |
GTNicholson | 0:9f82ee1feae7 | 15 | while (true) |
GTNicholson | 0:9f82ee1feae7 | 16 | { |
GTNicholson | 0:9f82ee1feae7 | 17 | |
GTNicholson | 0:9f82ee1feae7 | 18 | error = eth.init(IPAddress, NetworkMask, DefaultGateway); // Use static IP |
GTNicholson | 0:9f82ee1feae7 | 19 | |
GTNicholson | 0:9f82ee1feae7 | 20 | if (error) { |
GTNicholson | 0:9f82ee1feae7 | 21 | printf("Error: Could not initialise ethernet (code %i) - Retry (%d)...\r\n", error, retrys); |
GTNicholson | 0:9f82ee1feae7 | 22 | Thread::wait(5000); |
GTNicholson | 0:9f82ee1feae7 | 23 | retrys--; |
GTNicholson | 0:9f82ee1feae7 | 24 | if (retrys) |
GTNicholson | 0:9f82ee1feae7 | 25 | continue; |
GTNicholson | 0:9f82ee1feae7 | 26 | else |
GTNicholson | 0:9f82ee1feae7 | 27 | retval=error; |
GTNicholson | 0:9f82ee1feae7 | 28 | break; |
GTNicholson | 0:9f82ee1feae7 | 29 | } |
GTNicholson | 0:9f82ee1feae7 | 30 | else { |
GTNicholson | 0:9f82ee1feae7 | 31 | printf("Ethernet Initialised\r\n"); |
GTNicholson | 0:9f82ee1feae7 | 32 | retval=0; |
GTNicholson | 0:9f82ee1feae7 | 33 | } |
GTNicholson | 0:9f82ee1feae7 | 34 | break; |
GTNicholson | 0:9f82ee1feae7 | 35 | } |
GTNicholson | 0:9f82ee1feae7 | 36 | return retval; |
GTNicholson | 0:9f82ee1feae7 | 37 | } |
GTNicholson | 0:9f82ee1feae7 | 38 | |
GTNicholson | 0:9f82ee1feae7 | 39 | char* Coms::getMACAddress() |
GTNicholson | 0:9f82ee1feae7 | 40 | { |
GTNicholson | 0:9f82ee1feae7 | 41 | return eth.getMACAddress(); |
GTNicholson | 0:9f82ee1feae7 | 42 | } |
GTNicholson | 0:9f82ee1feae7 | 43 | |
GTNicholson | 0:9f82ee1feae7 | 44 | int Coms::EthernetConnect() |
GTNicholson | 0:9f82ee1feae7 | 45 | { |
GTNicholson | 0:9f82ee1feae7 | 46 | int error; |
GTNicholson | 0:9f82ee1feae7 | 47 | int retrys = 5; |
GTNicholson | 0:9f82ee1feae7 | 48 | int retval; |
GTNicholson | 0:9f82ee1feae7 | 49 | |
GTNicholson | 0:9f82ee1feae7 | 50 | while (true) |
GTNicholson | 0:9f82ee1feae7 | 51 | { |
GTNicholson | 0:9f82ee1feae7 | 52 | error = eth.connect(30000); |
GTNicholson | 0:9f82ee1feae7 | 53 | if (error) { |
GTNicholson | 0:9f82ee1feae7 | 54 | printf("Error: Could not obtain IP address (code %i) - Retry (%d)...\r\n", error, retrys); |
GTNicholson | 0:9f82ee1feae7 | 55 | retrys--; |
GTNicholson | 0:9f82ee1feae7 | 56 | if (retrys) |
GTNicholson | 0:9f82ee1feae7 | 57 | continue; |
GTNicholson | 0:9f82ee1feae7 | 58 | else |
GTNicholson | 0:9f82ee1feae7 | 59 | retval=error; |
GTNicholson | 0:9f82ee1feae7 | 60 | break; |
GTNicholson | 0:9f82ee1feae7 | 61 | } |
GTNicholson | 0:9f82ee1feae7 | 62 | else { |
GTNicholson | 0:9f82ee1feae7 | 63 | printf("Ethernet connected\r\n"); |
GTNicholson | 0:9f82ee1feae7 | 64 | retval=0; |
GTNicholson | 0:9f82ee1feae7 | 65 | } |
GTNicholson | 0:9f82ee1feae7 | 66 | break; |
GTNicholson | 0:9f82ee1feae7 | 67 | } |
GTNicholson | 0:9f82ee1feae7 | 68 | return retval; |
GTNicholson | 0:9f82ee1feae7 | 69 | } |
GTNicholson | 0:9f82ee1feae7 | 70 | |
GTNicholson | 0:9f82ee1feae7 | 71 | void Coms::EthernetDisconnect() |
GTNicholson | 0:9f82ee1feae7 | 72 | { |
GTNicholson | 0:9f82ee1feae7 | 73 | eth.disconnect(); |
GTNicholson | 0:9f82ee1feae7 | 74 | } |
GTNicholson | 0:9f82ee1feae7 | 75 | |
GTNicholson | 0:9f82ee1feae7 | 76 | int Coms::EthernetSocketConnect (char* IPAddress, int Port) |
GTNicholson | 0:9f82ee1feae7 | 77 | { |
GTNicholson | 0:9f82ee1feae7 | 78 | int error; |
GTNicholson | 0:9f82ee1feae7 | 79 | int retrys = 5; |
GTNicholson | 0:9f82ee1feae7 | 80 | int retval; |
GTNicholson | 0:9f82ee1feae7 | 81 | |
GTNicholson | 0:9f82ee1feae7 | 82 | while (true) |
GTNicholson | 0:9f82ee1feae7 | 83 | { |
GTNicholson | 0:9f82ee1feae7 | 84 | |
GTNicholson | 0:9f82ee1feae7 | 85 | error = sock.connect(IPAddress, Port); |
GTNicholson | 0:9f82ee1feae7 | 86 | |
GTNicholson | 0:9f82ee1feae7 | 87 | if (error) { |
GTNicholson | 0:9f82ee1feae7 | 88 | printf("Error: Could not connect (code %i). Retry (%d) in 2s...\r\n", error, retrys); |
GTNicholson | 0:9f82ee1feae7 | 89 | Thread::wait(2000); |
GTNicholson | 0:9f82ee1feae7 | 90 | retrys--; |
GTNicholson | 0:9f82ee1feae7 | 91 | if (retrys) |
GTNicholson | 0:9f82ee1feae7 | 92 | continue; |
GTNicholson | 0:9f82ee1feae7 | 93 | else |
GTNicholson | 0:9f82ee1feae7 | 94 | retval=error; |
GTNicholson | 0:9f82ee1feae7 | 95 | break; |
GTNicholson | 0:9f82ee1feae7 | 96 | } |
GTNicholson | 0:9f82ee1feae7 | 97 | else { |
GTNicholson | 0:9f82ee1feae7 | 98 | retval=0; |
GTNicholson | 0:9f82ee1feae7 | 99 | printf("Socket Connected\r\n"); |
GTNicholson | 0:9f82ee1feae7 | 100 | } |
GTNicholson | 0:9f82ee1feae7 | 101 | break; |
GTNicholson | 0:9f82ee1feae7 | 102 | } |
GTNicholson | 0:9f82ee1feae7 | 103 | return retval; |
GTNicholson | 0:9f82ee1feae7 | 104 | } |
GTNicholson | 0:9f82ee1feae7 | 105 | |
GTNicholson | 0:9f82ee1feae7 | 106 | int Coms::EthernetSocketSendAll (char* datasample, int samplesize) |
GTNicholson | 0:9f82ee1feae7 | 107 | { |
GTNicholson | 0:9f82ee1feae7 | 108 | int error; |
GTNicholson | 0:9f82ee1feae7 | 109 | int retrys = 5; |
GTNicholson | 0:9f82ee1feae7 | 110 | int retval; |
GTNicholson | 0:9f82ee1feae7 | 111 | |
GTNicholson | 0:9f82ee1feae7 | 112 | while (true) |
GTNicholson | 0:9f82ee1feae7 | 113 | { |
GTNicholson | 0:9f82ee1feae7 | 114 | |
GTNicholson | 0:9f82ee1feae7 | 115 | //error = sock.send_all(datasample, sizeof(datasample)-1); |
GTNicholson | 0:9f82ee1feae7 | 116 | error = sock.send_all(datasample, samplesize); |
GTNicholson | 0:9f82ee1feae7 | 117 | |
GTNicholson | 0:9f82ee1feae7 | 118 | printf("Sending %s length %i\r\n",datasample,samplesize); |
GTNicholson | 0:9f82ee1feae7 | 119 | |
GTNicholson | 0:9f82ee1feae7 | 120 | if (error<1) |
GTNicholson | 0:9f82ee1feae7 | 121 | { |
GTNicholson | 0:9f82ee1feae7 | 122 | printf("Error: Could not send http request (code %i) - Retry (%d) in 1s...\r\n", error, retrys); |
GTNicholson | 0:9f82ee1feae7 | 123 | Thread::wait(1000); |
GTNicholson | 0:9f82ee1feae7 | 124 | retrys--; |
GTNicholson | 0:9f82ee1feae7 | 125 | if (retrys) |
GTNicholson | 0:9f82ee1feae7 | 126 | continue; |
GTNicholson | 0:9f82ee1feae7 | 127 | else |
GTNicholson | 0:9f82ee1feae7 | 128 | retval=error; |
GTNicholson | 0:9f82ee1feae7 | 129 | break; |
GTNicholson | 0:9f82ee1feae7 | 130 | } |
GTNicholson | 0:9f82ee1feae7 | 131 | printf("Message Sent\r\n"); |
GTNicholson | 0:9f82ee1feae7 | 132 | retval=0; |
GTNicholson | 0:9f82ee1feae7 | 133 | break; |
GTNicholson | 0:9f82ee1feae7 | 134 | } |
GTNicholson | 0:9f82ee1feae7 | 135 | return retval; |
GTNicholson | 0:9f82ee1feae7 | 136 | } |
GTNicholson | 0:9f82ee1feae7 | 137 | |
GTNicholson | 0:9f82ee1feae7 | 138 | |
GTNicholson | 0:9f82ee1feae7 | 139 | int Coms::EthernetSocketReceive (char* datasample, int samplesize) |
GTNicholson | 0:9f82ee1feae7 | 140 | { |
GTNicholson | 0:9f82ee1feae7 | 141 | int retval; |
GTNicholson | 0:9f82ee1feae7 | 142 | retval = sock.receive(datasample, samplesize); |
GTNicholson | 0:9f82ee1feae7 | 143 | return retval; |
GTNicholson | 0:9f82ee1feae7 | 144 | } |
GTNicholson | 0:9f82ee1feae7 | 145 | |
GTNicholson | 0:9f82ee1feae7 | 146 | int Coms::EthernetSocketClose() |
GTNicholson | 0:9f82ee1feae7 | 147 | { |
GTNicholson | 0:9f82ee1feae7 | 148 | sock.close(); |
GTNicholson | 0:9f82ee1feae7 | 149 | } |