diff --git a/bacnet-stack/demo/BACnetDemo.workspace b/bacnet-stack/demo/BACnetDemo.workspace index 2c547c1b..a7f44ac8 100644 --- a/bacnet-stack/demo/BACnetDemo.workspace +++ b/bacnet-stack/demo/BACnetDemo.workspace @@ -1,8 +1,8 @@ - + - + diff --git a/bacnet-stack/demo/handler/h_cov.c b/bacnet-stack/demo/handler/h_cov.c index d279643c..29ff0343 100644 --- a/bacnet-stack/demo/handler/h_cov.c +++ b/bacnet-stack/demo/handler/h_cov.c @@ -224,10 +224,10 @@ COV_FAILED: /* note: worst case tasking: MS/TP with the ability to send only one notification per task cycle */ void handler_cov_task( - uint32_t elapsed_milliseconds) + uint32_t elapsed_seconds) { int index; - int lifetime_milliseconds; + int lifetime_seconds; BACNET_OBJECT_ID object_id; bool status = false; @@ -236,9 +236,9 @@ void handler_cov_task( for (index = 0; index < MAX_COV_SUBCRIPTIONS; index++) { if (COV_Subscriptions[index].valid) { /* handle timeouts */ - lifetime_milliseconds = COV_Subscriptions[index].lifetime; - if (lifetime_milliseconds >= elapsed_milliseconds) { - COV_Subscriptions[index].lifetime -= elapsed_milliseconds; + lifetime_seconds = COV_Subscriptions[index].lifetime; + if (lifetime_seconds >= elapsed_seconds) { + COV_Subscriptions[index].lifetime -= elapsed_seconds; } else { COV_Subscriptions[index].lifetime = 0; } diff --git a/bacnet-stack/demo/server/main.c b/bacnet-stack/demo/server/main.c index 188efee8..5e71d16f 100644 --- a/bacnet-stack/demo/server/main.c +++ b/bacnet-stack/demo/server/main.c @@ -107,6 +107,7 @@ int main( unsigned timeout = 100; /* milliseconds */ time_t last_seconds = 0; time_t current_seconds = 0; + uint32_t elapsed_seconds = 0; uint32_t elapsed_milliseconds = 0; char *pEnv = NULL; @@ -178,11 +179,12 @@ int main( npdu_handler(&src, &Rx_Buf[0], pdu_len); } /* at least one second has passed */ - if (current_seconds != last_seconds) { - dcc_timer_seconds(current_seconds - last_seconds); + elapsed_seconds = current_seconds - last_seconds; + if (elapsed_seconds) { + dcc_timer_seconds(elapsed_seconds); Load_Control_State_Machine_Handler(); - elapsed_milliseconds = (current_seconds - last_seconds) * 1000; - handler_cov_task(elapsed_milliseconds); + elapsed_milliseconds = elapsed_seconds * 1000; + handler_cov_task(elapsed_seconds); tsm_timer_milliseconds(elapsed_milliseconds); } /* output */ diff --git a/bacnet-stack/include/cov.h b/bacnet-stack/include/cov.h index 24ee2e8c..e0aab321 100644 --- a/bacnet-stack/include/cov.h +++ b/bacnet-stack/include/cov.h @@ -52,7 +52,7 @@ typedef struct BACnet_COV_Data { uint32_t subscriberProcessIdentifier; uint32_t initiatingDeviceIdentifier; BACNET_OBJECT_ID monitoredObjectIdentifier; - uint32_t timeRemaining; + uint32_t timeRemaining; /* seconds */ /* simple linked list of values */ BACNET_PROPERTY_VALUE listOfValues; } BACNET_COV_DATA; @@ -67,7 +67,7 @@ typedef struct BACnet_Subscribe_COV_Data { BACNET_OBJECT_ID monitoredObjectIdentifier; bool cancellationRequest; /* true if this is a cancellation request */ bool issueConfirmedNotifications; /* optional */ - uint32_t lifetime; /* optional */ + uint32_t lifetime; /* seconds, optional */ BACNET_PROPERTY_REFERENCE monitoredProperty; bool covIncrementPresent; /* true if present */ float covIncrement; /* optional */ diff --git a/bacnet-stack/include/handlers.h b/bacnet-stack/include/handlers.h index 389f5bd6..c41b330b 100644 --- a/bacnet-stack/include/handlers.h +++ b/bacnet-stack/include/handlers.h @@ -149,7 +149,7 @@ extern "C" { BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_DATA * service_data); void handler_cov_task( - uint32_t elapsed_milliseconds); + uint32_t elapsed_seconds); #ifdef __cplusplus } diff --git a/bacnet-stack/ports/dos/bacnet.prj b/bacnet-stack/ports/dos/bacnet.prj index c860410c..ce2a1677 100644 Binary files a/bacnet-stack/ports/dos/bacnet.prj and b/bacnet-stack/ports/dos/bacnet.prj differ