From c27c5002d597130ba0b5e3d67386a6e2ce4c3769 Mon Sep 17 00:00:00 2001 From: skarg Date: Fri, 26 Jan 2007 12:47:46 +0000 Subject: [PATCH] integrated the load control object into the demos. --- bacnet-stack/demo/dcc/Makefile | 1 + bacnet-stack/demo/dcc/makefile.b32 | 1 + bacnet-stack/demo/handler/h_rp.c | 23 +++++++++++++++ bacnet-stack/demo/handler/h_wp.c | 23 +++++++++++++++ bacnet-stack/demo/object/device.c | 36 ++++++++++++++++++++++++ bacnet-stack/demo/readfile/Makefile | 1 + bacnet-stack/demo/readfile/makefile.b32 | 1 + bacnet-stack/demo/readprop/Makefile | 1 + bacnet-stack/demo/readprop/makefile.b32 | 1 + bacnet-stack/demo/reinit/Makefile | 1 + bacnet-stack/demo/reinit/makefile.b32 | 1 + bacnet-stack/demo/server/Makefile | 1 + bacnet-stack/demo/server/epics_vts3.tpi | 1 + bacnet-stack/demo/server/makefile.b32 | 1 + bacnet-stack/demo/timesync/Makefile | 1 + bacnet-stack/demo/timesync/makefile.b32 | 1 + bacnet-stack/demo/ucov/Makefile | 1 + bacnet-stack/demo/ucov/makefile.b32 | 1 + bacnet-stack/demo/whohas/Makefile | 1 + bacnet-stack/demo/whohas/makefile.b32 | 1 + bacnet-stack/demo/whois/Makefile | 1 + bacnet-stack/demo/whois/makefile.b32 | 1 + bacnet-stack/demo/writefile/Makefile | 1 + bacnet-stack/demo/writefile/makefile.b32 | 1 + bacnet-stack/demo/writeprop/Makefile | 1 + bacnet-stack/demo/writeprop/makefile.b32 | 1 + 26 files changed, 105 insertions(+) diff --git a/bacnet-stack/demo/dcc/Makefile b/bacnet-stack/demo/dcc/Makefile index 7dd2047b..f0bf23ab 100644 --- a/bacnet-stack/demo/dcc/Makefile +++ b/bacnet-stack/demo/dcc/Makefile @@ -39,6 +39,7 @@ SRCS = main.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/dcc/makefile.b32 b/bacnet-stack/demo/dcc/makefile.b32 index f81c7a21..d3618f2f 100644 --- a/bacnet-stack/demo/dcc/makefile.b32 +++ b/bacnet-stack/demo/dcc/makefile.b32 @@ -51,6 +51,7 @@ SRCS = main.c \ ..\..\demo\object\bi.c \ ..\..\demo\object\bo.c \ ..\..\demo\object\bv.c \ + ..\..\demo\object\lc.c \ ..\..\demo\object\lsp.c \ ..\..\demo\object\mso.c \ ..\..\datalink.c \ diff --git a/bacnet-stack/demo/handler/h_rp.c b/bacnet-stack/demo/handler/h_rp.c index babbc8bd..1832c767 100644 --- a/bacnet-stack/demo/handler/h_rp.c +++ b/bacnet-stack/demo/handler/h_rp.c @@ -43,6 +43,7 @@ #include "bi.h" #include "bo.h" #include "bv.h" +#include "lc.h" #include "lsp.h" #include "mso.h" #if BACFILE @@ -258,6 +259,28 @@ void handler_read_property(uint8_t * service_request, #if PRINT_ENABLED fprintf(stderr, "Sending Read Property Ack for LSP!\n"); +#endif + error = false; + } + } + break; + case OBJECT_LOAD_CONTROL: + if (Load_Control_Valid_Instance(data.object_instance)) { + len = Load_Control_Encode_Property_APDU(&Temp_Buf[0], + data.object_instance, + data.object_property, + data.array_index, &error_class, &error_code); + if (len >= 0) { + /* encode the APDU portion of the packet */ + data.application_data = &Temp_Buf[0]; + data.application_data_len = len; + /* FIXME: probably need a length limitation sent with encode */ + len = + rp_ack_encode_apdu(&Handler_Transmit_Buffer + [pdu_len], service_data->invoke_id, &data); +#if PRINT_ENABLED + fprintf(stderr, + "Sending Read Property Ack for Load Control!\n"); #endif error = false; } diff --git a/bacnet-stack/demo/handler/h_wp.c b/bacnet-stack/demo/handler/h_wp.c index db732acd..dea3ec6b 100644 --- a/bacnet-stack/demo/handler/h_wp.c +++ b/bacnet-stack/demo/handler/h_wp.c @@ -43,6 +43,7 @@ #include "bi.h" #include "bo.h" #include "bv.h" +#include "lc.h" #include "lsp.h" #include "mso.h" #if BACFILE @@ -237,6 +238,28 @@ void handler_write_property(uint8_t * service_request, error_code); #if PRINT_ENABLED fprintf(stderr, "Sending Write Access Error for LSP!\n"); +#endif + } + break; + case OBJECT_LOAD_CONTROL: + if (Load_Control_Write_Property(&wp_data, &error_class, + &error_code)) { + len = + encode_simple_ack(&Handler_Transmit_Buffer[pdu_len], + service_data->invoke_id, + SERVICE_CONFIRMED_WRITE_PROPERTY); +#if PRINT_ENABLED + fprintf(stderr, + "Sending Write Property Simple Ack for Load Control!\n"); +#endif + } else { + len = + bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len], + service_data->invoke_id, + SERVICE_CONFIRMED_WRITE_PROPERTY, error_class, + error_code); +#if PRINT_ENABLED + fprintf(stderr, "Sending Write Access Error for Load Control!\n"); #endif } break; diff --git a/bacnet-stack/demo/object/device.c b/bacnet-stack/demo/object/device.c index dff7d0ae..e9be5624 100644 --- a/bacnet-stack/demo/object/device.c +++ b/bacnet-stack/demo/object/device.c @@ -38,6 +38,7 @@ #include "bi.h" /* object list dependency */ #include "bo.h" /* object list dependency */ #include "bv.h" /* object list dependency */ +#include "lc.h" /* object list dependency */ #include "lsp.h" /* object list dependency */ #include "mso.h" /* object list dependency */ #include "wp.h" /* write property handling */ @@ -332,6 +333,7 @@ unsigned Device_Object_List_Count(void) count += Binary_Output_Count(); count += Binary_Value_Count(); count += Life_Safety_Point_Count(); + count += Load_Control_Count(); count += Multistate_Output_Count(); #if BACFILE count += bacfile_count(); @@ -442,6 +444,19 @@ bool Device_Object_List_Identifier(unsigned array_index, status = true; } } + /* load control objects */ + if (!status) { + /* normalize the index since + we know it is not the previous objects */ + object_index -= object_count; + object_count = Load_Control_Count(); + /* is it a valid index for this object? */ + if (object_index < object_count) { + *object_type = OBJECT_LOAD_CONTROL; + *instance = Load_Control_Index_To_Instance(object_index); + status = true; + } + } /* multi-state output objects */ if (!status) { /* normalize the index since @@ -530,6 +545,9 @@ char *Device_Valid_Object_Id(int object_type, uint32_t object_instance) case OBJECT_LIFE_SAFETY_POINT: name = Life_Safety_Point_Name(object_instance); break; + case OBJECT_LOAD_CONTROL: + name = Load_Control_Name(object_instance); + break; case OBJECT_MULTI_STATE_OUTPUT: name = Multistate_Output_Name(object_instance); break; @@ -677,6 +695,8 @@ int Device_Encode_Property_APDU(uint8_t * apdu, bitstring_set_bit(&bit_string, OBJECT_BINARY_VALUE, true); if (Life_Safety_Point_Count()) bitstring_set_bit(&bit_string, OBJECT_LIFE_SAFETY_POINT, true); + if (Load_Control_Count()) + bitstring_set_bit(&bit_string, OBJECT_LOAD_CONTROL, true); if (Multistate_Output_Count()) bitstring_set_bit(&bit_string, OBJECT_MULTI_STATE_OUTPUT, true); @@ -1035,6 +1055,22 @@ uint32_t Life_Safety_Point_Index_To_Instance(unsigned index) return index; } +char *Load_Control_Name(uint32_t object_instance) +{ + (void) object_instance; + return ""; +} + +unsigned Load_Control_Count(void) +{ + return 0; +} + +uint32_t Load_Control_Index_To_Instance(unsigned index) +{ + return index; +} + char *Multistate_Output_Name(uint32_t object_instance) { (void) object_instance; diff --git a/bacnet-stack/demo/readfile/Makefile b/bacnet-stack/demo/readfile/Makefile index 151d1395..08c3ce38 100644 --- a/bacnet-stack/demo/readfile/Makefile +++ b/bacnet-stack/demo/readfile/Makefile @@ -51,6 +51,7 @@ SRCS = main.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/readfile/makefile.b32 b/bacnet-stack/demo/readfile/makefile.b32 index 24084ba6..427e9c39 100644 --- a/bacnet-stack/demo/readfile/makefile.b32 +++ b/bacnet-stack/demo/readfile/makefile.b32 @@ -49,6 +49,7 @@ SRCS = main.c \ ..\..\demo\object\bi.c \ ..\..\demo\object\bo.c \ ..\..\demo\object\bv.c \ + ..\..\demo\object\lc.c \ ..\..\demo\object\lsp.c \ ..\..\demo\object\mso.c \ ..\..\datalink.c \ diff --git a/bacnet-stack/demo/readprop/Makefile b/bacnet-stack/demo/readprop/Makefile index b8f05117..842a910d 100644 --- a/bacnet-stack/demo/readprop/Makefile +++ b/bacnet-stack/demo/readprop/Makefile @@ -40,6 +40,7 @@ SRCS = readprop.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/readprop/makefile.b32 b/bacnet-stack/demo/readprop/makefile.b32 index 52e2e0c9..fd3cd887 100644 --- a/bacnet-stack/demo/readprop/makefile.b32 +++ b/bacnet-stack/demo/readprop/makefile.b32 @@ -51,6 +51,7 @@ SRCS = readprop.c \ ..\..\demo\object\bi.c \ ..\..\demo\object\bo.c \ ..\..\demo\object\bv.c \ + ..\..\demo\object\lc.c \ ..\..\demo\object\lsp.c \ ..\..\demo\object\mso.c \ ..\..\datalink.c \ diff --git a/bacnet-stack/demo/reinit/Makefile b/bacnet-stack/demo/reinit/Makefile index 372ced1a..58484fa4 100644 --- a/bacnet-stack/demo/reinit/Makefile +++ b/bacnet-stack/demo/reinit/Makefile @@ -38,6 +38,7 @@ SRCS = main.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/reinit/makefile.b32 b/bacnet-stack/demo/reinit/makefile.b32 index 1ece7fd8..a928ffec 100644 --- a/bacnet-stack/demo/reinit/makefile.b32 +++ b/bacnet-stack/demo/reinit/makefile.b32 @@ -51,6 +51,7 @@ SRCS = main.c \ ..\..\demo\object\bi.c \ ..\..\demo\object\bo.c \ ..\..\demo\object\bv.c \ + ..\..\demo\object\lc.c \ ..\..\demo\object\lsp.c \ ..\..\demo\object\mso.c \ ..\..\datalink.c \ diff --git a/bacnet-stack/demo/server/Makefile b/bacnet-stack/demo/server/Makefile index abdd2e1f..0bd7a09c 100644 --- a/bacnet-stack/demo/server/Makefile +++ b/bacnet-stack/demo/server/Makefile @@ -43,6 +43,7 @@ SRCS = main.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/server/epics_vts3.tpi b/bacnet-stack/demo/server/epics_vts3.tpi index 5037bb08..79a06669 100644 --- a/bacnet-stack/demo/server/epics_vts3.tpi +++ b/bacnet-stack/demo/server/epics_vts3.tpi @@ -130,6 +130,7 @@ Multi-state Output Life Safety Point -- Life Safety Zone Createable Deleteable -- Trend Log Createable Deleteable + Load Control } Data Link Layer Option: diff --git a/bacnet-stack/demo/server/makefile.b32 b/bacnet-stack/demo/server/makefile.b32 index 656e50b5..a1789916 100644 --- a/bacnet-stack/demo/server/makefile.b32 +++ b/bacnet-stack/demo/server/makefile.b32 @@ -59,6 +59,7 @@ SRCS = main.c \ ..\..\demo\object\bi.c \ ..\..\demo\object\bo.c \ ..\..\demo\object\bv.c \ + ..\..\demo\object\lc.c \ ..\..\demo\object\lsp.c \ ..\..\demo\object\mso.c \ ..\..\datalink.c \ diff --git a/bacnet-stack/demo/timesync/Makefile b/bacnet-stack/demo/timesync/Makefile index 39f0980c..69cc2a74 100644 --- a/bacnet-stack/demo/timesync/Makefile +++ b/bacnet-stack/demo/timesync/Makefile @@ -39,6 +39,7 @@ SRCS = main.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ $(BACNET_OBJECT)/lsp.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ $(BACNET_ROOT)/filename.c \ diff --git a/bacnet-stack/demo/timesync/makefile.b32 b/bacnet-stack/demo/timesync/makefile.b32 index 2b3819b6..2e2681b6 100644 --- a/bacnet-stack/demo/timesync/makefile.b32 +++ b/bacnet-stack/demo/timesync/makefile.b32 @@ -40,6 +40,7 @@ SRCS = main.c \ $(BACNET_OBJECT)\bi.c \ $(BACNET_OBJECT)\bo.c \ $(BACNET_OBJECT)\bv.c \ + $(BACNET_OBJECT)\lc.c \ $(BACNET_OBJECT)\lsp.c \ $(BACNET_OBJECT)\mso.c \ $(BACNET_ROOT)\address.c \ diff --git a/bacnet-stack/demo/ucov/Makefile b/bacnet-stack/demo/ucov/Makefile index be96ab7d..732c862f 100644 --- a/bacnet-stack/demo/ucov/Makefile +++ b/bacnet-stack/demo/ucov/Makefile @@ -35,6 +35,7 @@ SRCS = main.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/ucov/makefile.b32 b/bacnet-stack/demo/ucov/makefile.b32 index b536f1a7..3189fcfe 100644 --- a/bacnet-stack/demo/ucov/makefile.b32 +++ b/bacnet-stack/demo/ucov/makefile.b32 @@ -48,6 +48,7 @@ SRCS = main.c \ ..\..\demo\object\bi.c \ ..\..\demo\object\bo.c \ ..\..\demo\object\bv.c \ + ..\..\demo\object\lc.c \ ..\..\demo\object\lsp.c \ ..\..\demo\object\mso.c \ ..\..\datalink.c \ diff --git a/bacnet-stack/demo/whohas/Makefile b/bacnet-stack/demo/whohas/Makefile index 54a91107..ccc6d2ff 100644 --- a/bacnet-stack/demo/whohas/Makefile +++ b/bacnet-stack/demo/whohas/Makefile @@ -38,6 +38,7 @@ SRCS = main.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/whohas/makefile.b32 b/bacnet-stack/demo/whohas/makefile.b32 index d57561fe..79e1fb82 100644 --- a/bacnet-stack/demo/whohas/makefile.b32 +++ b/bacnet-stack/demo/whohas/makefile.b32 @@ -53,6 +53,7 @@ SRCS = main.c \ ..\..\demo\object\bi.c \ ..\..\demo\object\bo.c \ ..\..\demo\object\bv.c \ + ..\..\demo\object\lc.c \ ..\..\demo\object\lsp.c \ ..\..\demo\object\mso.c \ ..\..\datalink.c \ diff --git a/bacnet-stack/demo/whois/Makefile b/bacnet-stack/demo/whois/Makefile index 82735729..6e53d358 100644 --- a/bacnet-stack/demo/whois/Makefile +++ b/bacnet-stack/demo/whois/Makefile @@ -39,6 +39,7 @@ SRCS = main.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/whois/makefile.b32 b/bacnet-stack/demo/whois/makefile.b32 index 427311ec..17fdad06 100644 --- a/bacnet-stack/demo/whois/makefile.b32 +++ b/bacnet-stack/demo/whois/makefile.b32 @@ -39,6 +39,7 @@ SRCS = main.c \ $(BACNET_OBJECT)\bi.c \ $(BACNET_OBJECT)\bo.c \ $(BACNET_OBJECT)\bv.c \ + $(BACNET_OBJECT)\lc.c \ $(BACNET_OBJECT)\lsp.c \ $(BACNET_OBJECT)\mso.c \ $(BACNET_ROOT)\address.c \ diff --git a/bacnet-stack/demo/writefile/Makefile b/bacnet-stack/demo/writefile/Makefile index ef5a7172..104bde21 100644 --- a/bacnet-stack/demo/writefile/Makefile +++ b/bacnet-stack/demo/writefile/Makefile @@ -51,6 +51,7 @@ SRCS = writefile.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/writefile/makefile.b32 b/bacnet-stack/demo/writefile/makefile.b32 index c3723444..9f7c2871 100644 --- a/bacnet-stack/demo/writefile/makefile.b32 +++ b/bacnet-stack/demo/writefile/makefile.b32 @@ -49,6 +49,7 @@ SRCS = writefile.c \ ..\..\demo\object\bi.c \ ..\..\demo\object\bo.c \ ..\..\demo\object\bv.c \ + ..\..\demo\object\lc.c \ ..\..\demo\object\lsp.c \ ..\..\demo\object\mso.c \ ..\..\datalink.c \ diff --git a/bacnet-stack/demo/writeprop/Makefile b/bacnet-stack/demo/writeprop/Makefile index 92cb2411..c5737db2 100644 --- a/bacnet-stack/demo/writeprop/Makefile +++ b/bacnet-stack/demo/writeprop/Makefile @@ -37,6 +37,7 @@ SRCS = writeprop.c \ $(BACNET_OBJECT)/bi.c \ $(BACNET_OBJECT)/bo.c \ $(BACNET_OBJECT)/bv.c \ + $(BACNET_OBJECT)/lc.c \ $(BACNET_OBJECT)/lsp.c \ $(BACNET_OBJECT)/mso.c \ $(BACNET_OBJECT)/bacfile.c \ diff --git a/bacnet-stack/demo/writeprop/makefile.b32 b/bacnet-stack/demo/writeprop/makefile.b32 index 8b51d4bd..f4a93a76 100644 --- a/bacnet-stack/demo/writeprop/makefile.b32 +++ b/bacnet-stack/demo/writeprop/makefile.b32 @@ -50,6 +50,7 @@ SRCS = writeprop.c \ ..\..\demo\object\bi.c \ ..\..\demo\object\bo.c \ ..\..\demo\object\bv.c \ + ..\..\demo\object\lc.c \ ..\..\demo\object\lsp.c \ ..\..\demo\object\mso.c \ ..\..\datalink.c \