my
Dependencies: EthernetInterface FreescaleIAP WebSocketClient mbed-rtos mbed-src3
main.cpp@0:e1b66b594d8c, 2016-11-23 (annotated)
- Committer:
- zain_mbed
- Date:
- Wed Nov 23 11:58:46 2016 +0000
- Revision:
- 0:e1b66b594d8c
ll
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zain_mbed | 0:e1b66b594d8c | 1 | #include "mbed.h" |
zain_mbed | 0:e1b66b594d8c | 2 | #include "EthernetInterface.h" |
zain_mbed | 0:e1b66b594d8c | 3 | #include "Websocket.h" |
zain_mbed | 0:e1b66b594d8c | 4 | #include "FreescaleIAP.h" |
zain_mbed | 0:e1b66b594d8c | 5 | #define ECHO_SERVER_PORT 560 |
zain_mbed | 0:e1b66b594d8c | 6 | extern "C" void mbed_reset(); |
zain_mbed | 0:e1b66b594d8c | 7 | extern "C" void mbed_mac_address(char *mac); |
zain_mbed | 0:e1b66b594d8c | 8 | TCPSocketServer server2; |
zain_mbed | 0:e1b66b594d8c | 9 | TCPSocketConnection client; |
zain_mbed | 0:e1b66b594d8c | 10 | DigitalOut green(LED_GREEN); |
zain_mbed | 0:e1b66b594d8c | 11 | DigitalOut red(LED_RED); |
zain_mbed | 0:e1b66b594d8c | 12 | DigitalOut blue(LED_BLUE); |
zain_mbed | 0:e1b66b594d8c | 13 | DigitalOut inpin(PTC2); |
zain_mbed | 0:e1b66b594d8c | 14 | InterruptIn pb(PTC3); |
zain_mbed | 0:e1b66b594d8c | 15 | Serial pc(USBTX, USBRX); |
zain_mbed | 0:e1b66b594d8c | 16 | Serial xbee(PTC17,PTC16); // uart rx |
zain_mbed | 0:e1b66b594d8c | 17 | bool flag=false; |
zain_mbed | 0:e1b66b594d8c | 18 | int i=0; |
zain_mbed | 0:e1b66b594d8c | 19 | |
zain_mbed | 0:e1b66b594d8c | 20 | EthernetInterface eth; |
zain_mbed | 0:e1b66b594d8c | 21 | |
zain_mbed | 0:e1b66b594d8c | 22 | char *sourceip; |
zain_mbed | 0:e1b66b594d8c | 23 | char *swebsocket=NULL; |
zain_mbed | 0:e1b66b594d8c | 24 | char *sip=NULL; |
zain_mbed | 0:e1b66b594d8c | 25 | char *ssubnet=NULL; |
zain_mbed | 0:e1b66b594d8c | 26 | char *sgw=NULL; |
zain_mbed | 0:e1b66b594d8c | 27 | char *spch=NULL; |
zain_mbed | 0:e1b66b594d8c | 28 | int counter=0; |
zain_mbed | 0:e1b66b594d8c | 29 | int k=0; |
zain_mbed | 0:e1b66b594d8c | 30 | char id[20]; |
zain_mbed | 0:e1b66b594d8c | 31 | |
zain_mbed | 0:e1b66b594d8c | 32 | void pb_hit_interrupt (void) |
zain_mbed | 0:e1b66b594d8c | 33 | { |
zain_mbed | 0:e1b66b594d8c | 34 | inpin=0; |
zain_mbed | 0:e1b66b594d8c | 35 | int address = flash_size() - SECTOR_SIZE; |
zain_mbed | 0:e1b66b594d8c | 36 | erase_sector(address); |
zain_mbed | 0:e1b66b594d8c | 37 | green=1; |
zain_mbed | 0:e1b66b594d8c | 38 | red=1; |
zain_mbed | 0:e1b66b594d8c | 39 | blue=0; |
zain_mbed | 0:e1b66b594d8c | 40 | wait(3); |
zain_mbed | 0:e1b66b594d8c | 41 | NVIC_SystemReset(); |
zain_mbed | 0:e1b66b594d8c | 42 | } |
zain_mbed | 0:e1b66b594d8c | 43 | |
zain_mbed | 0:e1b66b594d8c | 44 | |
zain_mbed | 0:e1b66b594d8c | 45 | string memory() |
zain_mbed | 0:e1b66b594d8c | 46 | { |
zain_mbed | 0:e1b66b594d8c | 47 | inpin=0; |
zain_mbed | 0:e1b66b594d8c | 48 | |
zain_mbed | 0:e1b66b594d8c | 49 | pb.mode(PullUp); |
zain_mbed | 0:e1b66b594d8c | 50 | // Delay for initial pullup to take effect |
zain_mbed | 0:e1b66b594d8c | 51 | wait(.01); |
zain_mbed | 0:e1b66b594d8c | 52 | // Attach the address of the interrupt handler routine for pushbutton |
zain_mbed | 0:e1b66b594d8c | 53 | pb.fall(&pb_hit_interrupt); |
zain_mbed | 0:e1b66b594d8c | 54 | printf("in memory \n"); |
zain_mbed | 0:e1b66b594d8c | 55 | int address = flash_size() - SECTOR_SIZE; //Write in last sector |
zain_mbed | 0:e1b66b594d8c | 56 | char *data = (char *)address; |
zain_mbed | 0:e1b66b594d8c | 57 | char back[65]; |
zain_mbed | 0:e1b66b594d8c | 58 | strncpy(back,data,65); |
zain_mbed | 0:e1b66b594d8c | 59 | back[strlen(back)]='\0'; |
zain_mbed | 0:e1b66b594d8c | 60 | //printf("back %s \n",back); |
zain_mbed | 0:e1b66b594d8c | 61 | int length=strlen(back); |
zain_mbed | 0:e1b66b594d8c | 62 | printf("\n length: %d \n",length); |
zain_mbed | 0:e1b66b594d8c | 63 | // char c="."; |
zain_mbed | 0:e1b66b594d8c | 64 | int k=0; |
zain_mbed | 0:e1b66b594d8c | 65 | for (int i=0;i<60;i++) |
zain_mbed | 0:e1b66b594d8c | 66 | { |
zain_mbed | 0:e1b66b594d8c | 67 | printf("%c",data[i]); |
zain_mbed | 0:e1b66b594d8c | 68 | if(data[i]=='.') |
zain_mbed | 0:e1b66b594d8c | 69 | { |
zain_mbed | 0:e1b66b594d8c | 70 | k++; |
zain_mbed | 0:e1b66b594d8c | 71 | } |
zain_mbed | 0:e1b66b594d8c | 72 | |
zain_mbed | 0:e1b66b594d8c | 73 | } |
zain_mbed | 0:e1b66b594d8c | 74 | printf("\n k %d \n",k); |
zain_mbed | 0:e1b66b594d8c | 75 | if (k>5){ |
zain_mbed | 0:e1b66b594d8c | 76 | |
zain_mbed | 0:e1b66b594d8c | 77 | spch = strtok (back,","); |
zain_mbed | 0:e1b66b594d8c | 78 | swebsocket=spch; |
zain_mbed | 0:e1b66b594d8c | 79 | swebsocket[strlen(swebsocket)]='\0'; |
zain_mbed | 0:e1b66b594d8c | 80 | |
zain_mbed | 0:e1b66b594d8c | 81 | spch = strtok (NULL, ","); |
zain_mbed | 0:e1b66b594d8c | 82 | sip=spch; |
zain_mbed | 0:e1b66b594d8c | 83 | sip[strlen(sip)]='\0'; |
zain_mbed | 0:e1b66b594d8c | 84 | spch = strtok (NULL, ","); |
zain_mbed | 0:e1b66b594d8c | 85 | ssubnet=spch; |
zain_mbed | 0:e1b66b594d8c | 86 | ssubnet[strlen(ssubnet)]='\0'; |
zain_mbed | 0:e1b66b594d8c | 87 | spch = strtok (NULL, ","); |
zain_mbed | 0:e1b66b594d8c | 88 | sgw=spch; |
zain_mbed | 0:e1b66b594d8c | 89 | spch = strtok (NULL, ","); |
zain_mbed | 0:e1b66b594d8c | 90 | |
zain_mbed | 0:e1b66b594d8c | 91 | printf(swebsocket); |
zain_mbed | 0:e1b66b594d8c | 92 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 93 | |
zain_mbed | 0:e1b66b594d8c | 94 | printf(sip); |
zain_mbed | 0:e1b66b594d8c | 95 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 96 | |
zain_mbed | 0:e1b66b594d8c | 97 | printf(ssubnet); |
zain_mbed | 0:e1b66b594d8c | 98 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 99 | |
zain_mbed | 0:e1b66b594d8c | 100 | printf(sgw); |
zain_mbed | 0:e1b66b594d8c | 101 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 102 | |
zain_mbed | 0:e1b66b594d8c | 103 | eth.init(sip,ssubnet,sgw); |
zain_mbed | 0:e1b66b594d8c | 104 | eth.connect(); |
zain_mbed | 0:e1b66b594d8c | 105 | char *mac; |
zain_mbed | 0:e1b66b594d8c | 106 | mac=eth.getMACAddress(); |
zain_mbed | 0:e1b66b594d8c | 107 | sourceip=eth.getIPAddress(); |
zain_mbed | 0:e1b66b594d8c | 108 | pc.printf("mac - ddress: %s \r\n",mac); |
zain_mbed | 0:e1b66b594d8c | 109 | int l =strlen (mac); |
zain_mbed | 0:e1b66b594d8c | 110 | |
zain_mbed | 0:e1b66b594d8c | 111 | strncpy(id,mac,l); |
zain_mbed | 0:e1b66b594d8c | 112 | printf("mac_addr is id %s \n",id); |
zain_mbed | 0:e1b66b594d8c | 113 | int hhh=strlen(id); |
zain_mbed | 0:e1b66b594d8c | 114 | printf("mac_addr len %d \n",hhh); |
zain_mbed | 0:e1b66b594d8c | 115 | id[hhh]='\0'; |
zain_mbed | 0:e1b66b594d8c | 116 | pc.printf("Connected - IP address: %s \r\n",eth.getIPAddress()); |
zain_mbed | 0:e1b66b594d8c | 117 | printf("swebsocket length %d \n",strlen(swebsocket)); |
zain_mbed | 0:e1b66b594d8c | 118 | |
zain_mbed | 0:e1b66b594d8c | 119 | } |
zain_mbed | 0:e1b66b594d8c | 120 | |
zain_mbed | 0:e1b66b594d8c | 121 | return swebsocket; |
zain_mbed | 0:e1b66b594d8c | 122 | } |
zain_mbed | 0:e1b66b594d8c | 123 | |
zain_mbed | 0:e1b66b594d8c | 124 | void ftc() |
zain_mbed | 0:e1b66b594d8c | 125 | { inpin=0; |
zain_mbed | 0:e1b66b594d8c | 126 | printf("\n first time configuration \n"); |
zain_mbed | 0:e1b66b594d8c | 127 | eth.init("192.168.68.100","255.255.255.0","192.168.68.1"); |
zain_mbed | 0:e1b66b594d8c | 128 | char *mac; |
zain_mbed | 0:e1b66b594d8c | 129 | mac=eth.getMACAddress(); |
zain_mbed | 0:e1b66b594d8c | 130 | sourceip=eth.getIPAddress(); |
zain_mbed | 0:e1b66b594d8c | 131 | eth.connect(); |
zain_mbed | 0:e1b66b594d8c | 132 | pc.printf("mac - ddress: %s \r\n",mac); |
zain_mbed | 0:e1b66b594d8c | 133 | pc.printf("Connected - IP address: %s \r\n",sourceip); |
zain_mbed | 0:e1b66b594d8c | 134 | server2.bind(ECHO_SERVER_PORT); |
zain_mbed | 0:e1b66b594d8c | 135 | server2.listen(); |
zain_mbed | 0:e1b66b594d8c | 136 | printf("Waiting for connection \n");; |
zain_mbed | 0:e1b66b594d8c | 137 | server2.accept(client); |
zain_mbed | 0:e1b66b594d8c | 138 | // client.set_blocking(false, 1500); // Timeout after (1.5)s |
zain_mbed | 0:e1b66b594d8c | 139 | |
zain_mbed | 0:e1b66b594d8c | 140 | printf("Connection from: %s\n", client.get_address()); |
zain_mbed | 0:e1b66b594d8c | 141 | // |
zain_mbed | 0:e1b66b594d8c | 142 | char buffer[256]; |
zain_mbed | 0:e1b66b594d8c | 143 | while (true) { |
zain_mbed | 0:e1b66b594d8c | 144 | strcat(mac,"."); |
zain_mbed | 0:e1b66b594d8c | 145 | client.send(mac, strlen(mac)); |
zain_mbed | 0:e1b66b594d8c | 146 | int n = client.receive(buffer, sizeof(buffer)); |
zain_mbed | 0:e1b66b594d8c | 147 | if (n <= 0) break; |
zain_mbed | 0:e1b66b594d8c | 148 | |
zain_mbed | 0:e1b66b594d8c | 149 | // print received message to terminal |
zain_mbed | 0:e1b66b594d8c | 150 | buffer[n] = '\0'; |
zain_mbed | 0:e1b66b594d8c | 151 | printf("Received message from Client :'%s'\n",buffer); |
zain_mbed | 0:e1b66b594d8c | 152 | int kn=strlen(buffer); |
zain_mbed | 0:e1b66b594d8c | 153 | if (kn>5) |
zain_mbed | 0:e1b66b594d8c | 154 | { |
zain_mbed | 0:e1b66b594d8c | 155 | printf("actual message from Client :'%s'\n",buffer); |
zain_mbed | 0:e1b66b594d8c | 156 | int address = flash_size() - SECTOR_SIZE; //Write in last sector |
zain_mbed | 0:e1b66b594d8c | 157 | printf("address %d \n",address); |
zain_mbed | 0:e1b66b594d8c | 158 | char *data = (char *)address; |
zain_mbed | 0:e1b66b594d8c | 159 | printf(" \n Starting\r\n"); |
zain_mbed | 0:e1b66b594d8c | 160 | erase_sector(address); |
zain_mbed | 0:e1b66b594d8c | 161 | |
zain_mbed | 0:e1b66b594d8c | 162 | int len=strlen(buffer); |
zain_mbed | 0:e1b66b594d8c | 163 | printf("store length %d \n",len); |
zain_mbed | 0:e1b66b594d8c | 164 | program_flash(address, buffer,len); //10 integers of 4 bytes each: 40 bytes length |
zain_mbed | 0:e1b66b594d8c | 165 | printf("Resulting flash: \r\n"); |
zain_mbed | 0:e1b66b594d8c | 166 | printf("stored data %s\r\n", data); |
zain_mbed | 0:e1b66b594d8c | 167 | printf("Done\r\n\n"); |
zain_mbed | 0:e1b66b594d8c | 168 | client.send("received", 9); |
zain_mbed | 0:e1b66b594d8c | 169 | NVIC_SystemReset(); |
zain_mbed | 0:e1b66b594d8c | 170 | } |
zain_mbed | 0:e1b66b594d8c | 171 | // reverse the message |
zain_mbed | 0:e1b66b594d8c | 172 | |
zain_mbed | 0:e1b66b594d8c | 173 | if (n <= 0) break; |
zain_mbed | 0:e1b66b594d8c | 174 | } |
zain_mbed | 0:e1b66b594d8c | 175 | |
zain_mbed | 0:e1b66b594d8c | 176 | client.close(); |
zain_mbed | 0:e1b66b594d8c | 177 | |
zain_mbed | 0:e1b66b594d8c | 178 | NVIC_SystemReset(); |
zain_mbed | 0:e1b66b594d8c | 179 | } |
zain_mbed | 0:e1b66b594d8c | 180 | |
zain_mbed | 0:e1b66b594d8c | 181 | |
zain_mbed | 0:e1b66b594d8c | 182 | |
zain_mbed | 0:e1b66b594d8c | 183 | |
zain_mbed | 0:e1b66b594d8c | 184 | |
zain_mbed | 0:e1b66b594d8c | 185 | |
zain_mbed | 0:e1b66b594d8c | 186 | int main() |
zain_mbed | 0:e1b66b594d8c | 187 | { |
zain_mbed | 0:e1b66b594d8c | 188 | inpin=0; |
zain_mbed | 0:e1b66b594d8c | 189 | pb.mode(PullUp); |
zain_mbed | 0:e1b66b594d8c | 190 | // Delay for initial pullup to take effect |
zain_mbed | 0:e1b66b594d8c | 191 | wait(.01); |
zain_mbed | 0:e1b66b594d8c | 192 | // Attach the address of the interrupt handler routine for pushbutton |
zain_mbed | 0:e1b66b594d8c | 193 | pb.fall(&pb_hit_interrupt); |
zain_mbed | 0:e1b66b594d8c | 194 | |
zain_mbed | 0:e1b66b594d8c | 195 | printf("Hello World\n"); |
zain_mbed | 0:e1b66b594d8c | 196 | char macc[6]; |
zain_mbed | 0:e1b66b594d8c | 197 | |
zain_mbed | 0:e1b66b594d8c | 198 | |
zain_mbed | 0:e1b66b594d8c | 199 | char *w_socket_addr=new char [50]; |
zain_mbed | 0:e1b66b594d8c | 200 | wait(3); |
zain_mbed | 0:e1b66b594d8c | 201 | string wes= memory(); |
zain_mbed | 0:e1b66b594d8c | 202 | const char *web_socket_ip=wes.c_str(); |
zain_mbed | 0:e1b66b594d8c | 203 | printf("return string %s \n",web_socket_ip); |
zain_mbed | 0:e1b66b594d8c | 204 | int hkh=strlen(web_socket_ip); |
zain_mbed | 0:e1b66b594d8c | 205 | printf("string length %d \n",hkh); |
zain_mbed | 0:e1b66b594d8c | 206 | |
zain_mbed | 0:e1b66b594d8c | 207 | char buf[200]; |
zain_mbed | 0:e1b66b594d8c | 208 | |
zain_mbed | 0:e1b66b594d8c | 209 | xbee.baud(9600); |
zain_mbed | 0:e1b66b594d8c | 210 | |
zain_mbed | 0:e1b66b594d8c | 211 | |
zain_mbed | 0:e1b66b594d8c | 212 | |
zain_mbed | 0:e1b66b594d8c | 213 | |
zain_mbed | 0:e1b66b594d8c | 214 | if (hkh>0) |
zain_mbed | 0:e1b66b594d8c | 215 | { |
zain_mbed | 0:e1b66b594d8c | 216 | strcpy(w_socket_addr,"ws://"); |
zain_mbed | 0:e1b66b594d8c | 217 | strcat(w_socket_addr,web_socket_ip); |
zain_mbed | 0:e1b66b594d8c | 218 | strcat(w_socket_addr,"/EchoChamber/echo"); |
zain_mbed | 0:e1b66b594d8c | 219 | |
zain_mbed | 0:e1b66b594d8c | 220 | } |
zain_mbed | 0:e1b66b594d8c | 221 | else |
zain_mbed | 0:e1b66b594d8c | 222 | { |
zain_mbed | 0:e1b66b594d8c | 223 | |
zain_mbed | 0:e1b66b594d8c | 224 | ftc(); |
zain_mbed | 0:e1b66b594d8c | 225 | } |
zain_mbed | 0:e1b66b594d8c | 226 | w_socket_addr[strlen(w_socket_addr)]='\0'; |
zain_mbed | 0:e1b66b594d8c | 227 | Websocket ws(w_socket_addr); |
zain_mbed | 0:e1b66b594d8c | 228 | printf("connecting to webserver \n"); |
zain_mbed | 0:e1b66b594d8c | 229 | ws.connect(); |
zain_mbed | 0:e1b66b594d8c | 230 | printf("connected \n"); |
zain_mbed | 0:e1b66b594d8c | 231 | |
zain_mbed | 0:e1b66b594d8c | 232 | xbee.printf("ar\n"); |
zain_mbed | 0:e1b66b594d8c | 233 | if(xbee.readable()) |
zain_mbed | 0:e1b66b594d8c | 234 | {xbee.gets(buf,25); |
zain_mbed | 0:e1b66b594d8c | 235 | printf(buf); |
zain_mbed | 0:e1b66b594d8c | 236 | } |
zain_mbed | 0:e1b66b594d8c | 237 | wait(1); |
zain_mbed | 0:e1b66b594d8c | 238 | xbee.printf("AT$sr\n"); |
zain_mbed | 0:e1b66b594d8c | 239 | char *ip=NULL; |
zain_mbed | 0:e1b66b594d8c | 240 | char *subnet=NULL; |
zain_mbed | 0:e1b66b594d8c | 241 | char *gw=NULL; |
zain_mbed | 0:e1b66b594d8c | 242 | |
zain_mbed | 0:e1b66b594d8c | 243 | char *rxid; |
zain_mbed | 0:e1b66b594d8c | 244 | |
zain_mbed | 0:e1b66b594d8c | 245 | char m[100]; |
zain_mbed | 0:e1b66b594d8c | 246 | char *pch; |
zain_mbed | 0:e1b66b594d8c | 247 | wait(1); |
zain_mbed | 0:e1b66b594d8c | 248 | bool a; |
zain_mbed | 0:e1b66b594d8c | 249 | |
zain_mbed | 0:e1b66b594d8c | 250 | |
zain_mbed | 0:e1b66b594d8c | 251 | |
zain_mbed | 0:e1b66b594d8c | 252 | |
zain_mbed | 0:e1b66b594d8c | 253 | |
zain_mbed | 0:e1b66b594d8c | 254 | while(1) |
zain_mbed | 0:e1b66b594d8c | 255 | { green=1; |
zain_mbed | 0:e1b66b594d8c | 256 | red=0; |
zain_mbed | 0:e1b66b594d8c | 257 | blue=1; |
zain_mbed | 0:e1b66b594d8c | 258 | if (i>=455000) |
zain_mbed | 0:e1b66b594d8c | 259 | { |
zain_mbed | 0:e1b66b594d8c | 260 | |
zain_mbed | 0:e1b66b594d8c | 261 | if(ws.is_connected()) |
zain_mbed | 0:e1b66b594d8c | 262 | { counter=counter+1; |
zain_mbed | 0:e1b66b594d8c | 263 | printf("keep alive \n"); |
zain_mbed | 0:e1b66b594d8c | 264 | ws.send("keep alive"); |
zain_mbed | 0:e1b66b594d8c | 265 | |
zain_mbed | 0:e1b66b594d8c | 266 | //printf(ws); |
zain_mbed | 0:e1b66b594d8c | 267 | } |
zain_mbed | 0:e1b66b594d8c | 268 | |
zain_mbed | 0:e1b66b594d8c | 269 | if(!ws.is_connected()) |
zain_mbed | 0:e1b66b594d8c | 270 | { printf("not alive \n"); |
zain_mbed | 0:e1b66b594d8c | 271 | |
zain_mbed | 0:e1b66b594d8c | 272 | NVIC_SystemReset(); |
zain_mbed | 0:e1b66b594d8c | 273 | } |
zain_mbed | 0:e1b66b594d8c | 274 | |
zain_mbed | 0:e1b66b594d8c | 275 | i=0; |
zain_mbed | 0:e1b66b594d8c | 276 | |
zain_mbed | 0:e1b66b594d8c | 277 | } |
zain_mbed | 0:e1b66b594d8c | 278 | i++; |
zain_mbed | 0:e1b66b594d8c | 279 | if (counter>=2) |
zain_mbed | 0:e1b66b594d8c | 280 | { |
zain_mbed | 0:e1b66b594d8c | 281 | printf("counter %d \n",counter);; |
zain_mbed | 0:e1b66b594d8c | 282 | printf("reset \n"); |
zain_mbed | 0:e1b66b594d8c | 283 | |
zain_mbed | 0:e1b66b594d8c | 284 | // ws.fillFields("ws://192.168.0.54:8080/EchoChamber/echo"); |
zain_mbed | 0:e1b66b594d8c | 285 | NVIC_SystemReset(); |
zain_mbed | 0:e1b66b594d8c | 286 | ws.close(); |
zain_mbed | 0:e1b66b594d8c | 287 | // eth.disconnect(); |
zain_mbed | 0:e1b66b594d8c | 288 | |
zain_mbed | 0:e1b66b594d8c | 289 | |
zain_mbed | 0:e1b66b594d8c | 290 | |
zain_mbed | 0:e1b66b594d8c | 291 | |
zain_mbed | 0:e1b66b594d8c | 292 | } |
zain_mbed | 0:e1b66b594d8c | 293 | |
zain_mbed | 0:e1b66b594d8c | 294 | |
zain_mbed | 0:e1b66b594d8c | 295 | |
zain_mbed | 0:e1b66b594d8c | 296 | if(xbee.readable()) |
zain_mbed | 0:e1b66b594d8c | 297 | { |
zain_mbed | 0:e1b66b594d8c | 298 | green=0; |
zain_mbed | 0:e1b66b594d8c | 299 | red=1; |
zain_mbed | 0:e1b66b594d8c | 300 | blue=1; |
zain_mbed | 0:e1b66b594d8c | 301 | memset(buf, 0, sizeof(buf)); |
zain_mbed | 0:e1b66b594d8c | 302 | xbee.gets(buf,27); |
zain_mbed | 0:e1b66b594d8c | 303 | char end[5]="end"; |
zain_mbed | 0:e1b66b594d8c | 304 | printf(" \n received buffer %s \n",buf); |
zain_mbed | 0:e1b66b594d8c | 305 | printf("counter %d \n",counter); |
zain_mbed | 0:e1b66b594d8c | 306 | |
zain_mbed | 0:e1b66b594d8c | 307 | strcat(buf,id); |
zain_mbed | 0:e1b66b594d8c | 308 | strcat(buf,end); |
zain_mbed | 0:e1b66b594d8c | 309 | printf("\n buffer is %s \n",id); |
zain_mbed | 0:e1b66b594d8c | 310 | char start[100]="start"; |
zain_mbed | 0:e1b66b594d8c | 311 | int tsy=strlen(buf); |
zain_mbed | 0:e1b66b594d8c | 312 | printf("len %d \n",tsy); |
zain_mbed | 0:e1b66b594d8c | 313 | if (tsy>10) |
zain_mbed | 0:e1b66b594d8c | 314 | {printf("\n id is %s \n",buf); |
zain_mbed | 0:e1b66b594d8c | 315 | strcat(start,sourceip); |
zain_mbed | 0:e1b66b594d8c | 316 | strcat(start,"}"); |
zain_mbed | 0:e1b66b594d8c | 317 | strcat(start,buf); |
zain_mbed | 0:e1b66b594d8c | 318 | printf("sending %s \n",start); |
zain_mbed | 0:e1b66b594d8c | 319 | if (ws.is_connected()){ |
zain_mbed | 0:e1b66b594d8c | 320 | ws.send(start); |
zain_mbed | 0:e1b66b594d8c | 321 | memset(start, 0, sizeof(start)); |
zain_mbed | 0:e1b66b594d8c | 322 | memset(buf, 0, sizeof(buf)); |
zain_mbed | 0:e1b66b594d8c | 323 | printf("clear %s \n",start); |
zain_mbed | 0:e1b66b594d8c | 324 | printf("buf %s \n",buf); |
zain_mbed | 0:e1b66b594d8c | 325 | } |
zain_mbed | 0:e1b66b594d8c | 326 | else{ |
zain_mbed | 0:e1b66b594d8c | 327 | printf("closed \n"); |
zain_mbed | 0:e1b66b594d8c | 328 | NVIC_SystemReset(); |
zain_mbed | 0:e1b66b594d8c | 329 | |
zain_mbed | 0:e1b66b594d8c | 330 | } |
zain_mbed | 0:e1b66b594d8c | 331 | |
zain_mbed | 0:e1b66b594d8c | 332 | |
zain_mbed | 0:e1b66b594d8c | 333 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 334 | } |
zain_mbed | 0:e1b66b594d8c | 335 | } |
zain_mbed | 0:e1b66b594d8c | 336 | memset(m, 0, sizeof(m)); |
zain_mbed | 0:e1b66b594d8c | 337 | a=ws.read(m); |
zain_mbed | 0:e1b66b594d8c | 338 | |
zain_mbed | 0:e1b66b594d8c | 339 | k=strlen(m); |
zain_mbed | 0:e1b66b594d8c | 340 | |
zain_mbed | 0:e1b66b594d8c | 341 | |
zain_mbed | 0:e1b66b594d8c | 342 | if (strcmp(m,"stay alive")==0) |
zain_mbed | 0:e1b66b594d8c | 343 | { printf(m); |
zain_mbed | 0:e1b66b594d8c | 344 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 345 | counter--; |
zain_mbed | 0:e1b66b594d8c | 346 | } |
zain_mbed | 0:e1b66b594d8c | 347 | |
zain_mbed | 0:e1b66b594d8c | 348 | |
zain_mbed | 0:e1b66b594d8c | 349 | if (a==true && k>5 && k<35){ |
zain_mbed | 0:e1b66b594d8c | 350 | printf("received ipstring %s",m); |
zain_mbed | 0:e1b66b594d8c | 351 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 352 | } |
zain_mbed | 0:e1b66b594d8c | 353 | if (a==true && k>=40 && k<62) |
zain_mbed | 0:e1b66b594d8c | 354 | { |
zain_mbed | 0:e1b66b594d8c | 355 | pch = strtok (m,"+"); |
zain_mbed | 0:e1b66b594d8c | 356 | rxid=pch; |
zain_mbed | 0:e1b66b594d8c | 357 | if(strcmp(rxid,id)==0) |
zain_mbed | 0:e1b66b594d8c | 358 | { |
zain_mbed | 0:e1b66b594d8c | 359 | printf("matched \n"); |
zain_mbed | 0:e1b66b594d8c | 360 | printf("websocket %s \n",wes); |
zain_mbed | 0:e1b66b594d8c | 361 | printf(id); |
zain_mbed | 0:e1b66b594d8c | 362 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 363 | pch = strtok (NULL, "+"); |
zain_mbed | 0:e1b66b594d8c | 364 | ip=pch; |
zain_mbed | 0:e1b66b594d8c | 365 | printf(ip); |
zain_mbed | 0:e1b66b594d8c | 366 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 367 | pch = strtok (NULL, "+"); |
zain_mbed | 0:e1b66b594d8c | 368 | subnet=pch; |
zain_mbed | 0:e1b66b594d8c | 369 | printf("%s\n",subnet); |
zain_mbed | 0:e1b66b594d8c | 370 | pch = strtok (NULL, "+"); |
zain_mbed | 0:e1b66b594d8c | 371 | gw=pch; |
zain_mbed | 0:e1b66b594d8c | 372 | printf(gw); |
zain_mbed | 0:e1b66b594d8c | 373 | printf("\n"); |
zain_mbed | 0:e1b66b594d8c | 374 | char *store=new char[60]; |
zain_mbed | 0:e1b66b594d8c | 375 | strcat(store,web_socket_ip); |
zain_mbed | 0:e1b66b594d8c | 376 | strcat(store,","); |
zain_mbed | 0:e1b66b594d8c | 377 | strcat(store,ip); |
zain_mbed | 0:e1b66b594d8c | 378 | strcat(store,","); |
zain_mbed | 0:e1b66b594d8c | 379 | strcat(store,subnet); |
zain_mbed | 0:e1b66b594d8c | 380 | strcat(store,","); |
zain_mbed | 0:e1b66b594d8c | 381 | strcat(store,gw); |
zain_mbed | 0:e1b66b594d8c | 382 | strcat(store,","); |
zain_mbed | 0:e1b66b594d8c | 383 | printf("cat data %s \n",store); |
zain_mbed | 0:e1b66b594d8c | 384 | |
zain_mbed | 0:e1b66b594d8c | 385 | int address = flash_size() - SECTOR_SIZE; //Write in last sector |
zain_mbed | 0:e1b66b594d8c | 386 | printf("address %d \n",address); |
zain_mbed | 0:e1b66b594d8c | 387 | |
zain_mbed | 0:e1b66b594d8c | 388 | printf(" \n Starting\r\n"); |
zain_mbed | 0:e1b66b594d8c | 389 | erase_sector(address); |
zain_mbed | 0:e1b66b594d8c | 390 | |
zain_mbed | 0:e1b66b594d8c | 391 | int len=strlen(store); |
zain_mbed | 0:e1b66b594d8c | 392 | printf("store length %d \n",len); |
zain_mbed | 0:e1b66b594d8c | 393 | program_flash(address, store,len); //10 integers of 4 bytes each: 40 bytes length |
zain_mbed | 0:e1b66b594d8c | 394 | printf("Resulting flash: \r\n"); |
zain_mbed | 0:e1b66b594d8c | 395 | // printf("stored data %s\r\n", data); |
zain_mbed | 0:e1b66b594d8c | 396 | printf("Done\r\n\n"); |
zain_mbed | 0:e1b66b594d8c | 397 | NVIC_SystemReset(); |
zain_mbed | 0:e1b66b594d8c | 398 | |
zain_mbed | 0:e1b66b594d8c | 399 | wait(1); |
zain_mbed | 0:e1b66b594d8c | 400 | } |
zain_mbed | 0:e1b66b594d8c | 401 | |
zain_mbed | 0:e1b66b594d8c | 402 | } |
zain_mbed | 0:e1b66b594d8c | 403 | |
zain_mbed | 0:e1b66b594d8c | 404 | memset(&m[0], 0, sizeof(m)); |
zain_mbed | 0:e1b66b594d8c | 405 | }//loop is ending here |
zain_mbed | 0:e1b66b594d8c | 406 | |
zain_mbed | 0:e1b66b594d8c | 407 | |
zain_mbed | 0:e1b66b594d8c | 408 | |
zain_mbed | 0:e1b66b594d8c | 409 | |
zain_mbed | 0:e1b66b594d8c | 410 | } |
zain_mbed | 0:e1b66b594d8c | 411 |