W5500 driver for mbed OS 5

Dependents:   http-webserver-example mbed-os-example-sockets

Fork of W5500Interface by Sergei G

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers DHCPClient.h Source File

DHCPClient.h

00001 /*
00002 * DHCPClient.h
00003 * Mbed OS5 support added by Sergei G <https://os.mbed.com/users/sgnezdov/>
00004 * Ported here on Aug/09/2018
00005 *
00006 */
00007 // DHCPClient.h 2013/4/10
00008 #ifndef DHCPCLIENT_H
00009 #define DHCPCLIENT_H
00010 #include "wiznet.h"
00011 #include "UDPSocket.h"
00012 
00013 #define DHCP_OFFSET_OP 0
00014 #define DHCP_OFFSET_XID 4
00015 #define DHCP_OFFSET_YIADDR 16
00016 #define DHCP_OFFSET_SIADDR 20
00017 #define DHCP_OFFSET_OPTIONS 240
00018 #define DHCP_MAX_PACKET_SIZE 600
00019 
00020 // DHCP Message Type
00021 #define DHCPDISCOVER 1
00022 #define DHCPOFFER    2
00023 #define DHCPREQUEST  3
00024 #define DHCPDECLINE  4
00025 #define DHCPACK      5
00026 #define DHCPNAK      6
00027 #define DHCPRELEASE  7
00028 #define DHCPINFORM   8
00029 
00030 class DHCPClient {
00031 public:
00032     DHCPClient();
00033     int setup(NetworkStack *ns, uint8_t mac_addr[6], int timeout_ms = 15*1000);
00034     uint8_t chaddr[6]; // MAC
00035     uint8_t yiaddr[4]; // IP
00036     uint8_t dnsaddr[4]; // DNS
00037     uint8_t gateway[4];
00038     uint8_t netmask[4];
00039     uint8_t siaddr[4];
00040 private:
00041     int discover();
00042     int request();
00043     int offer(uint8_t buf[], int size);
00044     void add_buf(uint8_t* buf, int len);
00045     void fill_buf(int len, uint8_t data = 0x00);
00046     void add_buf(uint8_t c);
00047     void add_option(uint8_t code, uint8_t* buf = NULL, int len = 0);
00048     bool verify(uint8_t buf[], int len);
00049     void callback();
00050     UDPSocket* m_udp;
00051     SocketAddress m_server;
00052     uint8_t xid[4];
00053     bool exit_flag;
00054     Timer m_interval;
00055     int m_retry;
00056     uint8_t m_buf[DHCP_MAX_PACKET_SIZE];
00057     int m_pos;
00058     //WIZnet_Chip* eth;
00059 };
00060 #endif //DHCPCLIENT_H