tes
Dependencies: ASyncTicker EthernetInterface WebSocketClient mbed-rtos mbed MbedJSONValue xbee_lib
main.cpp@2:1c8d8d728b93, 2014-01-28 (annotated)
- 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?
User | Revision | Line number | New 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 | } |