Example program with HTTPServer and sensor data streaming over TCPSockets, using Donatien Garnier's Net APIs and services code on top of LWIP. Files StreamServer.h and .cpp encapsulate streaming over TCPSockets. Broadcast is done by sendToAll(), and all incoming data is echoed back to the client. Echo code can be replaced with some remote control of the streaming interface. See main() that shows how to periodically send some data to all subscribed clients. To subscribe, a client should open a socket at <mbed_ip> port 123. I used few lines in TCL code to set up a quick sink for the data. HTTP files are served on port 80 concurrently to the streaming.

Dependencies:   mbed

Committer:
iva2k
Date:
Sat Jun 12 06:01:50 2010 +0000
Revision:
0:e614f7875b60
Child:
1:3ee499525aa5

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
iva2k 0:e614f7875b60 1 /*
iva2k 0:e614f7875b60 2 * Author: Adam Dunkels <adam@sics.se>
iva2k 0:e614f7875b60 3 *
iva2k 0:e614f7875b60 4 */
iva2k 0:e614f7875b60 5 #ifndef __LWIP_ARCH_CC_H__
iva2k 0:e614f7875b60 6 #define __LWIP_ARCH_CC_H__
iva2k 0:e614f7875b60 7
iva2k 0:e614f7875b60 8 #define LITTLE_ENDIAN 1234
iva2k 0:e614f7875b60 9
iva2k 0:e614f7875b60 10 #define BYTE_ORDER LITTLE_ENDIAN
iva2k 0:e614f7875b60 11
iva2k 0:e614f7875b60 12 typedef unsigned char u8_t;
iva2k 0:e614f7875b60 13 typedef signed char s8_t;
iva2k 0:e614f7875b60 14 typedef unsigned short u16_t;
iva2k 0:e614f7875b60 15 typedef signed short s16_t;
iva2k 0:e614f7875b60 16 typedef unsigned int u32_t;
iva2k 0:e614f7875b60 17 typedef signed int s32_t;
iva2k 0:e614f7875b60 18 typedef unsigned int mem_ptr_t;
iva2k 0:e614f7875b60 19
iva2k 0:e614f7875b60 20 #ifndef NULL
iva2k 0:e614f7875b60 21 #define NULL 0
iva2k 0:e614f7875b60 22 #endif
iva2k 0:e614f7875b60 23
iva2k 0:e614f7875b60 24 #ifndef TRUE
iva2k 0:e614f7875b60 25 #define TRUE 1
iva2k 0:e614f7875b60 26 #endif
iva2k 0:e614f7875b60 27
iva2k 0:e614f7875b60 28 #ifndef FALSE
iva2k 0:e614f7875b60 29 #define FALSE 0
iva2k 0:e614f7875b60 30 #endif
iva2k 0:e614f7875b60 31
iva2k 0:e614f7875b60 32 #ifndef DBG
iva2k 0:e614f7875b60 33 //#error
iva2k 0:e614f7875b60 34 #endif
iva2k 0:e614f7875b60 35
iva2k 0:e614f7875b60 36 #define LWIP_PLATFORM_DIAG(x) DBG x
iva2k 0:e614f7875b60 37 #define LWIP_PLATFORM_ASSERT(x) DBG(x)
iva2k 0:e614f7875b60 38
iva2k 0:e614f7875b60 39 #define LWIP_PROVIDE_ERRNO
iva2k 0:e614f7875b60 40
iva2k 0:e614f7875b60 41 #define U16_F "hu"
iva2k 0:e614f7875b60 42 #define S16_F "hd"
iva2k 0:e614f7875b60 43 #define X16_F "hx"
iva2k 0:e614f7875b60 44 #define U32_F "lu"
iva2k 0:e614f7875b60 45 #define S32_F "ld"
iva2k 0:e614f7875b60 46 #define X32_F "lx"
iva2k 0:e614f7875b60 47
iva2k 0:e614f7875b60 48 #if 0
iva2k 0:e614f7875b60 49 /*Create compilation problems, and according to http://www.mail-archive.com/lwip-users@nongnu.org/msg06786.html,
iva2k 0:e614f7875b60 50 lwIP uses packed structures, so packing the field is not really a good idea ;) */
iva2k 0:e614f7875b60 51 #define PACK_STRUCT_FIELD(x) __packed x
iva2k 0:e614f7875b60 52 #else
iva2k 0:e614f7875b60 53 #define PACK_STRUCT_FIELD(x) x
iva2k 0:e614f7875b60 54 #endif
iva2k 0:e614f7875b60 55
iva2k 0:e614f7875b60 56 #define PACK_STRUCT_STRUCT
iva2k 0:e614f7875b60 57 #define PACK_STRUCT_BEGIN __packed
iva2k 0:e614f7875b60 58 #define PACK_STRUCT_END
iva2k 0:e614f7875b60 59
iva2k 0:e614f7875b60 60
iva2k 0:e614f7875b60 61 #endif /* __LWIP_ARCH_CC_H__ */