tes

Dependencies:   ASyncTicker EthernetInterface WebSocketClient mbed-rtos mbed MbedJSONValue xbee_lib

Committer:
ammanvedi
Date:
Tue Jan 28 14:38:37 2014 +0000
Revision:
2:1c8d8d728b93
Parent:
1:6c1df6c9be4d
Child:
3:28cd6502dafd
sockets

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ammanvedi 0:d73af3f5c81d 1 #include "mbed.h"
ammanvedi 0:d73af3f5c81d 2 #include "EthernetInterface.h"
ammanvedi 0:d73af3f5c81d 3 #include <stdio.h>
ammanvedi 0:d73af3f5c81d 4 #include <string.h>
ammanvedi 0:d73af3f5c81d 5 #include "Websocket.h"
ammanvedi 0:d73af3f5c81d 6 #include "Updateable.h"
ammanvedi 0:d73af3f5c81d 7 #include "ASyncTicker.h"
ammanvedi 1:6c1df6c9be4d 8 #include "xbee.h"
ammanvedi 1:6c1df6c9be4d 9 #include "xbeeFrame.h"
ammanvedi 0:d73af3f5c81d 10 #define PORT 80
ammanvedi 0:d73af3f5c81d 11
ammanvedi 0:d73af3f5c81d 12
ammanvedi 0:d73af3f5c81d 13 EthernetInterface ethernet;
ammanvedi 0:d73af3f5c81d 14 Websocket ws("ws://192.168.0.4:8080/");
ammanvedi 1:6c1df6c9be4d 15 xbeeFrame xbee(p9,p10,p11);
ammanvedi 1:6c1df6c9be4d 16 const char dest_address[8] = {0x00, 0x13, 0xA2, 0x00, 0x40, 0x9B, 0x6D, 0xB0};
ammanvedi 1:6c1df6c9be4d 17 char send_data[50] = "xbee string";
ammanvedi 0:d73af3f5c81d 18
ammanvedi 2:1c8d8d728b93 19 void pull_requests(){
ammanvedi 0:d73af3f5c81d 20
ammanvedi 2:1c8d8d728b93 21 }
ammanvedi 0:d73af3f5c81d 22
ammanvedi 0:d73af3f5c81d 23 void pull_updates(){
ammanvedi 1:6c1df6c9be4d 24 char str[100];
ammanvedi 1:6c1df6c9be4d 25 char id[30];
ammanvedi 1:6c1df6c9be4d 26 char new_msg[50];
ammanvedi 1:6c1df6c9be4d 27 // string with a message
ammanvedi 1:6c1df6c9be4d 28 sprintf(str, "PU");
ammanvedi 1:6c1df6c9be4d 29 ws.send(str);
ammanvedi 1:6c1df6c9be4d 30
ammanvedi 1:6c1df6c9be4d 31 // clear the buffer and wait a sec...
ammanvedi 1:6c1df6c9be4d 32
ammanvedi 1:6c1df6c9be4d 33
ammanvedi 1:6c1df6c9be4d 34 memset(str, 0, 100);
ammanvedi 1:6c1df6c9be4d 35 wait(0.5f);
ammanvedi 1:6c1df6c9be4d 36
ammanvedi 1:6c1df6c9be4d 37 // websocket server should echo whatever we sent it
ammanvedi 1:6c1df6c9be4d 38 if (ws.read(str)) {
ammanvedi 1:6c1df6c9be4d 39 memset(id,0,30);
ammanvedi 1:6c1df6c9be4d 40 memset(new_msg, 0, 50);
ammanvedi 1:6c1df6c9be4d 41 sscanf((char *)str, "%s %s ", id, new_msg);
ammanvedi 1:6c1df6c9be4d 42 printf("id : %s string: %s (original: %s) \n\r", id, new_msg, str);
ammanvedi 1:6c1df6c9be4d 43
ammanvedi 1:6c1df6c9be4d 44 //send string to xbee HERE
ammanvedi 2:1c8d8d728b93 45 if(strlen(new_msg) == 0)
ammanvedi 2:1c8d8d728b93 46 {
ammanvedi 2:1c8d8d728b93 47 printf("nothing to update, better luck next time! (svr response: %s)\n\r", id);
ammanvedi 2:1c8d8d728b93 48 return;
ammanvedi 2:1c8d8d728b93 49 }else{
ammanvedi 2:1c8d8d728b93 50 //data was revieved
ammanvedi 2:1c8d8d728b93 51 printf("id : %s string: %s (original: %s) \n\r", id, new_msg, str);
ammanvedi 2:1c8d8d728b93 52 }
ammanvedi 1:6c1df6c9be4d 53
ammanvedi 1:6c1df6c9be4d 54 char to_send[100];
ammanvedi 1:6c1df6c9be4d 55 char* p = to_send;
ammanvedi 1:6c1df6c9be4d 56 char* r = send_data;
ammanvedi 1:6c1df6c9be4d 57 while(*r)
ammanvedi 1:6c1df6c9be4d 58 *p++ = *r++;
ammanvedi 1:6c1df6c9be4d 59 *p++ = ' ';
ammanvedi 1:6c1df6c9be4d 60 r = new_msg;
ammanvedi 1:6c1df6c9be4d 61 while(*r)
ammanvedi 1:6c1df6c9be4d 62 *p++ = *r++;
ammanvedi 1:6c1df6c9be4d 63 *p = '\0';
ammanvedi 1:6c1df6c9be4d 64
ammanvedi 2:1c8d8d728b93 65 char data_buf[50];
ammanvedi 1:6c1df6c9be4d 66 xbee.InitFrame();
ammanvedi 1:6c1df6c9be4d 67 xbee.SetDestination((unsigned char *)dest_address);
ammanvedi 1:6c1df6c9be4d 68 xbee.SetPayload(to_send);
ammanvedi 1:6c1df6c9be4d 69 xbee.AssembleFrame();
ammanvedi 1:6c1df6c9be4d 70 xbee.SendFrame();
ammanvedi 1:6c1df6c9be4d 71
ammanvedi 1:6c1df6c9be4d 72
ammanvedi 1:6c1df6c9be4d 73 for(int i = 0; i<2; i++)
ammanvedi 1:6c1df6c9be4d 74 {
ammanvedi 1:6c1df6c9be4d 75 xbee.ReceiveFrame(data_buf, 500);
ammanvedi 1:6c1df6c9be4d 76 if(xbee.frameReceived)
ammanvedi 1:6c1df6c9be4d 77 {
ammanvedi 1:6c1df6c9be4d 78 xbee.frameReceived = 0;
ammanvedi 1:6c1df6c9be4d 79 if(xbee.GetType() == TX_STATUS)
ammanvedi 1:6c1df6c9be4d 80 {
ammanvedi 1:6c1df6c9be4d 81 if(xbee.GetStatus() == 0)
ammanvedi 1:6c1df6c9be4d 82 printf("Send success!\n\r");
ammanvedi 1:6c1df6c9be4d 83 else
ammanvedi 1:6c1df6c9be4d 84 printf("Send failed :(\n\r");
ammanvedi 1:6c1df6c9be4d 85 }
ammanvedi 1:6c1df6c9be4d 86 else if (xbee.GetType() == RX_PACKET_64)
ammanvedi 1:6c1df6c9be4d 87 printf("Received data: %s\n\r", data_buf);
ammanvedi 1:6c1df6c9be4d 88 }
ammanvedi 1:6c1df6c9be4d 89 }
ammanvedi 1:6c1df6c9be4d 90
ammanvedi 1:6c1df6c9be4d 91
ammanvedi 1:6c1df6c9be4d 92
ammanvedi 1:6c1df6c9be4d 93
ammanvedi 1:6c1df6c9be4d 94 }
ammanvedi 1:6c1df6c9be4d 95
ammanvedi 1:6c1df6c9be4d 96
ammanvedi 1:6c1df6c9be4d 97
ammanvedi 0:d73af3f5c81d 98
ammanvedi 0:d73af3f5c81d 99 }
ammanvedi 0:d73af3f5c81d 100
ammanvedi 1:6c1df6c9be4d 101
ammanvedi 1:6c1df6c9be4d 102
ammanvedi 0:d73af3f5c81d 103 int main ()
ammanvedi 0:d73af3f5c81d 104 {
ammanvedi 0:d73af3f5c81d 105
ammanvedi 0:d73af3f5c81d 106 ethernet.init(); // connect with DHCP
ammanvedi 0:d73af3f5c81d 107 int ret_val = ethernet.connect();
ammanvedi 0:d73af3f5c81d 108
ammanvedi 0:d73af3f5c81d 109 if (0 == ret_val) {
ammanvedi 0:d73af3f5c81d 110 printf("IP Address: %s\n\r", ethernet.getIPAddress());
ammanvedi 0:d73af3f5c81d 111 } else {
ammanvedi 0:d73af3f5c81d 112 error("ethernet failed to connect: %d.\n\r", ret_val);
ammanvedi 0:d73af3f5c81d 113 }
ammanvedi 0:d73af3f5c81d 114
ammanvedi 2:1c8d8d728b93 115 int interval = 5;
ammanvedi 0:d73af3f5c81d 116
ammanvedi 0:d73af3f5c81d 117 ws.connect();
ammanvedi 0:d73af3f5c81d 118
ammanvedi 1:6c1df6c9be4d 119 Timer timer;
ammanvedi 1:6c1df6c9be4d 120 timer.start();
ammanvedi 2:1c8d8d728b93 121
ammanvedi 2:1c8d8d728b93 122 //every <interval> seconds call to the server to pull updates
ammanvedi 0:d73af3f5c81d 123
ammanvedi 1:6c1df6c9be4d 124 while(true){
ammanvedi 2:1c8d8d728b93 125 if(timer.read() >= interval){
ammanvedi 1:6c1df6c9be4d 126 //perform checks
ammanvedi 1:6c1df6c9be4d 127 pull_updates();
ammanvedi 1:6c1df6c9be4d 128 timer.reset();
ammanvedi 1:6c1df6c9be4d 129 timer.start();
ammanvedi 0:d73af3f5c81d 130 }
ammanvedi 1:6c1df6c9be4d 131 }
ammanvedi 1:6c1df6c9be4d 132
ammanvedi 1:6c1df6c9be4d 133 //pull_updates();
ammanvedi 0:d73af3f5c81d 134 ws.close();
ammanvedi 0:d73af3f5c81d 135
ammanvedi 0:d73af3f5c81d 136 }