components/esp-matter: Data model changes to add mandatory camera clusters

This commit is contained in:
Sayon Deep
2025-11-27 11:40:27 +05:30
parent e322e230df
commit 891ee157c5
11 changed files with 1057 additions and 4 deletions
@@ -21,7 +21,7 @@
/* Replace these with IDs from submodule whenever they are implemented */
#define ESP_MATTER_ROOT_NODE_DEVICE_TYPE_ID 0x0016
#define ESP_MATTER_ROOT_NODE_DEVICE_TYPE_VERSION 3
#define ESP_MATTER_ROOT_NODE_DEVICE_TYPE_VERSION 4
#define ESP_MATTER_OTA_REQUESTOR_DEVICE_TYPE_ID 0x0012
#define ESP_MATTER_OTA_REQUESTOR_DEVICE_TYPE_VERSION 1
#define ESP_MATTER_OTA_PROVIDER_DEVICE_TYPE_ID 0x0014
@@ -151,6 +151,9 @@
#define ESP_MATTER_THERMOSTAT_CONTROLLER_DEVICE_TYPE_ID 0x030A
#define ESP_MATTER_THERMOSTAT_CONTROLLER_DEVICE_TYPE_VERSION 1
#define ESP_MATTER_CAMERA_DEVICE_TYPE_ID 0x0142
#define ESP_MATTER_CAMERA_DEVICE_TYPE_VERSION 1
namespace esp_matter {
/** Specific endpoint (device type) create APIs
@@ -370,7 +373,7 @@ namespace on_off_plug_in_unit {
typedef struct config : on_off_with_lighting_config {
config() {
identify.identify_type = chip::to_underlying(chip::app::Clusters::Identify::IdentifyTypeEnum::kVisibleIndicator);
}
}
} config_t;
uint32_t get_device_type_id();
@@ -656,7 +659,7 @@ typedef struct config : app_base_config {
nullable<int16_t> max_pressure = nullable<int16_t>(),
nullable<uint16_t> max_speed = nullable<uint16_t>(),
nullable<uint16_t> max_flow = nullable<uint16_t>()
) : pump_configuration_and_control(max_pressure, max_speed, max_flow) {
) : pump_configuration_and_control(max_pressure, max_speed, max_flow) {
identify.identify_type = chip::to_underlying(chip::app::Clusters::Identify::IdentifyTypeEnum::kActuator);
}
} config_t;
@@ -1022,6 +1025,23 @@ endpoint_t *create(node_t *node, config_t *config, uint8_t flags, void *priv_dat
esp_err_t add(endpoint_t *endpoint, config_t *config);
} /** heat_pump **/
namespace camera {
typedef struct config {
cluster::descriptor::config_t descriptor;
cluster::camera_av_stream_management::config_t camera_av_stream_management;
cluster::webrtc_transport_provider::config_t webrtc_transport_provider;
cluster::webrtc_transport_requestor::config_t webrtc_transport_requestor;
} config_t;
uint32_t get_device_type_id();
uint8_t get_device_type_version();
endpoint_t *create(node_t *node, config_t *config, uint8_t flags, void *priv_data);
esp_err_t add(endpoint_t *endpoint, config_t *config);
} /* camera */
namespace thermostat_controller {
using config_t = app_client_config;