mirror of
https://github.com/esphome/esphome.git
synced 2025-09-04 20:32:21 +01:00
drop arduino, support zephyr boards
This commit is contained in:
@@ -42,7 +42,7 @@ AUTO_LOAD = ["zephyr"]
|
|||||||
def set_core_data(config):
|
def set_core_data(config):
|
||||||
zephyr_set_core_data(config)
|
zephyr_set_core_data(config)
|
||||||
CORE.data[KEY_CORE][KEY_TARGET_PLATFORM] = PLATFORM_NRF52
|
CORE.data[KEY_CORE][KEY_TARGET_PLATFORM] = PLATFORM_NRF52
|
||||||
CORE.data[KEY_CORE][KEY_TARGET_FRAMEWORK] = config[CONF_FRAMEWORK][CONF_TYPE]
|
CORE.data[KEY_CORE][KEY_TARGET_FRAMEWORK] = KEY_ZEPHYR
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
@@ -84,16 +84,12 @@ ZEPHYR_VARIANTS = [
|
|||||||
ZEPHYR_VARIANT_NRF_SDK,
|
ZEPHYR_VARIANT_NRF_SDK,
|
||||||
]
|
]
|
||||||
|
|
||||||
FRAMEWORK_VARIANTS = [
|
|
||||||
KEY_ZEPHYR,
|
|
||||||
"arduino",
|
|
||||||
]
|
|
||||||
|
|
||||||
FRAMEWORK_SCHEMA = cv.All(
|
FRAMEWORK_SCHEMA = cv.All(
|
||||||
cv.Schema(
|
cv.Schema(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_TYPE): cv.one_of(*FRAMEWORK_VARIANTS, lower=True),
|
cv.Optional(CONF_VARIANT, default=ZEPHYR_VARIANT_NRF_SDK): cv.one_of(
|
||||||
cv.Optional(CONF_VARIANT): cv.one_of(*ZEPHYR_VARIANTS, lower=True),
|
*ZEPHYR_VARIANTS, lower=True
|
||||||
|
),
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
_platform_check_versions,
|
_platform_check_versions,
|
||||||
@@ -109,21 +105,15 @@ def _detect_bootloader(value):
|
|||||||
value = value.copy()
|
value = value.copy()
|
||||||
bootloader = None
|
bootloader = None
|
||||||
|
|
||||||
if value[CONF_FRAMEWORK][CONF_TYPE] == KEY_ZEPHYR:
|
if (
|
||||||
if (
|
value[CONF_BOARD] in BOARDS_ZEPHYR
|
||||||
value[CONF_BOARD] in BOARDS_ZEPHYR
|
and KEY_BOOTLOADER in BOARDS_ZEPHYR[value[CONF_BOARD]]
|
||||||
and KEY_BOOTLOADER in BOARDS_ZEPHYR[value[CONF_BOARD]]
|
):
|
||||||
):
|
bootloader = BOARDS_ZEPHYR[value[CONF_BOARD]][KEY_BOOTLOADER]
|
||||||
bootloader = BOARDS_ZEPHYR[value[CONF_BOARD]][KEY_BOOTLOADER]
|
|
||||||
|
|
||||||
if KEY_BOOTLOADER not in value:
|
if KEY_BOOTLOADER not in value:
|
||||||
if bootloader is None:
|
if bootloader is None:
|
||||||
if value[CONF_FRAMEWORK][CONF_TYPE] == KEY_ZEPHYR:
|
bootloader = BOOTLOADER_MCUBOOT
|
||||||
bootloader = BOOTLOADER_MCUBOOT
|
|
||||||
elif value[CONF_FRAMEWORK][CONF_TYPE] == "arduino":
|
|
||||||
bootloader = BOOTLOADER_ADAFRUIT
|
|
||||||
else:
|
|
||||||
raise NotImplementedError
|
|
||||||
value[KEY_BOOTLOADER] = bootloader
|
value[KEY_BOOTLOADER] = bootloader
|
||||||
else:
|
else:
|
||||||
if bootloader is not None and bootloader != value[KEY_BOOTLOADER]:
|
if bootloader is not None and bootloader != value[KEY_BOOTLOADER]:
|
||||||
@@ -153,7 +143,7 @@ async def to_code(config):
|
|||||||
cg.add_define("ESPHOME_BOARD", config[CONF_BOARD])
|
cg.add_define("ESPHOME_BOARD", config[CONF_BOARD])
|
||||||
cg.add_define("ESPHOME_VARIANT", "NRF52")
|
cg.add_define("ESPHOME_VARIANT", "NRF52")
|
||||||
conf = config[CONF_FRAMEWORK]
|
conf = config[CONF_FRAMEWORK]
|
||||||
cg.add_platformio_option(CONF_FRAMEWORK, conf[CONF_TYPE])
|
cg.add_platformio_option(CONF_FRAMEWORK, CORE.data[KEY_CORE][KEY_TARGET_FRAMEWORK])
|
||||||
cg.add_platformio_option("platform", conf[CONF_PLATFORM_VERSION])
|
cg.add_platformio_option("platform", conf[CONF_PLATFORM_VERSION])
|
||||||
|
|
||||||
if config[KEY_BOOTLOADER] == BOOTLOADER_ADAFRUIT:
|
if config[KEY_BOOTLOADER] == BOOTLOADER_ADAFRUIT:
|
||||||
@@ -164,7 +154,9 @@ async def to_code(config):
|
|||||||
cg.add_platformio_option("board_upload.require_upload_port", "true")
|
cg.add_platformio_option("board_upload.require_upload_port", "true")
|
||||||
cg.add_platformio_option("board_upload.wait_for_upload_port", "true")
|
cg.add_platformio_option("board_upload.wait_for_upload_port", "true")
|
||||||
#
|
#
|
||||||
cg.add_platformio_option("extra_scripts", [f"pre:build_{conf[CONF_TYPE]}.py"])
|
cg.add_platformio_option(
|
||||||
|
"extra_scripts", [f"pre:build_{CORE.data[KEY_CORE][KEY_TARGET_FRAMEWORK]}.py"]
|
||||||
|
)
|
||||||
if CORE.using_zephyr:
|
if CORE.using_zephyr:
|
||||||
zephyr_to_code(conf)
|
zephyr_to_code(conf)
|
||||||
else:
|
else:
|
||||||
|
@@ -14,11 +14,15 @@ from .const import (
|
|||||||
)
|
)
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
CONF_VARIANT,
|
CONF_VARIANT,
|
||||||
|
CONF_BOARD,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
KEY_BOARD = "board"
|
||||||
|
|
||||||
|
|
||||||
def zephyr_set_core_data(config):
|
def zephyr_set_core_data(config):
|
||||||
CORE.data[KEY_ZEPHYR] = {}
|
CORE.data[KEY_ZEPHYR] = {}
|
||||||
|
CORE.data[KEY_ZEPHYR][KEY_BOARD] = config[CONF_BOARD]
|
||||||
CORE.data[KEY_ZEPHYR][KEY_PRJ_CONF] = {}
|
CORE.data[KEY_ZEPHYR][KEY_PRJ_CONF] = {}
|
||||||
CORE.data[KEY_ZEPHYR][KEY_OVERLAY] = ""
|
CORE.data[KEY_ZEPHYR][KEY_OVERLAY] = ""
|
||||||
return config
|
return config
|
||||||
@@ -66,6 +70,8 @@ def zephyr_to_code(conf):
|
|||||||
"platformio/toolchain-gccarmnoneeabi@https://github.com/tomaszduda23/toolchain-sdk-ng",
|
"platformio/toolchain-gccarmnoneeabi@https://github.com/tomaszduda23/toolchain-sdk-ng",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
# build is done by west so bypass board checking in platformio
|
||||||
|
cg.add_platformio_option("boards_dir", CORE.relative_build_path("boards"))
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
# c++ support
|
# c++ support
|
||||||
@@ -117,3 +123,22 @@ def zephyr_copy_files():
|
|||||||
CORE.relative_build_path("zephyr/app.overlay"),
|
CORE.relative_build_path("zephyr/app.overlay"),
|
||||||
CORE.data[KEY_ZEPHYR][KEY_OVERLAY],
|
CORE.data[KEY_ZEPHYR][KEY_OVERLAY],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
fake_board_manifest = """
|
||||||
|
{
|
||||||
|
"frameworks": [
|
||||||
|
"zephyr"
|
||||||
|
],
|
||||||
|
"name": "esphome nrf52",
|
||||||
|
"upload": {
|
||||||
|
"maximum_ram_size": 248832,
|
||||||
|
"maximum_size": 815104
|
||||||
|
},
|
||||||
|
"url": "https://esphome.io/",
|
||||||
|
"vendor": "esphome"
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
write_file_if_changed(
|
||||||
|
CORE.relative_build_path(f"boards/{CORE.data[KEY_ZEPHYR][KEY_BOARD]}.json"),
|
||||||
|
fake_board_manifest,
|
||||||
|
)
|
||||||
|
@@ -585,6 +585,7 @@ void get_mac_address_raw(uint8_t *mac) { // NOLINT(readability-non-const-parame
|
|||||||
#elif defined(USE_LIBRETINY)
|
#elif defined(USE_LIBRETINY)
|
||||||
WiFi.macAddress(mac);
|
WiFi.macAddress(mac);
|
||||||
#endif
|
#endif
|
||||||
|
//TODO
|
||||||
}
|
}
|
||||||
std::string get_mac_address() {
|
std::string get_mac_address() {
|
||||||
uint8_t mac[6];
|
uint8_t mac[6];
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
nrf52:
|
nrf52:
|
||||||
board: adafruit_itsybitsy_nrf52840
|
board: adafruit_itsybitsy_nrf52840
|
||||||
framework:
|
framework:
|
||||||
type: zephyr
|
|
||||||
variant: generic
|
variant: generic
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
@@ -64,6 +63,3 @@ text_sensor:
|
|||||||
reset_reason:
|
reset_reason:
|
||||||
name: "Reset Reason"
|
name: "Reset Reason"
|
||||||
|
|
||||||
deep_sleep:
|
|
||||||
run_duration: 10s
|
|
||||||
sleep_duration: 10s
|
|
||||||
|
@@ -1,10 +1,9 @@
|
|||||||
---
|
---
|
||||||
nrf52:
|
nrf52:
|
||||||
# board: adafruit_itsybitsy_nrf52840
|
# board: adafruit_itsybitsy_nrf52840
|
||||||
board: adafruit_feather_nrf52840
|
# board: adafruit_feather_nrf52840
|
||||||
framework:
|
board: nrf52840dk_nrf52840
|
||||||
type: zephyr
|
|
||||||
variant: nrf-sdk
|
|
||||||
# bootloader: adafruit
|
# bootloader: adafruit
|
||||||
# bootloader: mcuboot
|
# bootloader: mcuboot
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user