mbed OS5
Fork of UIPEthernet by
Diff: UIPUdp.h
- Revision:
- 4:d774541a34da
- Parent:
- 2:049ce85163c5
- Child:
- 8:4acb22344932
--- a/UIPUdp.h Sat Dec 20 11:10:40 2014 +0000 +++ b/UIPUdp.h Sun Mar 08 20:26:56 2015 +0000 @@ -3,6 +3,8 @@ Copyright (c) 2013 Norbert Truchsess <norbert.truchsess@t-online.de> All rights reserved. + Modified (ported to mbed) by Zoltan Hudak <hudakz@inbox.com> + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or @@ -20,35 +22,33 @@ #define UIPUDP_H #include "ethernet_comp.h" - #include "mbed.h" + #include <mbed.h> #include <Udp.h> - #include "utility/mempool.h" + #include "utility/mempool.h" extern "C" { - #include "utility/uip.h" + #include "utility/uip.h" } #define UIP_UDP_MAXDATALEN 1500 #define UIP_UDP_PHYH_LEN UIP_LLH_LEN + UIP_IPUDPH_LEN #define UIP_UDP_MAXPACKETSIZE UIP_UDP_MAXDATALEN + UIP_UDP_PHYH_LEN - #ifndef UIP_UDP_NUMPACKETS - #define UIP_UDP_NUMPACKETS 5 - #endif + +typedef struct +{ + memaddress out_pos; + memhandle packet_next; + memhandle packet_in; + memhandle packet_out; + bool send; +} uip_udp_userdata_t; + class UIPUDP : public UDP { private: struct uip_udp_conn* _uip_udp_conn; - struct appdata_t - { - uint16_t rport; - IPAddress ripaddr; - memaddress out_pos; - memhandle packets_in[UIP_UDP_NUMPACKETS]; - memhandle packet_in; - memhandle packet_out; - bool send; - } appdata; + uip_udp_userdata_t appdata; public: UIPUDP(void); // Constructor uint8_t begin(uint16_t); // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use @@ -73,7 +73,7 @@ // Write size bytes from buffer into the packet size_t write(const uint8_t* buffer, size_t size); - // using Print::write; + // using Print::write; // Start processing the next available incoming packet // Returns the size of the packet in bytes, or 0 if no packets are available int parsePacket(void); @@ -90,11 +90,11 @@ // Read up to len characters from the current packet and place them into buffer // Returns the number of characters read, or 0 if none are available - int read(char* buffer, size_t len) { return read((unsigned char*)buffer, len); }; + int read(char* buffer, size_t len) { return read((unsigned char*)buffer, len); } + ; // Return the next byte from the current packet without moving on to the next byte int peek(void); - void flush(void); // Finish reading the current packet // Return the IP address of the host who sent the current incoming packet @@ -103,6 +103,9 @@ // Return the port of the host who sent the current incoming packet uint16_t remotePort(void); private: - static void uip_callback(uip_udp_appstate_t* s); + friend void uipudp_appcall(void); + + friend class UIPEthernetClass; + static void _send(uip_udp_userdata_t* data); }; #endif