Skip to content

Commit 802f4a3

Browse files
JordanYatesjhedberg
authored andcommitted
gnss: gnss_emul: halt callbacks when not ACTIVE
Ensure that callbacks do not continue to fire after `ACTION_SUSPEND`. Signed-off-by: Jordan Yates <[email protected]>
1 parent 9bc84b9 commit 802f4a3

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

drivers/gnss/gnss_emul.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ struct gnss_emul_data {
3939
enum gnss_navigation_mode nav_mode;
4040
gnss_systems_t enabled_systems;
4141
struct gnss_data data;
42+
bool active;
4243

4344
#ifdef CONFIG_GNSS_SATELLITES
4445
struct gnss_satellite satellites[GNSS_EMUL_SUPPORTED_SYSTEMS_COUNT];
@@ -92,7 +93,7 @@ static bool gnss_emul_is_resumed(const struct device *dev)
9293
{
9394
struct gnss_emul_data *data = dev->data;
9495

95-
return data->fix_timestamp_ms > 0;
96+
return data->active;
9697
}
9798

9899
static void gnss_emul_lock(const struct device *dev)
@@ -443,11 +444,19 @@ static void gnss_emul_work_handler(struct k_work *work)
443444

444445
static void gnss_emul_resume(const struct device *dev)
445446
{
447+
struct gnss_emul_data *data = dev->data;
448+
449+
data->active = true;
446450
gnss_emul_update_fix_timestamp(dev, true);
451+
gnss_emul_schedule_work(dev);
447452
}
448453

449454
static void gnss_emul_suspend(const struct device *dev)
450455
{
456+
struct gnss_emul_data *data = dev->data;
457+
458+
data->active = false;
459+
gnss_emul_cancel_work(dev);
451460
gnss_emul_clear_data(dev);
452461
}
453462

0 commit comments

Comments
 (0)