Skip to content

Commit 5d18f8c

Browse files
TC-TMP-2.1: Fix tolerance check, enable in all-devices (project-chip#72795)
* TC-TMP-2.1: Fix tolerance check, enable in all-devices * Move enable of tolerance to impl * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent e906777 commit 5d18f8c

4 files changed

Lines changed: 19 additions & 9 deletions

File tree

‎examples/all-devices-app/all-devices-common/device/types/temperature-sensor/TemperatureSensor.cpp‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ using namespace chip::app::Clusters;
2323
namespace chip {
2424
namespace app {
2525

26-
TemperatureSensor::TemperatureSensor(TimerDelegate & timerDelegate,
27-
TemperatureMeasurementCluster::StartupConfiguration tempConfig) :
26+
TemperatureSensor::TemperatureSensor(TimerDelegate & timerDelegate, TemperatureMeasurementCluster::StartupConfiguration tempConfig,
27+
TemperatureMeasurementCluster::OptionalAttributeSet optionalAttributes) :
2828
SingleEndpoint(Span<const DataModel::DeviceTypeEntry>(&Device::Type::kTemperatureSensor, 1)),
29-
mTimerDelegate(timerDelegate), mTempConfig(tempConfig)
29+
mTimerDelegate(timerDelegate), mTempConfig(tempConfig), mOptionalAttributes(optionalAttributes)
3030
{}
3131

3232
CHIP_ERROR TemperatureSensor::Register(EndpointId endpoint, CodeDrivenDataModelProvider & provider, EndpointComposition composition)
@@ -41,8 +41,7 @@ CHIP_ERROR TemperatureSensor::Register(EndpointId endpoint, CodeDrivenDataModelP
4141
ReturnErrorOnFailure(provider.AddCluster(mIdentifyCluster.Registration()));
4242

4343
// Create the temperature measurement cluster
44-
TemperatureMeasurementCluster::OptionalAttributeSet optionalAttributeSet{ 0 };
45-
mTemperatureMeasurementCluster.Create(endpoint, optionalAttributeSet, mTempConfig);
44+
mTemperatureMeasurementCluster.Create(endpoint, mOptionalAttributes, mTempConfig);
4645
ReturnErrorOnFailure(provider.AddCluster(mTemperatureMeasurementCluster.Registration()));
4746

4847
ReturnErrorOnFailure(provider.AddEndpoint(mEndpointRegistration));

‎examples/all-devices-app/all-devices-common/device/types/temperature-sensor/TemperatureSensor.h‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ namespace app {
2727
class TemperatureSensor : public SingleEndpoint
2828
{
2929
public:
30-
TemperatureSensor(TimerDelegate & timerDelegate, Clusters::TemperatureMeasurementCluster::StartupConfiguration tempConfig);
30+
TemperatureSensor(TimerDelegate & timerDelegate, Clusters::TemperatureMeasurementCluster::StartupConfiguration tempConfig,
31+
Clusters::TemperatureMeasurementCluster::OptionalAttributeSet optionalAttributes = {});
3132
~TemperatureSensor() override = default;
3233

3334
CHIP_ERROR Register(chip::EndpointId endpoint, CodeDrivenDataModelProvider & provider,
@@ -42,6 +43,7 @@ class TemperatureSensor : public SingleEndpoint
4243
protected:
4344
TimerDelegate & mTimerDelegate;
4445
Clusters::TemperatureMeasurementCluster::StartupConfiguration mTempConfig;
46+
Clusters::TemperatureMeasurementCluster::OptionalAttributeSet mOptionalAttributes;
4547
LazyRegisteredServerCluster<Clusters::IdentifyCluster> mIdentifyCluster;
4648
LazyRegisteredServerCluster<Clusters::TemperatureMeasurementCluster> mTemperatureMeasurementCluster;
4749
};

‎examples/all-devices-app/all-devices-common/device/types/temperature-sensor/impl/IncreasingTemperatureSensor.cpp‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,25 @@ namespace app {
2626
namespace {
2727

2828
constexpr System::Clock::Seconds16 kIncreaseTemperatureIntervalSec = System::Clock::Seconds16(10);
29+
constexpr uint16_t kDefaultTemperatureTolerance = 50; // Set tolerance to 0.50 °C
2930

3031
const TemperatureMeasurementCluster::StartupConfiguration kDefaultTemperatureConfig = {
3132
.minMeasuredValue = DataModel::MakeNullable<int16_t>(-10),
3233
.maxMeasuredValue = DataModel::MakeNullable<int16_t>(50),
33-
.tolerance = 0,
34+
.tolerance = kDefaultTemperatureTolerance,
3435
};
3536

3637
} // namespace
3738

38-
IncreasingTemperatureSensor::IncreasingTemperatureSensor() : TemperatureSensor(mTimerDelegate, kDefaultTemperatureConfig) {}
39+
IncreasingTemperatureSensor::IncreasingTemperatureSensor() :
40+
TemperatureSensor(mTimerDelegate, kDefaultTemperatureConfig, []() {
41+
TemperatureMeasurementCluster::OptionalAttributeSet optionalAttributes;
42+
// Enable optional Tolerance attribute to support YAML certification tests
43+
// (Test_TC_TMP_2_1.yaml) executed against this simulated device.
44+
optionalAttributes.Set<TemperatureMeasurement::Attributes::Tolerance::Id>();
45+
return optionalAttributes;
46+
}())
47+
{}
3948

4049
IncreasingTemperatureSensor::~IncreasingTemperatureSensor()
4150
{

‎src/python_testing/TC_TMP_2_1.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ async def test_TC_TMP_2_1(self):
107107
measured_value, max_bound, "Measured value is greater than max bound")
108108

109109
self.step(7)
110-
if self.pics_guard(self.check_pics("TMP.S.A0003")):
110+
if await self.attribute_guard(endpoint=self.get_endpoint(), attribute=attr.Tolerance):
111111
tolerance = await self.read_single_attribute_check_success(cluster=cluster, attribute=attr.Tolerance)
112112
asserts.assert_greater_equal(tolerance, 0, "Tolerance is less than 0")
113113
asserts.assert_less_equal(tolerance, 2048, "Tolerance is greater than 2048")

0 commit comments

Comments
 (0)