tree: eaab84c3d763cb12251a1da743b2c3bbbc7f2b16 [path history] [tgz]
  1. tests/
  2. air-quality-server.h
  3. AirQualityCluster.cpp
  4. AirQualityCluster.h
  5. app_config_dependent_sources.cmake
  6. app_config_dependent_sources.gni
  7. BUILD.gn
  8. CodegenIntegration.cpp
  9. CodegenIntegration.h
  10. README.md
src/app/clusters/air-quality-server/README.md

Air Quality Cluster

This cluster follows a code-driven approach using AirQualityCluster (DefaultServerCluster).

Code-Driven Usage

#include <app/clusters/air-quality-server/AirQualityCluster.h>
#include <app/server-cluster/ServerClusterInterfaceRegistry.h>
#include <data-model-providers/codegen/CodegenDataModelProvider.h>

using namespace chip::app::Clusters;

RegisteredServerCluster<AirQualityCluster> gCluster(endpointId,
    BitFlags<AirQuality::Feature>(AirQuality::Feature::kFair, AirQuality::Feature::kModerate));

// Register during init
CodegenDataModelProvider::Instance().Registry().Register(gCluster.Registration());

// Set and get air quality
gCluster.Cluster().SetAirQuality(AirQuality::AirQualityEnum::kGood);
AirQuality::AirQualityEnum current = gCluster.Cluster().GetAirQuality();

Legacy (ZAP) Usage

The backward-compatible AirQuality::Instance wrapper handles registration internally:

#include <app/clusters/air-quality-server/air-quality-server.h>

using namespace chip::app::Clusters::AirQuality;

auto * instance = new Instance(endpointId, BitMask<Feature>(Feature::kFair, Feature::kModerate));
instance->Init();

instance->UpdateAirQuality(AirQualityEnum::kGood);
AirQualityEnum current = instance->GetAirQuality();

// The destructor unregisters the cluster, so delete when no longer needed
delete instance;