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