From 6b1cc842490a3690db0bb686e5d0d20ebed48bc6 Mon Sep 17 00:00:00 2001 From: skarg Date: Fri, 12 Feb 2010 21:46:11 +0000 Subject: [PATCH] Added WhoHas/I-Have services. Simplified the BO writes from main. --- bacnet-stack/include/bo.h | 2 ++ bacnet-stack/ports/bdk-atxx4-mstp/Makefile | 8 ++++-- bacnet-stack/ports/bdk-atxx4-mstp/PICS.odt | Bin 29401 -> 21057 bytes bacnet-stack/ports/bdk-atxx4-mstp/bo.c | 28 ++++++++++++--------- bacnet-stack/ports/bdk-atxx4-mstp/main.c | 23 ++++++++--------- 5 files changed, 34 insertions(+), 27 deletions(-) diff --git a/bacnet-stack/include/bo.h b/bacnet-stack/include/bo.h index 6ff591f1..a55abafe 100644 --- a/bacnet-stack/include/bo.h +++ b/bacnet-stack/include/bo.h @@ -84,6 +84,8 @@ extern "C" { bool Binary_Output_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_BINARY_PV Binary_Output_Present_Value( + uint32_t instance); bool Binary_Output_Present_Value_Set( uint32_t instance, BACNET_BINARY_PV binary_value, diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/Makefile b/bacnet-stack/ports/bdk-atxx4-mstp/Makefile index e0590db7..d4e5da5d 100644 --- a/bacnet-stack/ports/bdk-atxx4-mstp/Makefile +++ b/bacnet-stack/ports/bdk-atxx4-mstp/Makefile @@ -74,7 +74,9 @@ DEMOSRC = $(BACNET_DEMO)/handler/txbuf.c \ $(BACNET_DEMO)/handler/h_wp.c \ $(BACNET_DEMO)/handler/h_rp.c \ $(BACNET_DEMO)/handler/h_rpm.c \ + $(BACNET_DEMO)/handler/h_whohas.c \ $(BACNET_DEMO)/handler/s_iam.c \ + $(BACNET_DEMO)/handler/s_ihave.c \ $(BACNET_DEMO)/handler/noserv.c # core BACnet stack files @@ -89,12 +91,14 @@ CORESRC = \ $(BACNET_CORE)/bacreal.c \ $(BACNET_CORE)/bacstr.c \ $(BACNET_CORE)/iam.c \ + $(BACNET_CORE)/ihave.c \ $(BACNET_CORE)/dcc.c \ $(BACNET_CORE)/rp.c \ $(BACNET_CORE)/rd.c \ $(BACNET_CORE)/rpm.c \ $(BACNET_CORE)/wp.c \ $(BACNET_CORE)/whois.c \ + $(BACNET_CORE)/whohas.c \ $(BACNET_CORE)/bacaddr.c \ $(BACNET_CORE)/abort.c \ $(BACNET_CORE)/reject.c \ @@ -137,8 +141,8 @@ DEFINES = OPTIMIZE_FLAGS = -mcall-prologues OPTIMIZE_FLAGS += -finline-functions-called-once # default is for debugging from AVR Studio -OPTIMIZATION = -O0 -DEBUGGING = -g +OPTIMIZATION = -Os $(OPTIMIZE_FLAGS) +DEBUGGING = ifeq (${BUILD},debug) OPTIMIZATION = -O0 DEBUGGING = -g diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/PICS.odt b/bacnet-stack/ports/bdk-atxx4-mstp/PICS.odt index 4546f3c65b78e5bd354252efd9ec7b057bfbcd02..1af320d61ff148725598c39f4575c412a67a71b8 100644 GIT binary patch delta 18789 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 HOQHV(@qptx delta 27126 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 _xGKPnPjwgW3xV*C4|)nZsu`hn_aZJ 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, - priority, level); - Binary_Output_Level_Sync(wp_data->object_instance); + level, priority); } else if (priority == 6) { /* Command priority 6 is reserved for use by Minimum On/Off algorithm and may not be used for other purposes in any @@ -460,10 +465,9 @@ bool Binary_Output_Write_Property( priority = wp_data->priority; if (priority && (priority <= BACNET_MAX_PRIORITY)) { priority--; - Binary_Output_Level_Set( + Binary_Output_Present_Value_Set( wp_data->object_instance, - priority, level); - Binary_Output_Level_Sync(wp_data->object_instance); + level, priority); } else if (priority == 6) { status = false; /* Command priority 6 is reserved for use by Minimum On/Off diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/main.c b/bacnet-stack/ports/bdk-atxx4-mstp/main.c index 631a7b33..823b7841 100644 --- a/bacnet-stack/ports/bdk-atxx4-mstp/main.c +++ b/bacnet-stack/ports/bdk-atxx4-mstp/main.c @@ -97,7 +97,10 @@ static void bacnet_init( apdu_set_unrecognized_service_handler_handler (handler_unrecognized_service); /* we need to handle who-is to support dynamic device binding */ - apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_IS, handler_who_is); + apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_IS, + handler_who_is); + apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_HAS, + handler_who_has); /* Set the handlers for any confirmed services that we support. */ /* We must implement read property - it's required! */ apdu_set_confirmed_handler(SERVICE_CONFIRMED_READ_PROPERTY, @@ -187,22 +190,16 @@ void test_task( /* echo the character */ serial_byte_send(data_register); if (data_register == '0') { - Binary_Output_Level_Set(0, 1, BINARY_INACTIVE); - Binary_Output_Level_Sync(0); - Binary_Output_Level_Set(1, 1, BINARY_INACTIVE); - Binary_Output_Level_Sync(1); + Binary_Output_Present_Value_Set(0, 0, BINARY_INACTIVE); + Binary_Output_Present_Value_Set(1, 0, BINARY_INACTIVE); } if (data_register == '1') { - Binary_Output_Level_Set(0, 1, BINARY_ACTIVE); - Binary_Output_Level_Sync(0); - Binary_Output_Level_Set(1, 1, BINARY_ACTIVE); - Binary_Output_Level_Sync(1); + Binary_Output_Present_Value_Set(0, 0, BINARY_ACTIVE); + Binary_Output_Present_Value_Set(1, 0, BINARY_ACTIVE); } if (data_register == '2') { - Binary_Output_Level_Set(0, 1, BINARY_NULL); - Binary_Output_Level_Sync(0); - Binary_Output_Level_Set(1, 1, BINARY_NULL); - Binary_Output_Level_Sync(1); + Binary_Output_Present_Value_Set(0, 0, BINARY_NULL); + Binary_Output_Present_Value_Set(1, 0, BINARY_NULL); } serial_byte_send('\r'); serial_byte_send('\n');