tes

Dependencies:   ASyncTicker EthernetInterface WebSocketClient mbed-rtos mbed MbedJSONValue xbee_lib

Committer:
ammanvedi
Date:
Thu Jan 30 16:58:07 2014 +0000
Revision:
3:28cd6502dafd
Parent:
2:1c8d8d728b93
Child:
4:84abfe990493
v1.2

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