@@ -77,6 +77,15 @@ CHIP_ERROR SensorManager::Init()
77
77
}
78
78
79
79
void SensorManager::SensorTimerEventHandler (void * arg)
80
+ {
81
+ AppEvent event;
82
+ event.Type = AppEvent::kEventType_Timer ;
83
+ event.Handler = TemperatureUpdateEventHandler;
84
+
85
+ AppTask::GetAppTask ().PostEvent (&event);
86
+ }
87
+
88
+ void SensorManager::TemperatureUpdateEventHandler (AppEvent * aEvent)
80
89
{
81
90
int16_t temperature = 0 ;
82
91
static int16_t lastTemperature = 0 ;
@@ -115,20 +124,11 @@ void SensorManager::SensorTimerEventHandler(void * arg)
115
124
116
125
if ((temperature >= (lastTemperature + kMinTemperatureDelta )) || temperature <= (lastTemperature - kMinTemperatureDelta ))
117
126
{
118
- lastTemperature = temperature;
119
- AttributeUpdateInfo * data = chip::Platform::New<AttributeUpdateInfo>();
120
- data->endPoint = kThermostatEndpoint ;
121
- data->temperature = temperature;
127
+ lastTemperature = temperature;
128
+ PlatformMgr ().LockChipStack ();
122
129
// The SensorMagager shouldn't be aware of the Endpoint ID TODO Fix this.
123
130
// TODO Per Spec we should also apply the Offset stored in the same cluster before saving the temp
124
-
125
- chip::DeviceLayer:: PlatformMgr ().ScheduleWork (UpdateTemperatureAttribute, reinterpret_cast < intptr_t >(data) );
131
+ app::Clusters::Thermostat::Attributes::LocalTemperature::Set ( kThermostatEndpoint , temperature);
132
+ PlatformMgr ().UnlockChipStack ( );
126
133
}
127
134
}
128
-
129
- void SensorManager::UpdateTemperatureAttribute (intptr_t context)
130
- {
131
- SensorManager::AttributeUpdateInfo * data = reinterpret_cast <SensorManager::AttributeUpdateInfo *>(context);
132
- app::Clusters::Thermostat::Attributes::LocalTemperature::Set (data->endPoint , data->temperature );
133
- chip::Platform::Delete (data);
134
- }
0 commit comments