mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	drop arduino, support zephyr boards
This commit is contained in:
		| @@ -42,7 +42,7 @@ AUTO_LOAD = ["zephyr"] | ||||
| def set_core_data(config): | ||||
|     zephyr_set_core_data(config) | ||||
|     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 | ||||
|  | ||||
|  | ||||
| @@ -84,16 +84,12 @@ ZEPHYR_VARIANTS = [ | ||||
|     ZEPHYR_VARIANT_NRF_SDK, | ||||
| ] | ||||
|  | ||||
| FRAMEWORK_VARIANTS = [ | ||||
|     KEY_ZEPHYR, | ||||
|     "arduino", | ||||
| ] | ||||
|  | ||||
| FRAMEWORK_SCHEMA = cv.All( | ||||
|     cv.Schema( | ||||
|         { | ||||
|             cv.Required(CONF_TYPE): cv.one_of(*FRAMEWORK_VARIANTS, lower=True), | ||||
|             cv.Optional(CONF_VARIANT): cv.one_of(*ZEPHYR_VARIANTS, lower=True), | ||||
|             cv.Optional(CONF_VARIANT, default=ZEPHYR_VARIANT_NRF_SDK): cv.one_of( | ||||
|                 *ZEPHYR_VARIANTS, lower=True | ||||
|             ), | ||||
|         } | ||||
|     ), | ||||
|     _platform_check_versions, | ||||
| @@ -109,7 +105,6 @@ def _detect_bootloader(value): | ||||
|     value = value.copy() | ||||
|     bootloader = None | ||||
|  | ||||
|     if value[CONF_FRAMEWORK][CONF_TYPE] == KEY_ZEPHYR: | ||||
|     if ( | ||||
|         value[CONF_BOARD] in BOARDS_ZEPHYR | ||||
|         and KEY_BOOTLOADER in BOARDS_ZEPHYR[value[CONF_BOARD]] | ||||
| @@ -118,12 +113,7 @@ def _detect_bootloader(value): | ||||
|  | ||||
|     if KEY_BOOTLOADER not in value: | ||||
|         if bootloader is None: | ||||
|             if value[CONF_FRAMEWORK][CONF_TYPE] == KEY_ZEPHYR: | ||||
|             bootloader = BOOTLOADER_MCUBOOT | ||||
|             elif value[CONF_FRAMEWORK][CONF_TYPE] == "arduino": | ||||
|                 bootloader = BOOTLOADER_ADAFRUIT | ||||
|             else: | ||||
|                 raise NotImplementedError | ||||
|         value[KEY_BOOTLOADER] = bootloader | ||||
|     else: | ||||
|         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_VARIANT", "NRF52") | ||||
|     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]) | ||||
|  | ||||
|     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.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: | ||||
|         zephyr_to_code(conf) | ||||
|     else: | ||||
|   | ||||
| @@ -14,11 +14,15 @@ from .const import ( | ||||
| ) | ||||
| from esphome.const import ( | ||||
|     CONF_VARIANT, | ||||
|     CONF_BOARD, | ||||
| ) | ||||
|  | ||||
| KEY_BOARD = "board" | ||||
|  | ||||
|  | ||||
| def zephyr_set_core_data(config): | ||||
|     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_OVERLAY] = "" | ||||
|     return config | ||||
| @@ -66,6 +70,8 @@ def zephyr_to_code(conf): | ||||
|                 "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: | ||||
|         raise NotImplementedError | ||||
|     # c++ support | ||||
| @@ -117,3 +123,22 @@ def zephyr_copy_files(): | ||||
|         CORE.relative_build_path("zephyr/app.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) | ||||
|   WiFi.macAddress(mac); | ||||
| #endif | ||||
| //TODO | ||||
| } | ||||
| std::string get_mac_address() { | ||||
|   uint8_t mac[6]; | ||||
|   | ||||
| @@ -2,7 +2,6 @@ | ||||
| nrf52: | ||||
|   board: adafruit_itsybitsy_nrf52840 | ||||
|   framework: | ||||
|     type: zephyr | ||||
|     variant: generic | ||||
|  | ||||
| esphome: | ||||
| @@ -64,6 +63,3 @@ text_sensor: | ||||
|     reset_reason: | ||||
|       name: "Reset Reason" | ||||
|  | ||||
| deep_sleep: | ||||
|   run_duration: 10s | ||||
|   sleep_duration: 10s | ||||
|   | ||||
| @@ -1,10 +1,9 @@ | ||||
| --- | ||||
| nrf52: | ||||
|   # board: adafruit_itsybitsy_nrf52840 | ||||
|   board: adafruit_feather_nrf52840 | ||||
|   framework: | ||||
|     type: zephyr | ||||
|     variant: nrf-sdk | ||||
|   # board: adafruit_feather_nrf52840 | ||||
|   board: nrf52840dk_nrf52840 | ||||
|  | ||||
|   # bootloader: adafruit | ||||
|   # bootloader: mcuboot | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user