forked from bblanchon/ArduinoJson
Add a polyfill for pgm_read_dword()
(issue #1433)
This commit is contained in:
@ -31,10 +31,6 @@ inline float pgm_read_float(const void* p) {
|
|||||||
return *reinterpret_cast<const float*>(convertFlashToPtr(p));
|
return *reinterpret_cast<const float*>(convertFlashToPtr(p));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline uint32_t pgm_read_dword(const void* p) {
|
|
||||||
return *reinterpret_cast<const uint32_t*>(convertFlashToPtr(p));
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ARDUINOJSON_DEFINE_PROGMEM_ARRAY(type, name, value) \
|
#define ARDUINOJSON_DEFINE_PROGMEM_ARRAY(type, name, value) \
|
||||||
static type const ARDUINOJSON_CONCAT2(name, _progmem)[] = value; \
|
static type const ARDUINOJSON_CONCAT2(name, _progmem)[] = value; \
|
||||||
static type const* name = reinterpret_cast<type const*>( \
|
static type const* name = reinterpret_cast<type const*>( \
|
||||||
|
@ -14,7 +14,7 @@ namespace ARDUINOJSON_NAMESPACE {
|
|||||||
// Wraps a const char* so that the our functions are picked only if the
|
// Wraps a const char* so that the our functions are picked only if the
|
||||||
// originals are missing
|
// originals are missing
|
||||||
struct pgm_p {
|
struct pgm_p {
|
||||||
pgm_p(const char* p) : address(p) {}
|
pgm_p(const void* p) : address(reinterpret_cast<const char*>(p)) {}
|
||||||
const char* address;
|
const char* address;
|
||||||
};
|
};
|
||||||
} // namespace ARDUINOJSON_NAMESPACE
|
} // namespace ARDUINOJSON_NAMESPACE
|
||||||
@ -95,3 +95,11 @@ inline void* memcpy_P(void* dst, ARDUINOJSON_NAMESPACE::pgm_p src, size_t n) {
|
|||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef pgm_read_dword
|
||||||
|
inline uint32_t pgm_read_dword(ARDUINOJSON_NAMESPACE::pgm_p p) {
|
||||||
|
uint32_t result;
|
||||||
|
memcpy_P(&result, p, 4);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Reference in New Issue
Block a user