lib for realteimMM funcs

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?

UserRevisionLine numberNew 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 }