mirror of
https://github.com/espressif/esp-matter.git
synced 2026-04-27 19:13:13 +00:00
Merge branch 'basic_info/fix_optional_attr' into 'main'
data-mode-provider: Set optional attributes set for basic information cluster Closes CON-1891 See merge request app-frameworks/esp-matter!1362
This commit is contained in:
+25
-1
@@ -12,23 +12,47 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include <esp_matter_data_model.h>
|
||||||
|
#include <data_model_provider/esp_matter_data_model_provider.h>
|
||||||
|
|
||||||
#include <app/ClusterCallbacks.h>
|
#include <app/ClusterCallbacks.h>
|
||||||
#include <app/clusters/basic-information/BasicInformationCluster.h>
|
#include <app/clusters/basic-information/BasicInformationCluster.h>
|
||||||
#include <data_model_provider/esp_matter_data_model_provider.h>
|
#include <lib/core/DataModelTypes.h>
|
||||||
|
|
||||||
using namespace chip;
|
using namespace chip;
|
||||||
using namespace chip::app;
|
using namespace chip::app;
|
||||||
using namespace chip::app::Clusters;
|
using namespace chip::app::Clusters;
|
||||||
|
using namespace chip::app::Clusters::BasicInformation::Attributes;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
ServerClusterRegistration gRegistration(BasicInformationCluster::Instance());
|
ServerClusterRegistration gRegistration(BasicInformationCluster::Instance());
|
||||||
|
|
||||||
|
bool IsAttrEnabled(uint32_t attrId)
|
||||||
|
{
|
||||||
|
return esp_matter::attribute::get(kRootEndpointId, BasicInformation::Id, attrId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BasicInformationCluster::OptionalAttributesSet GetOptionalAttrsSet()
|
||||||
|
{
|
||||||
|
BasicInformationCluster::OptionalAttributesSet attrsSet;
|
||||||
|
return attrsSet.Set<ManufacturingDate::Id>(IsAttrEnabled(ManufacturingDate::Id))
|
||||||
|
.Set<PartNumber::Id>(IsAttrEnabled(PartNumber::Id))
|
||||||
|
.Set<ProductURL::Id>(IsAttrEnabled(ProductURL::Id))
|
||||||
|
.Set<ProductLabel::Id>(IsAttrEnabled(ProductLabel::Id))
|
||||||
|
.Set<SerialNumber::Id>(IsAttrEnabled(SerialNumber::Id))
|
||||||
|
.Set<LocalConfigDisabled::Id>(IsAttrEnabled(LocalConfigDisabled::Id))
|
||||||
|
.Set<Reachable::Id>(IsAttrEnabled(Reachable::Id))
|
||||||
|
.Set<ProductAppearance::Id>(IsAttrEnabled(ProductAppearance::Id))
|
||||||
|
.Set<UniqueID::Id>(IsAttrEnabled(UniqueID::Id));
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
void ESPMatterBasicInformationClusterServerInitCallback(EndpointId endpoint)
|
void ESPMatterBasicInformationClusterServerInitCallback(EndpointId endpoint)
|
||||||
{
|
{
|
||||||
// We implement the cluster as a singleton on the root endpoint.
|
// We implement the cluster as a singleton on the root endpoint.
|
||||||
VerifyOrReturn(endpoint == kRootEndpointId);
|
VerifyOrReturn(endpoint == kRootEndpointId);
|
||||||
|
|
||||||
|
BasicInformationCluster::Instance().OptionalAttributes() = GetOptionalAttrsSet();
|
||||||
CHIP_ERROR err = esp_matter::data_model::provider::get_instance().registry().Register(gRegistration);
|
CHIP_ERROR err = esp_matter::data_model::provider::get_instance().registry().Register(gRegistration);
|
||||||
if (err != CHIP_NO_ERROR) {
|
if (err != CHIP_NO_ERROR) {
|
||||||
ChipLogError(AppServer, "Failed to register BasicInformation - Error %" CHIP_ERROR_FORMAT, err.Format());
|
ChipLogError(AppServer, "Failed to register BasicInformation - Error %" CHIP_ERROR_FORMAT, err.Format());
|
||||||
|
|||||||
Reference in New Issue
Block a user