Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: UIPClient.h
- Revision:
- 4:d774541a34da
- Parent:
- 2:049ce85163c5
- Child:
- 8:4acb22344932
--- a/UIPClient.h Sat Dec 20 11:10:40 2014 +0000
+++ b/UIPClient.h Sun Mar 08 20:26:56 2015 +0000
@@ -16,83 +16,97 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
#ifndef UIPCLIENT_H
- #define UIPCLIENT_H
+#define UIPCLIENT_H
- #include "ethernet_comp.h"
- #include "Client.h"
- #include "utility/mempool.h"
+#include "ethernet_comp.h"
+//#include "Print.h"
+#include "Client.h"
+#include "utility/mempool.h"
+
+extern "C" {
+ #include "utility/uip.h"
+}
-extern "C"
-{
- #include "utility/uip.h"
-}
- #define UIP_SOCKET_DATALEN UIP_TCP_MSS
+#define UIP_SOCKET_DATALEN UIP_TCP_MSS
//#define UIP_SOCKET_NUMPACKETS UIP_RECEIVE_WINDOW/UIP_TCP_MSS+1
+#ifndef UIP_SOCKET_NUMPACKETS
+#define UIP_SOCKET_NUMPACKETS 5
+#endif
- #ifndef UIP_SOCKET_NUMPACKETS
- #define UIP_SOCKET_NUMPACKETS 5
- #endif
- #define UIP_CLIENT_CLOSE 1
- #define UIP_CLIENT_CLOSED 2
- #define UIP_CLIENT_RESTART 4
+#define UIP_CLIENT_CONNECTED 0x10
+#define UIP_CLIENT_CLOSE 0x20
+#define UIP_CLIENT_REMOTECLOSED 0x40
+#define UIP_CLIENT_RESTART 0x80
+#define UIP_CLIENT_STATEFLAGS (UIP_CLIENT_CONNECTED | UIP_CLIENT_CLOSE | UIP_CLIENT_REMOTECLOSED | UIP_CLIENT_RESTART)
+#define UIP_CLIENT_SOCKETS ~UIP_CLIENT_STATEFLAGS
typedef uint8_t uip_socket_ptr;
-typedef struct
-{
- uint8_t state;
- memhandle packets_in[UIP_SOCKET_NUMPACKETS];
- uint16_t lport; /**< The local TCP port, in network byte order. */
+typedef struct {
+ uint8_t state;
+ memhandle packets_in[UIP_SOCKET_NUMPACKETS];
+ uint16_t lport; /**< The local TCP port, in network byte order. */
} uip_userdata_closed_t;
-typedef struct
-{
- uint8_t state;
- memhandle packets_in[UIP_SOCKET_NUMPACKETS];
- memhandle packets_out[UIP_SOCKET_NUMPACKETS];
- memaddress out_pos;
+typedef struct {
+ uint8_t state;
+ memhandle packets_in[UIP_SOCKET_NUMPACKETS];
+ memhandle packets_out[UIP_SOCKET_NUMPACKETS];
+ memaddress out_pos;
+#if UIP_CLIENT_TIMER >= 0
+ unsigned long timer;
+#endif
} uip_userdata_t;
-class UIPClient :
- public Client
-{
+class UIPClient : public Client {
+
public:
- UIPClient(void);
- int connect(IPAddress ip, uint16_t port);
- int connect(const char* host, uint16_t port);
- int read(uint8_t* buf, size_t size);
- void stop(void);
- uint8_t connected(void);
- operator bool(void);
- virtual bool operator ==(const EthernetClient& );
- virtual bool operator !=(const EthernetClient& rhs) { return !this->operator ==(rhs); };
+ UIPClient();
+ int connect(IPAddress ip, uint16_t port);
+ int connect(const char *host, uint16_t port);
+ int read(uint8_t *buf, size_t size);
+ void stop();
+ uint8_t connected();
+ operator bool();
+ virtual bool operator==(const EthernetClient&);
+ virtual bool operator!=(const EthernetClient& rhs) { return !this->operator==(rhs); };
- size_t write(uint8_t);
- size_t write(const uint8_t* buf, size_t size);
- int available(void);
- int read(void);
- int peek(void);
- void flush(void);
+ size_t write(uint8_t);
+ size_t write(const uint8_t *buf, size_t size);
+ int available();
+ int read();
+ int peek();
+ void flush();
+
+// using Print::write;
+
private:
- UIPClient(struct uip_conn* _conn);
- UIPClient(uip_userdata_closed_t* closed_conn);
+ UIPClient(struct uip_conn *_conn);
+ UIPClient(uip_userdata_t* conn_data);
+
+ uip_userdata_t* data;
- struct uip_conn* _uip_conn;
+ static uip_userdata_t all_data[UIP_CONNS];
+ static uip_userdata_t* _allocateData();
- uip_userdata_t* data;
-
- static uip_userdata_closed_t* closed_conns[UIP_CONNS];
+ static size_t _write(uip_userdata_t *,const uint8_t *buf, size_t size);
+ static int _available(uip_userdata_t *);
- static size_t _write(struct uip_conn* , const uint8_t* buf, size_t size);
- static int _available(uip_userdata_t* );
+ static uint8_t _currentBlock(memhandle* blocks);
+ static void _eatBlock(memhandle* blocks);
+ static void _flushBlocks(memhandle* blocks);
+
+#ifdef UIPETHERNET_DEBUG_CLIENT
+ static void _dumpAllData();
+#endif
- static memhandle* _currentBlock(memhandle* blocks);
- static void _eatBlock(memhandle* blocks);
- static void _flushBlocks(memhandle* blocks);
+ friend class UIPEthernetClass;
+ friend class UIPServer;
- friend class UIPEthernetClass;
- friend class UIPServer;
- static void uip_callback(uip_tcp_appstate_t* s);
+ friend void uipclient_appcall(void);
+
};
+
#endif