http://mbed.org/users/okini3939/notebook/comet_websocket/
Dependencies: EthernetNetIf mbed RingBuffer MbedJSONValue
main.cpp@0:632cb8c03ca3, 2011-11-19 (annotated)
- Committer:
- okini3939
- Date:
- Sat Nov 19 16:19:50 2011 +0000
- Revision:
- 0:632cb8c03ca3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:632cb8c03ca3 | 1 | #include "mbed.h" |
okini3939 | 0:632cb8c03ca3 | 2 | #include "EthernetNetIf.h" |
okini3939 | 0:632cb8c03ca3 | 3 | #include "TCPSocket.h" |
okini3939 | 0:632cb8c03ca3 | 4 | #include "CometClient.h" |
okini3939 | 0:632cb8c03ca3 | 5 | #include <new> |
okini3939 | 0:632cb8c03ca3 | 6 | |
okini3939 | 0:632cb8c03ca3 | 7 | DigitalOut myled(LED1); |
okini3939 | 0:632cb8c03ca3 | 8 | Serial pc(USBTX, USBRX); |
okini3939 | 0:632cb8c03ca3 | 9 | EthernetNetIf eth; |
okini3939 | 0:632cb8c03ca3 | 10 | |
okini3939 | 0:632cb8c03ca3 | 11 | void HardFault_Handler() { |
okini3939 | 0:632cb8c03ca3 | 12 | printf("Hard Fault!\n"); |
okini3939 | 0:632cb8c03ca3 | 13 | exit(-1); |
okini3939 | 0:632cb8c03ca3 | 14 | } |
okini3939 | 0:632cb8c03ca3 | 15 | |
okini3939 | 0:632cb8c03ca3 | 16 | void no_memory () { |
okini3939 | 0:632cb8c03ca3 | 17 | printf("panic: can't allocate to memory!\r\n"); |
okini3939 | 0:632cb8c03ca3 | 18 | exit(-1); |
okini3939 | 0:632cb8c03ca3 | 19 | } |
okini3939 | 0:632cb8c03ca3 | 20 | |
okini3939 | 0:632cb8c03ca3 | 21 | int main () { |
okini3939 | 0:632cb8c03ca3 | 22 | EthernetErr ethErr; |
okini3939 | 0:632cb8c03ca3 | 23 | Host host; |
okini3939 | 0:632cb8c03ca3 | 24 | int i, r; |
okini3939 | 0:632cb8c03ca3 | 25 | char buf[100]; |
okini3939 | 0:632cb8c03ca3 | 26 | |
okini3939 | 0:632cb8c03ca3 | 27 | pc.baud(115200); |
okini3939 | 0:632cb8c03ca3 | 28 | myled = 1; |
okini3939 | 0:632cb8c03ca3 | 29 | |
okini3939 | 0:632cb8c03ca3 | 30 | set_new_handler(no_memory); // new handler function |
okini3939 | 0:632cb8c03ca3 | 31 | |
okini3939 | 0:632cb8c03ca3 | 32 | ethErr = eth.setup(); |
okini3939 | 0:632cb8c03ca3 | 33 | if(ethErr) { |
okini3939 | 0:632cb8c03ca3 | 34 | return -1; |
okini3939 | 0:632cb8c03ca3 | 35 | } |
okini3939 | 0:632cb8c03ca3 | 36 | |
okini3939 | 0:632cb8c03ca3 | 37 | host.setIp(IpAddr(49, 212, 96, 62)); |
okini3939 | 0:632cb8c03ca3 | 38 | r = openComet(&host, "/stream.php", NULL, "data=hello"); |
okini3939 | 0:632cb8c03ca3 | 39 | printf("status %d\r\n", r); |
okini3939 | 0:632cb8c03ca3 | 40 | |
okini3939 | 0:632cb8c03ca3 | 41 | while (1) { |
okini3939 | 0:632cb8c03ca3 | 42 | myled = 1; |
okini3939 | 0:632cb8c03ca3 | 43 | pollComet(); |
okini3939 | 0:632cb8c03ca3 | 44 | myled = 0; |
okini3939 | 0:632cb8c03ca3 | 45 | |
okini3939 | 0:632cb8c03ca3 | 46 | i = recvComet(buf, 1000); |
okini3939 | 0:632cb8c03ca3 | 47 | if (i) { |
okini3939 | 0:632cb8c03ca3 | 48 | buf[i] = 0; |
okini3939 | 0:632cb8c03ca3 | 49 | printf("RECV: %s\r\n", buf); |
okini3939 | 0:632cb8c03ca3 | 50 | } |
okini3939 | 0:632cb8c03ca3 | 51 | |
okini3939 | 0:632cb8c03ca3 | 52 | if (pc.readable()) { |
okini3939 | 0:632cb8c03ca3 | 53 | strcpy(buf, "data= "); |
okini3939 | 0:632cb8c03ca3 | 54 | buf[5] = pc.getc(); |
okini3939 | 0:632cb8c03ca3 | 55 | printf("SEND: %s\r\n", buf); |
okini3939 | 0:632cb8c03ca3 | 56 | sendComet(buf); |
okini3939 | 0:632cb8c03ca3 | 57 | } |
okini3939 | 0:632cb8c03ca3 | 58 | } |
okini3939 | 0:632cb8c03ca3 | 59 | |
okini3939 | 0:632cb8c03ca3 | 60 | return 0; |
okini3939 | 0:632cb8c03ca3 | 61 | } |