0

I'm coding a library which handles sleep procedures.

Since I'm using both ESP826 and ESP32, which uses different sleep commands ( and WiFi ), I'm looking for a way to detect the MCU, while NOT using a boolean flag that indicates so.

Guy

4
  • 1
    #if defined(ESP8266), #if defined(ESP32) Commented Nov 15, 2020 at 9:33
  • 1
    how could you use a boolean flag? the code for esp32 would not compile on esp8266 and vice versa Commented Nov 15, 2020 at 9:37
  • @Juraj the part that code differs, I need the flag for. Commented Nov 16, 2020 at 19:06
  • you have in the question "while NOT using a boolean flag that indicates so." so you exclude a not existing option Commented Nov 16, 2020 at 20:51

1 Answer 1

6

I take this to mean that you do not want to have to ask the user of the code to configure a boolean flag.

The ESP8266 Arduino package provides -DARDUINO_ARCH_ESP8266 -DESP8266 command-line options these while calling g++. These effectively #define feature test macros as though they were at the beginning of the source code.

For ESP32 it does likewise with -DARDUINO_ARCH_ESP32 -DESP32

You could perform tests in your code such as:

#if defined (ARDUINO_ARCH_ESP8266)
// do one thing
#elif defined(ESP32)
// do another
#else
#error Architecture unrecognized by this code.
#endif

There are likely also macros like these that are predefined by the xtensa g++ compiler.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.