From 5f952312a81f2e40596fea345ec877bbd4c1d5e8 Mon Sep 17 00:00:00 2001 From: k001a Date: Thu, 11 Aug 2011 19:17:27 +0000 Subject: [PATCH] 'Last Received Object Identifier' for GetEventInformation service. --- bacnet-stack/demo/handler/h_getevent.c | 14 ++++++++++++++ bacnet-stack/include/getevent.h | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/bacnet-stack/demo/handler/h_getevent.c b/bacnet-stack/demo/handler/h_getevent.c index d1583ab4..eaf4fb37 100644 --- a/bacnet-stack/demo/handler/h_getevent.c +++ b/bacnet-stack/demo/handler/h_getevent.c @@ -73,6 +73,9 @@ void handler_get_event_information( BACNET_GET_EVENT_INFORMATION_DATA getevent_data; int valid_event = 0; + /* initialize type of 'Last Received Object Identifier' using max value */ + object_id.type = MAX_BACNET_OBJECT_TYPE; + /* encode the NPDU portion of the packet */ datalink_get_my_address(&my_address); npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL); @@ -120,6 +123,17 @@ void handler_get_event_information( for (j = 0; j < 0xffff; j++) { valid_event = Get_Event_Info[i] (j, &getevent_data); if (valid_event > 0) { + /* encode GetEvent_data only when type of object_id has max value */ + if (object_id.type != MAX_BACNET_OBJECT_TYPE) { + if ((object_id.type == getevent_data.objectIdentifier.type) && + (object_id.instance == getevent_data.objectIdentifier.instance)) { + /* found 'Last Received Object Identifier' + so should set type of object_id to max value */ + object_id.type = MAX_BACNET_OBJECT_TYPE; + } + continue; + } + getevent_data.next = NULL; len = getevent_ack_encode_apdu_data(&Handler_Transmit_Buffer diff --git a/bacnet-stack/include/getevent.h b/bacnet-stack/include/getevent.h index 2ee45c4c..edef66be 100644 --- a/bacnet-stack/include/getevent.h +++ b/bacnet-stack/include/getevent.h @@ -54,7 +54,7 @@ typedef struct BACnet_Get_Event_Information_Data { } BACNET_GET_EVENT_INFORMATION_DATA; /* return 0 if no active event at this index - return -1 if end of list + return -1 if end of list return +1 if active event */ typedef int ( *get_event_info_function) (