diff --git a/bacnet-stack/demo/handler/h_ucov.c b/bacnet-stack/demo/handler/h_ucov.c new file mode 100644 index 00000000..e91fc56b --- /dev/null +++ b/bacnet-stack/demo/handler/h_ucov.c @@ -0,0 +1,71 @@ +/************************************************************************** +* +* Copyright (C) 2008 Steve Karg +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be included +* in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +* +*********************************************************************/ +#include +#include +#include +#include +#include +#include "config.h" +#include "txbuf.h" +#include "bacdef.h" +#include "bacdcode.h" +#include "apdu.h" +#include "npdu.h" +#include "abort.h" +/* special for this module */ +#include "cov.h" +#include "bactext.h" + +/* note: nothing is specified in BACnet about what to do with the + information received from Unconfirmed COV Notifications. */ +void handler_ucov_notification( + uint8_t * service_request, + uint16_t service_len, + BACNET_ADDRESS * src) +{ + BACNET_COV_DATA cov_data; + int len = 0; + +#if PRINT_ENABLED + fprintf(stderr, "UCOV: Received Notification!\n"); +#endif + /* decode the service request only */ + len = cov_notify_decode_service_request( + service_request, service_len, &cov_data); +#if PRINT_ENABLED + if (len > 0) { + fprintf(stderr, + "UCOV: PID=%u instance=%u %s %u time remaining=%u seconds\n", + cov_data.subscriberProcessIdentifier, + cov_data.initiatingDeviceIdentifier, + bactext_object_type_name( + cov_data.monitoredObjectIdentifier.type), + cov_data.monitoredObjectIdentifier.instance, + cov_data.timeRemaining); + } else { + fprintf(stderr, "UCOV: Unable to decode service request!\n"); + } +#endif +} diff --git a/bacnet-stack/include/handlers.h b/bacnet-stack/include/handlers.h index fc7cccf3..1aebaaa5 100644 --- a/bacnet-stack/include/handlers.h +++ b/bacnet-stack/include/handlers.h @@ -159,6 +159,10 @@ extern "C" { uint8_t * apdu, int max_apdu); + void handler_ucov_notification( + uint8_t * service_request, + uint16_t service_len, + BACNET_ADDRESS * src); #ifdef __cplusplus } diff --git a/bacnet-stack/lib/Makefile b/bacnet-stack/lib/Makefile index 8b00bf8e..00dbb462 100644 --- a/bacnet-stack/lib/Makefile +++ b/bacnet-stack/lib/Makefile @@ -27,8 +27,12 @@ BACNET_INCLUDE = ../include # compiler configuration #STANDARDS = -std=c99 INCLUDES = -I$(BACNET_INCLUDE) -I$(BACNET_PORT_DIR) -I$(BACNET_OBJECT) -I$(BACNET_HANDLER) +OPTIMIZATION = -Os +DEBUGGING = +ifeq (${BUILD},debug) OPTIMIZATION = -O0 DEBUGGING = -g +endif CFLAGS = -Wall $(DEBUGGING) $(OPTIMIZATION) $(STANDARDS) $(INCLUDES) $(DEFINES) CORE_SRC = \ @@ -86,6 +90,7 @@ HANDLER_SRC = \ $(BACNET_HANDLER)/h_whohas.c \ $(BACNET_HANDLER)/h_ihave.c \ $(BACNET_HANDLER)/h_cov.c \ + $(BACNET_HANDLER)/h_ucov.c \ $(BACNET_HANDLER)/s_arfs.c \ $(BACNET_HANDLER)/s_awfs.c \ $(BACNET_HANDLER)/s_dcc.c \ diff --git a/bacnet-stack/lib/bacnet.cbp b/bacnet-stack/lib/bacnet.cbp index 9de9ff9d..8f13ef4e 100644 --- a/bacnet-stack/lib/bacnet.cbp +++ b/bacnet-stack/lib/bacnet.cbp @@ -67,6 +67,9 @@ + + @@ -82,24 +85,21 @@ + + - - - - @@ -112,9 +112,9 @@ - - + + @@ -236,6 +236,7 @@ + diff --git a/bacnet-stack/lib/makefile.b32 b/bacnet-stack/lib/makefile.b32 index e5b6624b..fee8c8e9 100644 --- a/bacnet-stack/lib/makefile.b32 +++ b/bacnet-stack/lib/makefile.b32 @@ -88,6 +88,7 @@ HANDLER_SRC = $(BACNET_HANDLER)\txbuf.c \ $(BACNET_HANDLER)\h_whohas.c \ $(BACNET_HANDLER)\h_ihave.c \ $(BACNET_HANDLER)\h_cov.c \ + $(BACNET_HANDLER)\h_ucov.c \ $(BACNET_HANDLER)\s_arfs.c \ $(BACNET_HANDLER)\s_awfs.c \ $(BACNET_HANDLER)\s_dcc.c \