ZotBins Core
Loading...
Searching...
No Matches
esp_idf_lib_helpers/esp_idf_lib_helpers.h
1/*
2 * Copyright (c) 2019 Tomoyuki Sakurai <y@trombik.org>
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17#if !defined(__ESP_IDF_LIB_HELPERS__H__)
18#define __ESP_IDF_LIB_HELPERS__H__
19
20/* XXX this header file does not need to include freertos/FreeRTOS.h.
21 * but without it, ESP8266 RTOS SDK does not include `sdkconfig.h` in correct
22 * order. as this header depends on sdkconfig.h, sdkconfig.h must be included
23 * first. however, the SDK includes this header first, then includes
24 * `sdkconfig.h` when freertos/FreeRTOS.h is not explicitly included. an
25 * evidence can be found in `build/${COMPONENT}/${COMPONENT}.d` in a failed
26 * build.
27 */
28#include <freertos/FreeRTOS.h>
29#include <esp_idf_version.h>
30
31#if !defined(ESP_IDF_VERSION) || !defined(ESP_IDF_VERSION_VAL)
32#error Unknown ESP-IDF/ESP8266 RTOS SDK version
33#endif
34
35/* Minimal supported version for ESP32, ESP32S2 */
36#define HELPER_ESP32_MIN_VER ESP_IDF_VERSION_VAL(3, 3, 5)
37/* Minimal supported version for ESP8266 */
38#define HELPER_ESP8266_MIN_VER ESP_IDF_VERSION_VAL(3, 3, 0)
39
40/* HELPER_TARGET_IS_ESP32
41 * 1 when the target is esp32
42 */
43#if defined(CONFIG_IDF_TARGET_ESP32) \
44 || defined(CONFIG_IDF_TARGET_ESP32S2) \
45 || defined(CONFIG_IDF_TARGET_ESP32S3) \
46 || defined(CONFIG_IDF_TARGET_ESP32C2) \
47 || defined(CONFIG_IDF_TARGET_ESP32C3) \
48 || defined(CONFIG_IDF_TARGET_ESP32C6) \
49 || defined(CONFIG_IDF_TARGET_ESP32H2)
50#define HELPER_TARGET_IS_ESP32 (1)
51#define HELPER_TARGET_IS_ESP8266 (0)
52
53/* HELPER_TARGET_IS_ESP8266
54 * 1 when the target is esp8266
55 */
56#elif defined(CONFIG_IDF_TARGET_ESP8266)
57#define HELPER_TARGET_IS_ESP32 (0)
58#define HELPER_TARGET_IS_ESP8266 (1)
59#else
60#error BUG: cannot determine the target
61#endif
62
63#if HELPER_TARGET_IS_ESP32 && ESP_IDF_VERSION < HELPER_ESP32_MIN_VER
64#error Unsupported ESP-IDF version. Please update!
65#endif
66
67#if HELPER_TARGET_IS_ESP8266 && ESP_IDF_VERSION < HELPER_ESP8266_MIN_VER
68#error Unsupported ESP8266 RTOS SDK version. Please update!
69#endif
70
71/* show the actual values for debugging */
72#if DEBUG
73#define VALUE_TO_STRING(x) #x
74#define VALUE(x) VALUE_TO_STRING(x)
75#define VAR_NAME_VALUE(var) #var "=" VALUE(var)
76#pragma message(VAR_NAME_VALUE(CONFIG_IDF_TARGET_ESP32C3))
77#pragma message(VAR_NAME_VALUE(CONFIG_IDF_TARGET_ESP32H2))
78#pragma message(VAR_NAME_VALUE(CONFIG_IDF_TARGET_ESP32S2))
79#pragma message(VAR_NAME_VALUE(CONFIG_IDF_TARGET_ESP32))
80#pragma message(VAR_NAME_VALUE(CONFIG_IDF_TARGET_ESP8266))
81#pragma message(VAR_NAME_VALUE(ESP_IDF_VERSION_MAJOR))
82#endif
83
84#endif