Skip to content

Commit ce58433

Browse files
committed
Button0 press and release sync added.
1 parent 5f00d3a commit ce58433

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

examples/light-switch-app/silabs/src/AppTask.cpp

+10-11
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ AppTask AppTask::sAppTask;
7070
bool sFunctionButtonPressed = false; // True when button0 is pressed, used to trigger factory reset
7171
bool sActionButtonPressed = false; // True when button1 is pressed, used to initiate toggle or level-up/down
7272
bool sActionButtonSuppressed = false; // True when both button0 and button1 are pressed, used to switch step direction
73-
bool sFunctionButtonSuppressed = false; // True when both button0 and button1 are pressed
73+
bool sIsButtonEventTriggered = false; // True when button0 press event is posted to BaseApplication
7474

7575
CHIP_ERROR AppTask::Init()
7676
{
@@ -253,13 +253,13 @@ void AppTask::AppEventHandler(AppEvent * aEvent)
253253
if (sActionButtonPressed)
254254
{
255255
sActionButtonSuppressed = true;
256-
sFunctionButtonSuppressed = true;
257256
LightSwitchMgr::GetInstance().changeStepMode();
258257
ChipLogProgress(AppServer, "Step direction changed. Current Step Direction : %s",
259258
((LightSwitchMgr::GetInstance().getStepMode() == StepModeEnum::kUp) ? "kUp" : "kDown"));
260259
}
261260
else
262261
{
262+
sIsButtonEventTriggered = true;
263263
// Post button press event to BaseApplication
264264
AppEvent button_event = {};
265265
button_event.Type = AppEvent::kEventType_Button;
@@ -270,16 +270,16 @@ void AppTask::AppEventHandler(AppEvent * aEvent)
270270
break;
271271
case AppEvent::kEventType_FunctionButtonReleased: {
272272
sFunctionButtonPressed = false;
273-
if (sFunctionButtonSuppressed)
273+
if (sIsButtonEventTriggered)
274274
{
275-
sFunctionButtonSuppressed = false;
275+
sIsButtonEventTriggered = false;
276+
// Post button release event to BaseApplication
277+
AppEvent button_event = {};
278+
button_event.Type = AppEvent::kEventType_Button;
279+
button_event.ButtonEvent.Action = static_cast<uint8_t>(SilabsPlatform::ButtonAction::ButtonReleased);
280+
button_event.Handler = BaseApplication::ButtonHandler;
281+
AppTask::GetAppTask().PostEvent(&button_event);
276282
}
277-
// Post button release event to BaseApplication
278-
AppEvent button_event = {};
279-
button_event.Type = AppEvent::kEventType_Button;
280-
button_event.ButtonEvent.Action = static_cast<uint8_t>(SilabsPlatform::ButtonAction::ButtonReleased);
281-
button_event.Handler = BaseApplication::ButtonHandler;
282-
AppTask::GetAppTask().PostEvent(&button_event);
283283
break;
284284
}
285285
case AppEvent::kEventType_ActionButtonPressed:
@@ -289,7 +289,6 @@ void AppTask::AppEventHandler(AppEvent * aEvent)
289289
if (sFunctionButtonPressed)
290290
{
291291
sActionButtonSuppressed = true;
292-
sFunctionButtonSuppressed = true;
293292
LightSwitchMgr::GetInstance().changeStepMode();
294293
ChipLogProgress(AppServer, "Step direction changed. Current Step Direction : %s",
295294
((LightSwitchMgr::GetInstance().getStepMode() == StepModeEnum::kUp) ? "kUp" : "kDown"));

0 commit comments

Comments
 (0)