Test u-blox C027, nodejs, socketio on heroku
Dependencies: C027 EthernetInterface SocketIO WebSocketClient mbed-rtos mbed
Fork of C027_Socketio_Ethernet by
main.cpp@8:958c0e7c9536, 2014-04-27 (annotated)
- Committer:
- olympux
- Date:
- Sun Apr 27 14:04:00 2014 +0000
- Revision:
- 8:958c0e7c9536
- Parent:
- 4:0bdab35cb164
- Child:
- 9:b03bfd6a2094
Tested with nodejs, socketio on heroku
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
samux | 1:1c1802ec42a2 | 1 | #include "mbed.h" |
olympux | 3:259ac92c3ca8 | 2 | #include "C027.h" |
samux | 1:1c1802ec42a2 | 3 | #include "EthernetInterface.h" |
samux | 1:1c1802ec42a2 | 4 | #include "Websocket.h" |
olympux | 4:0bdab35cb164 | 5 | #include "SocketIO.h" |
olympux | 4:0bdab35cb164 | 6 | |
olympux | 4:0bdab35cb164 | 7 | |
olympux | 4:0bdab35cb164 | 8 | //Debug is disabled by default |
olympux | 8:958c0e7c9536 | 9 | #if 0 |
olympux | 4:0bdab35cb164 | 10 | //Enable debug |
olympux | 4:0bdab35cb164 | 11 | #include <cstdio> |
olympux | 4:0bdab35cb164 | 12 | #define DBG(x, ...) std::printf("[main : DBG]"x"\r\n", ##__VA_ARGS__); |
olympux | 4:0bdab35cb164 | 13 | #define WARN(x, ...) std::printf("[main : WARN]"x"\r\n", ##__VA_ARGS__); |
olympux | 4:0bdab35cb164 | 14 | #define ERR(x, ...) std::printf("[main : ERR]"x"\r\n", ##__VA_ARGS__); |
olympux | 4:0bdab35cb164 | 15 | |
olympux | 4:0bdab35cb164 | 16 | #else |
olympux | 4:0bdab35cb164 | 17 | //Disable debug |
olympux | 4:0bdab35cb164 | 18 | #define DBG(x, ...) |
olympux | 4:0bdab35cb164 | 19 | #define WARN(x, ...) |
olympux | 4:0bdab35cb164 | 20 | #define ERR(x, ...) |
olympux | 4:0bdab35cb164 | 21 | |
olympux | 4:0bdab35cb164 | 22 | #endif |
olympux | 4:0bdab35cb164 | 23 | |
olympux | 4:0bdab35cb164 | 24 | |
olympux | 4:0bdab35cb164 | 25 | void websocket_test(void const*) |
olympux | 3:259ac92c3ca8 | 26 | { |
olympux | 3:259ac92c3ca8 | 27 | char msg[512] = {0}; |
olympux | 4:0bdab35cb164 | 28 | |
samux | 1:1c1802ec42a2 | 29 | EthernetInterface eth; |
samux | 1:1c1802ec42a2 | 30 | eth.init(); //Use DHCP |
samux | 1:1c1802ec42a2 | 31 | eth.connect(); |
olympux | 4:0bdab35cb164 | 32 | DBG("IP Address is %s", eth.getIPAddress()); |
olympux | 4:0bdab35cb164 | 33 | |
olympux | 3:259ac92c3ca8 | 34 | Websocket ws("ws://sockets.mbed.org:443/ws/chauvo/wo"); |
olympux | 3:259ac92c3ca8 | 35 | Timer t; |
olympux | 3:259ac92c3ca8 | 36 | t.start(); |
olympux | 4:0bdab35cb164 | 37 | |
olympux | 3:259ac92c3ca8 | 38 | bool c = ws.connect(); |
olympux | 4:0bdab35cb164 | 39 | DBG("Connect result: %s", c?"OK":"Failed"); |
olympux | 4:0bdab35cb164 | 40 | |
olympux | 4:0bdab35cb164 | 41 | for(int i = 0; i < 10000; i++) { |
olympux | 3:259ac92c3ca8 | 42 | ws.connect(); |
olympux | 3:259ac92c3ca8 | 43 | // create json string with acc/tmp data |
olympux | 3:259ac92c3ca8 | 44 | sprintf(msg, "Chau's demo loop: %d", i); |
olympux | 4:0bdab35cb164 | 45 | ws.send(msg); |
olympux | 3:259ac92c3ca8 | 46 | wait(0.5f); |
olympux | 3:259ac92c3ca8 | 47 | memset(msg, 0, 512); |
olympux | 4:0bdab35cb164 | 48 | |
olympux | 4:0bdab35cb164 | 49 | if (ws.read(msg)) { |
olympux | 4:0bdab35cb164 | 50 | DBG("rcv: %s\r\n", msg); |
olympux | 4:0bdab35cb164 | 51 | } else { |
olympux | 4:0bdab35cb164 | 52 | DBG("Loop %d ws.read() returns 0\n \t %s, line %d @ %6.2f seconds\n", i, __FILE__, __LINE__, t.read()); |
olympux | 3:259ac92c3ca8 | 53 | wait(5.0f); |
olympux | 3:259ac92c3ca8 | 54 | } |
olympux | 3:259ac92c3ca8 | 55 | ws.close(); |
samux | 1:1c1802ec42a2 | 56 | } |
olympux | 4:0bdab35cb164 | 57 | |
olympux | 3:259ac92c3ca8 | 58 | while(1) { |
olympux | 3:259ac92c3ca8 | 59 | } |
olympux | 3:259ac92c3ca8 | 60 | } |
olympux | 3:259ac92c3ca8 | 61 | |
olympux | 4:0bdab35cb164 | 62 | void socketio_test(void const*) |
olympux | 4:0bdab35cb164 | 63 | { |
olympux | 4:0bdab35cb164 | 64 | char msg[512] = {0}; |
olympux | 4:0bdab35cb164 | 65 | |
olympux | 4:0bdab35cb164 | 66 | EthernetInterface eth; |
olympux | 4:0bdab35cb164 | 67 | eth.init(); //Use DHCP |
olympux | 4:0bdab35cb164 | 68 | eth.connect(); |
olympux | 4:0bdab35cb164 | 69 | DBG("IP Address is %s", eth.getIPAddress()); |
olympux | 4:0bdab35cb164 | 70 | |
olympux | 4:0bdab35cb164 | 71 | SocketIO socketio("nne-server1.herokuapp.com"); |
olympux | 4:0bdab35cb164 | 72 | //SocketIO socketio("websocketserver-tutorial11067089.rhcloud.com"); |
olympux | 4:0bdab35cb164 | 73 | //SocketIO socketio("websocket-server.chau_vk.c9.io:8001"); |
olympux | 4:0bdab35cb164 | 74 | //SocketIO socketio("websocket-server-c9-chau_vk.c9.io"); |
olympux | 4:0bdab35cb164 | 75 | Timer t; |
olympux | 4:0bdab35cb164 | 76 | t.start(); |
olympux | 4:0bdab35cb164 | 77 | |
olympux | 4:0bdab35cb164 | 78 | bool c = socketio.connect(); // c is always false, (maybe because the connection is upgraded?) |
olympux | 4:0bdab35cb164 | 79 | DBG("Connect result: %s", c?"OK":"Failed"); |
olympux | 4:0bdab35cb164 | 80 | |
olympux | 4:0bdab35cb164 | 81 | while (1) { |
olympux | 4:0bdab35cb164 | 82 | int res = socketio.emit("mesage","[\"mbed SocketIO Hello World!\"]"); |
olympux | 4:0bdab35cb164 | 83 | if (socketio.read(msg)) { |
olympux | 4:0bdab35cb164 | 84 | DBG("rcv: %s", msg); |
olympux | 4:0bdab35cb164 | 85 | } |
olympux | 4:0bdab35cb164 | 86 | wait(0.1); |
olympux | 4:0bdab35cb164 | 87 | } |
olympux | 4:0bdab35cb164 | 88 | } |
olympux | 4:0bdab35cb164 | 89 | |
olympux | 3:259ac92c3ca8 | 90 | int main() |
olympux | 3:259ac92c3ca8 | 91 | { |
olympux | 4:0bdab35cb164 | 92 | //Thread testTask(websocket_test, NULL, osPriorityNormal, 1024 * 4); |
olympux | 4:0bdab35cb164 | 93 | Thread testTask(socketio_test, NULL, osPriorityNormal, 1024 * 4); |
olympux | 3:259ac92c3ca8 | 94 | DigitalOut led(LED); // on rev A you should reasign the signal to A0 |
olympux | 3:259ac92c3ca8 | 95 | while(1) { |
olympux | 3:259ac92c3ca8 | 96 | led=!led; |
olympux | 3:259ac92c3ca8 | 97 | Thread::wait(1000); |
olympux | 3:259ac92c3ca8 | 98 | } |
olympux | 3:259ac92c3ca8 | 99 | |
olympux | 3:259ac92c3ca8 | 100 | return 0; |
samux | 1:1c1802ec42a2 | 101 | } |