From e14c1a4aa07228c0e08a236b6d482d1d4e73aa4c Mon Sep 17 00:00:00 2001 From: Pavel Borcin Date: Wed, 27 Mar 2024 16:37:38 +0100 Subject: [PATCH] change generic_switch example to use bsp --- examples/generic_switch/CMakeLists.txt | 20 ------- examples/generic_switch/main/app_driver.cpp | 28 ++++------ .../generic_switch/main/idf_component.yml | 2 + examples/generic_switch/sdkconfig.defaults | 7 +++ .../generic_switch/sdkconfig.defaults.esp32c2 | 7 +++ .../generic_switch/sdkconfig.defaults.esp32c6 | 6 +++ .../generic_switch/sdkconfig.defaults.esp32h2 | 7 +++ .../generic_switch/sdkconfig.defaults.esp32s3 | 52 +++++++++++++++++++ 8 files changed, 92 insertions(+), 37 deletions(-) create mode 100644 examples/generic_switch/sdkconfig.defaults.esp32s3 diff --git a/examples/generic_switch/CMakeLists.txt b/examples/generic_switch/CMakeLists.txt index 81a144fac..795d713de 100644 --- a/examples/generic_switch/CMakeLists.txt +++ b/examples/generic_switch/CMakeLists.txt @@ -6,24 +6,6 @@ if(NOT DEFINED ENV{ESP_MATTER_PATH}) message(FATAL_ERROR "Please set ESP_MATTER_PATH to the path of esp-matter repo") endif(NOT DEFINED ENV{ESP_MATTER_PATH}) -if(NOT DEFINED ENV{ESP_MATTER_DEVICE_PATH}) - if("${IDF_TARGET}" STREQUAL "esp32" OR "${IDF_TARGET}" STREQUAL "") - set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32_devkit_c) - elseif("${IDF_TARGET}" STREQUAL "esp32c3") - set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c3_devkit_m) - elseif("${IDF_TARGET}" STREQUAL "esp32c2") - set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c2_devkit_m) - elseif("${IDF_TARGET}" STREQUAL "esp32h2") - set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32h2_devkit_c) - elseif("${IDF_TARGET}" STREQUAL "esp32s3") - set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32s3_devkit_c) - elseif("${IDF_TARGET}" STREQUAL "esp32c6") - set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c6_devkit_c) - else() - message(FATAL_ERROR "Unsupported IDF_TARGET") - endif() -endif(NOT DEFINED ENV{ESP_MATTER_DEVICE_PATH}) - set(PROJECT_VER "1.0") set(PROJECT_VER_NUMBER 1) @@ -32,14 +14,12 @@ set(MATTER_SDK_PATH ${ESP_MATTER_PATH}/connectedhomeip/connectedhomeip) # This should be done before using the IDF_TARGET variable. include($ENV{IDF_PATH}/tools/cmake/project.cmake) -include($ENV{ESP_MATTER_DEVICE_PATH}/esp_matter_device.cmake) include(${ESP_MATTER_PATH}/examples/common/cmake_common/components_include.cmake) set(EXTRA_COMPONENT_DIRS "${ESP_MATTER_PATH}/examples/common" "${MATTER_SDK_PATH}/config/esp32/components" "${ESP_MATTER_PATH}/components" - "${ESP_MATTER_PATH}/device_hal/device" ${extra_components_dirs_append}) project(generic_switch) diff --git a/examples/generic_switch/main/app_driver.cpp b/examples/generic_switch/main/app_driver.cpp index 0df1f68e3..22876b341 100644 --- a/examples/generic_switch/main/app_driver.cpp +++ b/examples/generic_switch/main/app_driver.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include "bsp/esp-bsp.h" #include #include @@ -126,7 +126,7 @@ static void app_driver_button_multipress_complete(void *arg, void *data) // Press moves Position from 0 (idle) to 1 (press) uint8_t previousPosition = 1; uint8_t newPosition = 0; - static int total_number_of_presses_counted = current_number_of_presses_counted; + int total_number_of_presses_counted = current_number_of_presses_counted; lock::chip_stack_lock(portMAX_DELAY); chip::app::Clusters::Switch::Attributes::CurrentPosition::Set(switch_endpoint_id, newPosition); // MultiPress Complete event takes previousPosition and total_number_of_presses_counted as event data @@ -140,25 +140,19 @@ static void app_driver_button_multipress_complete(void *arg, void *data) app_driver_handle_t app_driver_button_init(gpio_button * button) { /* Initialize button */ - button_config_t config = button_driver_get_config(); - if(button != NULL) - { - config.type = button_type_t::BUTTON_TYPE_GPIO; - config.gpio_button_config.gpio_num = button->GPIO_PIN_VALUE; - } - button_handle_t handle = iot_button_create(&config); - + button_handle_t btns[BSP_BUTTON_NUM]; + ESP_ERROR_CHECK(bsp_iot_button_create(btns, NULL, BSP_BUTTON_NUM)); #if CONFIG_GENERIC_SWITCH_TYPE_LATCHING - iot_button_register_cb(handle, BUTTON_DOUBLE_CLICK, app_driver_button_switch_latched, button); + iot_button_register_cb(btns[0], BUTTON_DOUBLE_CLICK, app_driver_button_switch_latched, button); #endif #if CONFIG_GENERIC_SWITCH_TYPE_MOMENTARY - iot_button_register_cb(handle, BUTTON_PRESS_DOWN, app_driver_button_initial_pressed, button); - iot_button_register_cb(handle, BUTTON_PRESS_UP, app_driver_button_release, button); - iot_button_register_cb(handle, BUTTON_LONG_PRESS_START, app_driver_button_long_pressed, button); - iot_button_register_cb(handle, BUTTON_PRESS_REPEAT, app_driver_button_multipress_ongoing, button); - iot_button_register_cb(handle, BUTTON_PRESS_REPEAT_DONE, app_driver_button_multipress_complete, button); + iot_button_register_cb(btns[0], BUTTON_PRESS_DOWN, app_driver_button_initial_pressed, button); + iot_button_register_cb(btns[0], BUTTON_PRESS_UP, app_driver_button_release, button); + iot_button_register_cb(btns[0], BUTTON_LONG_PRESS_START, app_driver_button_long_pressed, button); + iot_button_register_cb(btns[0], BUTTON_PRESS_REPEAT, app_driver_button_multipress_ongoing, button); + iot_button_register_cb(btns[0], BUTTON_PRESS_REPEAT_DONE, app_driver_button_multipress_complete, button); #endif - return (app_driver_handle_t)handle; + return (app_driver_handle_t)btns[0]; } diff --git a/examples/generic_switch/main/idf_component.yml b/examples/generic_switch/main/idf_component.yml index 95ee7845b..547b39ec2 100644 --- a/examples/generic_switch/main/idf_component.yml +++ b/examples/generic_switch/main/idf_component.yml @@ -4,3 +4,5 @@ dependencies: rules: # will add "optional_component" only when all if clauses are True - if: "idf_version >=5.0" - if: "target in [esp32c2]" + esp_bsp_generic: + version: "^1.1.0" diff --git a/examples/generic_switch/sdkconfig.defaults b/examples/generic_switch/sdkconfig.defaults index 4baf067bd..a40ff0a4a 100644 --- a/examples/generic_switch/sdkconfig.defaults +++ b/examples/generic_switch/sdkconfig.defaults @@ -52,3 +52,10 @@ CONFIG_MBEDTLS_HKDF_C=y # Increase LwIP IPv6 address number to 6 (MAX_FABRIC + 1) # unique local addresses for fabrics(MAX_FABRIC), a link local address(1) CONFIG_LWIP_IPV6_NUM_ADDRESSES=6 + +# ESP32-DevKitC Settings +# Buttons +CONFIG_BSP_BUTTONS_NUM=1 +CONFIG_BSP_BUTTON_1_TYPE_GPIO=y +CONFIG_BSP_BUTTON_1_GPIO=0 +CONFIG_BSP_BUTTON_1_LEVEL=0 diff --git a/examples/generic_switch/sdkconfig.defaults.esp32c2 b/examples/generic_switch/sdkconfig.defaults.esp32c2 index 2070d38fa..c3041e3e7 100644 --- a/examples/generic_switch/sdkconfig.defaults.esp32c2 +++ b/examples/generic_switch/sdkconfig.defaults.esp32c2 @@ -164,3 +164,10 @@ CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE=256 # ESP Matter CONFIG_ESP_MATTER_MAX_DEVICE_TYPE_COUNT=4 CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT=4 + +# ESP32-C2-DevKitM-1 Settings +# Buttons +CONFIG_BSP_BUTTONS_NUM=1 +CONFIG_BSP_BUTTON_1_TYPE_GPIO=y +CONFIG_BSP_BUTTON_1_GPIO=0 +CONFIG_BSP_BUTTON_1_LEVEL=0 diff --git a/examples/generic_switch/sdkconfig.defaults.esp32c6 b/examples/generic_switch/sdkconfig.defaults.esp32c6 index 42508614a..8c6594280 100644 --- a/examples/generic_switch/sdkconfig.defaults.esp32c6 +++ b/examples/generic_switch/sdkconfig.defaults.esp32c6 @@ -38,3 +38,9 @@ CONFIG_BUTTON_LONG_PRESS_TIME_MS=5000 # Enable chip shell CONFIG_ENABLE_CHIP_SHELL=y +# ESP32-C6-DevKitM-1 Settings +# Buttons +CONFIG_BSP_BUTTONS_NUM=1 +CONFIG_BSP_BUTTON_1_TYPE_GPIO=y +CONFIG_BSP_BUTTON_1_GPIO=9 +CONFIG_BSP_BUTTON_1_LEVEL=0 diff --git a/examples/generic_switch/sdkconfig.defaults.esp32h2 b/examples/generic_switch/sdkconfig.defaults.esp32h2 index 3533a4b66..bc2fc4afb 100644 --- a/examples/generic_switch/sdkconfig.defaults.esp32h2 +++ b/examples/generic_switch/sdkconfig.defaults.esp32h2 @@ -53,3 +53,10 @@ CONFIG_ENABLE_CHIP_SHELL=y # Enable DS Peripheral CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=y + +# ESP32-H2-DevKitM-1 Settings +# Buttons +CONFIG_BSP_BUTTONS_NUM=1 +CONFIG_BSP_BUTTON_1_TYPE_GPIO=y +CONFIG_BSP_BUTTON_1_GPIO=9 +CONFIG_BSP_BUTTON_1_LEVEL=0 diff --git a/examples/generic_switch/sdkconfig.defaults.esp32s3 b/examples/generic_switch/sdkconfig.defaults.esp32s3 new file mode 100644 index 000000000..fc08c424c --- /dev/null +++ b/examples/generic_switch/sdkconfig.defaults.esp32s3 @@ -0,0 +1,52 @@ +CONFIG_IDF_TARGET="esp32s3" + +CONFIG_ESPTOOLPY_FLASHSIZE="8MB" + +#enable BT +CONFIG_BT_ENABLED=y +CONFIG_BT_NIMBLE_ENABLED=y + +#disable BT connection reattempt +CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=n + +#enable lwip ipv6 autoconfig +CONFIG_LWIP_IPV6_AUTOCONFIG=y + +# Use a custom partition table +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_OFFSET=0xC000 + +# Enable chip shell +CONFIG_ENABLE_CHIP_SHELL=y + +#enable lwIP route hooks +CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y +CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y + +# Button +CONFIG_BUTTON_PERIOD_TIME_MS=20 +CONFIG_BUTTON_LONG_PRESS_TIME_MS=5000 + +# disable softap by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n + +# Disable DS Peripheral +CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n + +# Use compact attribute storage mode +CONFIG_ESP_MATTER_NVS_USE_COMPACT_ATTR_STORAGE=y + +# Enable HKDF in mbedtls +CONFIG_MBEDTLS_HKDF_C=y + +# Increase LwIP IPv6 address number to 6 (MAX_FABRIC + 1) +# unique local addresses for fabrics(MAX_FABRIC), a link local address(1) +CONFIG_LWIP_IPV6_NUM_ADDRESSES=6 + +# ESP32-S3-DevKitC-1 Settings +# Buttons +CONFIG_BSP_BUTTONS_NUM=1 +CONFIG_BSP_BUTTON_1_TYPE_GPIO=y +CONFIG_BSP_BUTTON_1_GPIO=0 +CONFIG_BSP_BUTTON_1_LEVEL=0