diff --git a/libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp b/libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp index 98c77f7d3..896e031fd 100755 --- a/libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp +++ b/libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp @@ -17,6 +17,12 @@ extern "C" { #define NBNSQ_TYPE_NB (0x0020) #define NBNSQ_CLASS_IN (0x0001) +#ifndef LWIP_PLATFORM_HTONS +#define LWIP_PLATFORM_HTONS(_n) ((u16_t)((((_n) & 0xff) << 8) | (((_n) >> 8) & 0xff))) +#endif +#ifndef LWIP_PLATFORM_HTONL +#define LWIP_PLATFORM_HTONL(_n) ((u32_t)( (((_n) & 0xff) << 24) | (((_n) & 0xff00) << 8) | (((_n) >> 8) & 0xff00) | (((_n) >> 24) & 0xff) )) +#endif // Definice struktury NBNS dotazu (alespon veci, ktere jsem vypozoroval): struct NBNSQUESTION { @@ -140,7 +146,7 @@ bool ESP8266NetBIOS::begin(const char *name) } // presuneme jmeno zarizeni se soucasnou upravou na UPPER case - for (int i = 0; i < n; ++i) { + for (size_t i = 0; i < n; ++i) { _name[i] = toupper(name[i]); } _name[n] = '\0'; @@ -168,8 +174,15 @@ void ESP8266NetBIOS::end() } } -void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, u16_t port) +#if LWIP_VERSION_MAJOR == 1 +void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port) +#else +void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, const ip_addr_t *addr, uint16_t port) +#endif { + (void)upcb; + (void)addr; + (void)port; while(pb != NULL) { uint8_t * data = (uint8_t*)((pb)->payload); size_t len = pb->len; @@ -256,7 +269,11 @@ void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, u16_t port) } } +#if LWIP_VERSION_MAJOR == 1 void ESP8266NetBIOS::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, struct ip_addr *addr, uint16_t port) +#else +void ESP8266NetBIOS::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port) +#endif { reinterpret_cast(arg)->_recv(upcb, p, addr, port); } diff --git a/libraries/ESP8266NetBIOS/ESP8266NetBIOS.h b/libraries/ESP8266NetBIOS/ESP8266NetBIOS.h index 0fad651f2..1c5b1d969 100755 --- a/libraries/ESP8266NetBIOS/ESP8266NetBIOS.h +++ b/libraries/ESP8266NetBIOS/ESP8266NetBIOS.h @@ -2,6 +2,10 @@ #ifndef __ESPNBNS_h__ #define __ESPNBNS_h__ +extern "C" { +#include "lwip/init.h" // LWIP_VERSION_ +#include +} #include #define NBNS_PORT 137 @@ -15,7 +19,6 @@ struct udp_pcb; struct pbuf; -struct ip_addr; class ESP8266NetBIOS { @@ -24,8 +27,14 @@ protected: char _name[NBNS_MAX_HOSTNAME_LEN + 1]; void _getnbname(char *nbname, char *name, uint8_t maxlen); void _makenbname(char *name, char *nbname, uint8_t outlen); + +#if LWIP_VERSION_MAJOR == 1 void _recv(udp_pcb *upcb, pbuf *pb, struct ip_addr *addr, uint16_t port); static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, struct ip_addr *addr, uint16_t port); +#else + void _recv(udp_pcb *upcb, pbuf *pb, const ip_addr_t *addr, uint16_t port); + static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port); +#endif public: ESP8266NetBIOS(); ~ESP8266NetBIOS();