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:
parent
397592fce7
commit
bec6a4d302
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user