tes
Dependencies: ASyncTicker EthernetInterface WebSocketClient mbed-rtos mbed MbedJSONValue xbee_lib
main.cpp
- Committer:
- ammanvedi
- Date:
- 2014-01-30
- Revision:
- 3:28cd6502dafd
- Parent:
- 2:1c8d8d728b93
- Child:
- 4:84abfe990493
File content as of revision 3:28cd6502dafd:
#include "mbed.h" #include "EthernetInterface.h" #include <stdio.h> #include <string.h> #include "Websocket.h" #include "Updateable.h" #include "ASyncTicker.h" #include "xbee.h" #include "xbeeFrame.h" #include <ctype.h> #define PORT 80 //status leds //led 1 // lit - successful ethernet connection DigitalOut led_ethernet(LED1); //led 2 // lit - successful socket connection DigitalOut led_socket(LED2); EthernetInterface ethernet; Websocket ws("ws://192.168.0.4:8080/"); xbeeFrame xbee(p9,p10,p11); const char dest_address[8] = {0x00, 0x13, 0xA2, 0x00, 0x40, 0x9B, 0x6D, 0xB0}; char send_data[50] = "xbee string"; void pull_requests(){ } void pull_updates(){ char str[100]; char id[30]; char new_msg[50]; // string with a message sprintf(str, "PU"); ws.send(str); // clear the buffer and wait a sec... memset(str, 0, 100); wait(0.5f); // websocket server should echo whatever we sent it if (ws.read(str)) { memset(id,0,30); memset(new_msg, 0, 50); printf("msg form svr: %s\n\r", str); sscanf((char *)str, "%s %[^\t]", id, new_msg); printf("the id : %s will update to : %s\n\r", id, new_msg); //send string to xbee HERE if(strlen(new_msg) == 0) { printf("nothing to update, better luck next time! (svr response: %s)\n\r", id); return; }else{ //data was revieved printf("id : %s string: %s (original: %s) \n\r", id, new_msg, str); } char to_send[100]; char* p = to_send; char* r = send_data; while(*r) *p++ = *r++; *p++ = ' '; r = new_msg; while(*r) *p++ = *r++; *p++ = '\r'; *p = '\0'; char data_buf[50]; xbee.InitFrame(); xbee.SetDestination((unsigned char *)dest_address); xbee.SetPayload(to_send); printf("sending payload: %s\n\r", to_send); xbee.AssembleFrame(); xbee.SendFrame(); for(int i = 0; i<2; i++) { xbee.ReceiveFrame(data_buf, 500); if(xbee.frameReceived) { xbee.frameReceived = 0; if(xbee.GetType() == TX_STATUS) { if(xbee.GetStatus() == 0) printf("Send success!\n\r"); else printf("Send failed :(\n\r"); } else if (xbee.GetType() == RX_PACKET_64) printf("Received data: %s\n\r", data_buf); } } } } int main () { led_ethernet = 0; led_socket = 0; ethernet.init(); // connect with DHCP int ret_val = ethernet.connect(); if (0 == ret_val) { printf("\n\rIP Address: %s\n\r", ethernet.getIPAddress()); led_ethernet = 1; } else { error("ethernet failed to connect: %d.\n\r", ret_val); } int interval = 5; if(ws.connect()) { led_socket = 1; } Timer timer; timer.start(); //every <interval> seconds call to the server to pull updates while(true){ if(timer.read() >= interval){ //perform checks pull_updates(); timer.reset(); timer.start(); } } //pull_updates(); ws.close(); }