This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Fork of libMiMic by
mbed/UdpSocket.h@60:803de2088243, 2013-10-03 (annotated)
- Committer:
- nyatla
- Date:
- Thu Oct 03 02:37:22 2013 +0000
- Revision:
- 60:803de2088243
- Parent:
- 58:03b89038b21a
- Child:
- 64:258e84040262
fix bug under /mbed; 1.udp socket; ; add function; 1.add canread function to tcpsocket,udp socket
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nyatla | 58:03b89038b21a | 1 | #pragma once |
nyatla | 58:03b89038b21a | 2 | //////////////////////////////////////////////////////////////////////////////// |
nyatla | 58:03b89038b21a | 3 | // UdpSocket.h |
nyatla | 58:03b89038b21a | 4 | //////////////////////////////////////////////////////////////////////////////// |
nyatla | 58:03b89038b21a | 5 | |
nyatla | 58:03b89038b21a | 6 | #include "NyLPC_net.h" |
nyatla | 58:03b89038b21a | 7 | #include "IpAddr.h" |
nyatla | 58:03b89038b21a | 8 | |
nyatla | 58:03b89038b21a | 9 | namespace MiMic |
nyatla | 58:03b89038b21a | 10 | { |
nyatla | 58:03b89038b21a | 11 | /** |
nyatla | 58:03b89038b21a | 12 | * Udp Socket Class. |
nyatla | 58:03b89038b21a | 13 | * The class is used by Net constructor. |
nyatla | 58:03b89038b21a | 14 | */ |
nyatla | 58:03b89038b21a | 15 | class UdpSocket |
nyatla | 58:03b89038b21a | 16 | { |
nyatla | 58:03b89038b21a | 17 | private: |
nyatla | 58:03b89038b21a | 18 | NyLPC_TcUdpSocket_t _inst; |
nyatla | 58:03b89038b21a | 19 | void* _private_rx; |
nyatla | 58:03b89038b21a | 20 | public: |
nyatla | 58:03b89038b21a | 21 | /** wrapped base LPC class.*/ |
nyatla | 58:03b89038b21a | 22 | NyLPC_TcUdpSocket_t* refBaseInstance(){return &this->_inst;} |
nyatla | 58:03b89038b21a | 23 | |
nyatla | 58:03b89038b21a | 24 | public: |
nyatla | 60:803de2088243 | 25 | /** |
nyatla | 60:803de2088243 | 26 | * @param i_port |
nyatla | 60:803de2088243 | 27 | * port number. |
nyatla | 60:803de2088243 | 28 | * @param i_rx_buf_size |
nyatla | 60:803de2088243 | 29 | * Size of the receive memory to allocate on heap |
nyatla | 60:803de2088243 | 30 | */ |
nyatla | 58:03b89038b21a | 31 | UdpSocket(unsigned short i_port,unsigned short i_rx_buf_size=(unsigned short)512); |
nyatla | 60:803de2088243 | 32 | /** |
nyatla | 60:803de2088243 | 33 | * @param i_port |
nyatla | 60:803de2088243 | 34 | * port number. |
nyatla | 60:803de2088243 | 35 | * @param i_rx_buffer |
nyatla | 60:803de2088243 | 36 | * allocated memory for receiving. |
nyatla | 60:803de2088243 | 37 | * @param i_rx_buf_size |
nyatla | 60:803de2088243 | 38 | * Size of the i_rx_buf |
nyatla | 60:803de2088243 | 39 | */ |
nyatla | 58:03b89038b21a | 40 | UdpSocket(unsigned short i_port,void* i_rx_buf,unsigned short i_rx_buf_size); |
nyatla | 58:03b89038b21a | 41 | /** |
nyatla | 58:03b89038b21a | 42 | * This constructor accepts "large" packet by asynchronous handler. |
nyatla | 58:03b89038b21a | 43 | * Must be override "onRxHandler" function. |
nyatla | 58:03b89038b21a | 44 | */ |
nyatla | 58:03b89038b21a | 45 | UdpSocket(unsigned short i_port,void* i_rx_handler); |
nyatla | 58:03b89038b21a | 46 | virtual ~UdpSocket(); |
nyatla | 58:03b89038b21a | 47 | /** |
nyatla | 58:03b89038b21a | 48 | * This function return recieved data and size. |
nyatla | 58:03b89038b21a | 49 | * The function sets the head of the oldest readable buffer. |
nyatla | 58:03b89038b21a | 50 | * A position is not changed until precvnext was called. |
nyatla | 58:03b89038b21a | 51 | * @param i_host_addr |
nyatla | 58:03b89038b21a | 52 | * must be IPv4 address format. |
nyatla | 58:03b89038b21a | 53 | */ |
nyatla | 58:03b89038b21a | 54 | int precvfrom(const void* &i_rx,IpAddr* i_peer_host=NULL,unsigned short* i_port=NULL); |
nyatla | 60:803de2088243 | 55 | int precvfrom(const char* &i_rx,IpAddr* i_peer_host=NULL,unsigned short* i_port=NULL); |
nyatla | 58:03b89038b21a | 56 | /** |
nyatla | 58:03b89038b21a | 57 | * This function moves rx buffer to next packet. |
nyatla | 58:03b89038b21a | 58 | */ |
nyatla | 58:03b89038b21a | 59 | void precvnext(void); |
nyatla | 60:803de2088243 | 60 | /** |
nyatla | 60:803de2088243 | 61 | * true if precv has data. |
nyatla | 60:803de2088243 | 62 | * This can avoid the block of precv. |
nyatla | 60:803de2088243 | 63 | */ |
nyatla | 60:803de2088243 | 64 | bool canRecv(); |
nyatla | 60:803de2088243 | 65 | |
nyatla | 58:03b89038b21a | 66 | bool sendTo(const IpAddr& i_host,unsigned short i_port,const void* i_tx,unsigned short i_tx_size); |
nyatla | 58:03b89038b21a | 67 | void joinMulticast(const IpAddr& i_host); |
nyatla | 58:03b89038b21a | 68 | void setBroadcast(void); |
nyatla | 58:03b89038b21a | 69 | }; |
nyatla | 58:03b89038b21a | 70 | } |
nyatla | 58:03b89038b21a | 71 |