Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface FreescaleIAP WebSocketClient mbed-rtos mbed-src3
Revision 0:e1b66b594d8c, committed 2016-11-23
- Comitter:
- zain_mbed
- Date:
- Wed Nov 23 11:58:46 2016 +0000
- Commit message:
- ll
Changed in this revision
diff -r 000000000000 -r e1b66b594d8c EthernetInterface.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EthernetInterface.lib Wed Nov 23 11:58:46 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/zain_mbed/code/EthernetInterface/#027a7530fed6
diff -r 000000000000 -r e1b66b594d8c FreescaleIAP.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FreescaleIAP.lib Wed Nov 23 11:58:46 2016 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/Sissors/code/FreescaleIAP/#186db0d96fcf
diff -r 000000000000 -r e1b66b594d8c WebSocketClient.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebSocketClient.lib Wed Nov 23 11:58:46 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/samux/code/WebSocketClient/#466f90b7849a
diff -r 000000000000 -r e1b66b594d8c main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Nov 23 11:58:46 2016 +0000
@@ -0,0 +1,411 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "Websocket.h"
+#include "FreescaleIAP.h"
+#define ECHO_SERVER_PORT 560
+extern "C" void mbed_reset();
+extern "C" void mbed_mac_address(char *mac);
+TCPSocketServer server2;
+TCPSocketConnection client;
+DigitalOut green(LED_GREEN);
+DigitalOut red(LED_RED);
+DigitalOut blue(LED_BLUE);
+DigitalOut inpin(PTC2);
+InterruptIn pb(PTC3);
+Serial pc(USBTX, USBRX);
+Serial xbee(PTC17,PTC16); // uart rx
+bool flag=false;
+int i=0;
+
+EthernetInterface eth;
+
+char *sourceip;
+char *swebsocket=NULL;
+char *sip=NULL;
+char *ssubnet=NULL;
+char *sgw=NULL;
+char *spch=NULL;
+int counter=0;
+int k=0;
+char id[20];
+
+void pb_hit_interrupt (void)
+ {
+ inpin=0;
+ int address = flash_size() - SECTOR_SIZE;
+ erase_sector(address);
+ green=1;
+ red=1;
+ blue=0;
+ wait(3);
+ NVIC_SystemReset();
+ }
+
+
+string memory()
+{
+inpin=0;
+
+pb.mode(PullUp);
+ // Delay for initial pullup to take effect
+ wait(.01);
+ // Attach the address of the interrupt handler routine for pushbutton
+ pb.fall(&pb_hit_interrupt);
+ printf("in memory \n");
+ int address = flash_size() - SECTOR_SIZE; //Write in last sector
+ char *data = (char *)address;
+ char back[65];
+ strncpy(back,data,65);
+ back[strlen(back)]='\0';
+ //printf("back %s \n",back);
+ int length=strlen(back);
+ printf("\n length: %d \n",length);
+ // char c=".";
+ int k=0;
+ for (int i=0;i<60;i++)
+ {
+ printf("%c",data[i]);
+ if(data[i]=='.')
+ {
+ k++;
+ }
+
+ }
+ printf("\n k %d \n",k);
+ if (k>5){
+
+ spch = strtok (back,",");
+swebsocket=spch;
+swebsocket[strlen(swebsocket)]='\0';
+
+spch = strtok (NULL, ",");
+sip=spch;
+sip[strlen(sip)]='\0';
+spch = strtok (NULL, ",");
+ssubnet=spch;
+ssubnet[strlen(ssubnet)]='\0';
+spch = strtok (NULL, ",");
+sgw=spch;
+spch = strtok (NULL, ",");
+
+ printf(swebsocket);
+ printf("\n");
+
+ printf(sip);
+ printf("\n");
+
+ printf(ssubnet);
+ printf("\n");
+
+ printf(sgw);
+ printf("\n");
+
+ eth.init(sip,ssubnet,sgw);
+ eth.connect();
+ char *mac;
+ mac=eth.getMACAddress();
+ sourceip=eth.getIPAddress();
+ pc.printf("mac - ddress: %s \r\n",mac);
+ int l =strlen (mac);
+
+ strncpy(id,mac,l);
+ printf("mac_addr is id %s \n",id);
+ int hhh=strlen(id);
+ printf("mac_addr len %d \n",hhh);
+ id[hhh]='\0';
+pc.printf("Connected - IP address: %s \r\n",eth.getIPAddress());
+printf("swebsocket length %d \n",strlen(swebsocket));
+
+ }
+
+return swebsocket;
+ }
+
+void ftc()
+{ inpin=0;
+ printf("\n first time configuration \n");
+eth.init("192.168.68.100","255.255.255.0","192.168.68.1");
+ char *mac;
+ mac=eth.getMACAddress();
+ sourceip=eth.getIPAddress();
+ eth.connect();
+ pc.printf("mac - ddress: %s \r\n",mac);
+ pc.printf("Connected - IP address: %s \r\n",sourceip);
+ server2.bind(ECHO_SERVER_PORT);
+ server2.listen();
+ printf("Waiting for connection \n");;
+ server2.accept(client);
+ // client.set_blocking(false, 1500); // Timeout after (1.5)s
+
+ printf("Connection from: %s\n", client.get_address());
+ //
+ char buffer[256];
+ while (true) {
+ strcat(mac,".");
+ client.send(mac, strlen(mac));
+ int n = client.receive(buffer, sizeof(buffer));
+ if (n <= 0) break;
+
+ // print received message to terminal
+ buffer[n] = '\0';
+printf("Received message from Client :'%s'\n",buffer);
+ int kn=strlen(buffer);
+ if (kn>5)
+ {
+ printf("actual message from Client :'%s'\n",buffer);
+ int address = flash_size() - SECTOR_SIZE; //Write in last sector
+ printf("address %d \n",address);
+ char *data = (char *)address;
+ printf(" \n Starting\r\n");
+ erase_sector(address);
+
+ int len=strlen(buffer);
+ printf("store length %d \n",len);
+ program_flash(address, buffer,len); //10 integers of 4 bytes each: 40 bytes length
+ printf("Resulting flash: \r\n");
+ printf("stored data %s\r\n", data);
+ printf("Done\r\n\n");
+ client.send("received", 9);
+ NVIC_SystemReset();
+ }
+ // reverse the message
+
+ if (n <= 0) break;
+ }
+
+ client.close();
+
+ NVIC_SystemReset();
+ }
+
+
+
+
+
+
+int main()
+{
+ inpin=0;
+ pb.mode(PullUp);
+ // Delay for initial pullup to take effect
+ wait(.01);
+ // Attach the address of the interrupt handler routine for pushbutton
+ pb.fall(&pb_hit_interrupt);
+
+ printf("Hello World\n");
+ char macc[6];
+
+
+char *w_socket_addr=new char [50];
+ wait(3);
+string wes= memory();
+const char *web_socket_ip=wes.c_str();
+printf("return string %s \n",web_socket_ip);
+int hkh=strlen(web_socket_ip);
+printf("string length %d \n",hkh);
+
+ char buf[200];
+
+ xbee.baud(9600);
+
+
+
+
+ if (hkh>0)
+ {
+ strcpy(w_socket_addr,"ws://");
+ strcat(w_socket_addr,web_socket_ip);
+ strcat(w_socket_addr,"/EchoChamber/echo");
+
+ }
+ else
+ {
+
+ ftc();
+ }
+ w_socket_addr[strlen(w_socket_addr)]='\0';
+ Websocket ws(w_socket_addr);
+ printf("connecting to webserver \n");
+ ws.connect();
+ printf("connected \n");
+
+ xbee.printf("ar\n");
+ if(xbee.readable())
+ {xbee.gets(buf,25);
+ printf(buf);
+ }
+ wait(1);
+ xbee.printf("AT$sr\n");
+char *ip=NULL;
+char *subnet=NULL;
+char *gw=NULL;
+
+char *rxid;
+
+char m[100];
+char *pch;
+wait(1);
+bool a;
+
+
+
+
+
+while(1)
+{ green=1;
+ red=0;
+ blue=1;
+ if (i>=455000)
+ {
+
+ if(ws.is_connected())
+ { counter=counter+1;
+ printf("keep alive \n");
+ ws.send("keep alive");
+
+ //printf(ws);
+ }
+
+ if(!ws.is_connected())
+ { printf("not alive \n");
+
+ NVIC_SystemReset();
+ }
+
+ i=0;
+
+ }
+ i++;
+if (counter>=2)
+{
+ printf("counter %d \n",counter);;
+ printf("reset \n");
+
+ // ws.fillFields("ws://192.168.0.54:8080/EchoChamber/echo");
+ NVIC_SystemReset();
+ ws.close();
+ // eth.disconnect();
+
+
+
+
+}
+
+
+
+if(xbee.readable())
+{
+ green=0;
+ red=1;
+ blue=1;
+ memset(buf, 0, sizeof(buf));
+xbee.gets(buf,27);
+char end[5]="end";
+ printf(" \n received buffer %s \n",buf);
+printf("counter %d \n",counter);
+
+strcat(buf,id);
+strcat(buf,end);
+printf("\n buffer is %s \n",id);
+char start[100]="start";
+int tsy=strlen(buf);
+printf("len %d \n",tsy);
+if (tsy>10)
+{printf("\n id is %s \n",buf);
+strcat(start,sourceip);
+strcat(start,"}");
+strcat(start,buf);
+printf("sending %s \n",start);
+if (ws.is_connected()){
+ws.send(start);
+ memset(start, 0, sizeof(start));
+ memset(buf, 0, sizeof(buf));
+ printf("clear %s \n",start);
+ printf("buf %s \n",buf);
+}
+else{
+ printf("closed \n");
+ NVIC_SystemReset();
+
+ }
+
+
+printf("\n");
+}
+}
+ memset(m, 0, sizeof(m));
+a=ws.read(m);
+
+k=strlen(m);
+
+
+if (strcmp(m,"stay alive")==0)
+{ printf(m);
+printf("\n");
+ counter--;
+ }
+
+
+if (a==true && k>5 && k<35){
+ printf("received ipstring %s",m);
+printf("\n");
+ }
+if (a==true && k>=40 && k<62)
+{
+ pch = strtok (m,"+");
+ rxid=pch;
+ if(strcmp(rxid,id)==0)
+ {
+ printf("matched \n");
+ printf("websocket %s \n",wes);
+ printf(id);
+ printf("\n");
+ pch = strtok (NULL, "+");
+ ip=pch;
+ printf(ip);
+ printf("\n");
+ pch = strtok (NULL, "+");
+ subnet=pch;
+ printf("%s\n",subnet);
+ pch = strtok (NULL, "+");
+ gw=pch;
+ printf(gw);
+ printf("\n");
+ char *store=new char[60];
+ strcat(store,web_socket_ip);
+ strcat(store,",");
+ strcat(store,ip);
+ strcat(store,",");
+ strcat(store,subnet);
+ strcat(store,",");
+ strcat(store,gw);
+ strcat(store,",");
+ printf("cat data %s \n",store);
+
+ int address = flash_size() - SECTOR_SIZE; //Write in last sector
+ printf("address %d \n",address);
+
+ printf(" \n Starting\r\n");
+ erase_sector(address);
+
+ int len=strlen(store);
+ printf("store length %d \n",len);
+ program_flash(address, store,len); //10 integers of 4 bytes each: 40 bytes length
+ printf("Resulting flash: \r\n");
+ // printf("stored data %s\r\n", data);
+ printf("Done\r\n\n");
+ NVIC_SystemReset();
+
+ wait(1);
+ }
+
+}
+
+ memset(&m[0], 0, sizeof(m));
+}//loop is ending here
+
+
+
+
+}
+
\ No newline at end of file
diff -r 000000000000 -r e1b66b594d8c mbed-rtos.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Wed Nov 23 11:58:46 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#bd07334df5b1
diff -r 000000000000 -r e1b66b594d8c mbed-src.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-src.lib Wed Nov 23 11:58:46 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/zain_mbed/code/mbed-src3/#f9edfcefc276