Skip to content

Commit 97ed46b

Browse files
committed
using schedulework instead of chiplock
1 parent c65feae commit 97ed46b

File tree

3 files changed

+19
-19
lines changed

3 files changed

+19
-19
lines changed

examples/air-quality-sensor-app/silabs/src/AirQualitySensorUI.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#endif
3232

3333
using namespace chip::app::Clusters;
34+
using namespace chip::app::Clusters::AirQuality;
3435

3536
namespace {
3637
// Bitmap
@@ -50,8 +51,6 @@ constexpr bool UI_WIFI = false;
5051
#endif
5152
} // namespace
5253

53-
using namespace chip::app::Clusters::AirQuality;
54-
5554
void AirQualitySensorUI::DrawUI(GLIB_Context_t * glibContext)
5655
{
5756
if (glibContext == nullptr)

examples/air-quality-sensor-app/silabs/src/AppTask.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,6 @@ void AppTask::UpdateAirQualitySensorUI()
137137
GetLCD().ShowQRCode(true);
138138
}
139139
#endif // QR_CODE_ENABLED
140-
#else
141-
PlatformMgr().LockChipStack();
142-
ChipLogDetail(AppServer, "Air Quality Sensor Status - AirQualityEnumValue:%d",
143-
chip::to_underlying(AirQualitySensorManager::GetInstance()->GetAirQuality()));
144-
PlatformMgr().UnlockChipStack();
145140
#endif
146141
}
147142

examples/air-quality-sensor-app/silabs/src/SensorManager.cpp

+18-12
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,14 @@ AirQualityEnum classifyAirQuality(int32_t value)
9797
}
9898
}
9999

100+
void InitAirQualitySensorManager(intptr_t arg)
101+
{
102+
AirQualitySensorManager::InitInstance();
103+
}
104+
100105
CHIP_ERROR SensorManager::Init()
101106
{
102-
DeviceLayer::PlatformMgr().ScheduleWork(AirQualitySensorManager::InitInstance);
107+
DeviceLayer::PlatformMgr().ScheduleWork(InitAirQualitySensorManager);
103108
// Create cmsisos sw timer for air quality sensor timer.
104109
mSensorTimer = osTimerNew(SensorTimerEventHandler, osTimerPeriodic, nullptr, nullptr);
105110
if (mSensorTimer == NULL)
@@ -129,6 +134,14 @@ CHIP_ERROR SensorManager::Init()
129134
return CHIP_NO_ERROR;
130135
}
131136

137+
void writeAirQualityToAttribute(intptr_t context)
138+
{
139+
int32_t *air_quality_ptr = reinterpret_cast<int32_t*>(context);
140+
AirQualitySensorManager::GetInstance()->OnAirQualityChangeHandler(classifyAirQuality(*air_quality_ptr));
141+
ChipLogDetail(AppServer, "RAW AirQuality value: %ld and corresponding Enum value : %d", *air_quality_ptr,chip::to_underlying(AirQualitySensorManager::GetInstance()->GetAirQuality()));
142+
AppTask::GetAppTask().UpdateAirQualitySensorUI();
143+
}
144+
132145
void SensorManager::SensorTimerEventHandler(void * arg)
133146
{
134147
int32_t air_quality;
@@ -159,15 +172,8 @@ void SensorManager::SensorTimerEventHandler(void * arg)
159172
nbOfRepetition = 0;
160173
}
161174
#endif // USE_AIR_QUALITY_SENSOR
162-
163-
DeviceLayer::PlatformMgr().ScheduleWork(AirQualitySensorManager::GetInstance()->OnAirQualityChangeHandler,
164-
classifyAirQuality(air_quality));
165-
166-
PlatformMgr().LockChipStack();
167-
ChipLogDetail(AppServer, "RAW AirQuality value: %ld and corresponding Enum value : %d", air_quality,
168-
chip::to_underlying(AirQualitySensorManager::GetInstance()->GetAirQuality()));
169-
PlatformMgr().UnlockChipStack();
170-
171-
172-
AppTask::GetAppTask().UpdateAirQualitySensorUI();
175+
//create pointer for the int32_t air_quality
176+
int32_t* air_quality_ptr = new int32_t(air_quality);
177+
DeviceLayer::PlatformMgr().ScheduleWork(writeAirQualityToAttribute, reinterpret_cast<intptr_t>(air_quality_ptr));
178+
ChipLogDetail(AppServer, "writeAirQualityToAttribute success");
173179
}

0 commit comments

Comments
 (0)