From fda63eb1aa70cd06a487ad7a53b58dd231d03d62 Mon Sep 17 00:00:00 2001 From: Steve Karg Date: Mon, 9 Mar 2026 13:39:57 -0500 Subject: [PATCH] Changed COV FSM handler to stay IDLE until there is a valid subscriber. (#1257) --- CHANGELOG.md | 2 ++ src/bacnet/basic/service/h_cov.c | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a0aaa5c..1005bb33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -157,6 +157,8 @@ The git repositories are hosted at the following sites: ### Changed +* Changed the COV FSM handler to remiain in the IDLE state until there + is a valid subscriber. (#1257) * Changed bacnet_array_write() write_function callback API by adding array size parameter to avoid a duplicate decoding operation. Removed duplicate checking of array size in object handlers. (#1253) diff --git a/src/bacnet/basic/service/h_cov.c b/src/bacnet/basic/service/h_cov.c index 8a67b520..03fee5d7 100644 --- a/src/bacnet/basic/service/h_cov.c +++ b/src/bacnet/basic/service/h_cov.c @@ -622,8 +622,14 @@ bool handler_cov_fsm(void) switch (cov_task_state) { case COV_STATE_IDLE: - index = 0; - cov_task_state = COV_STATE_MARK; + if (COV_Subscriptions[index].flag.valid) { + cov_task_state = COV_STATE_MARK; + } else { + index++; + if (index >= MAX_COV_SUBCRIPTIONS) { + index = 0; + } + } break; case COV_STATE_MARK: /* mark any subscriptions where the value has changed */