feat(gateway_ble): Enhance BLE bridge with shared NimBLE support
This commit fixed BLE gateway coexistance with matter - Added support for shared NimBLE functionality in the GatewayBleBridge class. - Introduced methods for preparing and attaching shared NimBLE. - Implemented advertising change handling for Matter integration. - Updated CMakeLists.txt to require esp_matter. - Enhanced device name refresh logic to accommodate shared BLE responses. - Added new member variables to manage shared state and advertising status. feat(gateway_matter): Integrate BLE callbacks for shared functionality - Added BLE prepare and attach callbacks to GatewayMatterBridgeConfig. - Implemented callback invocations during the start process of GatewayMatterBridge. - Added handling for BLE advertising change events in MatterEvent. fix(gateway_network): Guard against missing SoftAP support - Added compile-time checks to ensure SoftAP support is enabled before starting setup AP. Signed-off-by: Tony <tonylu@tony-cloud.com>
This commit is contained in:
@@ -134,18 +134,29 @@ descriptor, access-control, diagnostics, and the ESP-Matter internal Binding
|
||||
manager are retained because the server requires them; unrelated device-type
|
||||
clusters, Thread, OTA, and the Matter shell are excluded.
|
||||
|
||||
Matter and the legacy `gateway_ble` transport both own the NimBLE host. While
|
||||
Matter is enabled, the app does not start the legacy BLE GATT bridge; USB,
|
||||
Ethernet, Wi-Fi, KNX, Modbus, BACnet, and the portable DALI behavior remain in
|
||||
their existing components. ESP-Matter's Ethernet platform path is compiled so
|
||||
CHIP owns the single NimBLE controller and host while Matter is enabled. The
|
||||
legacy `gateway_ble` transport registers its distinct FFF7 service in CHIP's
|
||||
GATT database through ESP-Matter's extra-service hook, and adds the FFF7 UUID plus
|
||||
gateway name to the Matter scan response. A passive GAP listener tracks gateway
|
||||
subscriptions without replacing CHIP's callbacks. Matter commissioning
|
||||
advertising and gateway BLE therefore coexist; after Matter advertising stops,
|
||||
the gateway continues advertising from the same host. CHIP's BLE endpoint pool
|
||||
matches NimBLE's four-connection capacity so a gateway client does not make
|
||||
Matter commissioning advertising non-connectable. NimBLE also publishes the
|
||||
standard GATT Database Hash so clients can invalidate the former standalone
|
||||
gateway attribute table after firmware updates. USB, Ethernet, Wi-Fi,
|
||||
KNX, Modbus, BACnet, and the portable DALI behavior remain in their existing
|
||||
components. ESP-Matter's Ethernet platform path is compiled so
|
||||
CHIP receives Ethernet address events, while its Ethernet Network Commissioning
|
||||
driver stays disabled because wired Ethernet needs no credentials. Standard
|
||||
Matter Wi-Fi Network Commissioning remains compiled. Separately, the gateway's
|
||||
ESP-Touch SmartConfig path starts only through the configured long-press button;
|
||||
it is disabled at startup. When both interfaces have addresses,
|
||||
`gateway_network` selects Ethernet as the default route. The project
|
||||
build omits ESP-Matter's unused internal-EMAC commissioning source because the
|
||||
ESP32-S3 gateway's W5500 lifecycle remains owned by `gateway_network`.
|
||||
driver stays disabled because wired Ethernet needs no credentials.
|
||||
`CONFIG_CUSTOM_NETWORK_CONFIG` removes the root-node Network Commissioning
|
||||
cluster and CHIP's Wi-Fi station platform. The gateway's station-only ESP-Touch
|
||||
SmartConfig path starts only through the configured long-press button; it is
|
||||
disabled at startup, and SoftAP support is compiled out. When both interfaces
|
||||
have addresses, `gateway_network` selects Ethernet as the default route. The
|
||||
project build also omits ESP-Matter's unused network-commissioning integration
|
||||
source because the ESP32-S3 gateway's W5500 and Wi-Fi lifecycles remain owned by
|
||||
`gateway_network`.
|
||||
|
||||
This configuration is development-only. The ESP-Matter factory, device
|
||||
instance, DAC, and commissionable-data providers read the normal `nvs`
|
||||
|
||||
@@ -13,6 +13,23 @@ set(EXTRA_COMPONENT_DIRS
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
project(gateway_app)
|
||||
|
||||
# CHIP defaults its BLE endpoint pool to one even when NimBLE accepts more
|
||||
# connections. The gateway service consumes a GAP connection without creating
|
||||
# a CHIPoBLE endpoint, but CHIP still counts that connection when deciding
|
||||
# whether commissioning advertising can remain connectable. Keep both targets
|
||||
# on the same four-connection capacity so Matter and one gateway client can be
|
||||
# active together.
|
||||
if(CONFIG_GATEWAY_MATTER_SUPPORTED AND CONFIG_ENABLE_CHIPOBLE)
|
||||
idf_component_get_property(esp_matter_lib espressif__esp_matter COMPONENT_LIB)
|
||||
idf_component_get_property(gateway_ble_lib gateway_ble COMPONENT_LIB)
|
||||
target_compile_definitions(
|
||||
${esp_matter_lib} PRIVATE
|
||||
BLE_LAYER_NUM_BLE_ENDPOINTS=${CONFIG_BT_NIMBLE_MAX_CONNECTIONS})
|
||||
target_compile_definitions(
|
||||
${gateway_ble_lib} PRIVATE
|
||||
BLE_LAYER_NUM_BLE_ENDPOINTS=${CONFIG_BT_NIMBLE_MAX_CONNECTIONS})
|
||||
endif()
|
||||
|
||||
# CONFIG_ENABLE_ETHERNET_TELEMETRY is ESP-Matter's switch for the CHIP
|
||||
# Ethernet connectivity implementation. Its component also compiles the
|
||||
# internal-EMAC commissioning driver unconditionally, even when that driver is
|
||||
@@ -26,3 +43,16 @@ if(CONFIG_ENABLE_ETHERNET_TELEMETRY AND
|
||||
"/NetworkCommissioningDriver_Ethernet\\.cpp$")
|
||||
set_property(TARGET ${esp_matter_lib} PROPERTY SOURCES ${esp_matter_sources})
|
||||
endif()
|
||||
|
||||
# ESP-Matter 1.5.1 still compiles this integration unit when
|
||||
# CONFIG_CUSTOM_NETWORK_CONFIG has removed the Network Commissioning cluster.
|
||||
# The unused unit then rejects a configuration with no CHIP commissioning
|
||||
# driver. The gateway commissions Wi-Fi out-of-band via its long-press
|
||||
# SmartConfig path, so omit the integration together with the cluster.
|
||||
if(CONFIG_CUSTOM_NETWORK_CONFIG)
|
||||
idf_component_get_property(esp_matter_lib espressif__esp_matter COMPONENT_LIB)
|
||||
get_target_property(esp_matter_sources ${esp_matter_lib} SOURCES)
|
||||
list(FILTER esp_matter_sources EXCLUDE REGEX
|
||||
"/network_commissioning_integration\\.cpp$")
|
||||
set_property(TARGET ${esp_matter_lib} PROPERTY SOURCES ${esp_matter_sources})
|
||||
endif()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dependencies:
|
||||
espressif/cbor:
|
||||
component_hash:
|
||||
component_hash:
|
||||
dad9ca860963e930366510a10b422b3125a4fb27b979712ed65efcbcd742de50
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -11,7 +11,7 @@ dependencies:
|
||||
type: service
|
||||
version: 0.6.1~4
|
||||
espressif/cjson:
|
||||
component_hash:
|
||||
component_hash:
|
||||
e788323270d90738662d66fffa910bfe1fba019bba087f01557e70c40485b469
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -22,7 +22,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.7.19~2
|
||||
espressif/esp-serial-flasher:
|
||||
component_hash:
|
||||
component_hash:
|
||||
dcc42a16712a1a636509cf0bf90e14032d7f2141784b533613b267b6aa318d52
|
||||
dependencies: []
|
||||
source:
|
||||
@@ -30,7 +30,7 @@ dependencies:
|
||||
type: service
|
||||
version: 0.0.11
|
||||
espressif/esp_delta_ota:
|
||||
component_hash:
|
||||
component_hash:
|
||||
147161b602ef51e9f6649eb6d90c4d4ac3c94228cb264fa0e68be7877180462d
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -41,7 +41,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.1.4
|
||||
espressif/esp_diag_data_store:
|
||||
component_hash:
|
||||
component_hash:
|
||||
1967397300fbea608f688f71365b298a613eed48b694ee236cc60e6d06fda086
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -52,7 +52,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.1.1
|
||||
espressif/esp_diagnostics:
|
||||
component_hash:
|
||||
component_hash:
|
||||
f91cd5bd3d6a9be134d7196bdecd5336825ab3fa37eab482647b07a6dabaa842
|
||||
dependencies:
|
||||
- name: espressif/rmaker_common
|
||||
@@ -67,7 +67,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.3.4
|
||||
espressif/esp_encrypted_img:
|
||||
component_hash:
|
||||
component_hash:
|
||||
e5a065c140fbc6a69a1de4fa1731b7596cc34a4a50b57913b2dc34c9ad3a0a70
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -78,7 +78,7 @@ dependencies:
|
||||
type: service
|
||||
version: 2.3.0
|
||||
espressif/esp_insights:
|
||||
component_hash:
|
||||
component_hash:
|
||||
102d0a141d5123a5ebb827832f73fcc4135aefed6c38fca98e7b655bd18735c5
|
||||
dependencies:
|
||||
- name: espressif/cbor
|
||||
@@ -105,7 +105,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.3.4
|
||||
espressif/esp_matter:
|
||||
component_hash:
|
||||
component_hash:
|
||||
d7db95c3fdd162a3a378f48c11257ded9fcdc59d18caa58d936a2cac327d1796
|
||||
dependencies:
|
||||
- name: espressif/esp_delta_ota
|
||||
@@ -170,7 +170,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.5.1
|
||||
espressif/esp_rcp_update:
|
||||
component_hash:
|
||||
component_hash:
|
||||
37f535edd527a45faeaad649c0c56af36e5399074e52d83f0990fce466844dde
|
||||
dependencies:
|
||||
- name: espressif/esp-serial-flasher
|
||||
@@ -185,7 +185,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.3.1
|
||||
espressif/esp_secure_cert_mgr:
|
||||
component_hash:
|
||||
component_hash:
|
||||
0b83e150f48d6839f0a0a8753850be55a51cc298cfca7658f21d355d5f41dd67
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -196,7 +196,7 @@ dependencies:
|
||||
type: service
|
||||
version: 2.9.3
|
||||
espressif/esp_tinyusb:
|
||||
component_hash:
|
||||
component_hash:
|
||||
9a73a76a6bc17907f6e523342ff6b1e440023e8aac2c11f4691212106ec24e66
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -217,7 +217,7 @@ dependencies:
|
||||
- esp32s31
|
||||
version: 2.2.1
|
||||
espressif/jsmn:
|
||||
component_hash:
|
||||
component_hash:
|
||||
d80350c41bbaa827c98a25b6072df00884e72f54885996fab4a4f0aebce6b6c3
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -228,7 +228,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.1.0
|
||||
espressif/json_generator:
|
||||
component_hash:
|
||||
component_hash:
|
||||
45033e1c199b13f1c8c1b544fb7d4e2df6a8e3071ebdcb1b22582b61a7974ff2
|
||||
dependencies: []
|
||||
source:
|
||||
@@ -236,7 +236,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.1.2
|
||||
espressif/json_parser:
|
||||
component_hash:
|
||||
component_hash:
|
||||
d74b81729ad06ec11ff5eb5b1b0d7df1d00e6027fc11471f4b139c70dcf1b1e4
|
||||
dependencies:
|
||||
- name: espressif/jsmn
|
||||
@@ -250,7 +250,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.0.3
|
||||
espressif/mdns:
|
||||
component_hash:
|
||||
component_hash:
|
||||
e81ca7a7f53ea34e78274df054da692c272e1315572876b237b1748e267c013b
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -261,7 +261,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.11.3
|
||||
espressif/mqtt:
|
||||
component_hash:
|
||||
component_hash:
|
||||
ffdad5659706b4dc14bc63f8eb73ef765efa015bf7e9adf71c813d52a2dc9342
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -272,7 +272,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.0.0
|
||||
espressif/rmaker_cmd_resp:
|
||||
component_hash:
|
||||
component_hash:
|
||||
343ccd5d3a2789ecb241f9de5ac7f67fc39db126c1af139116a20c9a6e3669f3
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -283,7 +283,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.0.0
|
||||
espressif/rmaker_common:
|
||||
component_hash:
|
||||
component_hash:
|
||||
276ee0baf9552805bf66a3e34a19cf38df6f5a7b167c47bf215b7196e03ef1fc
|
||||
dependencies:
|
||||
- name: espressif/mqtt
|
||||
@@ -324,7 +324,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.8.5
|
||||
espressif/rmaker_common_events:
|
||||
component_hash:
|
||||
component_hash:
|
||||
ced95feff88c368e6306ff67ff3696ac76a5273de9fe1f907a7c115d4370fe6e
|
||||
dependencies:
|
||||
- name: idf
|
||||
@@ -335,7 +335,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.0.0
|
||||
espressif/rmaker_console:
|
||||
component_hash:
|
||||
component_hash:
|
||||
24af13dad8da5ca7219203f7d6f37e888246d5adc8910ea3e018fac84492ab9b
|
||||
dependencies:
|
||||
- name: espressif/rmaker_system_ctrl
|
||||
@@ -354,7 +354,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.0.0
|
||||
espressif/rmaker_system_ctrl:
|
||||
component_hash:
|
||||
component_hash:
|
||||
b4208fbc7e99b30fb1d272cbd30e578327079a6495499d12fb466b6c2fc0d899
|
||||
dependencies:
|
||||
- name: espressif/rmaker_common_events
|
||||
@@ -369,7 +369,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.0.0
|
||||
espressif/rmaker_time_sync:
|
||||
component_hash:
|
||||
component_hash:
|
||||
5797d2fcd903cad6e9142981e1d0602d7b5efa2c9197a72da8d2e05be7ef568b
|
||||
dependencies:
|
||||
- name: espressif/rmaker_common_events
|
||||
@@ -384,7 +384,7 @@ dependencies:
|
||||
type: service
|
||||
version: 1.0.2
|
||||
espressif/rmaker_work_queue:
|
||||
component_hash:
|
||||
component_hash:
|
||||
7d2a9ee4e0343eb36e1816e987dde7babe892b99873c8dc5bae15e647a0e4028
|
||||
dependencies:
|
||||
- name: idf
|
||||
|
||||
@@ -380,7 +380,7 @@ constexpr bool kEthernetStartupEnabled = true;
|
||||
constexpr bool kEthernetStartupEnabled = false;
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_GATEWAY_BLE_SUPPORTED) && !defined(CONFIG_GATEWAY_MATTER_SUPPORTED)
|
||||
#ifdef CONFIG_GATEWAY_BLE_SUPPORTED
|
||||
constexpr bool kBleSupported = true;
|
||||
#else
|
||||
constexpr bool kBleSupported = false;
|
||||
@@ -1493,8 +1493,9 @@ extern "C" void app_main(void) {
|
||||
ESP_ERROR_CHECK(s_network->start());
|
||||
}
|
||||
|
||||
if (s_bridge != nullptr) {
|
||||
ESP_ERROR_CHECK(s_bridge->start());
|
||||
if (profile.enable_ble) {
|
||||
s_ble_bridge = std::make_unique<gateway::GatewayBleBridge>(
|
||||
*s_controller, *s_runtime, *s_dali_domain);
|
||||
}
|
||||
|
||||
if (kMatterSupported) {
|
||||
@@ -1518,14 +1519,30 @@ extern "C" void app_main(void) {
|
||||
return s_network != nullptr ? s_network->startWifiProvisioning()
|
||||
: ESP_ERR_NOT_SUPPORTED;
|
||||
};
|
||||
if (s_ble_bridge != nullptr) {
|
||||
matter_config.ble_prepare_callback = []() {
|
||||
return s_ble_bridge->prepareSharedNimble();
|
||||
};
|
||||
matter_config.ble_attach_callback = []() {
|
||||
return s_ble_bridge->attachSharedNimble();
|
||||
};
|
||||
matter_config.ble_advertising_changed_callback = [](bool advertising) {
|
||||
s_ble_bridge->handleMatterAdvertisingChange(advertising);
|
||||
};
|
||||
}
|
||||
s_matter_bridge =
|
||||
std::make_unique<gateway::GatewayMatterBridge>(*s_dali_domain, matter_config);
|
||||
ESP_ERROR_CHECK(s_matter_bridge->start());
|
||||
}
|
||||
|
||||
if (profile.enable_ble) {
|
||||
s_ble_bridge = std::make_unique<gateway::GatewayBleBridge>(*s_controller, *s_runtime,
|
||||
*s_dali_domain);
|
||||
// ESP-Matter needs several contiguous internal allocations for the CHIP
|
||||
// event queue and event-loop task. Start it before the allocation-heavy KNX
|
||||
// bridge to avoid fragmenting that reserved heap.
|
||||
if (s_bridge != nullptr) {
|
||||
ESP_ERROR_CHECK(s_bridge->start());
|
||||
}
|
||||
|
||||
if (s_ble_bridge != nullptr && !kMatterSupported) {
|
||||
ESP_ERROR_CHECK(s_ble_bridge->start());
|
||||
}
|
||||
|
||||
|
||||
+20
-24
@@ -1022,8 +1022,15 @@ CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=256
|
||||
CONFIG_BT_NIMBLE_ATT_MAX_PREP_ENTRIES=64
|
||||
CONFIG_BT_NIMBLE_GATT_MAX_PROCS=4
|
||||
# CONFIG_BT_NIMBLE_BLE_GATT_BLOB_TRANSFER is not set
|
||||
# CONFIG_BT_NIMBLE_GATT_CACHING is not set
|
||||
# CONFIG_BT_NIMBLE_INCL_SVC_DISCOVERY is not set
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING=y
|
||||
# CONFIG_BT_NIMBLE_GATT_CACHING_INCLUDE_SERVICES is not set
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_CONNS=4
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_SVCS=8
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_INCL_SVCS=4
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_CHRS=16
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_DSCS=16
|
||||
# CONFIG_BT_NIMBLE_GATT_CACHING_DISABLE_AUTO is not set
|
||||
# CONFIG_BT_NIMBLE_GATT_CACHING_ASSOC_ENABLE is not set
|
||||
# end of GATT / ATT
|
||||
|
||||
#
|
||||
@@ -1130,7 +1137,7 @@ CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0
|
||||
#
|
||||
# Extra Features
|
||||
#
|
||||
# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set
|
||||
CONFIG_BT_NIMBLE_DYNAMIC_SERVICE=y
|
||||
# CONFIG_BT_NIMBLE_BLUFI_ENABLE is not set
|
||||
# CONFIG_BT_NIMBLE_ENC_ADV_DATA is not set
|
||||
# CONFIG_BT_NIMBLE_ADV_UUID_CONCAT is not set
|
||||
@@ -2048,7 +2055,7 @@ CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
|
||||
CONFIG_ESP_WIFI_TX_BA_WIN=6
|
||||
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
|
||||
CONFIG_ESP_WIFI_RX_BA_WIN=6
|
||||
CONFIG_ESP_WIFI_NVS_ENABLED=y
|
||||
# CONFIG_ESP_WIFI_NVS_ENABLED is not set
|
||||
# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0 is not set
|
||||
CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1=y
|
||||
CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752
|
||||
@@ -2059,7 +2066,6 @@ CONFIG_ESP_WIFI_RX_IRAM_OPT=y
|
||||
CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y
|
||||
CONFIG_ESP_WIFI_ENABLE_SAE_PK=y
|
||||
CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y
|
||||
CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y
|
||||
CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y
|
||||
# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set
|
||||
CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50
|
||||
@@ -2070,7 +2076,7 @@ CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15
|
||||
CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y
|
||||
# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set
|
||||
CONFIG_ESP_WIFI_GMAC_SUPPORT=y
|
||||
CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y
|
||||
# CONFIG_ESP_WIFI_SOFTAP_SUPPORT is not set
|
||||
# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set
|
||||
CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7
|
||||
CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y
|
||||
@@ -2081,7 +2087,6 @@ CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y
|
||||
# CONFIG_ESP_WIFI_MBO_SUPPORT is not set
|
||||
# CONFIG_ESP_WIFI_DPP_SUPPORT is not set
|
||||
# CONFIG_ESP_WIFI_11R_SUPPORT is not set
|
||||
# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set
|
||||
|
||||
#
|
||||
# WPS Configuration Options
|
||||
@@ -3066,8 +3071,8 @@ CONFIG_MAX_GROUPS_PER_FABRIC_PER_ENDPOINT=4
|
||||
CONFIG_MAX_GROUP_KEYS_PER_FABRIC=3
|
||||
# CONFIG_CHIP_DEVICE_ENABLE_DYNAMIC_SERVER is not set
|
||||
# CONFIG_CHIP_MEM_ALLOC_MODE_INTERNAL is not set
|
||||
# CONFIG_CHIP_MEM_ALLOC_MODE_EXTERNAL is not set
|
||||
CONFIG_CHIP_MEM_ALLOC_MODE_DEFAULT=y
|
||||
CONFIG_CHIP_MEM_ALLOC_MODE_EXTERNAL=y
|
||||
# CONFIG_CHIP_MEM_ALLOC_MODE_DEFAULT is not set
|
||||
# end of General Options
|
||||
|
||||
#
|
||||
@@ -3130,13 +3135,7 @@ CONFIG_DEVICE_TYPE=0
|
||||
#
|
||||
# WiFi Station Options
|
||||
#
|
||||
CONFIG_ENABLE_WIFI_STATION=y
|
||||
CONFIG_DEFAULT_WIFI_SSID=""
|
||||
CONFIG_DEFAULT_WIFI_PASSWORD=""
|
||||
CONFIG_WIFI_STATION_RECONNECT_INTERVAL=100
|
||||
CONFIG_MAX_SCAN_NETWORKS_RESULTS=10
|
||||
CONFIG_WIFI_SCAN_COMPLETION_TIMEOUT=10000
|
||||
CONFIG_WIFI_CONNECTIVITY_TIMEOUT=30000
|
||||
# CONFIG_ENABLE_WIFI_STATION is not set
|
||||
# end of WiFi Station Options
|
||||
|
||||
#
|
||||
@@ -3148,9 +3147,9 @@ CONFIG_BLE_FAST_ADVERTISING_INTERVAL_MIN=40
|
||||
CONFIG_BLE_FAST_ADVERTISING_INTERVAL_MAX=40
|
||||
CONFIG_BLE_SLOW_ADVERTISING_INTERVAL_MIN=800
|
||||
CONFIG_BLE_SLOW_ADVERTISING_INTERVAL_MAX=800
|
||||
CONFIG_CHIPOBLE_SINGLE_CONNECTION=y
|
||||
# CONFIG_CHIPOBLE_SINGLE_CONNECTION is not set
|
||||
CONFIG_CHIPOBLE_ENABLE_ADVERTISING_AUTOSTART=0
|
||||
CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=y
|
||||
# CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING is not set
|
||||
# end of BLE Options
|
||||
|
||||
#
|
||||
@@ -3275,8 +3274,6 @@ CONFIG_MRP_MAX_RETRANS=4
|
||||
#
|
||||
# Network Commissioning Driver Endpoint Id
|
||||
#
|
||||
CONFIG_WIFI_NETWORK_COMMISSIONING_DRIVER=y
|
||||
CONFIG_WIFI_NETWORK_ENDPOINT_ID=0
|
||||
# CONFIG_ETHERNET_NETWORK_COMMISSIONING_DRIVER is not set
|
||||
# end of Network Commissioning Driver Endpoint Id
|
||||
|
||||
@@ -3311,8 +3308,8 @@ CONFIG_ESP_MATTER_MODE_SELECT_CLUSTER_ENDPOINT_COUNT=0
|
||||
CONFIG_ESP_MATTER_TEMPERATURE_CONTROL_CLUSTER_ENDPOINT_COUNT=0
|
||||
CONFIG_ESP_MATTER_SCENES_TABLE_SIZE=16
|
||||
CONFIG_ESP_MATTER_BINDING_TABLE_SIZE=10
|
||||
CONFIG_ESP_MATTER_MEM_ALLOC_MODE_INTERNAL=y
|
||||
# CONFIG_ESP_MATTER_MEM_ALLOC_MODE_EXTERNAL is not set
|
||||
# CONFIG_ESP_MATTER_MEM_ALLOC_MODE_INTERNAL is not set
|
||||
CONFIG_ESP_MATTER_MEM_ALLOC_MODE_EXTERNAL=y
|
||||
# CONFIG_ESP_MATTER_MEM_ALLOC_MODE_DEFAULT is not set
|
||||
CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y
|
||||
CONFIG_ESP_MATTER_ENABLE_MATTER_SERVER=y
|
||||
@@ -3865,7 +3862,7 @@ CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_TX_BA_WIN=6
|
||||
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_RX_BA_WIN=6
|
||||
CONFIG_ESP32_WIFI_NVS_ENABLED=y
|
||||
# CONFIG_ESP32_WIFI_NVS_ENABLED is not set
|
||||
# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0 is not set
|
||||
CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1=y
|
||||
CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752
|
||||
@@ -3882,7 +3879,6 @@ CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
|
||||
# CONFIG_WPA_MBO_SUPPORT is not set
|
||||
# CONFIG_WPA_DPP_SUPPORT is not set
|
||||
# CONFIG_WPA_11R_SUPPORT is not set
|
||||
# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set
|
||||
# CONFIG_WPA_WPS_STRICT is not set
|
||||
# CONFIG_WPA_DEBUG_PRINT is not set
|
||||
# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set
|
||||
|
||||
@@ -21,8 +21,9 @@ CONFIG_GATEWAY_ETHERNET_IGNORE_INIT_FAILURE=y
|
||||
CONFIG_GATEWAY_KNX_DATA_SECURE_SUPPORTED=y
|
||||
CONFIG_TINYUSB_HID_COUNT=1
|
||||
|
||||
# Matter-to-DALI development bridge. Matter owns NimBLE in this build; wired
|
||||
# Ethernet remains the default route and Wi-Fi starts only when provisioned.
|
||||
# Matter-to-DALI development bridge. CHIP owns the single NimBLE host while the
|
||||
# Matter commissioning and legacy gateway GATT services share its database.
|
||||
# Wired Ethernet remains the default route and Wi-Fi starts only when provisioned.
|
||||
CONFIG_GATEWAY_MATTER_SUPPORTED=y
|
||||
CONFIG_GATEWAY_MATTER_MAX_BRIDGED_DEVICES=16
|
||||
CONFIG_GATEWAY_MATTER_SCAN_START_DELAY_MS=2000
|
||||
@@ -32,13 +33,38 @@ CONFIG_GATEWAY_MATTER_WIFI_PROVISION_BUTTON_GPIO=-1
|
||||
CONFIG_ESP_MATTER_ENABLE_MATTER_SERVER=y
|
||||
CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y
|
||||
CONFIG_ESP_MATTER_ENABLE_OPENTHREAD=n
|
||||
# Keep the large CHIP core and ESP-Matter data model in PSRAM so the internal
|
||||
# heap retains a contiguous block for the FreeRTOS event queue and radio/DMA
|
||||
# allocations. The queue itself keeps Espressif's Wi-Fi-safe default length.
|
||||
CONFIG_CHIP_MEM_ALLOC_MODE_EXTERNAL=y
|
||||
CONFIG_ESP_MATTER_MEM_ALLOC_MODE_EXTERNAL=y
|
||||
# Preserve enough internal/DMA-capable RAM for gateway Wi-Fi RX buffers when
|
||||
# ESP-Touch is requested; app_main starts Matter before the allocation-heavy
|
||||
# KNX bridge so CHIP can obtain its queue and event-loop stack first.
|
||||
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65535
|
||||
CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT=18
|
||||
CONFIG_ESP_MATTER_AGGREGATOR_ENDPOINT_COUNT=1
|
||||
CONFIG_ESP_MATTER_NVS_PART_NAME="nvs"
|
||||
CONFIG_ESP_MATTER_BRIDGE_INFO_PART_NAME="nvs"
|
||||
CONFIG_CUSTOM_NETWORK_CONFIG=y
|
||||
CONFIG_ENABLE_WIFI_STATION=y
|
||||
# Matter uses the already-configured W5500 interface under CustomNetworkConfig.
|
||||
# gateway_network owns Wi-Fi station credentials and starts ESP-Touch
|
||||
# SmartConfig only after the button is held; CHIP must not initialize Wi-Fi.
|
||||
CONFIG_ENABLE_WIFI_STATION=n
|
||||
CONFIG_ESP_WIFI_NVS_ENABLED=n
|
||||
CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
|
||||
CONFIG_ENABLE_CHIPOBLE=y
|
||||
CONFIG_CHIPOBLE_SINGLE_CONNECTION=n
|
||||
CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n
|
||||
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=4
|
||||
# Publish the standard GATT Database Hash so CoreBluetooth can invalidate a
|
||||
# cached pre-Matter gateway attribute table after firmware updates.
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING=y
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_CONNS=4
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_SVCS=8
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_INCL_SVCS=4
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_CHRS=16
|
||||
CONFIG_BT_NIMBLE_GATT_CACHING_MAX_DSCS=16
|
||||
CONFIG_ENABLE_CHIP_SHELL=n
|
||||
CONFIG_MBEDTLS_HKDF_C=y
|
||||
CONFIG_DEVICE_VENDOR_ID=0xFFF2
|
||||
@@ -46,7 +72,8 @@ CONFIG_DEVICE_PRODUCT_ID=0x8001
|
||||
CONFIG_TEST_EVENT_TRIGGER_ENABLED=n
|
||||
CONFIG_ENABLE_WIFI_TELEMETRY=n
|
||||
# Despite its legacy name, this option enables CHIP's ESP32 Ethernet platform
|
||||
# path and event handling. Ethernet itself is initialized by gateway_network.
|
||||
# event handling. Ethernet itself is initialized by gateway_network; the CHIP
|
||||
# Ethernet commissioning driver only supports the internal EMAC, not W5500.
|
||||
CONFIG_ENABLE_ETHERNET_TELEMETRY=y
|
||||
CONFIG_ETHERNET_NETWORK_COMMISSIONING_DRIVER=n
|
||||
|
||||
|
||||
+730
-4
@@ -691,6 +691,12 @@ CONFIG_GATEWAY_CHANNEL1_NATIVE_BAUDRATE=1200
|
||||
#
|
||||
# end of Gateway Channel 16
|
||||
|
||||
#
|
||||
# DALI Part 103 Application Controller
|
||||
#
|
||||
# CONFIG_GATEWAY_DALI_103_APPLICATION_CONTROLLER_ENABLED is not set
|
||||
# end of DALI Part 103 Application Controller
|
||||
|
||||
#
|
||||
# Gateway Cache
|
||||
#
|
||||
@@ -719,6 +725,18 @@ CONFIG_GATEWAY_ESPNOW_SETUP_SUPPORTED=y
|
||||
CONFIG_GATEWAY_SMARTCONFIG_SUPPORTED=y
|
||||
# CONFIG_GATEWAY_START_ESPNOW_SETUP_ENABLED is not set
|
||||
# CONFIG_GATEWAY_START_SMARTCONFIG_ENABLED is not set
|
||||
|
||||
#
|
||||
# Matter-to-DALI Bridge
|
||||
#
|
||||
CONFIG_GATEWAY_MATTER_SUPPORTED=y
|
||||
CONFIG_GATEWAY_MATTER_MAX_BRIDGED_DEVICES=16
|
||||
CONFIG_GATEWAY_MATTER_SCAN_START_DELAY_MS=2000
|
||||
CONFIG_GATEWAY_MATTER_SCAN_ADDRESS_DELAY_MS=20
|
||||
CONFIG_GATEWAY_MATTER_SCAN_TASK_STACK_SIZE=8192
|
||||
CONFIG_GATEWAY_MATTER_WIFI_PROVISION_BUTTON_GPIO=-1
|
||||
# end of Matter-to-DALI Bridge
|
||||
|
||||
CONFIG_GATEWAY_SMARTCONFIG_TIMEOUT_SEC=60
|
||||
CONFIG_GATEWAY_ETHERNET_SUPPORTED=y
|
||||
CONFIG_GATEWAY_START_ETHERNET_ENABLED=y
|
||||
@@ -843,6 +861,7 @@ CONFIG_GATEWAY_BRIDGE_BACNET_TASK_PRIORITY=5
|
||||
#
|
||||
CONFIG_GATEWAY_USB_STARTUP_DEBUG_JTAG=y
|
||||
# CONFIG_GATEWAY_USB_STARTUP_SETUP_SERIAL is not set
|
||||
# CONFIG_GATEWAY_USB_STARTUP_TRIDONIC_HID is not set
|
||||
# end of USB Setup
|
||||
|
||||
#
|
||||
@@ -858,6 +877,10 @@ CONFIG_GATEWAY_NETWORK_HTTP_ENABLED=y
|
||||
CONFIG_GATEWAY_NETWORK_HTTP_PORT=80
|
||||
CONFIG_GATEWAY_NETWORK_UDP_ROUTER_ENABLED=y
|
||||
CONFIG_GATEWAY_NETWORK_UDP_PORT=2020
|
||||
CONFIG_GATEWAY_NETWORK_TCP_CONTROL_ENABLED=y
|
||||
CONFIG_GATEWAY_NETWORK_TCP_CONTROL_PORT=2020
|
||||
CONFIG_GATEWAY_NETWORK_TCP_CONTROL_TASK_STACK_SIZE=4096
|
||||
CONFIG_GATEWAY_NETWORK_TCP_CONTROL_TASK_PRIORITY=4
|
||||
CONFIG_GATEWAY_STATUS_LED_GPIO=-1
|
||||
CONFIG_GATEWAY_BOOT_BUTTON_GPIO=0
|
||||
CONFIG_GATEWAY_BOOT_BUTTON_ACTIVE_LOW=y
|
||||
@@ -2293,8 +2316,9 @@ CONFIG_LOG_IN_IRAM=y
|
||||
CONFIG_LWIP_ENABLE=y
|
||||
CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
|
||||
CONFIG_LWIP_TCPIP_TASK_PRIO=18
|
||||
# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
|
||||
# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set
|
||||
CONFIG_LWIP_TCPIP_CORE_LOCKING=y
|
||||
# CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT is not set
|
||||
CONFIG_LWIP_CHECK_THREAD_SAFETY=y
|
||||
CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
|
||||
# CONFIG_LWIP_L2_TO_L3_COPY is not set
|
||||
# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
|
||||
@@ -2610,7 +2634,7 @@ CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
|
||||
# CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM is not set
|
||||
# CONFIG_MBEDTLS_POLY1305_C is not set
|
||||
# CONFIG_MBEDTLS_CHACHA20_C is not set
|
||||
# CONFIG_MBEDTLS_HKDF_C is not set
|
||||
CONFIG_MBEDTLS_HKDF_C=y
|
||||
# CONFIG_MBEDTLS_THREADING_C is not set
|
||||
CONFIG_MBEDTLS_ERROR_STRINGS=y
|
||||
CONFIG_MBEDTLS_FS_IO=y
|
||||
@@ -2919,13 +2943,15 @@ CONFIG_DALI_CUSTOM_HALF_BIT_TIME_X100_US=0
|
||||
CONFIG_DALI_TX_STOP_CONDITION_US=0
|
||||
CONFIG_DALI_RX_STOP_CONDITION_US=0
|
||||
CONFIG_DALI_QUERY_RESPONSE_TIMEOUT_MS=30
|
||||
CONFIG_DALI_DOUBLE_SEND_DELAY_MS=20
|
||||
CONFIG_DALI_DOUBLE_SEND_DELAY_MS=30
|
||||
CONFIG_DALI_FORWARD_ACTIVITY_WAIT_MS=20
|
||||
CONFIG_DALI_FORWARD_AFTER_BACKWARD_WAIT_MS=10
|
||||
CONFIG_DALI_FORWARD_MAX_WAIT_MS=50
|
||||
CONFIG_DALI_BACKWARD_IDLE_TIMEOUT_MS=10
|
||||
CONFIG_DALI_BUS_POWER_CHECK_INTERVAL_MS=500
|
||||
CONFIG_DALI_BUS_FAIL_EVENT_DELAY_MS=45
|
||||
CONFIG_DALI_BUS_ABNORMAL_REPORT_INTERVAL_MS=3000
|
||||
CONFIG_DALI_BUS_RESET_PULSE_MS=10
|
||||
# CONFIG_DALI_LOG_LEVEL_NONE is not set
|
||||
# CONFIG_DALI_LOG_LEVEL_ERROR is not set
|
||||
# CONFIG_DALI_LOG_LEVEL_WARN is not set
|
||||
@@ -2956,6 +2982,657 @@ CONFIG_CJSON_NESTING_LIMIT=1000
|
||||
CONFIG_CJSON_CIRCULAR_LIMIT=10000
|
||||
# end of cJSON
|
||||
|
||||
#
|
||||
# ESP serial flasher
|
||||
#
|
||||
CONFIG_SERIAL_FLASHER_MD5_ENABLED=y
|
||||
CONFIG_SERIAL_FLASHER_RESET_HOLD_TIME_MS=100
|
||||
CONFIG_SERIAL_FLASHER_BOOT_HOLD_TIME_MS=50
|
||||
# end of ESP serial flasher
|
||||
|
||||
#
|
||||
# Diagnostics data store
|
||||
#
|
||||
CONFIG_DIAG_DATA_STORE_RTC=y
|
||||
# CONFIG_DIAG_DATA_STORE_RAM is not set
|
||||
# CONFIG_DIAG_DATA_STORE_FLASH is not set
|
||||
# CONFIG_DIAG_DATA_STORE_DBG_PRINTS is not set
|
||||
CONFIG_DIAG_DATA_STORE_REPORTING_WATERMARK_PERCENT=80
|
||||
|
||||
#
|
||||
# RTC Store
|
||||
#
|
||||
CONFIG_RTC_STORE_DATA_SIZE=6144
|
||||
CONFIG_RTC_STORE_CRITICAL_DATA_SIZE=4096
|
||||
# end of RTC Store
|
||||
# end of Diagnostics data store
|
||||
|
||||
#
|
||||
# Diagnostics
|
||||
#
|
||||
CONFIG_DIAG_LOG_MSG_ARG_FORMAT_TLV=y
|
||||
# CONFIG_DIAG_LOG_MSG_ARG_FORMAT_STRING is not set
|
||||
CONFIG_DIAG_LOG_MSG_ARG_MAX_SIZE=64
|
||||
CONFIG_DIAG_LOG_DROP_WIFI_LOGS=y
|
||||
# CONFIG_DIAG_ENABLE_WRAP_LOG_FUNCTIONS is not set
|
||||
CONFIG_DIAG_ENABLE_METRICS=y
|
||||
CONFIG_DIAG_METRICS_MAX_COUNT=20
|
||||
CONFIG_DIAG_ENABLE_HEAP_METRICS=y
|
||||
CONFIG_DIAG_HEAP_POLLING_INTERVAL=30
|
||||
CONFIG_DIAG_ENABLE_WIFI_METRICS=y
|
||||
CONFIG_DIAG_WIFI_POLLING_INTERVAL=30
|
||||
CONFIG_DIAG_ENABLE_VARIABLES=y
|
||||
CONFIG_DIAG_VARIABLES_MAX_COUNT=20
|
||||
CONFIG_DIAG_ENABLE_NETWORK_VARIABLES=y
|
||||
# CONFIG_DIAG_MORE_NETWORK_VARS is not set
|
||||
# CONFIG_DIAG_USE_EXTERNAL_LOG_WRAP is not set
|
||||
# end of Diagnostics
|
||||
|
||||
#
|
||||
# ESP Insights
|
||||
#
|
||||
# CONFIG_ESP_INSIGHTS_ENABLED is not set
|
||||
# CONFIG_ESP_INSIGHTS_TRANSPORT_MQTT is not set
|
||||
CONFIG_ESP_INSIGHTS_TRANSPORT_HTTPS=y
|
||||
CONFIG_ESP_INSIGHTS_TRANSPORT_HTTPS_HOST="https://client.insights.espressif.com"
|
||||
CONFIG_ESP_INSIGHTS_CLOUD_POST_MIN_INTERVAL_SEC=60
|
||||
CONFIG_ESP_INSIGHTS_CLOUD_POST_MAX_INTERVAL_SEC=240
|
||||
CONFIG_ESP_INSIGHTS_META_VERSION_10=y
|
||||
# end of ESP Insights
|
||||
|
||||
#
|
||||
# CHIP Core
|
||||
#
|
||||
|
||||
#
|
||||
# General Options
|
||||
#
|
||||
CONFIG_MAX_EXCHANGE_CONTEXTS=8
|
||||
CONFIG_MAX_FABRICS=5
|
||||
CONFIG_MAX_UNSOLICITED_MESSAGE_HANDLERS=8
|
||||
# CONFIG_ENABLE_PW_RPC is not set
|
||||
CONFIG_USE_MINIMAL_MDNS=y
|
||||
# CONFIG_ENABLE_CHIP_SHELL is not set
|
||||
# CONFIG_ENABLE_CHIP_CONTROLLER_BUILD is not set
|
||||
# CONFIG_DISABLE_IPV4 is not set
|
||||
# CONFIG_DISABLE_READ_CLIENT is not set
|
||||
CONFIG_ENABLE_PERSIST_SUBSCRIPTIONS=y
|
||||
# CONFIG_BUILD_CHIP_TESTS is not set
|
||||
CONFIG_DISPATCH_EVENT_LONG_DISPATCH_TIME_WARNING_THRESHOLD_MS=700
|
||||
# CONFIG_CHIP_LOG_FILTERING is not set
|
||||
# CONFIG_CHIP_SYSTEM_CONFIG_POOL_USE_HEAP is not set
|
||||
CONFIG_MAX_GROUP_ENDPOINTS_PER_FABRIC=1
|
||||
CONFIG_MAX_GROUPS_PER_FABRIC_PER_ENDPOINT=4
|
||||
CONFIG_MAX_GROUP_KEYS_PER_FABRIC=3
|
||||
# CONFIG_CHIP_DEVICE_ENABLE_DYNAMIC_SERVER is not set
|
||||
# CONFIG_CHIP_MEM_ALLOC_MODE_INTERNAL is not set
|
||||
# CONFIG_CHIP_MEM_ALLOC_MODE_EXTERNAL is not set
|
||||
CONFIG_CHIP_MEM_ALLOC_MODE_DEFAULT=y
|
||||
# end of General Options
|
||||
|
||||
#
|
||||
# Networking Options
|
||||
#
|
||||
CONFIG_NUM_TCP_ENDPOINTS=8
|
||||
CONFIG_NUM_UDP_ENDPOINTS=8
|
||||
CONFIG_ENABLE_ENDPOINT_QUEUE_FILTER=y
|
||||
CONFIG_USE_TCPIP_CORE_LOCK_FOR_THREAD_SAFETY=y
|
||||
# CONFIG_USE_LWIP_PBUF_RAM_PACKETBUFFER is not set
|
||||
# end of Networking Options
|
||||
|
||||
#
|
||||
# System Options
|
||||
#
|
||||
CONFIG_NUM_TIMERS=32
|
||||
# CONFIG_ENABLE_OTA_REQUESTOR is not set
|
||||
CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y
|
||||
# CONFIG_ENABLE_SNTP_TIME_SYNC is not set
|
||||
# end of System Options
|
||||
|
||||
#
|
||||
# Security Options
|
||||
#
|
||||
|
||||
#
|
||||
# Debugging
|
||||
#
|
||||
# CONFIG_SECURITY_TEST_MODE is not set
|
||||
# end of Debugging
|
||||
# end of Security Options
|
||||
# end of CHIP Core
|
||||
|
||||
#
|
||||
# CHIP Device Layer
|
||||
#
|
||||
|
||||
#
|
||||
# General Options
|
||||
#
|
||||
CONFIG_CHIP_PROJECT_CONFIG=""
|
||||
CONFIG_CHIP_TASK_STACK_SIZE=8192
|
||||
CONFIG_CHIP_TASK_PRIORITY=1
|
||||
CONFIG_MAX_EVENT_QUEUE_SIZE=40
|
||||
# CONFIG_ENABLE_EXTENDED_DISCOVERY is not set
|
||||
# CONFIG_ENABLE_COMMISSIONABLE_DEVICE_TYPE is not set
|
||||
# CONFIG_ENABLE_BG_EVENT_PROCESSING is not set
|
||||
# end of General Options
|
||||
|
||||
#
|
||||
# Device Identification Options
|
||||
#
|
||||
CONFIG_DEVICE_VENDOR_ID=0xFFF2
|
||||
CONFIG_DEVICE_PRODUCT_ID=0x8001
|
||||
CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION=0
|
||||
CONFIG_DEVICE_SOFTWARE_VERSION_NUMBER=0
|
||||
CONFIG_DEVICE_TYPE=0
|
||||
# end of Device Identification Options
|
||||
|
||||
#
|
||||
# WiFi Station Options
|
||||
#
|
||||
CONFIG_ENABLE_WIFI_STATION=y
|
||||
CONFIG_DEFAULT_WIFI_SSID=""
|
||||
CONFIG_DEFAULT_WIFI_PASSWORD=""
|
||||
CONFIG_WIFI_STATION_RECONNECT_INTERVAL=100
|
||||
CONFIG_MAX_SCAN_NETWORKS_RESULTS=10
|
||||
CONFIG_WIFI_SCAN_COMPLETION_TIMEOUT=10000
|
||||
CONFIG_WIFI_CONNECTIVITY_TIMEOUT=30000
|
||||
# end of WiFi Station Options
|
||||
|
||||
#
|
||||
# BLE Options
|
||||
#
|
||||
CONFIG_ENABLE_CHIPOBLE=y
|
||||
CONFIG_BLE_DEVICE_NAME_PREFIX="MATTER-"
|
||||
CONFIG_BLE_FAST_ADVERTISING_INTERVAL_MIN=40
|
||||
CONFIG_BLE_FAST_ADVERTISING_INTERVAL_MAX=40
|
||||
CONFIG_BLE_SLOW_ADVERTISING_INTERVAL_MIN=800
|
||||
CONFIG_BLE_SLOW_ADVERTISING_INTERVAL_MAX=800
|
||||
CONFIG_CHIPOBLE_SINGLE_CONNECTION=y
|
||||
CONFIG_CHIPOBLE_ENABLE_ADVERTISING_AUTOSTART=0
|
||||
CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=y
|
||||
# end of BLE Options
|
||||
|
||||
#
|
||||
# Ethernet Options
|
||||
#
|
||||
CONFIG_GPIO_RANGE_MIN=0
|
||||
CONFIG_GPIO_RANGE_MAX=48
|
||||
CONFIG_ETH_MDC_GPIO=23
|
||||
CONFIG_ETH_MDIO_GPIO=18
|
||||
CONFIG_ETH_PHY_RST_GPIO=5
|
||||
CONFIG_ETH_PHY_ADDR=1
|
||||
# end of Ethernet Options
|
||||
|
||||
#
|
||||
# Commissioning options
|
||||
#
|
||||
# CONFIG_ENABLE_ROTATING_DEVICE_ID is not set
|
||||
CONFIG_ENABLE_ESP32_FACTORY_DATA_PROVIDER=y
|
||||
CONFIG_ENABLE_ESP32_DEVICE_INSTANCE_INFO_PROVIDER=y
|
||||
# CONFIG_ENABLE_ESP32_DEVICE_INFO_PROVIDER is not set
|
||||
# CONFIG_ENABLE_ESP32_LOCATIONCAPABILITY is not set
|
||||
# CONFIG_SEC_CERT_DAC_PROVIDER is not set
|
||||
# CONFIG_ENABLE_SET_CERT_DECLARATION_API is not set
|
||||
# end of Commissioning options
|
||||
|
||||
#
|
||||
# Diagnostics Options
|
||||
#
|
||||
# CONFIG_ENABLE_ESP_DIAGNOSTICS is not set
|
||||
# end of Diagnostics Options
|
||||
|
||||
#
|
||||
# Testing Options
|
||||
#
|
||||
CONFIG_USE_TEST_SERIAL_NUMBER="TEST_SN"
|
||||
# CONFIG_ENABLE_TEST_SETUP_PARAMS is not set
|
||||
# CONFIG_TEST_EVENT_TRIGGER_ENABLED is not set
|
||||
# end of Testing Options
|
||||
|
||||
#
|
||||
# Network Telemetry Options
|
||||
#
|
||||
# CONFIG_ENABLE_WIFI_TELEMETRY is not set
|
||||
# CONFIG_ENABLE_THREAD_TELEMETRY is not set
|
||||
# CONFIG_ENABLE_THREAD_TELEMETRY_FULL is not set
|
||||
# CONFIG_ENABLE_TUNNEL_TELEMETRY is not set
|
||||
CONFIG_ENABLE_ETHERNET_TELEMETRY=y
|
||||
# end of Network Telemetry Options
|
||||
|
||||
#
|
||||
# Event Logging Options
|
||||
#
|
||||
CONFIG_EVENT_LOGGING_CRIT_BUFFER_SIZE=4096
|
||||
CONFIG_EVENT_LOGGING_INFO_BUFFER_SIZE=1024
|
||||
CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE=1024
|
||||
CONFIG_CHIP_CONFIG_IM_PRETTY_PRINT=y
|
||||
CONFIG_CHIP_LOG_DEFAULT_LEVEL_EQUALS_LOG_DEFAULT_LEVEL=y
|
||||
# CONFIG_CHIP_LOG_DEFAULT_LEVEL_NONE is not set
|
||||
# CONFIG_CHIP_LOG_DEFAULT_LEVEL_ERROR is not set
|
||||
# CONFIG_CHIP_LOG_DEFAULT_LEVEL_PROGRESS is not set
|
||||
# CONFIG_CHIP_LOG_DEFAULT_LEVEL_DETAIL is not set
|
||||
# CONFIG_CHIP_LOG_DEFAULT_LEVEL_AUTOMATION is not set
|
||||
CONFIG_CHIP_LOG_DEFAULT_LEVEL=3
|
||||
# end of Event Logging Options
|
||||
|
||||
# CONFIG_CHIP_ENABLE_BDX_LOG_TRANSFER is not set
|
||||
|
||||
#
|
||||
# Matter OTA Image
|
||||
#
|
||||
# CONFIG_CHIP_OTA_IMAGE_BUILD is not set
|
||||
# end of Matter OTA Image
|
||||
|
||||
#
|
||||
# External Platform
|
||||
#
|
||||
# CONFIG_CHIP_ENABLE_EXTERNAL_PLATFORM is not set
|
||||
# end of External Platform
|
||||
|
||||
#
|
||||
# Matter Manufacturing Options
|
||||
#
|
||||
CONFIG_CHIP_FACTORY_NAMESPACE_PARTITION_LABEL="nvs"
|
||||
CONFIG_CHIP_CONFIG_NAMESPACE_PARTITION_LABEL="nvs"
|
||||
CONFIG_CHIP_COUNTERS_NAMESPACE_PARTITION_LABEL="nvs"
|
||||
CONFIG_CHIP_KVS_NAMESPACE_PARTITION_LABEL="nvs"
|
||||
# end of Matter Manufacturing Options
|
||||
|
||||
#
|
||||
# Commissioning Window Options
|
||||
#
|
||||
CONFIG_CHIP_DISCOVERY_TIMEOUT_SECS=900
|
||||
# end of Commissioning Window Options
|
||||
|
||||
#
|
||||
# Enable ESP32 as a BLE Commissioner
|
||||
#
|
||||
# CONFIG_ENABLE_ESP32_BLE_CONTROLLER is not set
|
||||
# end of Enable ESP32 as a BLE Commissioner
|
||||
|
||||
#
|
||||
# Enable BLE Extended Announcement
|
||||
#
|
||||
# CONFIG_ENABLE_BLE_EXT_ANNOUNCEMENT is not set
|
||||
# end of Enable BLE Extended Announcement
|
||||
|
||||
#
|
||||
# Message Reliable Protocol Options
|
||||
#
|
||||
CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL_FOR_WIFI_ETHERNET=300
|
||||
CONFIG_MRP_LOCAL_IDLE_RETRY_INTERVAL_FOR_WIFI_ETHERNET=500
|
||||
CONFIG_MRP_RETRY_INTERVAL_SENDER_BOOST_FOR_WIFI_ETHERNET=0
|
||||
CONFIG_MRP_MAX_RETRANS=4
|
||||
# end of Message Reliable Protocol Options
|
||||
|
||||
#
|
||||
# Matter TCP transport options
|
||||
#
|
||||
# CONFIG_ENABLE_TCP_TRANSPORT is not set
|
||||
# end of Matter TCP transport options
|
||||
|
||||
#
|
||||
# Network Commissioning Driver Endpoint Id
|
||||
#
|
||||
CONFIG_WIFI_NETWORK_COMMISSIONING_DRIVER=y
|
||||
CONFIG_WIFI_NETWORK_ENDPOINT_ID=0
|
||||
# CONFIG_ETHERNET_NETWORK_COMMISSIONING_DRIVER is not set
|
||||
# end of Network Commissioning Driver Endpoint Id
|
||||
|
||||
#
|
||||
# Cluster Configuration Options
|
||||
#
|
||||
# CONFIG_ENABLE_ACCESS_RESTRICTIONS is not set
|
||||
# end of Cluster Configuration Options
|
||||
# end of CHIP Device Layer
|
||||
|
||||
#
|
||||
# ESP Matter
|
||||
#
|
||||
CONFIG_ESP_MATTER_MAX_DEVICE_TYPE_COUNT=16
|
||||
CONFIG_ESP_MATTER_ATTRIBUTE_BUFFER_LARGEST=259
|
||||
CONFIG_ESP_MATTER_NVS_PART_NAME="nvs"
|
||||
CONFIG_ESP_MATTER_DEFERRED_ATTR_PERSISTENCE_TIME_MS=3000
|
||||
# CONFIG_EXAMPLE_DAC_PROVIDER is not set
|
||||
CONFIG_FACTORY_PARTITION_DAC_PROVIDER=y
|
||||
# CONFIG_CUSTOM_DAC_PROVIDER is not set
|
||||
CONFIG_FACTORY_COMMISSIONABLE_DATA_PROVIDER=y
|
||||
# CONFIG_SEC_CERT_COMMISSIONABLE_DATA_PROVIDER is not set
|
||||
# CONFIG_CUSTOM_COMMISSIONABLE_DATA_PROVIDER is not set
|
||||
# CONFIG_EXAMPLE_DEVICE_INSTANCE_INFO_PROVIDER is not set
|
||||
CONFIG_FACTORY_DEVICE_INSTANCE_INFO_PROVIDER=y
|
||||
# CONFIG_SEC_CERT_DEVICE_INSTANCE_INFO_PROVIDER is not set
|
||||
# CONFIG_CUSTOM_DEVICE_INSTANCE_INFO_PROVIDER is not set
|
||||
CONFIG_NONE_DEVICE_INFO_PROVIDER=y
|
||||
# CONFIG_CUSTOM_DEVICE_INFO_PROVIDER is not set
|
||||
CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT=18
|
||||
CONFIG_ESP_MATTER_MODE_SELECT_CLUSTER_ENDPOINT_COUNT=0
|
||||
CONFIG_ESP_MATTER_TEMPERATURE_CONTROL_CLUSTER_ENDPOINT_COUNT=0
|
||||
CONFIG_ESP_MATTER_SCENES_TABLE_SIZE=16
|
||||
CONFIG_ESP_MATTER_BINDING_TABLE_SIZE=10
|
||||
CONFIG_ESP_MATTER_MEM_ALLOC_MODE_INTERNAL=y
|
||||
# CONFIG_ESP_MATTER_MEM_ALLOC_MODE_EXTERNAL is not set
|
||||
# CONFIG_ESP_MATTER_MEM_ALLOC_MODE_DEFAULT is not set
|
||||
CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y
|
||||
CONFIG_ESP_MATTER_ENABLE_MATTER_SERVER=y
|
||||
# CONFIG_ESP_MATTER_ENABLE_OPENTHREAD is not set
|
||||
CONFIG_CUSTOM_NETWORK_CONFIG=y
|
||||
|
||||
#
|
||||
# Select Supported Matter Clusters
|
||||
#
|
||||
CONFIG_SUPPORT_ACCESS_CONTROL_CLUSTER=y
|
||||
# CONFIG_SUPPORT_ACCOUNT_LOGIN_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ACTIONS_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ACTIVATED_CARBON_FILTER_MONITORING_CLUSTER is not set
|
||||
CONFIG_SUPPORT_ADMINISTRATOR_COMMISSIONING_CLUSTER=y
|
||||
# CONFIG_SUPPORT_AIR_QUALITY_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_APPLICATION_BASIC_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_APPLICATION_LAUNCHER_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_AUDIO_OUTPUT_CLUSTER is not set
|
||||
CONFIG_SUPPORT_BASIC_INFORMATION_CLUSTER=y
|
||||
CONFIG_SUPPORT_BINDING_CLUSTER=y
|
||||
# CONFIG_SUPPORT_BOOLEAN_STATE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_BOOLEAN_STATE_CONFIGURATION_CLUSTER is not set
|
||||
CONFIG_SUPPORT_BRIDGED_DEVICE_BASIC_INFORMATION_CLUSTER=y
|
||||
# CONFIG_SUPPORT_CAMERA_AV_SETTINGS_USER_LEVEL_MANAGEMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CAMERA_AV_STREAM_MANAGEMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CHANNEL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CHIME_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CLOSURE_CONTROL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CLOSURE_DIMENSION_CLUSTER is not set
|
||||
CONFIG_SUPPORT_COLOR_CONTROL_CLUSTER=y
|
||||
# CONFIG_SUPPORT_COMMISSIONER_CONTROL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_COMMODITY_METERING_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_COMMODITY_PRICE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_COMMODITY_TARIFF_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CONTENT_LAUNCHER_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CONTENT_CONTROL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_CONTENT_APP_OBSERVER_CLUSTER is not set
|
||||
CONFIG_SUPPORT_DESCRIPTOR_CLUSTER=y
|
||||
# CONFIG_SUPPORT_DEVICE_ENERGY_MANAGEMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_DEVICE_ENERGY_MANAGEMENT_MODE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_DIAGNOSTIC_LOGS_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_DISHWASHER_ALARM_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_DISHWASHER_MODE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ELECTRICAL_GRID_CONDITIONS_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_GROUPCAST_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_METER_IDENTIFICATION_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_MICROWAVE_OVEN_MODE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_DOOR_LOCK_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ECOSYSTEM_INFORMATION_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ELECTRICAL_ENERGY_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ELECTRICAL_POWER_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ENERGY_EVSE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ENERGY_EVSE_MODE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ENERGY_PREFERENCE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_FAN_CONTROL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_FAULT_INJECTION_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_FIXED_LABEL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_FORMALDEHYDE_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
CONFIG_SUPPORT_GENERAL_COMMISSIONING_CLUSTER=y
|
||||
CONFIG_SUPPORT_GENERAL_DIAGNOSTICS_CLUSTER=y
|
||||
CONFIG_SUPPORT_GROUPS_CLUSTER=y
|
||||
# CONFIG_SUPPORT_HEPA_FILTER_MONITORING_CLUSTER is not set
|
||||
CONFIG_SUPPORT_GROUP_KEY_MANAGEMENT_CLUSTER=y
|
||||
# CONFIG_SUPPORT_ICD_MANAGEMENT_CLUSTER is not set
|
||||
CONFIG_SUPPORT_IDENTIFY_CLUSTER=y
|
||||
# CONFIG_SUPPORT_JOINT_FABRIC_DATASTORE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_JOINT_FABRIC_ADMINISTRATOR_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_KEYPAD_INPUT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_LAUNDRY_WASHER_MODE_CLUSTER is not set
|
||||
CONFIG_SUPPORT_LEVEL_CONTROL_CLUSTER=y
|
||||
# CONFIG_SUPPORT_LOCALIZATION_CONFIGURATION_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_LOW_POWER_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_MEDIA_INPUT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_MEDIA_PLAYBACK_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_MICROWAVE_OVEN_CONTROL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_MESSAGES_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_MODE_SELECT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_NETWORK_COMMISSIONING_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_PUSH_AV_STREAM_TRANSPORT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_SAMPLE_MEI_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_OCCUPANCY_SENSING_CLUSTER is not set
|
||||
CONFIG_SUPPORT_ON_OFF_CLUSTER=y
|
||||
# CONFIG_SUPPORT_POWER_TOPOLOGY_CLUSTER is not set
|
||||
CONFIG_SUPPORT_OPERATIONAL_CREDENTIALS_CLUSTER=y
|
||||
# CONFIG_SUPPORT_OPERATIONAL_STATE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_OPERATIONAL_STATE_OVEN_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_OPERATIONAL_STATE_RVC_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_OVEN_MODE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_PM10_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_PM1_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_PM2_5_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_POWER_SOURCE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_POWER_SOURCE_CONFIGURATION_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_PUMP_CONFIGURATION_AND_CONTROL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_RADON_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_REFRIGERATOR_ALARM_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_REFRIGERATOR_AND_TEMPERATURE_CONTROLLED_CABINET_MODE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_RVC_CLEAN_MODE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_RVC_RUN_MODE_CLUSTER is not set
|
||||
CONFIG_SUPPORT_SCENES_CLUSTER=y
|
||||
# CONFIG_SUPPORT_SERVICE_AREA_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_SMOKE_CO_ALARM_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_SOFTWARE_DIAGNOSTICS_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_SOIL_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_SWITCH_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_TARGET_NAVIGATOR_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_TEMPERATURE_CONTROL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_THERMOSTAT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_THERMOSTAT_USER_INTERFACE_CONFIGURATION_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_THREAD_BORDER_ROUTER_MANAGEMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_THREAD_NETWORK_DIAGNOSTICS_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_THREAD_NETWORK_DIRECTORY_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_TIME_FORMAT_LOCALIZATION_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_TIME_SYNCHRONIZATION_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_TIMER_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_TLS_CERTIFICATE_MANAGEMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_TLS_CLIENT_MANAGEMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_TVOC_CONCENTRATION_MEASUREMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_UNIT_LOCALIZATION_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_UNIT_TESTING_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_USER_LABEL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_VALVE_CONFIGURATION_AND_CONTROL_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_WAKE_ON_LAN_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_LAUNDRY_WASHER_CONTROLS_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_LAUNDRY_DRYER_CONTROLS_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_WEB_RTC_TRANSPORT_PROVIDER_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_WEB_RTC_TRANSPORT_REQUESTOR_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_WIFI_NETWORK_DIAGNOSTICS_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_WIFI_NETWORK_MANAGEMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_WINDOW_COVERING_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_WATER_HEATER_MANAGEMENT_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_WATER_HEATER_MODE_CLUSTER is not set
|
||||
# CONFIG_SUPPORT_ZONE_MANAGEMENT_CLUSTER is not set
|
||||
# end of Select Supported Matter Clusters
|
||||
# end of ESP Matter
|
||||
|
||||
#
|
||||
# ESP Matter Bridge
|
||||
#
|
||||
CONFIG_ESP_MATTER_AGGREGATOR_ENDPOINT_COUNT=1
|
||||
CONFIG_ESP_MATTER_BRIDGE_INFO_PART_NAME="nvs"
|
||||
# end of ESP Matter Bridge
|
||||
|
||||
#
|
||||
# ESP Matter Console
|
||||
#
|
||||
CONFIG_ESP_MATTER_CONSOLE_TASK_STACK=2048
|
||||
CONFIG_ESP_MATTER_CONSOLE_MAX_COMMANDS=10
|
||||
# end of ESP Matter Console
|
||||
|
||||
#
|
||||
# ESP Matter Controller
|
||||
#
|
||||
# CONFIG_ESP_MATTER_CONTROLLER_ENABLE is not set
|
||||
# end of ESP Matter Controller
|
||||
|
||||
#
|
||||
# ESP Matter OTA Provider
|
||||
#
|
||||
# CONFIG_ESP_MATTER_OTA_PROVIDER_ENABLED is not set
|
||||
# end of ESP Matter OTA Provider
|
||||
|
||||
#
|
||||
# OpenThread RCP Update
|
||||
#
|
||||
# CONFIG_AUTO_UPDATE_RCP is not set
|
||||
# CONFIG_CREATE_OTA_IMAGE_WITH_RCP_FW is not set
|
||||
# end of OpenThread RCP Update
|
||||
|
||||
#
|
||||
# ESP Secure Cert Manager
|
||||
#
|
||||
CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=y
|
||||
# CONFIG_ESP_SECURE_CERT_SUPPORT_LEGACY_FORMATS is not set
|
||||
# CONFIG_ESP_SECURE_CERT_WRITE_ENABLE_LOGGING is not set
|
||||
# end of ESP Secure Cert Manager
|
||||
|
||||
#
|
||||
# TinyUSB Stack
|
||||
#
|
||||
CONFIG_TINYUSB_DEBUG_LEVEL=1
|
||||
|
||||
#
|
||||
# TinyUSB DCD
|
||||
#
|
||||
# CONFIG_TINYUSB_MODE_SLAVE is not set
|
||||
CONFIG_TINYUSB_MODE_DMA=y
|
||||
# end of TinyUSB DCD
|
||||
|
||||
#
|
||||
# TinyUSB callbacks
|
||||
#
|
||||
# CONFIG_TINYUSB_SUSPEND_CALLBACK is not set
|
||||
# CONFIG_TINYUSB_RESUME_CALLBACK is not set
|
||||
# end of TinyUSB callbacks
|
||||
|
||||
#
|
||||
# Descriptor configuration
|
||||
#
|
||||
|
||||
#
|
||||
# You can provide your custom descriptors via tinyusb_driver_install()
|
||||
#
|
||||
CONFIG_TINYUSB_DESC_USE_ESPRESSIF_VID=y
|
||||
CONFIG_TINYUSB_DESC_USE_DEFAULT_PID=y
|
||||
CONFIG_TINYUSB_DESC_BCD_DEVICE=0x0100
|
||||
CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Espressif Systems"
|
||||
CONFIG_TINYUSB_DESC_PRODUCT_STRING="Espressif Device"
|
||||
CONFIG_TINYUSB_DESC_SERIAL_STRING="123456"
|
||||
# end of Descriptor configuration
|
||||
|
||||
#
|
||||
# Mass Storage Class (MSC)
|
||||
#
|
||||
# CONFIG_TINYUSB_MSC_ENABLED is not set
|
||||
# end of Mass Storage Class (MSC)
|
||||
|
||||
#
|
||||
# Communication Device Class (CDC)
|
||||
#
|
||||
# CONFIG_TINYUSB_CDC_ENABLED is not set
|
||||
# end of Communication Device Class (CDC)
|
||||
|
||||
#
|
||||
# Musical Instrument Digital Interface (MIDI)
|
||||
#
|
||||
CONFIG_TINYUSB_MIDI_COUNT=0
|
||||
# end of Musical Instrument Digital Interface (MIDI)
|
||||
|
||||
#
|
||||
# Human Interface Device Class (HID)
|
||||
#
|
||||
CONFIG_TINYUSB_HID_COUNT=1
|
||||
# end of Human Interface Device Class (HID)
|
||||
|
||||
#
|
||||
# Device Firmware Upgrade (DFU)
|
||||
#
|
||||
# CONFIG_TINYUSB_DFU_MODE_DFU is not set
|
||||
# CONFIG_TINYUSB_DFU_MODE_DFU_RUNTIME is not set
|
||||
CONFIG_TINYUSB_DFU_MODE_NONE=y
|
||||
# end of Device Firmware Upgrade (DFU)
|
||||
|
||||
#
|
||||
# Bluetooth Host Class (BTH)
|
||||
#
|
||||
# CONFIG_TINYUSB_BTH_ENABLED is not set
|
||||
# end of Bluetooth Host Class (BTH)
|
||||
|
||||
#
|
||||
# Network driver (ECM/NCM/RNDIS)
|
||||
#
|
||||
# CONFIG_TINYUSB_NET_MODE_ECM_RNDIS is not set
|
||||
# CONFIG_TINYUSB_NET_MODE_NCM is not set
|
||||
CONFIG_TINYUSB_NET_MODE_NONE=y
|
||||
# end of Network driver (ECM/NCM/RNDIS)
|
||||
|
||||
#
|
||||
# Vendor Specific Interface
|
||||
#
|
||||
CONFIG_TINYUSB_VENDOR_COUNT=0
|
||||
# end of Vendor Specific Interface
|
||||
# end of TinyUSB Stack
|
||||
|
||||
#
|
||||
# jsmn
|
||||
#
|
||||
# CONFIG_JSMN_PARENT_LINKS is not set
|
||||
# CONFIG_JSMN_STRICT is not set
|
||||
# CONFIG_JSMN_STATIC is not set
|
||||
# end of jsmn
|
||||
|
||||
#
|
||||
# mDNS
|
||||
#
|
||||
CONFIG_MDNS_MAX_INTERFACES=3
|
||||
CONFIG_MDNS_MAX_SERVICES=10
|
||||
CONFIG_MDNS_TASK_PRIORITY=1
|
||||
CONFIG_MDNS_ACTION_QUEUE_LEN=16
|
||||
CONFIG_MDNS_TASK_STACK_SIZE=4096
|
||||
# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set
|
||||
CONFIG_MDNS_TASK_AFFINITY_CPU0=y
|
||||
# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set
|
||||
CONFIG_MDNS_TASK_AFFINITY=0x0
|
||||
|
||||
#
|
||||
# MDNS Memory Configuration
|
||||
#
|
||||
# CONFIG_MDNS_TASK_CREATE_FROM_SPIRAM is not set
|
||||
CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL=y
|
||||
# CONFIG_MDNS_MEMORY_ALLOC_SPIRAM is not set
|
||||
CONFIG_MDNS_MEMORY_ALLOC_INTERNAL=y
|
||||
# CONFIG_MDNS_MEMORY_CUSTOM_IMPL is not set
|
||||
# end of MDNS Memory Configuration
|
||||
|
||||
CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000
|
||||
CONFIG_MDNS_TIMER_PERIOD_MS=100
|
||||
# CONFIG_MDNS_NETWORKING_SOCKET is not set
|
||||
# CONFIG_MDNS_SKIP_SUPPRESSING_OWN_QUERIES is not set
|
||||
# CONFIG_MDNS_ENABLE_DEBUG_PRINTS is not set
|
||||
CONFIG_MDNS_ENABLE_CONSOLE_CLI=y
|
||||
# CONFIG_MDNS_RESPOND_REVERSE_QUERIES is not set
|
||||
CONFIG_MDNS_MULTIPLE_INSTANCE=y
|
||||
|
||||
#
|
||||
# MDNS Predefined interfaces
|
||||
#
|
||||
CONFIG_MDNS_PREDEF_NETIF_STA=y
|
||||
CONFIG_MDNS_PREDEF_NETIF_AP=y
|
||||
CONFIG_MDNS_PREDEF_NETIF_ETH=y
|
||||
# end of MDNS Predefined interfaces
|
||||
# end of mDNS
|
||||
|
||||
#
|
||||
# ESP-MQTT Configurations
|
||||
#
|
||||
@@ -2973,6 +3650,55 @@ CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED=y
|
||||
CONFIG_MQTT_USE_CORE_1=y
|
||||
# CONFIG_MQTT_CUSTOM_OUTBOX is not set
|
||||
# end of ESP-MQTT Configurations
|
||||
|
||||
#
|
||||
# ESP RainMaker Command-Response
|
||||
#
|
||||
CONFIG_ESP_RMAKER_MAX_COMMANDS=10
|
||||
# end of ESP RainMaker Command-Response
|
||||
|
||||
#
|
||||
# ESP RainMaker Common
|
||||
#
|
||||
CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y
|
||||
# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set
|
||||
CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1
|
||||
CONFIG_ESP_RMAKER_MQTT_PORT_443=y
|
||||
# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set
|
||||
CONFIG_ESP_RMAKER_MQTT_PORT=1
|
||||
# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set
|
||||
CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y
|
||||
CONFIG_ESP_RMAKER_MQTT_PRODUCT_NAME="RMDev"
|
||||
CONFIG_ESP_RMAKER_MQTT_PRODUCT_VERSION="1x0"
|
||||
CONFIG_ESP_RMAKER_MQTT_PRODUCT_SKU="EX00"
|
||||
CONFIG_ESP_RMAKER_MQTT_USE_CERT_BUNDLE=y
|
||||
CONFIG_ESP_RMAKER_MAX_MQTT_SUBSCRIPTIONS=10
|
||||
CONFIG_ESP_RMAKER_MQTT_KEEP_ALIVE_INTERVAL=120
|
||||
CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry"
|
||||
CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds"
|
||||
# end of ESP RainMaker Common
|
||||
|
||||
#
|
||||
# ESP RainMaker Console
|
||||
#
|
||||
CONFIG_ESP_RMAKER_CONSOLE_ENABLED=y
|
||||
CONFIG_ESP_RMAKER_CONSOLE_TASK_STACK=4096
|
||||
CONFIG_ESP_RMAKER_CONSOLE_TASK_PRIORITY=5
|
||||
# end of ESP RainMaker Console
|
||||
|
||||
#
|
||||
# ESP RainMaker Time Sync
|
||||
#
|
||||
CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai"
|
||||
CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org"
|
||||
# end of ESP RainMaker Time Sync
|
||||
|
||||
#
|
||||
# ESP RainMaker Work Queue
|
||||
#
|
||||
CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=5120
|
||||
CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5
|
||||
# end of ESP RainMaker Work Queue
|
||||
# end of Component config
|
||||
|
||||
# CONFIG_IDF_EXPERIMENTAL_FEATURES is not set
|
||||
|
||||
@@ -2,6 +2,7 @@ idf_component_register(
|
||||
SRCS "src/gateway_ble.cpp"
|
||||
INCLUDE_DIRS "include"
|
||||
REQUIRES gateway_controller gateway_runtime dali_domain bt esp_timer freertos log nvs_flash
|
||||
PRIV_REQUIRES esp_matter
|
||||
)
|
||||
|
||||
set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17)
|
||||
set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17)
|
||||
|
||||
@@ -24,6 +24,9 @@ class GatewayBleBridge {
|
||||
DaliDomainService& dali_domain);
|
||||
|
||||
esp_err_t start();
|
||||
esp_err_t prepareSharedNimble();
|
||||
esp_err_t attachSharedNimble();
|
||||
void handleMatterAdvertisingChange(bool advertising);
|
||||
void handleSync();
|
||||
int handleGapEvent(struct ble_gap_event* event);
|
||||
int handleAccess(uint16_t conn_handle, uint16_t attr_handle,
|
||||
@@ -32,7 +35,9 @@ class GatewayBleBridge {
|
||||
private:
|
||||
static constexpr uint16_t kInvalidConnectionHandle = 0xffff;
|
||||
|
||||
esp_err_t prepare();
|
||||
esp_err_t initNimble();
|
||||
esp_err_t configureSharedScanResponse();
|
||||
void refreshDeviceName();
|
||||
void setEnabled(bool enabled);
|
||||
void startAdvertising();
|
||||
@@ -48,9 +53,14 @@ class GatewayBleBridge {
|
||||
GatewayController& controller_;
|
||||
GatewayRuntime& runtime_;
|
||||
DaliDomainService& dali_domain_;
|
||||
bool prepared_{false};
|
||||
bool started_{false};
|
||||
bool synced_{false};
|
||||
bool enabled_{false};
|
||||
bool shared_nimble_{false};
|
||||
bool gap_listener_registered_{false};
|
||||
bool matter_advertising_{false};
|
||||
bool gateway_advertising_{false};
|
||||
uint8_t own_addr_type_{0};
|
||||
uint16_t conn_handle_{kInvalidConnectionHandle};
|
||||
std::string device_name_;
|
||||
@@ -60,4 +70,4 @@ class GatewayBleBridge {
|
||||
int64_t last_notify_at_us_{0};
|
||||
};
|
||||
|
||||
} // namespace gateway
|
||||
} // namespace gateway
|
||||
|
||||
@@ -7,11 +7,13 @@
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
|
||||
#include "esp_check.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_timer.h"
|
||||
#include "host/ble_gap.h"
|
||||
#include "host/ble_gatt.h"
|
||||
#include "host/ble_hs.h"
|
||||
#include "host/ble_hs_adv.h"
|
||||
#include "host/ble_store.h"
|
||||
#include "host/util/util.h"
|
||||
#include "nimble/ble.h"
|
||||
@@ -21,12 +23,28 @@
|
||||
#include "services/gatt/ble_svc_gatt.h"
|
||||
#include "store/config/ble_store_config.h"
|
||||
|
||||
#ifdef CONFIG_GATEWAY_MATTER_SUPPORTED
|
||||
#include "lib/support/Span.h"
|
||||
#include "platform/CHIPDeviceLayer.h"
|
||||
#include "platform/ESP32/BLEManagerImpl.h"
|
||||
#endif
|
||||
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr const char* kTag = "gateway_ble";
|
||||
#ifdef CONFIG_GATEWAY_MATTER_SUPPORTED
|
||||
// Matter owns the standard CHIPoBLE 0xFFF6 service. Keep the gateway on a
|
||||
// distinct primary service so mobile GATT clients never resolve the wrong
|
||||
// duplicate service while both protocols share CHIP's NimBLE host.
|
||||
constexpr uint16_t kServiceUuid = 0xFFF7;
|
||||
#else
|
||||
// Preserve the established standalone gateway BLE profile when CHIP is not
|
||||
// present in the firmware.
|
||||
constexpr uint16_t kServiceUuid = 0xFFF6;
|
||||
#endif
|
||||
constexpr uint16_t kChannel1Uuid = 0xFFF1;
|
||||
constexpr uint16_t kChannel2Uuid = 0xFFF2;
|
||||
constexpr uint16_t kGatewayUuid = 0xFFF3;
|
||||
@@ -34,9 +52,11 @@ constexpr int64_t kGenericDedupeWindowUs = 120000;
|
||||
constexpr size_t kGatewayCharacteristicIndex = 2;
|
||||
constexpr int kGatewayNotifyAllocationAttempts = 6;
|
||||
constexpr TickType_t kGatewayNotifyRetryDelayTicks = pdMS_TO_TICKS(20);
|
||||
constexpr size_t kLegacyAdvertisingDataMaxLength = 31;
|
||||
|
||||
gateway::GatewayBleBridge* s_active_bridge = nullptr;
|
||||
uint16_t s_value_handles[3] = {0, 0, 0};
|
||||
struct ble_gap_event_listener s_gap_listener;
|
||||
|
||||
int GapEvent(struct ble_gap_event* event, void* arg);
|
||||
int AccessCharacteristic(uint16_t conn_handle, uint16_t attr_handle,
|
||||
@@ -181,6 +201,25 @@ esp_err_t GatewayBleBridge::start() {
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
shared_nimble_ = false;
|
||||
const esp_err_t prepare_err = prepare();
|
||||
if (prepare_err != ESP_OK) return prepare_err;
|
||||
|
||||
const esp_err_t err = initNimble();
|
||||
if (err != ESP_OK) {
|
||||
s_active_bridge = nullptr;
|
||||
return err;
|
||||
}
|
||||
|
||||
started_ = true;
|
||||
ESP_LOGI(kTag, "BLE bridge started host=standalone enabled=%d name=%s", enabled_,
|
||||
device_name_.c_str());
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t GatewayBleBridge::prepare() {
|
||||
if (prepared_) return ESP_OK;
|
||||
|
||||
s_active_bridge = this;
|
||||
enabled_ = runtime_.bleEnabled();
|
||||
refreshDeviceName();
|
||||
@@ -191,15 +230,126 @@ esp_err_t GatewayBleBridge::start() {
|
||||
controller_.addGatewayNameSink([this](uint8_t) { refreshDeviceName(); });
|
||||
dali_domain_.addRawFrameSink([this](const DaliRawFrame& frame) { handleDaliRawFrame(frame); });
|
||||
|
||||
const esp_err_t err = initNimble();
|
||||
if (err != ESP_OK) {
|
||||
s_active_bridge = nullptr;
|
||||
return err;
|
||||
prepared_ = true;
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t GatewayBleBridge::prepareSharedNimble() {
|
||||
#ifndef CONFIG_GATEWAY_MATTER_SUPPORTED
|
||||
return ESP_ERR_NOT_SUPPORTED;
|
||||
#else
|
||||
if (started_) return shared_nimble_ ? ESP_OK : ESP_ERR_INVALID_STATE;
|
||||
ESP_RETURN_ON_ERROR(prepare(), kTag, "failed to prepare shared BLE bridge");
|
||||
shared_nimble_ = true;
|
||||
|
||||
std::vector<struct ble_gatt_svc_def> services{kGattServices[0]};
|
||||
const CHIP_ERROR service_err =
|
||||
chip::DeviceLayer::Internal::BLEMgrImpl().ConfigureExtraServices(services, false);
|
||||
if (service_err != CHIP_NO_ERROR) {
|
||||
ESP_LOGE(kTag, "failed to add gateway GATT service to CHIP: %s",
|
||||
service_err.AsString());
|
||||
return ESP_FAIL;
|
||||
}
|
||||
ESP_RETURN_ON_ERROR(configureSharedScanResponse(), kTag,
|
||||
"failed to configure shared BLE scan response");
|
||||
return ESP_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
esp_err_t GatewayBleBridge::attachSharedNimble() {
|
||||
#ifndef CONFIG_GATEWAY_MATTER_SUPPORTED
|
||||
return ESP_ERR_NOT_SUPPORTED;
|
||||
#else
|
||||
if (started_) return shared_nimble_ ? ESP_OK : ESP_ERR_INVALID_STATE;
|
||||
if (!prepared_ || !shared_nimble_ || !ble_hs_synced()) return ESP_ERR_INVALID_STATE;
|
||||
|
||||
const int listener_err =
|
||||
ble_gap_event_listener_register(&s_gap_listener, GapEvent, this);
|
||||
if (listener_err != 0 && listener_err != BLE_HS_EALREADY) {
|
||||
ESP_LOGE(kTag, "failed to register shared GAP listener rc=%d", listener_err);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
gap_listener_registered_ = true;
|
||||
started_ = true;
|
||||
// The CHIP advertising-change event is posted asynchronously. ESP-Matter
|
||||
// can therefore already be advertising before MatterEvent has delivered
|
||||
// the notification to us. Seed the shared state from CHIP before handleSync
|
||||
// decides whether the gateway needs its fallback advertisement.
|
||||
matter_advertising_ =
|
||||
chip::DeviceLayer::ConnectivityMgr().IsBLEAdvertisingEnabled() ||
|
||||
chip::DeviceLayer::ConnectivityMgr().IsBLEAdvertising();
|
||||
handleSync();
|
||||
|
||||
uint16_t service_handle = 0;
|
||||
const int service_err = ble_gatts_find_svc(&kServiceUuidDef.u, &service_handle);
|
||||
if (service_err != 0 || service_handle == 0) {
|
||||
ESP_LOGE(kTag, "shared gateway GATT service is unavailable rc=%d handle=%u",
|
||||
service_err, service_handle);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
const ble_uuid_t* characteristic_uuids[] = {
|
||||
&kChannel1UuidDef.u,
|
||||
&kChannel2UuidDef.u,
|
||||
&kGatewayUuidDef.u,
|
||||
};
|
||||
for (size_t index = 0; index < std::size(characteristic_uuids); ++index) {
|
||||
uint16_t definition_handle = 0;
|
||||
uint16_t value_handle = 0;
|
||||
const int characteristic_err =
|
||||
ble_gatts_find_chr(&kServiceUuidDef.u, characteristic_uuids[index],
|
||||
&definition_handle, &value_handle);
|
||||
if (characteristic_err != 0 || definition_handle == 0 || value_handle == 0) {
|
||||
ESP_LOGE(kTag,
|
||||
"shared gateway GATT characteristic missing index=%u rc=%d def=%u val=%u",
|
||||
static_cast<unsigned>(index), characteristic_err,
|
||||
definition_handle, value_handle);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
s_value_handles[index] = value_handle;
|
||||
ESP_LOGI(kTag, "shared gateway characteristic index=%u def=%u val=%u",
|
||||
static_cast<unsigned>(index), definition_handle, value_handle);
|
||||
}
|
||||
ESP_LOGI(kTag,
|
||||
"BLE bridge started host=CHIP shared=1 enabled=%d name=%s service=0x%04x handle=%u",
|
||||
enabled_, device_name_.c_str(), kServiceUuid, service_handle);
|
||||
return ESP_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
esp_err_t GatewayBleBridge::configureSharedScanResponse() {
|
||||
#ifndef CONFIG_GATEWAY_MATTER_SUPPORTED
|
||||
return ESP_ERR_NOT_SUPPORTED;
|
||||
#else
|
||||
if (!enabled_) {
|
||||
chip::DeviceLayer::Internal::BLEMgrImpl().ClearScanResponseData();
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
started_ = true;
|
||||
ESP_LOGI(kTag, "BLE bridge started enabled=%d name=%s", enabled_, device_name_.c_str());
|
||||
std::vector<uint8_t> scan_response{
|
||||
3,
|
||||
BLE_HS_ADV_TYPE_COMP_UUIDS16,
|
||||
static_cast<uint8_t>(kServiceUuid & 0xff),
|
||||
static_cast<uint8_t>((kServiceUuid >> 8) & 0xff),
|
||||
};
|
||||
const size_t max_name_length =
|
||||
kLegacyAdvertisingDataMaxLength - scan_response.size() - 2;
|
||||
const size_t name_length = std::min(device_name_.size(), max_name_length);
|
||||
scan_response.push_back(static_cast<uint8_t>(name_length + 1));
|
||||
scan_response.push_back(name_length == device_name_.size()
|
||||
? BLE_HS_ADV_TYPE_COMP_NAME
|
||||
: BLE_HS_ADV_TYPE_INCOMP_NAME);
|
||||
scan_response.insert(scan_response.end(), device_name_.begin(),
|
||||
device_name_.begin() + name_length);
|
||||
|
||||
const CHIP_ERROR err =
|
||||
chip::DeviceLayer::Internal::BLEMgrImpl().ConfigureScanResponseData(
|
||||
chip::ByteSpan(scan_response.data(), scan_response.size()));
|
||||
if (err != CHIP_NO_ERROR) {
|
||||
ESP_LOGE(kTag, "failed to configure CHIP scan response: %s", err.AsString());
|
||||
return ESP_FAIL;
|
||||
}
|
||||
return ESP_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
esp_err_t GatewayBleBridge::initNimble() {
|
||||
@@ -268,6 +418,25 @@ void GatewayBleBridge::refreshDeviceName() {
|
||||
return;
|
||||
}
|
||||
|
||||
if (shared_nimble_) {
|
||||
if (configureSharedScanResponse() != ESP_OK) {
|
||||
ESP_LOGW(kTag, "failed to refresh shared BLE scan response");
|
||||
}
|
||||
if (matter_advertising_) {
|
||||
#ifdef CONFIG_GATEWAY_MATTER_SUPPORTED
|
||||
const CHIP_ERROR err =
|
||||
chip::DeviceLayer::ConnectivityMgr().SetBLEAdvertisingEnabled(true);
|
||||
if (err != CHIP_NO_ERROR) {
|
||||
ESP_LOGW(kTag, "failed to refresh Matter BLE advertising: %s", err.AsString());
|
||||
}
|
||||
#endif
|
||||
} else if (enabled_ && conn_handle_ == kInvalidConnectionHandle) {
|
||||
stopAdvertising();
|
||||
startAdvertising();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
#if CONFIG_BT_NIMBLE_GAP_SERVICE
|
||||
const int rc = ble_svc_gap_device_name_set(device_name_.c_str());
|
||||
if (rc != 0) {
|
||||
@@ -283,13 +452,28 @@ void GatewayBleBridge::refreshDeviceName() {
|
||||
|
||||
void GatewayBleBridge::setEnabled(bool enabled) {
|
||||
enabled_ = enabled;
|
||||
if (shared_nimble_ && !enabled_) {
|
||||
if (configureSharedScanResponse() != ESP_OK) {
|
||||
ESP_LOGW(kTag, "failed to remove gateway BLE scan response");
|
||||
}
|
||||
#ifdef CONFIG_GATEWAY_MATTER_SUPPORTED
|
||||
if (matter_advertising_) {
|
||||
const CHIP_ERROR err =
|
||||
chip::DeviceLayer::ConnectivityMgr().SetBLEAdvertisingEnabled(true);
|
||||
if (err != CHIP_NO_ERROR) {
|
||||
ESP_LOGW(kTag, "failed to refresh Matter BLE advertising: %s", err.AsString());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (!synced_) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (enabled_) {
|
||||
refreshDeviceName();
|
||||
if (conn_handle_ == kInvalidConnectionHandle) {
|
||||
if (conn_handle_ == kInvalidConnectionHandle &&
|
||||
(!shared_nimble_ || !matter_advertising_)) {
|
||||
startAdvertising();
|
||||
}
|
||||
return;
|
||||
@@ -305,7 +489,15 @@ void GatewayBleBridge::setEnabled(bool enabled) {
|
||||
}
|
||||
|
||||
void GatewayBleBridge::startAdvertising() {
|
||||
if (!enabled_ || ble_gap_adv_active()) {
|
||||
#ifdef CONFIG_GATEWAY_MATTER_SUPPORTED
|
||||
if (shared_nimble_ &&
|
||||
(matter_advertising_ ||
|
||||
chip::DeviceLayer::ConnectivityMgr().IsBLEAdvertising())) {
|
||||
matter_advertising_ = true;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if (!enabled_ || gateway_advertising_ || ble_gap_adv_active()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -333,16 +525,33 @@ void GatewayBleBridge::startAdvertising() {
|
||||
rc = ble_gap_adv_start(own_addr_type_, nullptr, BLE_HS_FOREVER, ¶ms, GapEvent, this);
|
||||
if (rc != 0) {
|
||||
ESP_LOGE(kTag, "failed to start BLE advertising rc=%d", rc);
|
||||
return;
|
||||
}
|
||||
gateway_advertising_ = true;
|
||||
ESP_LOGI(kTag, "gateway BLE advertising started service=0x%04x", kServiceUuid);
|
||||
}
|
||||
|
||||
void GatewayBleBridge::stopAdvertising() {
|
||||
if (!ble_gap_adv_active()) {
|
||||
if ((shared_nimble_ && !gateway_advertising_) || !ble_gap_adv_active()) {
|
||||
return;
|
||||
}
|
||||
const int rc = ble_gap_adv_stop();
|
||||
if (rc != 0) {
|
||||
ESP_LOGW(kTag, "failed to stop BLE advertising rc=%d", rc);
|
||||
return;
|
||||
}
|
||||
gateway_advertising_ = false;
|
||||
}
|
||||
|
||||
void GatewayBleBridge::handleMatterAdvertisingChange(bool advertising) {
|
||||
if (!shared_nimble_) return;
|
||||
matter_advertising_ = advertising;
|
||||
if (advertising) {
|
||||
gateway_advertising_ = false;
|
||||
return;
|
||||
}
|
||||
if (started_ && enabled_ && conn_handle_ == kInvalidConnectionHandle) {
|
||||
startAdvertising();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -479,6 +688,7 @@ int GatewayBleBridge::handleGapEvent(struct ble_gap_event* event) {
|
||||
switch (event->type) {
|
||||
case BLE_GAP_EVENT_CONNECT:
|
||||
if (event->connect.status == 0) {
|
||||
if (shared_nimble_) return 0;
|
||||
conn_handle_ = event->connect.conn_handle;
|
||||
notify_enabled_.fill(false);
|
||||
last_notify_payload_.clear();
|
||||
@@ -496,28 +706,37 @@ int GatewayBleBridge::handleGapEvent(struct ble_gap_event* event) {
|
||||
ESP_LOGW(kTag, "ble_gap_update_params rc=%d", rc);
|
||||
}
|
||||
ESP_LOGI(kTag, "BLE client connected handle=%u", conn_handle_);
|
||||
} else if (enabled_) {
|
||||
} else if (enabled_ && (!shared_nimble_ || !matter_advertising_)) {
|
||||
startAdvertising();
|
||||
}
|
||||
return 0;
|
||||
case BLE_GAP_EVENT_DISCONNECT:
|
||||
conn_handle_ = kInvalidConnectionHandle;
|
||||
notify_enabled_.fill(false);
|
||||
last_notify_payload_.clear();
|
||||
last_notify_at_us_ = 0;
|
||||
if (enabled_) {
|
||||
case BLE_GAP_EVENT_DISCONNECT: {
|
||||
const bool gateway_connection =
|
||||
event->disconnect.conn.conn_handle == conn_handle_;
|
||||
if (gateway_connection) {
|
||||
conn_handle_ = kInvalidConnectionHandle;
|
||||
notify_enabled_.fill(false);
|
||||
last_notify_payload_.clear();
|
||||
last_notify_at_us_ = 0;
|
||||
}
|
||||
if (enabled_ && (!shared_nimble_ || !matter_advertising_)) {
|
||||
startAdvertising();
|
||||
}
|
||||
ESP_LOGI(kTag, "BLE client disconnected reason=%d", event->disconnect.reason);
|
||||
if (gateway_connection || !shared_nimble_) {
|
||||
ESP_LOGI(kTag, "BLE client disconnected reason=%d", event->disconnect.reason);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
case BLE_GAP_EVENT_ADV_COMPLETE:
|
||||
if (enabled_ && conn_handle_ == kInvalidConnectionHandle) {
|
||||
gateway_advertising_ = false;
|
||||
if (!shared_nimble_ && enabled_ && conn_handle_ == kInvalidConnectionHandle) {
|
||||
startAdvertising();
|
||||
}
|
||||
return 0;
|
||||
case BLE_GAP_EVENT_SUBSCRIBE: {
|
||||
const int index = characteristicIndex(event->subscribe.attr_handle);
|
||||
if (index >= 0 && event->subscribe.conn_handle == conn_handle_) {
|
||||
if (index >= 0) {
|
||||
conn_handle_ = event->subscribe.conn_handle;
|
||||
notify_enabled_[index] = event->subscribe.cur_notify != 0;
|
||||
}
|
||||
return 0;
|
||||
@@ -527,12 +746,13 @@ int GatewayBleBridge::handleGapEvent(struct ble_gap_event* event) {
|
||||
}
|
||||
}
|
||||
|
||||
int GatewayBleBridge::handleAccess(uint16_t, uint16_t attr_handle,
|
||||
int GatewayBleBridge::handleAccess(uint16_t conn_handle, uint16_t attr_handle,
|
||||
struct ble_gatt_access_ctxt* ctxt) {
|
||||
const int index = characteristicIndex(attr_handle);
|
||||
if (index < 0) {
|
||||
return BLE_ATT_ERR_UNLIKELY;
|
||||
}
|
||||
conn_handle_ = conn_handle;
|
||||
|
||||
switch (ctxt->op) {
|
||||
case BLE_GATT_ACCESS_OP_READ_CHR:
|
||||
|
||||
@@ -29,6 +29,9 @@ struct GatewayMatterBridgeConfig {
|
||||
uint32_t button_task_stack_size{4096};
|
||||
UBaseType_t button_task_priority{2};
|
||||
std::function<esp_err_t()> wifi_provisioning_callback;
|
||||
std::function<esp_err_t()> ble_prepare_callback;
|
||||
std::function<esp_err_t()> ble_attach_callback;
|
||||
std::function<void(bool)> ble_advertising_changed_callback;
|
||||
};
|
||||
|
||||
// ESP-Matter adapter for the platform-neutral DALI domain. Each discovered
|
||||
|
||||
@@ -26,6 +26,7 @@ constexpr char kBindingNamespace[] = "dali_matter";
|
||||
constexpr uint8_t kBindingVersion = 1;
|
||||
constexpr uint16_t kAllDaliDeviceTypesMask = 0x01FF;
|
||||
constexpr uint32_t kCommissioningWindowSeconds = 300;
|
||||
GatewayMatterBridge* s_active_matter_bridge = nullptr;
|
||||
|
||||
struct PersistedBinding {
|
||||
uint8_t version;
|
||||
@@ -135,8 +136,17 @@ esp_err_t GatewayMatterBridge::start() {
|
||||
"failed to create Matter aggregator");
|
||||
aggregator_endpoint_id_ = esp_matter::endpoint::get_id(aggregator);
|
||||
|
||||
if (config_.ble_prepare_callback) {
|
||||
ESP_RETURN_ON_ERROR(config_.ble_prepare_callback(), kTag,
|
||||
"failed to prepare shared Matter/gateway BLE");
|
||||
}
|
||||
s_active_matter_bridge = this;
|
||||
ESP_RETURN_ON_ERROR(esp_matter::start(MatterEvent), kTag,
|
||||
"failed to start ESP-Matter");
|
||||
if (config_.ble_attach_callback) {
|
||||
ESP_RETURN_ON_ERROR(config_.ble_attach_callback(), kTag,
|
||||
"failed to attach gateway service to CHIP BLE host");
|
||||
}
|
||||
ESP_RETURN_ON_ERROR(initializeBridgeStorage(), kTag,
|
||||
"failed to initialize Matter binding storage");
|
||||
ESP_RETURN_ON_ERROR(resumeBindings(), kTag, "failed to resume DALI bindings");
|
||||
@@ -548,6 +558,7 @@ void GatewayMatterBridge::OpenCommissioningWindowWork(intptr_t argument) {
|
||||
void GatewayMatterBridge::MatterEvent(
|
||||
const chip::DeviceLayer::ChipDeviceEvent* event, intptr_t argument) {
|
||||
(void)argument;
|
||||
auto* bridge = s_active_matter_bridge;
|
||||
switch (event->Type) {
|
||||
case chip::DeviceLayer::DeviceEventType::kCommissioningComplete:
|
||||
ESP_LOGI(kTag, "Matter commissioning complete");
|
||||
@@ -558,6 +569,13 @@ void GatewayMatterBridge::MatterEvent(
|
||||
case chip::DeviceLayer::DeviceEventType::kCommissioningWindowClosed:
|
||||
ESP_LOGI(kTag, "Matter commissioning window closed");
|
||||
break;
|
||||
case chip::DeviceLayer::DeviceEventType::kCHIPoBLEAdvertisingChange:
|
||||
if (bridge != nullptr && bridge->config_.ble_advertising_changed_callback) {
|
||||
bridge->config_.ble_advertising_changed_callback(
|
||||
event->CHIPoBLEAdvertisingChange.Result ==
|
||||
chip::DeviceLayer::kActivity_Started);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -848,6 +848,10 @@ esp_err_t GatewayNetworkService::startWifi() {
|
||||
}
|
||||
|
||||
esp_err_t GatewayNetworkService::startSetupAp() {
|
||||
#if !defined(CONFIG_ESP_WIFI_SOFTAP_SUPPORT)
|
||||
ESP_LOGW(kTag, "setup AP requested but SoftAP support is compiled out");
|
||||
return ESP_ERR_NOT_SUPPORTED;
|
||||
#else
|
||||
stopSmartconfig();
|
||||
if (wifi_ap_netif_ == nullptr) {
|
||||
wifi_ap_netif_ = esp_netif_create_default_wifi_ap();
|
||||
@@ -914,6 +918,7 @@ esp_err_t GatewayNetworkService::startSetupAp() {
|
||||
controller_.setWirelessSetupMode(true);
|
||||
ESP_LOGI(kTag, "setup AP started ssid=%s ip=192.168.3.1", kSetupApSsid);
|
||||
return ESP_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
esp_err_t GatewayNetworkService::startSmartconfig() {
|
||||
|
||||
Reference in New Issue
Block a user