From 494d4ebbbc2453299253c60e7dfe2bbaaf047c89 Mon Sep 17 00:00:00 2001 From: Abhishek Akkabathula Date: Thu, 17 Oct 2024 18:02:28 +0530 Subject: [PATCH] examples/wakerec: add pm logic to wakerec example in audio add pm suspend and resume logic to wakerec for testing purpose Signed-off-by: Abhishek Akkabathula --- apps/examples/wakerec/wakerec.cxx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/apps/examples/wakerec/wakerec.cxx b/apps/examples/wakerec/wakerec.cxx index 0f89f88022..2abb1b347e 100644 --- a/apps/examples/wakerec/wakerec.cxx +++ b/apps/examples/wakerec/wakerec.cxx @@ -41,6 +41,8 @@ #include #include +#include + using namespace std; using namespace media; using namespace media::stream; @@ -87,6 +89,9 @@ class _Observer : public media::MediaPlayerObserverInterface, public std::enable printf("###################################\n"); sd->startKeywordDetect(); + + /* Now that we finished playback, we can go to sleep */ + pm_resume(PM_IDLE_DOMAIN); } void onPlaybackError(media::MediaPlayer &mediaPlayer, media::player_error_t error) override { @@ -170,6 +175,8 @@ class SpeechDetectorListener : public media::voice::SpeechDetectorListenerInterf { printf("#### onSpeechDetectionListener\n"); if (event == SPEECH_DETECT_KD) { + /* take wakelock as soon as possible, and we hold it until we play recorded data */ + pm_suspend(PM_IDLE_DOMAIN); printf("Event SPEECH_DETECT_KD\n"); printf("#### [SD] keyword detected.\n"); if (gBuffer) { @@ -273,6 +280,9 @@ int wakerec_main(int argc, char *argv[]) } } sd->startKeywordDetect(); + + /* similar to wake lock, we release wake lock as we started our thread */ + pm_resume(PM_IDLE_DOMAIN); while (1) { sleep(67);