Explorar el Código

Assume `PROGMEM` is available as soon as `ARDUINO` is defined (#1693)

Benoit Blanchon hace 4 años
padre
commit
67fc2d9897

+ 1 - 0
CHANGELOG.md

@@ -22,6 +22,7 @@ HEAD
 * Fix return type of `StaticJsonDocument::operator=`
 * Avoid pool reallocation in `BasicJsonDocument`'s copy assignment if capacity is the same
 * Avoid including `Arduino.h` when all its features are disabled (issue #1692, PR #1693 by @paulocsanz)
+* Assume `PROGMEM` is available as soon as `ARDUINO` is defined (consequence of #1693)
 
 
 v6.18.5 (2021-09-28)

+ 0 - 8
examples/ProgmemExample/ProgmemExample.ino

@@ -14,8 +14,6 @@
 #include <ArduinoJson.h>
 
 void setup() {
-#ifdef PROGMEM  // <- check that Flash strings are supported
-
   DynamicJsonDocument doc(1024);
 
   // You can use a Flash String as your JSON input.
@@ -46,12 +44,6 @@ void setup() {
   if (obj["sensor"] == F("gps")) {
     // ...
   }
-
-#else
-
-#warning PROGMEM is not supported on this platform
-
-#endif
 }
 
 void loop() {

+ 1 - 0
extras/tests/Helpers/Arduino.h

@@ -7,5 +7,6 @@
 #include "api/Print.h"
 #include "api/Stream.h"
 #include "api/String.h"
+#include "progmem_emulation.hpp"
 
 #define ARDUINO_H_INCLUDED 1

+ 0 - 1
extras/tests/Helpers/progmem_emulation.hpp

@@ -3,7 +3,6 @@
 // MIT License
 
 #include <stdint.h>  // uint8_t
-#include <string.h>  // strcmp, strlen...
 
 #define PROGMEM
 

+ 0 - 1
extras/tests/Misc/StringAdapters.cpp

@@ -6,7 +6,6 @@
 #define ARDUINOJSON_ENABLE_ARDUINO_STRING 1
 
 #include "custom_string.hpp"
-#include "progmem_emulation.hpp"
 #include "weird_strcmp.hpp"
 
 #include <ArduinoJson/Strings/StringAdapters.hpp>

+ 6 - 0
extras/tests/Misc/weird_strcmp.hpp

@@ -1,5 +1,11 @@
+// ArduinoJson - https://arduinojson.org
+// Copyright Benoit Blanchon 2014-2021
+// MIT License
+
 #include <ArduinoJson/Namespace.hpp>
 
+#include <string.h>  // strcmp, strncmp
+
 // Issue #1198: strcmp() implementation that returns a value larger than 8-bit
 
 namespace ARDUINOJSON_NAMESPACE {

+ 0 - 2
extras/tests/MixedConfiguration/enable_progmem_1.cpp

@@ -2,8 +2,6 @@
 // Copyright Benoit Blanchon 2014-2021
 // MIT License
 
-#include "progmem_emulation.hpp"
-
 #define ARDUINOJSON_ENABLE_PROGMEM 1
 #include <ArduinoJson.h>
 

+ 0 - 2
extras/tests/MixedConfiguration/enable_string_deduplication_0.cpp

@@ -2,8 +2,6 @@
 // Copyright Benoit Blanchon 2014-2021
 // MIT License
 
-#include "progmem_emulation.hpp"
-
 #define ARDUINOJSON_ENABLE_ARDUINO_STRING 1
 #define ARDUINOJSON_ENABLE_PROGMEM 1
 #define ARDUINOJSON_ENABLE_STRING_DEDUPLICATION 0

+ 0 - 2
extras/tests/MixedConfiguration/enable_string_deduplication_1.cpp

@@ -2,8 +2,6 @@
 // Copyright Benoit Blanchon 2014-2021
 // MIT License
 
-#include "progmem_emulation.hpp"
-
 #define ARDUINOJSON_ENABLE_ARDUINO_STRING 1
 #define ARDUINOJSON_ENABLE_PROGMEM 1
 #define ARDUINOJSON_ENABLE_STRING_DEDUPLICATION 1

+ 9 - 8
src/ArduinoJson/Configuration.hpp

@@ -131,6 +131,11 @@
 #    define ARDUINOJSON_ENABLE_ARDUINO_PRINT 1
 #  endif
 
+// Enable support for PROGMEM
+#  ifndef ARDUINOJSON_ENABLE_PROGMEM
+#    define ARDUINOJSON_ENABLE_PROGMEM 1
+#  endif
+
 #else  // ARDUINO
 
 // Disable support for Arduino's String class
@@ -148,16 +153,12 @@
 #    define ARDUINOJSON_ENABLE_ARDUINO_PRINT 0
 #  endif
 
-#endif  // ARDUINO
-
-#ifndef ARDUINOJSON_ENABLE_PROGMEM
-#  if defined(PROGMEM) && defined(pgm_read_byte) && defined(pgm_read_dword) && \
-      defined(pgm_read_ptr) && defined(pgm_read_float)
-#    define ARDUINOJSON_ENABLE_PROGMEM 1
-#  else
+// Disable support for PROGMEM
+#  ifndef ARDUINOJSON_ENABLE_PROGMEM
 #    define ARDUINOJSON_ENABLE_PROGMEM 0
 #  endif
-#endif
+
+#endif  // ARDUINO
 
 // Convert unicode escape sequence (\u0123) to UTF-8
 #ifndef ARDUINOJSON_DECODE_UNICODE