From 2315ac20bcc6ff80428fcbe02327fd139e9f6f68 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 10 Apr 2018 12:23:33 +0200 Subject: [PATCH] import use of __PROG_TYPES_COMPAT__ define for compatibility with old arduino code (#4619) restrict usage of deprecated typedefs "prog_*", and cast "pgm_read_*"'s address parameters to "const void*" only when __PROG_TYPES_COMPAT__ is defined. also add compatibility --- cores/esp8266/avr/pgmspace.h | 1 + cores/esp8266/pgmspace.h | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 cores/esp8266/avr/pgmspace.h diff --git a/cores/esp8266/avr/pgmspace.h b/cores/esp8266/avr/pgmspace.h new file mode 100644 index 000000000..310b81e10 --- /dev/null +++ b/cores/esp8266/avr/pgmspace.h @@ -0,0 +1 @@ +#include "../pgmspace.h" diff --git a/cores/esp8266/pgmspace.h b/cores/esp8266/pgmspace.h index 256c4b99e..d793324dd 100644 --- a/cores/esp8266/pgmspace.h +++ b/cores/esp8266/pgmspace.h @@ -29,6 +29,8 @@ extern "C" { #define _SFR_BYTE(n) (n) +#ifdef __PROG_TYPES_COMPAT__ + typedef void prog_void; typedef char prog_char; typedef unsigned char prog_uchar; @@ -39,6 +41,8 @@ typedef uint16_t prog_uint16_t; typedef int32_t prog_int32_t; typedef uint32_t prog_uint32_t; +#endif // defined(__PROG_TYPES_COMPAT__) + #define SIZE_IRRELEVANT 0x7fffffff // memchr_P and memrchr_P are not implemented due to danger in its use, and @@ -112,8 +116,13 @@ static inline uint16_t pgm_read_word_inlined(const void* addr) { } // Make sure, that libraries checking existence of this macro are not failing +#ifdef __PROG_TYPES_COMPAT__ +#define pgm_read_byte(addr) pgm_read_byte_inlined((const void*)(addr)) +#define pgm_read_word(addr) pgm_read_word_inlined((const void*)(addr)) +#else #define pgm_read_byte(addr) pgm_read_byte_inlined(addr) #define pgm_read_word(addr) pgm_read_word_inlined(addr) +#endif #else //__ets__ #define pgm_read_byte(addr) (*reinterpret_cast(addr))