1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-19 23:22:16 +03:00

Fix ESP8266NetBIOS to compile with lwip V2 (#3823)

* Fix to compile with lwip V2

* Add changes suggested
This commit is contained in:
Luc 2017-11-17 22:02:22 +01:00 committed by Develo
parent 397592fce7
commit bec6a4d302
2 changed files with 29 additions and 3 deletions

View File

@ -17,6 +17,12 @@ extern "C" {
#define NBNSQ_TYPE_NB (0x0020) #define NBNSQ_TYPE_NB (0x0020)
#define NBNSQ_CLASS_IN (0x0001) #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): // Definice struktury NBNS dotazu (alespon veci, ktere jsem vypozoroval):
struct NBNSQUESTION { struct NBNSQUESTION {
@ -140,7 +146,7 @@ bool ESP8266NetBIOS::begin(const char *name)
} }
// presuneme jmeno zarizeni se soucasnou upravou na UPPER case // 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[i] = toupper(name[i]);
} }
_name[n] = '\0'; _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) { while(pb != NULL) {
uint8_t * data = (uint8_t*)((pb)->payload); uint8_t * data = (uint8_t*)((pb)->payload);
size_t len = pb->len; 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) 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<ESP8266NetBIOS*>(arg)->_recv(upcb, p, addr, port); reinterpret_cast<ESP8266NetBIOS*>(arg)->_recv(upcb, p, addr, port);
} }

View File

@ -2,6 +2,10 @@
#ifndef __ESPNBNS_h__ #ifndef __ESPNBNS_h__
#define __ESPNBNS_h__ #define __ESPNBNS_h__
extern "C" {
#include "lwip/init.h" // LWIP_VERSION_
#include <lwip/ip_addr.h>
}
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>
#define NBNS_PORT 137 #define NBNS_PORT 137
@ -15,7 +19,6 @@
struct udp_pcb; struct udp_pcb;
struct pbuf; struct pbuf;
struct ip_addr;
class ESP8266NetBIOS class ESP8266NetBIOS
{ {
@ -24,8 +27,14 @@ protected:
char _name[NBNS_MAX_HOSTNAME_LEN + 1]; char _name[NBNS_MAX_HOSTNAME_LEN + 1];
void _getnbname(char *nbname, char *name, uint8_t maxlen); void _getnbname(char *nbname, char *name, uint8_t maxlen);
void _makenbname(char *name, char *nbname, uint8_t outlen); 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); 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); 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: public:
ESP8266NetBIOS(); ESP8266NetBIOS();
~ESP8266NetBIOS(); ~ESP8266NetBIOS();