Merge branch 'submodule/update_f8d457a446' into 'main'

esp-matter: update connectedhomeip submodule to 9b8fffe0bb

See merge request app-frameworks/esp-matter!1008
This commit is contained in:
Shu Chen
2025-01-24 14:39:14 +08:00
21 changed files with 382 additions and 173 deletions
+5 -3
View File
@@ -26,7 +26,7 @@ variables:
IDF_CHECKOUT_REF: "v5.2.3"
# This variable represents the short hash of the connectedhomeip submodule.
# Note: Do change this short hash on submodule update MRs.
CHIP_SHORT_HASH: "43aa98c2d3"
CHIP_SHORT_HASH: "9b8fffe0bb"
DOCKER_IMAGE_NAME: "espressif/chip-idf"
.add_gitlab_ssh_key: &add_gitlab_ssh_key |
@@ -102,6 +102,9 @@ variables:
.build_matter_examples: &build_matter_examples
- export MATTER_EXAMPLES_PATH=$ESP_MATTER_PATH/connectedhomeip/connectedhomeip/examples
- cd $ESP_MATTER_PATH/connectedhomeip/connectedhomeip
# Enter the Matter venv
- source scripts/activate.sh
- cd $MATTER_EXAMPLES_PATH/all-clusters-app/esp32
- idf.py build
- cd $MATTER_EXAMPLES_PATH/temperature-measurement-app/esp32
@@ -110,8 +113,7 @@ variables:
- idf.py build
- cd $MATTER_EXAMPLES_PATH/pigweed-app/esp32
- idf.py build
- cd $MATTER_EXAMPLES_PATH/persistent-storage/esp32
- idf.py build
# TODO:Remove persistent-storage example build because of the compilation errors of upstream repo
.build_external_platform_example: &build_external_platform_example
- rm -rf ${ESP_MATTER_PATH}/../platform
+1 -1
View File
@@ -28,7 +28,7 @@ section in the ESP-Matter Programming Guide.
## Supported ESP-IDF and connectedhomeip versions
- This SDK currently works with commit [43aa98c2d3](https://github.com/project-chip/connectedhomeip/tree/43aa98c2d3) of connectedhomeip.
- This SDK currently works with commit [9b8fffe0bb](https://github.com/project-chip/connectedhomeip/tree/9b8fffe0bb) of connectedhomeip.
- For Matter projects development with this SDK, it is recommended to utilize ESP-IDF [v5.2.3](https://github.com/espressif/esp-idf/tree/v5.2.3).
## Documentation
+8 -7
View File
@@ -4,7 +4,10 @@ set(SRC_DIRS_LIST "."
"${MATTER_SDK_PATH}/zzz_generated/app-common/app-common/zap-generated/attributes"
"${MATTER_SDK_PATH}/src/app/server"
"${MATTER_SDK_PATH}/src/app/util"
"${MATTER_SDK_PATH}/src/app/util/persistence"
"${MATTER_SDK_PATH}/src/app/reporting"
# TODO Use esp-matter data model and remove ember codes
"${MATTER_SDK_PATH}/src/data-model-providers/codegen"
)
set(INCLUDE_DIRS_LIST "."
@@ -48,10 +51,13 @@ idf_build_set_property(COMPILE_OPTIONS "-Wno-error=uninitialized;-Wno-error=mayb
idf_build_set_property(COMPILE_OPTIONS "-Wno-error=array-bounds" APPEND)
if (NOT CONFIG_ESP_MATTER_ENABLE_DATA_MODEL)
target_include_directories(${COMPONENT_LIB} PUBLIC "${CMAKE_BINARY_DIR}/gen/app-codegen/cpp-app"
"${CMAKE_BINARY_DIR}/gen/app-zapgen/zapgen/app-templates")
target_include_directories(${COMPONENT_LIB} PUBLIC "${CMAKE_BINARY_DIR}/gen/__idf_main-codegen/cpp-app"
"${CMAKE_BINARY_DIR}/gen/__idf_main-zapgen/zapgen/app-templates")
endif()
target_sources(${COMPONENT_LIB} PRIVATE ${MATTER_SDK_PATH}/src/app/StorageDelegateWrapper.cpp
${MATTER_SDK_PATH}/src/app/SafeAttributePersistenceProvider.cpp)
# For Xtensa chips, uint32_t was defined as 'unsigned' before v5.0, and after IDF v5.0 it is defined
# as 'unsigned long', same as RISC-V. add this compile option to avoid format errors.
# https://github.com/espressif/esp-idf/issues/6906#issuecomment-1207373706
@@ -61,11 +67,6 @@ endif()
target_compile_options(${COMPONENT_LIB} PUBLIC
"-DCHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER=<lib/address_resolve/AddressResolve_DefaultImpl.h>")
# TODO: remove this option after https://github.com/project-chip/connectedhomeip/pull/32287 merged
if (${IDF_VERSION_MAJOR} LESS 5)
idf_build_set_property(COMPILE_OPTIONS "-Wno-error=conversion;-Wno-conversion" APPEND)
endif()
# Time sync client feature depends on read client, disable it when read client is disabled.
if (CONFIG_DISABLE_READ_CLIENT)
target_compile_options(${COMPONENT_LIB} PUBLIC "-DTIME_SYNC_ENABLE_TSC_FEATURE=0")
+7 -56
View File
@@ -135,53 +135,6 @@ static esp_err_t esp_matter_command_callback_key_set_read_all_indices(const Conc
return ESP_OK;
}
static esp_err_t esp_matter_command_callback_arm_fail_safe(const ConcreteCommandPath &command_path, TLVReader &tlv_data,
void *opaque_ptr)
{
chip::app::Clusters::GeneralCommissioning::Commands::ArmFailSafe::DecodableType command_data;
CHIP_ERROR error = Decode(tlv_data, command_data);
if (error == CHIP_NO_ERROR) {
emberAfGeneralCommissioningClusterArmFailSafeCallback((CommandHandler *)opaque_ptr, command_path, command_data);
}
return ESP_OK;
}
static esp_err_t esp_matter_command_callback_set_regulatory_config(const ConcreteCommandPath &command_path,
TLVReader &tlv_data, void *opaque_ptr)
{
chip::app::Clusters::GeneralCommissioning::Commands::SetRegulatoryConfig::DecodableType command_data;
CHIP_ERROR error = Decode(tlv_data, command_data);
if (error == CHIP_NO_ERROR) {
emberAfGeneralCommissioningClusterSetRegulatoryConfigCallback((CommandHandler *)opaque_ptr, command_path,
command_data);
}
return ESP_OK;
}
static esp_err_t esp_matter_command_callback_commissioning_complete(const ConcreteCommandPath &command_path,
TLVReader &tlv_data, void *opaque_ptr)
{
chip::app::Clusters::GeneralCommissioning::Commands::CommissioningComplete::DecodableType command_data;
CHIP_ERROR error = Decode(tlv_data, command_data);
if (error == CHIP_NO_ERROR) {
emberAfGeneralCommissioningClusterCommissioningCompleteCallback((CommandHandler *)opaque_ptr, command_path,
command_data);
}
return ESP_OK;
}
static esp_err_t esp_matter_command_callback_set_tc_acknowledgements(const ConcreteCommandPath &command_path,
TLVReader &tlv_data, void *opaque_ptr)
{
chip::app::Clusters::GeneralCommissioning::Commands::SetTCAcknowledgements::DecodableType command_data;
CHIP_ERROR error = Decode(tlv_data, command_data);
if (error == CHIP_NO_ERROR) {
emberAfGeneralCommissioningClusterSetTCAcknowledgementsCallback((CommandHandler *)opaque_ptr, command_path,
command_data);
}
return ESP_OK;
}
static esp_err_t esp_matter_command_callback_open_commissioning_window(const ConcreteCommandPath &command_path,
TLVReader &tlv_data, void *opaque_ptr)
{
@@ -1893,11 +1846,9 @@ namespace general_commissioning {
namespace command {
constexpr const command_entry_t accepted_command_list[] = {
{GeneralCommissioning::Commands::ArmFailSafe::Id, COMMAND_FLAG_ACCEPTED, esp_matter_command_callback_arm_fail_safe},
{GeneralCommissioning::Commands::SetRegulatoryConfig::Id, COMMAND_FLAG_ACCEPTED,
esp_matter_command_callback_set_regulatory_config},
{GeneralCommissioning::Commands::CommissioningComplete::Id, COMMAND_FLAG_ACCEPTED,
esp_matter_command_callback_commissioning_complete},
{GeneralCommissioning::Commands::ArmFailSafe::Id, COMMAND_FLAG_ACCEPTED, nullptr},
{GeneralCommissioning::Commands::SetRegulatoryConfig::Id, COMMAND_FLAG_ACCEPTED, nullptr},
{GeneralCommissioning::Commands::CommissioningComplete::Id, COMMAND_FLAG_ACCEPTED, nullptr},
};
constexpr const command_entry_t generated_command_list[] = {
@@ -1909,19 +1860,19 @@ constexpr const command_entry_t generated_command_list[] = {
command_t *create_arm_fail_safe(cluster_t *cluster)
{
return esp_matter::command::create(cluster, GeneralCommissioning::Commands::ArmFailSafe::Id, COMMAND_FLAG_ACCEPTED,
esp_matter_command_callback_arm_fail_safe);
nullptr);
}
command_t *create_set_regulatory_config(cluster_t *cluster)
{
return esp_matter::command::create(cluster, GeneralCommissioning::Commands::SetRegulatoryConfig::Id,
COMMAND_FLAG_ACCEPTED, esp_matter_command_callback_set_regulatory_config);
COMMAND_FLAG_ACCEPTED, nullptr);
}
command_t *create_commissioning_complete(cluster_t *cluster)
{
return esp_matter::command::create(cluster, GeneralCommissioning::Commands::CommissioningComplete::Id,
COMMAND_FLAG_ACCEPTED, esp_matter_command_callback_commissioning_complete);
COMMAND_FLAG_ACCEPTED, nullptr);
}
command_t *create_arm_fail_safe_response(cluster_t *cluster)
@@ -1945,7 +1896,7 @@ command_t *create_commissioning_complete_response(cluster_t *cluster)
command_t *create_set_tc_acknowledgements(cluster_t *cluster)
{
return esp_matter::command::create(cluster, GeneralCommissioning::Commands::SetTCAcknowledgements::Id,
COMMAND_FLAG_ACCEPTED, esp_matter_command_callback_set_tc_acknowledgements);
COMMAND_FLAG_ACCEPTED, nullptr);
}
command_t *create_set_tc_acknowledgements_response(cluster_t *cluster)
+14 -16
View File
@@ -27,6 +27,7 @@
#include <credentials/DeviceAttestationCredsProvider.h>
#include <credentials/FabricTable.h>
#include <credentials/GroupDataProviderImpl.h>
#include <data-model-providers/codegen/Instance.h>
#include <lib/core/DataModelTypes.h>
#include <platform/CHIPDeviceLayer.h>
#include <platform/DeviceInfoProvider.h>
@@ -719,6 +720,7 @@ static void esp_matter_chip_init_task(intptr_t context)
initParams.InitializeStaticResourcesBeforeServerInit();
initParams.appDelegate = &s_app_delegate;
initParams.dataModelProvider = chip::app::CodegenDataModelProviderInstance(initParams.persistentStorageDelegate);
#ifdef CONFIG_ESP_MATTER_ENABLE_DATA_MODEL
// Group data provider injection for dynamic data model
@@ -742,13 +744,24 @@ static void esp_matter_chip_init_task(intptr_t context)
ESP_LOGE(TAG, "Failed to add fabric delegate, err:%" CHIP_ERROR_FORMAT, ret.Format());
}
chip::Server::GetInstance().Init(initParams);
#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
#ifdef CONFIG_ESP_MATTER_ENABLE_OPENTHREAD
VerifyOrReturn(ThreadStackMgr().InitThreadStack() == CHIP_NO_ERROR, ESP_LOGE(TAG, "Failed to initialize Thread stack"));
#if CHIP_CONFIG_ENABLE_ICD_SERVER
VerifyOrReturn(ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_SleepyEndDevice) == CHIP_NO_ERROR, ESP_LOGE(TAG, "Failed to set the Thread device type"));
#elif CHIP_DEVICE_CONFIG_THREAD_FTD
VerifyOrReturn(ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_Router) == CHIP_NO_ERROR, ESP_LOGE(TAG, "Failed to set the Thread device type"));
#else
VerifyOrReturn(ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_MinimalEndDevice) == CHIP_NO_ERROR, ESP_LOGE(TAG, "Failed to set the Thread device type"));
#endif
VerifyOrReturn(ThreadStackMgr().StartThreadTask() == CHIP_NO_ERROR, ESP_LOGE(TAG, "Failed to launch Thread task"));
// If Thread is Provisioned, publish the dns service
if (chip::DeviceLayer::ConnectivityMgr().IsThreadProvisioned() &&
(chip::Server::GetInstance().GetFabricTable().FabricCount() != 0)) {
chip::app::DnssdServer::Instance().StartServer();
}
#endif // CONFIG_ESP_MATTER_ENABLE_OPENTHREAD
#endif
if (endpoint::enable_all() != ESP_OK) {
ESP_LOGE(TAG, "Enable all endpoints failure");
@@ -816,21 +829,6 @@ static esp_err_t chip_init(event_callback_t callback, intptr_t callback_arg)
if(callback) {
PlatformMgr().AddEventHandler(callback, callback_arg);
}
#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
#ifdef CONFIG_ESP_MATTER_ENABLE_OPENTHREAD
VerifyOrReturnError(ThreadStackMgr().InitThreadStack() == CHIP_NO_ERROR, ESP_FAIL, ESP_LOGE(TAG, "Failed to initialize Thread stack"));
#if CHIP_CONFIG_ENABLE_ICD_SERVER
VerifyOrReturnError(ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_SleepyEndDevice) == CHIP_NO_ERROR, ESP_FAIL, ESP_LOGE(TAG, "Failed to set the Thread device type"));
#elif CHIP_DEVICE_CONFIG_THREAD_FTD
VerifyOrReturnError(ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_Router) == CHIP_NO_ERROR, ESP_FAIL, ESP_LOGE(TAG, "Failed to set the Thread device type"));
#else
VerifyOrReturnError(ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_MinimalEndDevice) == CHIP_NO_ERROR, ESP_FAIL, ESP_LOGE(TAG, "Failed to set the Thread device type"));
#endif
VerifyOrReturnError(ThreadStackMgr().StartThreadTask() == CHIP_NO_ERROR, ESP_FAIL, ESP_LOGE(TAG, "Failed to launch Thread task"));
#endif // CONFIG_ESP_MATTER_ENABLE_OPENTHREAD
#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD
#if CONFIG_ESP_MATTER_ENABLE_MATTER_SERVER
// Add bounds to all attributes
esp_matter::cluster::add_bounds_callback_common();
@@ -355,7 +355,10 @@ void CommissionerControlDelegateInitCB(void *delegate, uint16_t endpoint_id)
return;
}
CommissionerControl::Delegate *commissioner_control_delegate = static_cast<CommissionerControl::Delegate*>(delegate);
CommissionerControl::CommissionerControlServer::Instance().Init(*commissioner_control_delegate);
CommissionerControl::CommissionerControlServer *commissioner_control_instance = nullptr;
commissioner_control_instance =
new CommissionerControl::CommissionerControlServer(commissioner_control_delegate, endpoint_id, CommissionerControl::Id);
commissioner_control_instance->Init();
}
} // namespace delegate_cb
@@ -14,9 +14,12 @@ void MatterBindingPluginServerInitCallback();
void MatterBooleanStatePluginServerInitCallback();
void MatterBooleanStateConfigurationPluginServerInitCallback();
void MatterBridgedDeviceBasicInformationPluginServerInitCallback();
void MatterCameraAvSettingsUserLevelManagementPluginServerInitCallback();
void MatterCameraAvStreamManagementPluginServerInitCallback();
void MatterCarbonDioxideConcentrationMeasurementPluginServerInitCallback();
void MatterCarbonMonoxideConcentrationMeasurementPluginServerInitCallback();
void MatterChannelPluginServerInitCallback();
void MatterChimePluginServerInitCallback();
void MatterColorControlPluginServerInitCallback();
void MatterCommissionerControlPluginServerInitCallback();
void MatterContentAppObserverPluginServerInitCallback();
@@ -85,6 +88,7 @@ void MatterProxyDiscoveryPluginServerInitCallback();
void MatterProxyValidPluginServerInitCallback();
void MatterPulseWidthModulationPluginServerInitCallback();
void MatterPumpConfigurationAndControlPluginServerInitCallback();
void MatterPushAvStreamTransportPluginServerInitCallback();
void MatterRadonConcentrationMeasurementPluginServerInitCallback();
void MatterRefrigeratorAlarmPluginServerInitCallback();
void MatterRefrigeratorAndTemperatureControlledCabinetModePluginServerInitCallback();
@@ -108,6 +112,7 @@ void MatterThreadNetworkDiagnosticsPluginServerInitCallback();
void MatterThreadNetworkDirectoryPluginServerInitCallback();
void MatterTimeFormatLocalizationPluginServerInitCallback();
void MatterTimeSynchronizationPluginServerInitCallback();
void MatterTlsCertificateManagementPluginServerInitCallback();
void MatterTotalVolatileOrganicCompoundsConcentrationMeasurementPluginServerInitCallback();
void MatterUnitLocalizationPluginServerInitCallback();
void MatterUnitTestingPluginServerInitCallback();
@@ -116,9 +121,12 @@ void MatterValveConfigurationAndControlPluginServerInitCallback();
void MatterWakeOnLanPluginServerInitCallback();
void MatterWaterHeaterManagementPluginServerInitCallback();
void MatterWaterHeaterModePluginServerInitCallback();
void MatterWebRTCTransportProviderPluginServerInitCallback();
void MatterWebRTCTransportRequestorPluginServerInitCallback();
void MatterWiFiNetworkDiagnosticsPluginServerInitCallback();
void MatterWiFiNetworkManagementPluginServerInitCallback();
void MatterWindowCoveringPluginServerInitCallback();
void MatterZoneManagementPluginServerInitCallback();
#include <esp_matter_cluster.h>
@@ -76,6 +76,16 @@ void __attribute__((weak)) emberAfBridgedDeviceBasicInformationClusterInitCallba
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfCameraAvSettingsUserLevelManagementClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfCameraAvStreamManagementClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfCarbonDioxideConcentrationMeasurementClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
@@ -91,6 +101,11 @@ void __attribute__((weak)) emberAfChannelClusterInitCallback(EndpointId endpoint
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfChimeClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfColorControlClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
@@ -431,6 +446,11 @@ void __attribute__((weak)) emberAfPumpConfigurationAndControlClusterInitCallback
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfPushAvStreamTransportClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfRadonConcentrationMeasurementClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
@@ -546,6 +566,11 @@ void __attribute__((weak)) emberAfTimeSynchronizationClusterInitCallback(Endpoin
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfTlsCertificateManagementClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfTotalVolatileOrganicCompoundsConcentrationMeasurementClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
@@ -586,6 +611,16 @@ void __attribute__((weak)) emberAfWaterHeaterModeClusterInitCallback(EndpointId
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfWebRTCTransportProviderClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfWebRTCTransportRequestorClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfWiFiNetworkDiagnosticsClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
@@ -601,3 +636,8 @@ void __attribute__((weak)) emberAfWindowCoveringClusterInitCallback(EndpointId e
// To prevent warning
(void) endpoint;
}
void __attribute__((weak)) emberAfZoneManagementClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
(void) endpoint;
}
@@ -55,6 +55,12 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
case app::Clusters::BridgedDeviceBasicInformation::Id:
emberAfBridgedDeviceBasicInformationClusterInitCallback(endpoint);
break;
case app::Clusters::CameraAvSettingsUserLevelManagement::Id:
emberAfCameraAvSettingsUserLevelManagementClusterInitCallback(endpoint);
break;
case app::Clusters::CameraAvStreamManagement::Id:
emberAfCameraAvStreamManagementClusterInitCallback(endpoint);
break;
case app::Clusters::CarbonDioxideConcentrationMeasurement::Id:
emberAfCarbonDioxideConcentrationMeasurementClusterInitCallback(endpoint);
break;
@@ -64,6 +70,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
case app::Clusters::Channel::Id:
emberAfChannelClusterInitCallback(endpoint);
break;
case app::Clusters::Chime::Id:
emberAfChimeClusterInitCallback(endpoint);
break;
case app::Clusters::ColorControl::Id:
emberAfColorControlClusterInitCallback(endpoint);
break;
@@ -268,6 +277,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
case app::Clusters::PumpConfigurationAndControl::Id:
emberAfPumpConfigurationAndControlClusterInitCallback(endpoint);
break;
case app::Clusters::PushAvStreamTransport::Id:
emberAfPushAvStreamTransportClusterInitCallback(endpoint);
break;
case app::Clusters::RadonConcentrationMeasurement::Id:
emberAfRadonConcentrationMeasurementClusterInitCallback(endpoint);
break;
@@ -337,6 +349,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
case app::Clusters::TimeSynchronization::Id:
emberAfTimeSynchronizationClusterInitCallback(endpoint);
break;
case app::Clusters::TlsCertificateManagement::Id:
emberAfTlsCertificateManagementClusterInitCallback(endpoint);
break;
case app::Clusters::TotalVolatileOrganicCompoundsConcentrationMeasurement::Id:
emberAfTotalVolatileOrganicCompoundsConcentrationMeasurementClusterInitCallback(endpoint);
break;
@@ -361,6 +376,12 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
case app::Clusters::WaterHeaterMode::Id:
emberAfWaterHeaterModeClusterInitCallback(endpoint);
break;
case app::Clusters::WebRTCTransportProvider::Id:
emberAfWebRTCTransportProviderClusterInitCallback(endpoint);
break;
case app::Clusters::WebRTCTransportRequestor::Id:
emberAfWebRTCTransportRequestorClusterInitCallback(endpoint);
break;
case app::Clusters::WiFiNetworkDiagnostics::Id:
emberAfWiFiNetworkDiagnosticsClusterInitCallback(endpoint);
break;
@@ -370,6 +391,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
case app::Clusters::WindowCovering::Id:
emberAfWindowCoveringClusterInitCallback(endpoint);
break;
case app::Clusters::ZoneManagement::Id:
emberAfZoneManagementClusterInitCallback(endpoint);
break;
default:
// Unrecognized cluster ID
break;
@@ -29,7 +29,7 @@ import re
# These clusters are not implemented in current connectedhomeip repo
EXCLUDE_CLUSTERS = ['Demand Response Load Control', 'Timer']
# These words are special when formatting the cluster name
WORD_FORMAT_LIST = {'Wifi': 'WiFi', 'Pm2.5': 'Pm25'}
WORD_FORMAT_LIST = {'Wifi': 'WiFi', 'Pm2.5': 'Pm25', 'Webrtc': 'WebRTC'}
if not os.getenv('ESP_MATTER_PATH'):
logging.error("ESP_MATTER_PATH environment variable is not set")
@@ -193,9 +193,12 @@ def get_attribute_write_privilege(attribute):
def get_attribute_name(attribute):
for element in attribute:
if element.tag == 'description':
return element.text
try:
return attribute.attrib['name']
except KeyError:
for element in attribute:
if element.tag == 'description':
return element.text
def get_command_invoke_privilege(command):
@@ -15,6 +15,7 @@
0x00000030, /* Cluster: General Commissioning, Attribute: TCMinRequiredVersion, Privilege: administer */ \
0x00000030, /* Cluster: General Commissioning, Attribute: TCAcknowledgements, Privilege: administer */ \
0x00000030, /* Cluster: General Commissioning, Attribute: TCAcknowledgementsRequired, Privilege: administer */ \
0x00000030, /* Cluster: General Commissioning, Attribute: TCUpdateDeadline, Privilege: administer */ \
0x00000031, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
0x00000031, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
0x00000031, /* Cluster: Network Commissioning, Attribute: LastNetworkingStatus, Privilege: administer */ \
@@ -34,6 +35,26 @@
0x00000453, /* Cluster: Thread Network Directory, Attribute: PreferredExtendedPanID, Privilege: manage */ \
0x00000453, /* Cluster: Thread Network Directory, Attribute: ThreadNetworks, Privilege: operate */ \
0x0000050D, /* Cluster: Application Basic, Attribute: AllowedVendorList, Privilege: administer */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: HDRModeEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: NightVision, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: NightVisionIllum, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: Viewport, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMuted, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: SpeakerVolumeLevel, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMaxLevel, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMinLevel, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMuted, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneVolumeLevel, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMaxLevel, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMinLevel, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneAGCEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: ImageRotation, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipHorizontal, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipVertical, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: LocalVideoRecordingEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: LocalSnapshotRecordingEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: StatusLightEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: StatusLightBrightness, Privilege: manage */ \
0x00000750, /* Cluster: Ecosystem Information, Attribute: DeviceDirectory, Privilege: manage */ \
0x00000750, /* Cluster: Ecosystem Information, Attribute: LocationDirectory, Privilege: manage */ \
0x00000751, /* Cluster: Commissioner Control, Attribute: SupportedDeviceCategories, Privilege: manage */ \
@@ -47,6 +68,7 @@
0x00000006, /* Cluster: General Commissioning, Attribute: TCMinRequiredVersion, Privilege: administer */ \
0x00000007, /* Cluster: General Commissioning, Attribute: TCAcknowledgements, Privilege: administer */ \
0x00000008, /* Cluster: General Commissioning, Attribute: TCAcknowledgementsRequired, Privilege: administer */ \
0x00000009, /* Cluster: General Commissioning, Attribute: TCUpdateDeadline, Privilege: administer */ \
0x00000000, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
0x00000001, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
0x00000005, /* Cluster: Network Commissioning, Attribute: LastNetworkingStatus, Privilege: administer */ \
@@ -66,6 +88,26 @@
0x00000000, /* Cluster: Thread Network Directory, Attribute: PreferredExtendedPanID, Privilege: manage */ \
0x00000001, /* Cluster: Thread Network Directory, Attribute: ThreadNetworks, Privilege: operate */ \
0x00000007, /* Cluster: Application Basic, Attribute: AllowedVendorList, Privilege: administer */ \
0x0000000D, /* Cluster: Camera AV Stream Management, Attribute: HDRModeEnabled, Privilege: manage */ \
0x00000016, /* Cluster: Camera AV Stream Management, Attribute: NightVision, Privilege: manage */ \
0x00000017, /* Cluster: Camera AV Stream Management, Attribute: NightVisionIllum, Privilege: manage */ \
0x00000018, /* Cluster: Camera AV Stream Management, Attribute: Viewport, Privilege: manage */ \
0x00000019, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMuted, Privilege: manage */ \
0x0000001A, /* Cluster: Camera AV Stream Management, Attribute: SpeakerVolumeLevel, Privilege: manage */ \
0x0000001B, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMaxLevel, Privilege: manage */ \
0x0000001C, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMinLevel, Privilege: manage */ \
0x0000001D, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMuted, Privilege: manage */ \
0x0000001E, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneVolumeLevel, Privilege: manage */ \
0x0000001F, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMaxLevel, Privilege: manage */ \
0x00000020, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMinLevel, Privilege: manage */ \
0x00000021, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneAGCEnabled, Privilege: manage */ \
0x00000022, /* Cluster: Camera AV Stream Management, Attribute: ImageRotation, Privilege: manage */ \
0x00000023, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipHorizontal, Privilege: manage */ \
0x00000024, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipVertical, Privilege: manage */ \
0x00000025, /* Cluster: Camera AV Stream Management, Attribute: LocalVideoRecordingEnabled, Privilege: manage */ \
0x00000026, /* Cluster: Camera AV Stream Management, Attribute: LocalSnapshotRecordingEnabled, Privilege: manage */ \
0x00000027, /* Cluster: Camera AV Stream Management, Attribute: StatusLightEnabled, Privilege: manage */ \
0x00000028, /* Cluster: Camera AV Stream Management, Attribute: StatusLightBrightness, Privilege: manage */ \
0x00000000, /* Cluster: Ecosystem Information, Attribute: DeviceDirectory, Privilege: manage */ \
0x00000001, /* Cluster: Ecosystem Information, Attribute: LocationDirectory, Privilege: manage */ \
0x00000000, /* Cluster: Commissioner Control, Attribute: SupportedDeviceCategories, Privilege: manage */ \
@@ -79,6 +121,7 @@
chip::Access::Privilege::kAdminister, /* Cluster: General Commissioning, Attribute: TCMinRequiredVersion, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: General Commissioning, Attribute: TCAcknowledgements, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: General Commissioning, Attribute: TCAcknowledgementsRequired, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: General Commissioning, Attribute: TCUpdateDeadline, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: Network Commissioning, Attribute: LastNetworkingStatus, Privilege: administer */ \
@@ -98,6 +141,26 @@
chip::Access::Privilege::kManage, /* Cluster: Thread Network Directory, Attribute: PreferredExtendedPanID, Privilege: manage */ \
chip::Access::Privilege::kOperate, /* Cluster: Thread Network Directory, Attribute: ThreadNetworks, Privilege: operate */ \
chip::Access::Privilege::kAdminister, /* Cluster: Application Basic, Attribute: AllowedVendorList, Privilege: administer */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: HDRModeEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: NightVision, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: NightVisionIllum, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: Viewport, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMuted, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: SpeakerVolumeLevel, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMaxLevel, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMinLevel, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMuted, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneVolumeLevel, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMaxLevel, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMinLevel, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneAGCEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: ImageRotation, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipHorizontal, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipVertical, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: LocalVideoRecordingEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: LocalSnapshotRecordingEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: StatusLightEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: StatusLightBrightness, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Ecosystem Information, Attribute: DeviceDirectory, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Ecosystem Information, Attribute: LocationDirectory, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Commissioner Control, Attribute: SupportedDeviceCategories, Privilege: manage */ \
@@ -211,6 +274,22 @@
0x00000406, /* Cluster: Occupancy Sensing, Attribute: PhysicalContactUnoccupiedToOccupiedDelay, Privilege: manage */ \
0x00000406, /* Cluster: Occupancy Sensing, Attribute: PhysicalContactUnoccupiedToOccupiedThreshold, Privilege: manage */ \
0x00000453, /* Cluster: Thread Network Directory, Attribute: PreferredExtendedPanID, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: HDRModeEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: NightVision, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: NightVisionIllum, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: Viewport, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMuted, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: SpeakerVolumeLevel, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMuted, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneVolumeLevel, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneAGCEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: ImageRotation, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipHorizontal, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipVertical, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: LocalVideoRecordingEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: LocalSnapshotRecordingEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: StatusLightEnabled, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Attribute: StatusLightBrightness, Privilege: manage */ \
}
// Parallel array data (cluster, *attribute*, privilege) for write attribute
@@ -319,6 +398,22 @@
0x00000031, /* Cluster: Occupancy Sensing, Attribute: PhysicalContactUnoccupiedToOccupiedDelay, Privilege: manage */ \
0x00000032, /* Cluster: Occupancy Sensing, Attribute: PhysicalContactUnoccupiedToOccupiedThreshold, Privilege: manage */ \
0x00000000, /* Cluster: Thread Network Directory, Attribute: PreferredExtendedPanID, Privilege: manage */ \
0x0000000D, /* Cluster: Camera AV Stream Management, Attribute: HDRModeEnabled, Privilege: manage */ \
0x00000016, /* Cluster: Camera AV Stream Management, Attribute: NightVision, Privilege: manage */ \
0x00000017, /* Cluster: Camera AV Stream Management, Attribute: NightVisionIllum, Privilege: manage */ \
0x00000018, /* Cluster: Camera AV Stream Management, Attribute: Viewport, Privilege: manage */ \
0x00000019, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMuted, Privilege: manage */ \
0x0000001A, /* Cluster: Camera AV Stream Management, Attribute: SpeakerVolumeLevel, Privilege: manage */ \
0x0000001D, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMuted, Privilege: manage */ \
0x0000001E, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneVolumeLevel, Privilege: manage */ \
0x00000021, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneAGCEnabled, Privilege: manage */ \
0x00000022, /* Cluster: Camera AV Stream Management, Attribute: ImageRotation, Privilege: manage */ \
0x00000023, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipHorizontal, Privilege: manage */ \
0x00000024, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipVertical, Privilege: manage */ \
0x00000025, /* Cluster: Camera AV Stream Management, Attribute: LocalVideoRecordingEnabled, Privilege: manage */ \
0x00000026, /* Cluster: Camera AV Stream Management, Attribute: LocalSnapshotRecordingEnabled, Privilege: manage */ \
0x00000027, /* Cluster: Camera AV Stream Management, Attribute: StatusLightEnabled, Privilege: manage */ \
0x00000028, /* Cluster: Camera AV Stream Management, Attribute: StatusLightBrightness, Privilege: manage */ \
}
// Parallel array data (cluster, attribute, *privilege*) for write attribute
@@ -427,6 +522,22 @@
chip::Access::Privilege::kManage, /* Cluster: Occupancy Sensing, Attribute: PhysicalContactUnoccupiedToOccupiedDelay, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Occupancy Sensing, Attribute: PhysicalContactUnoccupiedToOccupiedThreshold, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Thread Network Directory, Attribute: PreferredExtendedPanID, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: HDRModeEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: NightVision, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: NightVisionIllum, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: Viewport, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: SpeakerMuted, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: SpeakerVolumeLevel, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneMuted, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneVolumeLevel, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: MicrophoneAGCEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: ImageRotation, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipHorizontal, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: ImageFlipVertical, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: LocalVideoRecordingEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: LocalSnapshotRecordingEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: StatusLightEnabled, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Attribute: StatusLightBrightness, Privilege: manage */ \
}
////////////////////////////////////////////////////////////////////////////////
@@ -452,6 +563,7 @@
0x00000031, /* Cluster: Network Commissioning, Command: ReorderNetwork, Privilege: administer */ \
0x00000031, /* Cluster: Network Commissioning, Command: QueryIdentity, Privilege: administer */ \
0x00000033, /* Cluster: General Diagnostics, Command: TestEventTrigger, Privilege: manage */ \
0x00000033, /* Cluster: General Diagnostics, Command: PayloadTestRequest, Privilege: manage */ \
0x00000034, /* Cluster: Software Diagnostics, Command: ResetWatermarks, Privilege: manage */ \
0x00000035, /* Cluster: Thread Network Diagnostics, Command: ResetCounts, Privilege: manage */ \
0x00000037, /* Cluster: Ethernet Network Diagnostics, Command: ResetCounts, Privilege: manage */ \
@@ -482,6 +594,7 @@
0x00000062, /* Cluster: Scenes Management, Command: RemoveScene, Privilege: manage */ \
0x00000062, /* Cluster: Scenes Management, Command: RemoveAllScenes, Privilege: manage */ \
0x00000062, /* Cluster: Scenes Management, Command: StoreScene, Privilege: manage */ \
0x00000062, /* Cluster: Scenes Management, Command: CopyScene, Privilege: manage */ \
0x00000094, /* Cluster: Water Heater Management, Command: Boost, Privilege: manage */ \
0x00000094, /* Cluster: Water Heater Management, Command: CancelBoost, Privilege: manage */ \
0x00000101, /* Cluster: Door Lock, Command: SetWeekDaySchedule, Privilege: administer */ \
@@ -515,8 +628,29 @@
0x0000050B, /* Cluster: Audio Output, Command: RenameOutput, Privilege: manage */ \
0x0000050E, /* Cluster: Account Login, Command: GetSetupPIN, Privilege: administer */ \
0x0000050E, /* Cluster: Account Login, Command: Login, Privilege: administer */ \
0x00000550, /* Cluster: Zone Management, Command: CreateTwoDCartesianZone, Privilege: manage */ \
0x00000550, /* Cluster: Zone Management, Command: UpdateTwoDCartesianZone, Privilege: manage */ \
0x00000550, /* Cluster: Zone Management, Command: GetTwoDCartesianZone, Privilege: manage */ \
0x00000550, /* Cluster: Zone Management, Command: RemoveZone, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Command: AudioStreamAllocate, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Command: AudioStreamDeallocate, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Command: VideoStreamAllocate, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Command: VideoStreamModify, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Command: VideoStreamDeallocate, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Command: SnapshotStreamAllocate, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Command: SnapshotStreamDeallocate, Privilege: manage */ \
0x00000551, /* Cluster: Camera AV Stream Management, Command: SetStreamPriorities, Privilege: administer */ \
0x00000555, /* Cluster: Push AV Stream Transport, Command: AllocatePushTransport, Privilege: manage */ \
0x00000555, /* Cluster: Push AV Stream Transport, Command: DeallocatePushTransport, Privilege: manage */ \
0x00000555, /* Cluster: Push AV Stream Transport, Command: ModifyPushTransport, Privilege: manage */ \
0x00000555, /* Cluster: Push AV Stream Transport, Command: SetTransportStatus, Privilege: manage */ \
0x00000751, /* Cluster: Commissioner Control, Command: RequestCommissioningApproval, Privilege: manage */ \
0x00000751, /* Cluster: Commissioner Control, Command: CommissionNode, Privilege: manage */ \
0x00000801, /* Cluster: TLS Certificate Management, Command: ProvisionRootCertificate, Privilege: administer */ \
0x00000801, /* Cluster: TLS Certificate Management, Command: RemoveRootCertificate, Privilege: administer */ \
0x00000801, /* Cluster: TLS Certificate Management, Command: TLSClientCSR, Privilege: administer */ \
0x00000801, /* Cluster: TLS Certificate Management, Command: ProvisionClientCertificate, Privilege: administer */ \
0x00000801, /* Cluster: TLS Certificate Management, Command: RemoveClientCertificate, Privilege: administer */ \
0xFFF1FC06, /* Cluster: Fault Injection, Command: FailAtFault, Privilege: manage */ \
0xFFF1FC06, /* Cluster: Fault Injection, Command: FailRandomlyAtFault, Privilege: manage */ \
}
@@ -542,6 +676,7 @@
0x00000008, /* Cluster: Network Commissioning, Command: ReorderNetwork, Privilege: administer */ \
0x00000009, /* Cluster: Network Commissioning, Command: QueryIdentity, Privilege: administer */ \
0x00000000, /* Cluster: General Diagnostics, Command: TestEventTrigger, Privilege: manage */ \
0x00000003, /* Cluster: General Diagnostics, Command: PayloadTestRequest, Privilege: manage */ \
0x00000000, /* Cluster: Software Diagnostics, Command: ResetWatermarks, Privilege: manage */ \
0x00000000, /* Cluster: Thread Network Diagnostics, Command: ResetCounts, Privilege: manage */ \
0x00000000, /* Cluster: Ethernet Network Diagnostics, Command: ResetCounts, Privilege: manage */ \
@@ -572,6 +707,7 @@
0x00000002, /* Cluster: Scenes Management, Command: RemoveScene, Privilege: manage */ \
0x00000003, /* Cluster: Scenes Management, Command: RemoveAllScenes, Privilege: manage */ \
0x00000004, /* Cluster: Scenes Management, Command: StoreScene, Privilege: manage */ \
0x00000040, /* Cluster: Scenes Management, Command: CopyScene, Privilege: manage */ \
0x00000000, /* Cluster: Water Heater Management, Command: Boost, Privilege: manage */ \
0x00000001, /* Cluster: Water Heater Management, Command: CancelBoost, Privilege: manage */ \
0x0000000B, /* Cluster: Door Lock, Command: SetWeekDaySchedule, Privilege: administer */ \
@@ -605,8 +741,29 @@
0x00000001, /* Cluster: Audio Output, Command: RenameOutput, Privilege: manage */ \
0x00000000, /* Cluster: Account Login, Command: GetSetupPIN, Privilege: administer */ \
0x00000002, /* Cluster: Account Login, Command: Login, Privilege: administer */ \
0x00000000, /* Cluster: Zone Management, Command: CreateTwoDCartesianZone, Privilege: manage */ \
0x00000002, /* Cluster: Zone Management, Command: UpdateTwoDCartesianZone, Privilege: manage */ \
0x00000003, /* Cluster: Zone Management, Command: GetTwoDCartesianZone, Privilege: manage */ \
0x00000005, /* Cluster: Zone Management, Command: RemoveZone, Privilege: manage */ \
0x00000000, /* Cluster: Camera AV Stream Management, Command: AudioStreamAllocate, Privilege: manage */ \
0x00000002, /* Cluster: Camera AV Stream Management, Command: AudioStreamDeallocate, Privilege: manage */ \
0x00000003, /* Cluster: Camera AV Stream Management, Command: VideoStreamAllocate, Privilege: manage */ \
0x00000005, /* Cluster: Camera AV Stream Management, Command: VideoStreamModify, Privilege: manage */ \
0x00000006, /* Cluster: Camera AV Stream Management, Command: VideoStreamDeallocate, Privilege: manage */ \
0x00000007, /* Cluster: Camera AV Stream Management, Command: SnapshotStreamAllocate, Privilege: manage */ \
0x00000009, /* Cluster: Camera AV Stream Management, Command: SnapshotStreamDeallocate, Privilege: manage */ \
0x0000000A, /* Cluster: Camera AV Stream Management, Command: SetStreamPriorities, Privilege: administer */ \
0x00000000, /* Cluster: Push AV Stream Transport, Command: AllocatePushTransport, Privilege: manage */ \
0x00000002, /* Cluster: Push AV Stream Transport, Command: DeallocatePushTransport, Privilege: manage */ \
0x00000003, /* Cluster: Push AV Stream Transport, Command: ModifyPushTransport, Privilege: manage */ \
0x00000004, /* Cluster: Push AV Stream Transport, Command: SetTransportStatus, Privilege: manage */ \
0x00000000, /* Cluster: Commissioner Control, Command: RequestCommissioningApproval, Privilege: manage */ \
0x00000001, /* Cluster: Commissioner Control, Command: CommissionNode, Privilege: manage */ \
0x00000000, /* Cluster: TLS Certificate Management, Command: ProvisionRootCertificate, Privilege: administer */ \
0x00000006, /* Cluster: TLS Certificate Management, Command: RemoveRootCertificate, Privilege: administer */ \
0x00000007, /* Cluster: TLS Certificate Management, Command: TLSClientCSR, Privilege: administer */ \
0x00000009, /* Cluster: TLS Certificate Management, Command: ProvisionClientCertificate, Privilege: administer */ \
0x0000000F, /* Cluster: TLS Certificate Management, Command: RemoveClientCertificate, Privilege: administer */ \
0x00000000, /* Cluster: Fault Injection, Command: FailAtFault, Privilege: manage */ \
0x00000001, /* Cluster: Fault Injection, Command: FailRandomlyAtFault, Privilege: manage */ \
}
@@ -632,6 +789,7 @@
chip::Access::Privilege::kAdminister, /* Cluster: Network Commissioning, Command: ReorderNetwork, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: Network Commissioning, Command: QueryIdentity, Privilege: administer */ \
chip::Access::Privilege::kManage, /* Cluster: General Diagnostics, Command: TestEventTrigger, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: General Diagnostics, Command: PayloadTestRequest, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Software Diagnostics, Command: ResetWatermarks, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Thread Network Diagnostics, Command: ResetCounts, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Ethernet Network Diagnostics, Command: ResetCounts, Privilege: manage */ \
@@ -662,6 +820,7 @@
chip::Access::Privilege::kManage, /* Cluster: Scenes Management, Command: RemoveScene, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Scenes Management, Command: RemoveAllScenes, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Scenes Management, Command: StoreScene, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Scenes Management, Command: CopyScene, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Water Heater Management, Command: Boost, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Water Heater Management, Command: CancelBoost, Privilege: manage */ \
chip::Access::Privilege::kAdminister, /* Cluster: Door Lock, Command: SetWeekDaySchedule, Privilege: administer */ \
@@ -695,8 +854,29 @@
chip::Access::Privilege::kManage, /* Cluster: Audio Output, Command: RenameOutput, Privilege: manage */ \
chip::Access::Privilege::kAdminister, /* Cluster: Account Login, Command: GetSetupPIN, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: Account Login, Command: Login, Privilege: administer */ \
chip::Access::Privilege::kManage, /* Cluster: Zone Management, Command: CreateTwoDCartesianZone, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Zone Management, Command: UpdateTwoDCartesianZone, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Zone Management, Command: GetTwoDCartesianZone, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Zone Management, Command: RemoveZone, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Command: AudioStreamAllocate, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Command: AudioStreamDeallocate, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Command: VideoStreamAllocate, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Command: VideoStreamModify, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Command: VideoStreamDeallocate, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Command: SnapshotStreamAllocate, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Camera AV Stream Management, Command: SnapshotStreamDeallocate, Privilege: manage */ \
chip::Access::Privilege::kAdminister, /* Cluster: Camera AV Stream Management, Command: SetStreamPriorities, Privilege: administer */ \
chip::Access::Privilege::kManage, /* Cluster: Push AV Stream Transport, Command: AllocatePushTransport, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Push AV Stream Transport, Command: DeallocatePushTransport, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Push AV Stream Transport, Command: ModifyPushTransport, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Push AV Stream Transport, Command: SetTransportStatus, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Commissioner Control, Command: RequestCommissioningApproval, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Commissioner Control, Command: CommissionNode, Privilege: manage */ \
chip::Access::Privilege::kAdminister, /* Cluster: TLS Certificate Management, Command: ProvisionRootCertificate, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: TLS Certificate Management, Command: RemoveRootCertificate, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: TLS Certificate Management, Command: TLSClientCSR, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: TLS Certificate Management, Command: ProvisionClientCertificate, Privilege: administer */ \
chip::Access::Privilege::kAdminister, /* Cluster: TLS Certificate Management, Command: RemoveClientCertificate, Privilege: administer */ \
chip::Access::Privilege::kManage, /* Cluster: Fault Injection, Command: FailAtFault, Privilege: manage */ \
chip::Access::Privilege::kManage, /* Cluster: Fault Injection, Command: FailRandomlyAtFault, Privilege: manage */ \
}
@@ -26,6 +26,7 @@
#include <credentials/attestation_verifier/DefaultDeviceAttestationVerifier.h>
#include <credentials/attestation_verifier/DeviceAttestationVerifier.h>
#include <crypto/CHIPCryptoPAL.h>
#include <data-model-providers/codegen/Instance.h>
#include <lib/core/CHIPError.h>
#include <lib/core/DataModelTypes.h>
#include <lib/support/CHIPMem.h>
@@ -69,6 +70,7 @@ esp_err_t matter_controller_client::init(NodeId node_id, FabricId fabric_id, uin
factory_init_params.opCertStore = &m_operational_cert_store;
factory_init_params.enableServerInteractions = m_operational_advertising;
factory_init_params.sessionKeystore = &m_session_key_store;
factory_init_params.dataModelProvider = chip::app::CodegenDataModelProviderInstance(&m_default_storage);
m_controller_node_id = node_id;
m_controller_fabric_id = fabric_id;
@@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#include <algorithm>
#include <cstring>
#include <esp_check.h>
#include <esp_http_client.h>
@@ -56,7 +57,7 @@ static void GenerateUpdateToken(uint8_t *buf, size_t bufSize)
static void GetUpdateTokenString(const ByteSpan &token, char *buf, size_t bufSize)
{
const uint8_t *tokenData = static_cast<const uint8_t *>(token.data());
size_t minLength = chip::min(token.size(), bufSize);
size_t minLength = std::min(token.size(), bufSize);
for (size_t i = 0; i < (minLength / 2) - 1; ++i) {
snprintf(&buf[i * 2], bufSize, "%02X", tokenData[i]);
}
@@ -135,7 +135,6 @@ class BLEManagerImpl final : public BLEManager,
#endif // CONFIG_ENABLE_ESP32_BLE_CONTROLLER
{
public:
uint8_t scanResponseBuffer[MAX_SCAN_RSP_DATA_LEN];
BLEManagerImpl() {}
#ifdef CONFIG_ENABLE_ESP32_BLE_CONTROLLER
CHIP_ERROR ConfigureBle(uint32_t aAdapterId, bool aIsCentral);
@@ -190,6 +189,7 @@ public:
private:
chip::Optional<chip::ByteSpan> mScanResponse;
uint8_t scanResponseBuffer[MAX_SCAN_RSP_DATA_LEN];
// Allow the BLEManager interface class to delegate method calls to
// the implementation methods provided by this class.
@@ -241,7 +241,7 @@ CHIP_ERROR ESP32Utils::GetWiFiStationProvision(Internal::DeviceNetworkInfo & net
netInfo.NetworkId = kWiFiStationNetworkId;
netInfo.FieldPresent.NetworkId = true;
memcpy(netInfo.WiFiSSID, stationConfig.sta.ssid,
min(strlen(reinterpret_cast<char *>(stationConfig.sta.ssid)) + 1, sizeof(netInfo.WiFiSSID)));
std::min(strlen(reinterpret_cast<char *>(stationConfig.sta.ssid)) + 1, sizeof(netInfo.WiFiSSID)));
// Enforce that netInfo wifiSSID is null terminated
netInfo.WiFiSSID[kMaxWiFiSSIDLength] = '\0';
@@ -249,7 +249,7 @@ CHIP_ERROR ESP32Utils::GetWiFiStationProvision(Internal::DeviceNetworkInfo & net
if (includeCredentials)
{
static_assert(sizeof(netInfo.WiFiKey) < 255, "Our min might not fit in netInfo.WiFiKeyLen");
netInfo.WiFiKeyLen = static_cast<uint8_t>(min(strlen((char *) stationConfig.sta.password), sizeof(netInfo.WiFiKey)));
netInfo.WiFiKeyLen = static_cast<uint8_t>(std::min(strlen((char *) stationConfig.sta.password), sizeof(netInfo.WiFiKey)));
memcpy(netInfo.WiFiKey, stationConfig.sta.password, netInfo.WiFiKeyLen);
}
@@ -268,7 +268,7 @@ CHIP_ERROR ESP32Utils::SetWiFiStationProvision(const Internal::DeviceNetworkInfo
ReturnErrorOnFailure(ESP32Utils::EnableStationMode());
// Enforce that wifiSSID is null terminated before copying it
memcpy(wifiSSID, netInfo.WiFiSSID, min(netInfoSSIDLen + 1, sizeof(wifiSSID)));
memcpy(wifiSSID, netInfo.WiFiSSID, std::min(netInfoSSIDLen + 1, sizeof(wifiSSID)));
if (netInfoSSIDLen + 1 < sizeof(wifiSSID))
{
wifiSSID[netInfoSSIDLen] = '\0';
@@ -280,8 +280,8 @@ CHIP_ERROR ESP32Utils::SetWiFiStationProvision(const Internal::DeviceNetworkInfo
// Initialize an ESP wifi_config_t structure based on the new provision information.
memset(&wifiConfig, 0, sizeof(wifiConfig));
memcpy(wifiConfig.sta.ssid, wifiSSID, min(strlen(wifiSSID) + 1, sizeof(wifiConfig.sta.ssid)));
memcpy(wifiConfig.sta.password, netInfo.WiFiKey, min((size_t) netInfo.WiFiKeyLen, sizeof(wifiConfig.sta.password)));
memcpy(wifiConfig.sta.ssid, wifiSSID, std::min(strlen(wifiSSID) + 1, sizeof(wifiConfig.sta.ssid)));
memcpy(wifiConfig.sta.password, netInfo.WiFiKey, std::min((size_t) netInfo.WiFiKeyLen, sizeof(wifiConfig.sta.password)));
wifiConfig.sta.scan_method = WIFI_ALL_CHANNEL_SCAN;
wifiConfig.sta.sort_method = WIFI_CONNECT_AP_BY_SIGNAL;
@@ -71,7 +71,7 @@ CHIP_ERROR PlatformManagerImpl::DisableESPEventDispatch()
return Internal::ESP32Utils::MapError(err);
}
CHIP_ERROR PlatformManagerImpl::_InitChipStack(void)
CHIP_ERROR PlatformManagerImpl::_InitChipStack()
{
// Arrange for CHIP-encapsulated ESP32 errors to be translated to text
Internal::ESP32Utils::RegisterESP32ErrorFormatter();
@@ -88,6 +88,7 @@ CHIP_ERROR PlatformManagerImpl::_InitChipStack(void)
err = esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, PlatformManagerImpl::HandleESPSystemEvent, nullptr);
VerifyOrReturnError(err == ESP_OK, Internal::ESP32Utils::MapError(err));
#endif
// Arrange for the ESP event loop to deliver events into the CHIP Device layer.
err = esp_event_handler_register(IP_EVENT, ESP_EVENT_ANY_ID, PlatformManagerImpl::HandleESPSystemEvent, nullptr);
VerifyOrReturnError(err == ESP_OK, Internal::ESP32Utils::MapError(err));
@@ -48,7 +48,9 @@
#include <setup_payload/AdditionalDataPayloadGenerator.h>
#include <system/SystemTimer.h>
#ifndef CONFIG_IDF_TARGET_ESP32P4
#include "esp_bt.h"
#endif
#include "esp_log.h"
#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0)
@@ -125,6 +127,7 @@ uint8_t own_addr_type = BLE_OWN_ADDR_RANDOM;
ChipDeviceScanner & mDeviceScanner = Internal::ChipDeviceScanner::GetInstance();
#endif
BLEManagerImpl BLEManagerImpl::sInstance;
const struct ble_gatt_svc_def BLEManagerImpl::CHIPoBLEGATTService = {
.type = BLE_GATT_SVC_TYPE_PRIMARY,
.uuid = (ble_uuid_t *) (&ShortUUID_CHIPoBLEService),
@@ -277,12 +280,12 @@ void BLEManagerImpl::BleAdvTimeoutHandler(System::Layer *, void *)
BLEMgrImpl().mFlags.Set(Flags::kFastAdvertisingEnabled, 0);
BLEMgrImpl().mFlags.Set(Flags::kAdvertisingRefreshNeeded, 1);
#if CHIP_DEVICE_CONFIG_BLE_EXT_ADVERTISING
#if CHIP_DEVICE_CONFIG_EXT_ADVERTISING
BLEMgrImpl().mFlags.Clear(Flags::kExtAdvertisingEnabled);
BLEMgrImpl().StartBleAdvTimeoutTimer(CHIP_DEVICE_CONFIG_BLE_EXT_ADVERTISING_INTERVAL_CHANGE_TIME_MS);
#endif
}
#if CHIP_DEVICE_CONFIG_BLE_EXT_ADVERTISING
#if CHIP_DEVICE_CONFIG_EXT_ADVERTISING
else
{
ChipLogProgress(DeviceLayer, "bleAdv Timeout : Start extended advertisement");
@@ -1001,7 +1004,7 @@ void BLEManagerImpl::ClaimBLEMemory(System::Layer *, void *)
#ifdef CONFIG_IDF_TARGET_ESP32
err = esp_bt_mem_release(ESP_BT_MODE_BTDM);
#elif defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32S3) || \
#elif defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32S3) || \
defined(CONFIG_IDF_TARGET_ESP32H2) || defined(CONFIG_IDF_TARGET_ESP32C6)
err = esp_bt_mem_release(ESP_BT_MODE_BLE);
#endif
@@ -1030,6 +1033,11 @@ CHIP_ERROR BLEManagerImpl::DeinitBLE()
return MapBLEError(err);
}
#ifdef CONFIG_IDF_TARGET_ESP32P4
// Stub function to avoid link error
extern "C" void ble_transport_ll_deinit(void) {}
#endif
CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
{
CHIP_ERROR err;
@@ -1074,7 +1082,7 @@ CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
ExitNow();
}
#if CHIP_DEVICE_CONFIG_BLE_EXT_ADVERTISING
#if CHIP_DEVICE_CONFIG_EXT_ADVERTISING
// Check for extended advertisement interval and redact VID/PID if past the initial period.
if (mFlags.Has(Flags::kExtAdvertisingEnabled))
{
@@ -1100,6 +1108,7 @@ CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
index = static_cast<uint8_t>(index + sizeof(deviceIdInfo));
mAdvDataLen = index;
exit:
return err;
}
@@ -1112,7 +1121,7 @@ CHIP_ERROR BLEManagerImpl::ConfigureScanResponseData(ByteSpan data)
return CHIP_ERROR_INVALID_ARGUMENT;
}
memcpy(scanResponseBuffer, data.data(), data.size());
ByteSpan scanResponseSpan(scanResponseBuffer);
ByteSpan scanResponseSpan(scanResponseBuffer, data.size());
mScanResponse = chip::Optional<ByteSpan>(scanResponseSpan);
return CHIP_NO_ERROR;
}
@@ -1572,7 +1581,7 @@ void BLEManagerImpl::HandleC3CharRead(struct ble_gatt_char_context * param)
additionalDataFields);
SuccessOrExit(err);
os_mbuf_append(param->ctxt->om, bufferHandle->Start(), bufferHandle->DataLength());
os_mbuf_append(param->ctxt->om, bufferHandle->Start(), static_cast<uint16_t>(bufferHandle->DataLength()));
exit:
if (err != CHIP_NO_ERROR)
@@ -1682,7 +1691,7 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
}
else
{
#if CHIP_DEVICE_CONFIG_BLE_EXT_ADVERTISING
#if CHIP_DEVICE_CONFIG_EXT_ADVERTISING
if (!mFlags.Has(Flags::kExtAdvertisingEnabled))
{
adv_params.itvl_min = CHIP_DEVICE_CONFIG_BLE_SLOW_ADVERTISING_INTERVAL_MIN;
@@ -1784,7 +1793,6 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
return err;
}
int BLEManagerImpl::secondary_ble_svr_gap_event(struct ble_gap_event * event, void * arg)
{
if (chip::DeviceLayer::Internal::BLEMgrImpl().mSecondaryBleGapEventHandler) {
@@ -1,5 +1,5 @@
diff --git a/src/platform/ESP32/BLEManagerImpl.h b/src/platform/ESP32/BLEManagerImpl.h
index eeed125012..e5480505c5 100644
index 2a489420a0..ae315e0b90 100644
--- a/src/platform/ESP32/BLEManagerImpl.h
+++ b/src/platform/ESP32/BLEManagerImpl.h
@@ -61,6 +61,9 @@ struct ble_gatt_char_context
@@ -12,7 +12,7 @@ index eeed125012..e5480505c5 100644
#endif // CONFIG_BT_BLUEDROID_ENABLED
#include <ble/Ble.h>
@@ -144,6 +147,45 @@ public:
@@ -143,6 +146,47 @@ public:
CHIP_ERROR ConfigureScanResponseData(ByteSpan data);
void ClearScanResponseData(void);
@@ -54,11 +54,13 @@ index eeed125012..e5480505c5 100644
+ mSecondaryBleBonding = bleBonding;
+ mSecondaryBleSmSc = bleSmSc;
+ }
+
+ void RefreshAdv(void);
+
private:
chip::Optional<chip::ByteSpan> mScanResponse;
@@ -346,7 +388,7 @@ private:
uint8_t scanResponseBuffer[MAX_SCAN_RSP_DATA_LEN];
@@ -346,7 +390,7 @@ private:
static void bleprph_host_task(void * param);
static void bleprph_on_sync(void);
static void bleprph_on_reset(int);
@@ -67,7 +69,7 @@ index eeed125012..e5480505c5 100644
static int ble_svr_gap_event(struct ble_gap_event * event, void * arg);
static int gatt_svr_chr_access(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt * ctxt, void * arg);
@@ -380,6 +422,31 @@ private:
@@ -380,6 +424,31 @@ private:
#endif // CONFIG_ENABLE_ESP32_BLE_CONTROLLER
static void DriveBLEState(intptr_t arg);
@@ -100,7 +102,7 @@ index eeed125012..e5480505c5 100644
/**
diff --git a/src/platform/ESP32/ESP32Utils.cpp b/src/platform/ESP32/ESP32Utils.cpp
index ffa45ee722..7a7fcad299 100644
index e66007a0a8..5052535376 100644
--- a/src/platform/ESP32/ESP32Utils.cpp
+++ b/src/platform/ESP32/ESP32Utils.cpp
@@ -311,62 +311,7 @@ CHIP_ERROR ESP32Utils::ClearWiFiStationProvision(void)
@@ -168,14 +170,13 @@ index ffa45ee722..7a7fcad299 100644
}
#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI
diff --git a/src/platform/ESP32/PlatformManagerImpl.cpp b/src/platform/ESP32/PlatformManagerImpl.cpp
index 2c73019933..35ff83c2df 100644
index 2c73019933..7c11f63165 100644
--- a/src/platform/ESP32/PlatformManagerImpl.cpp
+++ b/src/platform/ESP32/PlatformManagerImpl.cpp
@@ -60,7 +60,18 @@ static int app_entropy_source(void * data, unsigned char * output, size_t len, s
@@ -60,6 +60,17 @@ static int app_entropy_source(void * data, unsigned char * output, size_t len, s
return 0;
}
-CHIP_ERROR PlatformManagerImpl::_InitChipStack()
+CHIP_ERROR PlatformManagerImpl::DisableESPEventDispatch()
+{
+ esp_err_t err = esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, PlatformManagerImpl::HandleESPSystemEvent);
@@ -187,11 +188,10 @@ index 2c73019933..35ff83c2df 100644
+ return Internal::ESP32Utils::MapError(err);
+}
+
+CHIP_ERROR PlatformManagerImpl::_InitChipStack(void)
CHIP_ERROR PlatformManagerImpl::_InitChipStack()
{
// Arrange for CHIP-encapsulated ESP32 errors to be translated to text
Internal::ESP32Utils::RegisterESP32ErrorFormatter();
@@ -73,6 +84,10 @@ CHIP_ERROR PlatformManagerImpl::_InitChipStack()
@@ -73,6 +84,11 @@ CHIP_ERROR PlatformManagerImpl::_InitChipStack()
esp_err_t err = esp_netif_init();
VerifyOrReturnError(err == ESP_OK, Internal::ESP32Utils::MapError(err));
@@ -199,6 +199,7 @@ index 2c73019933..35ff83c2df 100644
+ err = esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, PlatformManagerImpl::HandleESPSystemEvent, nullptr);
+ VerifyOrReturnError(err == ESP_OK, Internal::ESP32Utils::MapError(err));
+#endif
+
// Arrange for the ESP event loop to deliver events into the CHIP Device layer.
err = esp_event_handler_register(IP_EVENT, ESP_EVENT_ANY_ID, PlatformManagerImpl::HandleESPSystemEvent, nullptr);
VerifyOrReturnError(err == ESP_OK, Internal::ESP32Utils::MapError(err));
@@ -215,10 +216,10 @@ index cc2b0eefe9..0d99857ef8 100644
private:
// ===== Methods that implement the PlatformManager abstract interface.
diff --git a/src/platform/ESP32/nimble/BLEManagerImpl.cpp b/src/platform/ESP32/nimble/BLEManagerImpl.cpp
index d4d90f4536..75328ddb3c 100644
index 0a2ddb1763..c9c81b4db1 100644
--- a/src/platform/ESP32/nimble/BLEManagerImpl.cpp
+++ b/src/platform/ESP32/nimble/BLEManagerImpl.cpp
@@ -125,39 +125,35 @@ uint8_t own_addr_type = BLE_OWN_ADDR_RANDOM;
@@ -127,39 +127,36 @@ uint8_t own_addr_type = BLE_OWN_ADDR_RANDOM;
ChipDeviceScanner & mDeviceScanner = Internal::ChipDeviceScanner::GetInstance();
#endif
BLEManagerImpl BLEManagerImpl::sInstance;
@@ -239,6 +240,7 @@ index d4d90f4536..75328ddb3c 100644
- .flags = BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_INDICATE,
- .val_handle = &sInstance.mTXCharCCCDAttrHandle,
- },
+
+const struct ble_gatt_svc_def BLEManagerImpl::CHIPoBLEGATTService = {
+ .type = BLE_GATT_SVC_TYPE_PRIMARY,
+ .uuid = (ble_uuid_t *) (&ShortUUID_CHIPoBLEService),
@@ -285,7 +287,7 @@ index d4d90f4536..75328ddb3c 100644
};
#ifdef CONFIG_ENABLE_ESP32_BLE_CONTROLLER
@@ -773,6 +769,12 @@ void BLEManagerImpl::DriveBLEState(void)
@@ -775,6 +772,12 @@ void BLEManagerImpl::DriveBLEState(void)
ChipLogError(DeviceLayer, "Configure Adv Data failed: %s", ErrorStr(err));
ExitNow();
}
@@ -298,7 +300,7 @@ index d4d90f4536..75328ddb3c 100644
}
// Start advertising. This is also an asynchronous step.
@@ -783,6 +785,12 @@ void BLEManagerImpl::DriveBLEState(void)
@@ -785,6 +788,12 @@ void BLEManagerImpl::DriveBLEState(void)
ChipLogError(DeviceLayer, "Start advertising failed: %s", ErrorStr(err));
ExitNow();
}
@@ -311,7 +313,7 @@ index d4d90f4536..75328ddb3c 100644
mFlags.Clear(Flags::kAdvertisingRefreshNeeded);
// Transition to the Advertising state...
@@ -808,12 +816,12 @@ void BLEManagerImpl::DriveBLEState(void)
@@ -810,12 +819,12 @@ void BLEManagerImpl::DriveBLEState(void)
{
if (mFlags.Has(Flags::kAdvertising))
{
@@ -327,7 +329,7 @@ index d4d90f4536..75328ddb3c 100644
ExitNow();
}
}
@@ -939,14 +947,15 @@ CHIP_ERROR BLEManagerImpl::InitESPBleLayer(void)
@@ -941,14 +950,15 @@ CHIP_ERROR BLEManagerImpl::InitESPBleLayer(void)
ble_svc_gap_init();
ble_svc_gatt_init();
@@ -345,16 +347,7 @@ index d4d90f4536..75328ddb3c 100644
if (err != CHIP_NO_ERROR)
{
ChipLogError(DeviceLayer, "ble_gatts_add_svcs failed: %s", ErrorStr(err));
@@ -992,7 +1001,7 @@ void BLEManagerImpl::ClaimBLEMemory(System::Layer *, void *)
#ifdef CONFIG_IDF_TARGET_ESP32
err = esp_bt_mem_release(ESP_BT_MODE_BTDM);
-#elif defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32S3) || \
+#elif defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32S3) || \
defined(CONFIG_IDF_TARGET_ESP32H2) || defined(CONFIG_IDF_TARGET_ESP32C6)
err = esp_bt_mem_release(ESP_BT_MODE_BLE);
#endif
@@ -1024,7 +1033,6 @@ CHIP_ERROR BLEManagerImpl::DeinitBLE()
@@ -1031,7 +1041,6 @@ extern "C" void ble_transport_ll_deinit(void) {}
CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
{
CHIP_ERROR err;
@@ -362,7 +355,7 @@ index d4d90f4536..75328ddb3c 100644
uint8_t index = 0;
constexpr uint8_t kServiceDataTypeSize = 1;
@@ -1050,14 +1058,14 @@ CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
@@ -1057,14 +1066,14 @@ CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
ExitNow();
}
@@ -385,7 +378,7 @@ index d4d90f4536..75328ddb3c 100644
err = ConfigurationMgr().GetBLEDeviceIdentificationInfo(deviceIdInfo);
if (err != CHIP_NO_ERROR)
@@ -1087,18 +1095,11 @@ CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
@@ -1094,17 +1103,11 @@ CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
}
#endif
@@ -402,12 +395,26 @@ index d4d90f4536..75328ddb3c 100644
- ChipLogError(DeviceLayer, "ble_gap_adv_set_data failed: %s %d", ErrorStr(err), discriminator);
- ExitNow();
- }
-
+ mAdvDataLen = index;
exit:
return err;
@@ -1371,6 +1374,14 @@ CHIP_ERROR BLEManagerImpl::HandleGAPConnect(struct ble_gap_event * gapEvent)
#endif
}
@@ -1651,16 +1652,18 @@ int BLEManagerImpl::gatt_svr_chr_access(uint16_t conn_handle, uint16_t attr_hand
+void BLEManagerImpl::RefreshAdv(void)
+{
+ mFlags.Set(Flags::kAdvertisingRefreshNeeded);
+ mFlags.Clear(Flags::kAdvertisingConfigured);
+
+ PlatformMgr().ScheduleWork(DriveBLEState, 0);
+}
+
CHIP_ERROR BLEManagerImpl::HandleGAPDisconnect(struct ble_gap_event * gapEvent)
{
ChipLogProgress(DeviceLayer, "BLE GAP connection terminated (con %u reason 0x%02x)", gapEvent->disconnect.conn.conn_handle,
@@ -1658,16 +1669,18 @@ int BLEManagerImpl::gatt_svr_chr_access(uint16_t conn_handle, uint16_t attr_hand
CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
{
CHIP_ERROR err;
@@ -431,7 +438,7 @@ index d4d90f4536..75328ddb3c 100644
// Advertise in fast mode if it is connectable advertisement and
// the application has expressly requested fast advertising.
@@ -1694,48 +1697,187 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
@@ -1701,48 +1714,186 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
(((uint32_t) adv_params.itvl_min) * 10) / 16, (connectable) ? "" : "non-");
{
@@ -453,8 +460,7 @@ index d4d90f4536..75328ddb3c 100644
- else
+ err = MapBLEError(ble_gap_ext_adv_configure(kChipAdvInstance, &adv_params, NULL, ble_svr_gap_event, NULL));
+ if (err != CHIP_NO_ERROR)
{
- err = MapBLEError(ble_hs_pvcy_rpa_config(NIMBLE_HOST_ENABLE_RPA));
+ {
+ ChipLogError(DeviceLayer, "ble_gap_ext_adv_configure failed: %s", ErrorStr(err));
+ return err;
+ }
@@ -494,7 +500,8 @@ index d4d90f4536..75328ddb3c 100644
+ }
+
+ if (mScanResponse.HasValue())
+ {
{
- err = MapBLEError(ble_hs_pvcy_rpa_config(NIMBLE_HOST_ENABLE_RPA));
+ uint16_t resp_size = static_cast<uint16_t>(mScanResponse.Value().size());
+ struct os_mbuf * resp_data = os_msys_get_pkthdr(resp_size, 0);
+ assert(resp_data);
@@ -531,7 +538,6 @@ index d4d90f4536..75328ddb3c 100644
+ return err;
+}
+
+
+int BLEManagerImpl::secondary_ble_svr_gap_event(struct ble_gap_event * event, void * arg)
+{
+ if (chip::DeviceLayer::Internal::BLEMgrImpl().mSecondaryBleGapEventHandler) {
+10 -31
View File
@@ -1,40 +1,19 @@
idf_component_register(SRC_DIRS "."
"${MATTER_SDK_PATH}/src/app/clusters/access-control-server"
"${MATTER_SDK_PATH}/src/app/clusters/administrator-commissioning-server"
"${MATTER_SDK_PATH}/src/app/clusters/basic-information"
"${MATTER_SDK_PATH}/src/app/clusters/bindings"
"${MATTER_SDK_PATH}/src/app/clusters/color-control-server"
"${MATTER_SDK_PATH}/src/app/clusters/descriptor"
"${MATTER_SDK_PATH}/src/app/clusters/diagnostic-logs-server"
"${MATTER_SDK_PATH}/src/app/clusters/ethernet-network-diagnostics-server"
"${MATTER_SDK_PATH}/src/app/clusters/fixed-label-server"
"${MATTER_SDK_PATH}/src/app/clusters/general-commissioning-server"
"${MATTER_SDK_PATH}/src/app/clusters/general-diagnostics-server"
"${MATTER_SDK_PATH}/src/app/clusters/group-key-mgmt-server"
"${MATTER_SDK_PATH}/src/app/clusters/groups-server"
"${MATTER_SDK_PATH}/src/app/clusters/identify-server"
"${MATTER_SDK_PATH}/src/app/clusters/level-control"
"${MATTER_SDK_PATH}/src/app/clusters/localization-configuration-server"
"${MATTER_SDK_PATH}/src/app/clusters/network-commissioning"
"${MATTER_SDK_PATH}/src/app/clusters/on-off-server"
"${MATTER_SDK_PATH}/src/app/clusters/operational-credentials-server"
"${MATTER_SDK_PATH}/src/app/clusters/ota-requestor"
"${MATTER_SDK_PATH}/src/app/clusters/scenes-server"
"${MATTER_SDK_PATH}/src/app/clusters/software-diagnostics-server"
"${MATTER_SDK_PATH}/src/app/clusters/switch-server"
"${MATTER_SDK_PATH}/src/app/clusters/thread-network-diagnostics-server"
"${MATTER_SDK_PATH}/src/app/clusters/time-format-localization-server"
"${MATTER_SDK_PATH}/src/app/clusters/user-label-server"
"${MATTER_SDK_PATH}/src/app/clusters/wifi-network-diagnostics-server"
"${MATTER_SDK_PATH}/src/app/util"
"${MATTER_SDK_PATH}/zzz_generated/app-common/app-common/zap-generated/attributes"
# TODO Remove this from source as the zap doesn't use binding cluster
"${MATTER_SDK_PATH}/src/app/clusters/bindings"
PRIV_INCLUDE_DIRS "." "${ESP_MATTER_PATH}/examples/common/utils")
# We must set CHIP_ROOT to include esp32_codegen.cmake
# We must set CHIP_ROOT to include chip_data_model.cmake
get_filename_component(CHIP_ROOT "${MATTER_SDK_PATH}" REALPATH)
include("${CHIP_ROOT}/build/chip/esp32/esp32_codegen.cmake")
chip_app_component_codegen("${CHIP_ROOT}/examples/lighting-app/lighting-common/lighting-app.matter")
chip_app_component_zapgen("${CHIP_ROOT}/examples/lighting-app/lighting-common/lighting-app.zap")
include(${CHIP_ROOT}/src/app/chip_data_model.cmake)
chip_configure_data_model(${COMPONENT_LIB}
ZAP_FILE ${CHIP_ROOT}/examples/lighting-app/lighting-common/lighting-app.zap)
add_prebuilt_library(matterlib "${CMAKE_BINARY_DIR}/esp-idf/chip/lib/libCHIP.a"
REQUIRES esp_matter main)
target_link_libraries(${COMPONENT_LIB} INTERFACE matterlib)
set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17)
target_compile_options(${COMPONENT_LIB} PRIVATE "-DCHIP_HAVE_CONFIG_H")
+2
View File
@@ -59,6 +59,8 @@ RUN set -x \
&& git checkout FETCH_HEAD \
&& ./scripts/checkout_submodules.py --platform esp32 linux --shallow \
&& bash -c "source scripts/bootstrap.sh" \
&& ./scripts/build_python.sh --enable_ble true --chip_detail_logging true -i out/py-env \
&& bash -c "source out/py-env/bin/activate" \
&& ./scripts/examples/gn_build_example.sh examples/chip-tool out/host \
&& : # last line