mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-22 21:23:07 +03:00
* Define lwIP's s32/u32 to int s32/u32 were previously defined as long, but long can be 64 bits in host mode, so this commit reduces valgrind complaints and increase coherency. * some lads like to use `unsigned long` for 32 bits IPv4 addresses * fix lwIP's `sys_now()` return type * fix C declarations * merge upstream (lwip2) update on sys_now() definition * matching lwIP api (2/2) Co-authored-by: Max Prokhorov <prokhorov.max@outlook.com>
156 lines
4.8 KiB
C
156 lines
4.8 KiB
C
|
|
/*
|
|
|
|
Redistribution and use in source and binary forms, with or without modification,
|
|
are permitted provided that the following conditions are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright notice,
|
|
this list of conditions and the following disclaimer.
|
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimer in the documentation
|
|
and/or other materials provided with the distribution.
|
|
3. The name of the author may not be used to endorse or promote products
|
|
derived from this software without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
|
|
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
|
SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
|
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
|
OF SUCH DAMAGE.
|
|
|
|
author: d. gauchard
|
|
|
|
*/
|
|
|
|
// version for esp8266 sdk-2.0.0(656edbf) and later
|
|
|
|
#ifndef LWIP2_ARCH_CC_H
|
|
#define LWIP2_ARCH_CC_H
|
|
|
|
#include "stdint.h"
|
|
|
|
#include "lwip-err-t.h"
|
|
|
|
#ifdef LWIP_BUILD
|
|
|
|
// define LWIP_BUILD only when building LWIP
|
|
// otherwise include files below would conflict
|
|
// with standard headers like atoi()
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
#include "ets_sys.h"
|
|
#include "osapi.h"
|
|
#include "esp-missing.h"
|
|
|
|
void sntp_set_system_time (uint32_t t);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // defined(LWIP_BUILD)
|
|
|
|
#include "mem.h" // useful for os_malloc used in esp-arduino's mDNS
|
|
|
|
#include "glue.h" // include assembly locking macro used below
|
|
typedef uint32_t sys_prot_t;
|
|
#define SYS_ARCH_DECL_PROTECT(lev) sys_prot_t lev
|
|
#define SYS_ARCH_PROTECT(lev) lev = lwip_xt_rsil(15)
|
|
#define SYS_ARCH_UNPROTECT(lev) lwip_xt_wsr_ps(lev)
|
|
#define sys_jiffies() (0) // only used for increased randomness in PPP
|
|
|
|
#define LWIP_NO_CTYPE_H 1
|
|
|
|
///////////////////////////////
|
|
//// DEBUG
|
|
#include "gluedebug.h"
|
|
|
|
#if ULWIPDEBUG // debug 1:on or 0
|
|
#define LWIP_DEBUG 1
|
|
#define LWIP_PLATFORM_DIAG(x) do { os_printf x; } while(0)
|
|
#define LWIP_PLATFORM_ASSERT(x) do { os_printf("Assertion \"%s\" failed at line %d in %s\n", x, __LINE__, __FILE__); *(int*)0=0; } while(0)
|
|
//#define LWIP_PLATFORM_ASSERT(x) do { os_printf("Assertion \"%s\" failed at line %d in %s\n", x, __LINE__, __FILE__); while(1); } while(0)
|
|
#endif // ULWIPDEBUG
|
|
|
|
#if !ULWIPASSERT
|
|
#define LWIP_NOASSERT 1
|
|
#endif
|
|
|
|
///////////////////////////////
|
|
//// MISSING
|
|
|
|
// Arduino Core exposes time func with a generic type
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
unsigned long millis(void);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
// b/c we have conflicting typedefs of u32_t and ulong and can't substitute funcs,
|
|
// forcibly cast the `millis()` result to lwip's version of u32_t
|
|
// (previous version was `#define sys_now millis`)
|
|
#define sys_now() ((u32_t)millis())
|
|
|
|
#define LWIP_RAND r_rand // old lwip uses this useful undocumented function
|
|
#define IPSTR "%d.%d.%d.%d"
|
|
#define IP2STR(ipaddr) ip4_addr1_16(ipaddr), \
|
|
ip4_addr2_16(ipaddr), \
|
|
ip4_addr3_16(ipaddr), \
|
|
ip4_addr4_16(ipaddr)
|
|
|
|
#include <ipv4_addr.h>
|
|
|
|
///////////////////////////////
|
|
//// PROVIDED TO USER
|
|
|
|
typedef struct ip4_addr ip4_addr_t;
|
|
extern int ntp_servers_number;
|
|
extern ip4_addr_t* ntp_servers;
|
|
|
|
///////////////////////////////
|
|
//// STUBS
|
|
|
|
// these symbols must be renamed in the new implementation
|
|
// because they are known/used in blobs
|
|
|
|
#define dhcp_cleanup dhcp_cleanup_LWIP2
|
|
#define dhcp_release dhcp_release_LWIP2
|
|
#define dhcp_start dhcp_start_LWIP2
|
|
#define dhcp_stop dhcp_stop_LWIP2
|
|
#define dhcps_start dhcps_start_LWIP2
|
|
//#define dhcps_stop dhcps_stop_LWIP2 // void(void)
|
|
#define espconn_init espconn_init_LWIP2
|
|
#define etharp_output etharp_output_LWIP2
|
|
#define ethbroadcast ethbroadcast_LWIP2
|
|
#define ethernet_input ethernet_input_LWIP2
|
|
#define lwip_init lwip_init_LWIP2
|
|
#define netif_add netif_add_LWIP2
|
|
#define netif_default netif_default_LWIP2
|
|
#define netif_remove netif_remove_LWIP2
|
|
#define netif_set_addr netif_set_addr_LWIP2
|
|
#define netif_set_default netif_set_default_LWIP2
|
|
#define netif_set_down netif_set_down_LWIP2
|
|
#define netif_set_up netif_set_up_LWIP2
|
|
#define pbuf_alloc pbuf_alloc_LWIP2
|
|
#define pbuf_free pbuf_free_LWIP2
|
|
#define pbuf_ref pbuf_ref_LWIP2
|
|
//#define sys_check_timeouts sys_check_timeouts_LWIP2 // void(void)
|
|
|
|
#if !defined(LWIP_DEBUG) || !SYS_DEBUG
|
|
#define sys_timeout sys_timeout_LWIP2
|
|
#endif
|
|
|
|
#define sys_untimeout sys_untimeout_LWIP2
|
|
|
|
///////////////////////////////
|
|
#endif // LWIP2_ARCH_CC_H
|