Skip to content

Commit 1622660

Browse files
q-thlapull[bot]
authored andcommitted
qpg lock: add identify implementation (#26381)
1 parent d819af3 commit 1622660

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

examples/lock-app/qpg/src/AppTask.cpp

+60
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include <app-common/zap-generated/attributes/Accessors.h>
2929
#include <app/clusters/general-diagnostics-server/GenericFaultTestEventTriggerDelegate.h>
3030
#include <app/clusters/general-diagnostics-server/general-diagnostics-server.h>
31+
#include <app/clusters/identify-server/identify-server.h>
3132
#include <app/server/Dnssd.h>
3233
#include <app/server/Server.h>
3334
#include <app/util/attribute-storage.h>
@@ -87,6 +88,65 @@ namespace {
8788
constexpr int extDiscTimeoutSecs = 20;
8889
}
8990

91+
EmberAfIdentifyEffectIdentifier sIdentifyEffect = EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_STOP_EFFECT;
92+
93+
/**********************************************************
94+
* Identify Callbacks
95+
*********************************************************/
96+
97+
namespace {
98+
void OnTriggerIdentifyEffectCompleted(chip::System::Layer * systemLayer, void * appState)
99+
{
100+
sIdentifyEffect = EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_STOP_EFFECT;
101+
}
102+
} // namespace
103+
104+
void OnTriggerIdentifyEffect(Identify * identify)
105+
{
106+
sIdentifyEffect = identify->mCurrentEffectIdentifier;
107+
108+
if (identify->mCurrentEffectIdentifier == EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_CHANNEL_CHANGE)
109+
{
110+
ChipLogProgress(Zcl, "IDENTIFY_EFFECT_IDENTIFIER_CHANNEL_CHANGE - Not supported, use effect variant %d",
111+
identify->mEffectVariant);
112+
sIdentifyEffect = static_cast<EmberAfIdentifyEffectIdentifier>(identify->mEffectVariant);
113+
}
114+
115+
switch (sIdentifyEffect)
116+
{
117+
case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BLINK:
118+
case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BREATHE:
119+
case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_OKAY:
120+
SystemLayer().ScheduleLambda([identify] {
121+
(void) chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Seconds16(5), OnTriggerIdentifyEffectCompleted,
122+
identify);
123+
});
124+
break;
125+
case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_FINISH_EFFECT:
126+
SystemLayer().ScheduleLambda([identify] {
127+
(void) chip::DeviceLayer::SystemLayer().CancelTimer(OnTriggerIdentifyEffectCompleted, identify);
128+
(void) chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Seconds16(1), OnTriggerIdentifyEffectCompleted,
129+
identify);
130+
});
131+
break;
132+
case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_STOP_EFFECT:
133+
SystemLayer().ScheduleLambda(
134+
[identify] { (void) chip::DeviceLayer::SystemLayer().CancelTimer(OnTriggerIdentifyEffectCompleted, identify); });
135+
sIdentifyEffect = EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_STOP_EFFECT;
136+
break;
137+
default:
138+
ChipLogProgress(Zcl, "No identifier effect");
139+
}
140+
}
141+
142+
Identify gIdentify = {
143+
chip::EndpointId{ 1 },
144+
[](Identify *) { ChipLogProgress(Zcl, "onIdentifyStart"); },
145+
[](Identify *) { ChipLogProgress(Zcl, "onIdentifyStop"); },
146+
EMBER_ZCL_IDENTIFY_IDENTIFY_TYPE_VISIBLE_LED,
147+
OnTriggerIdentifyEffect,
148+
};
149+
90150
void LockOpenThreadTask(void)
91151
{
92152
chip::DeviceLayer::ThreadStackMgr().LockThreadStack();

0 commit comments

Comments
 (0)