From 42ade5a5a07e403aa4a188e7ab33751468d2adfd Mon Sep 17 00:00:00 2001 From: skarg Date: Fri, 30 Mar 2007 20:51:57 +0000 Subject: [PATCH] Added WriteProperty service and Analog Value object without priority array to pic18f6720 port demo. --- .../ports/pic18f6720/BACnet-Server.mcp | 82 +++++----- .../ports/pic18f6720/BACnet-Server.mcw | Bin 55808 -> 54272 bytes bacnet-stack/ports/pic18f6720/av.c | 50 +++--- bacnet-stack/ports/pic18f6720/device.c | 26 +++- bacnet-stack/ports/pic18f6720/h_wp.c | 147 +----------------- bacnet-stack/ports/pic18f6720/main.c | 2 +- 6 files changed, 93 insertions(+), 214 deletions(-) diff --git a/bacnet-stack/ports/pic18f6720/BACnet-Server.mcp b/bacnet-stack/ports/pic18f6720/BACnet-Server.mcp index 34a6d3ee..33546dc4 100644 --- a/bacnet-stack/ports/pic18f6720/BACnet-Server.mcp +++ b/bacnet-stack/ports/pic18f6720/BACnet-Server.mcp @@ -79,6 +79,9 @@ file_059=no file_060=no file_061=no file_062=no +file_063=no +file_064=no +file_065=no [FILE_INFO] file_000=C:\code\bacnet-stack\abort.c file_001=C:\code\bacnet-stack\apdu.c @@ -105,44 +108,47 @@ file_021=C:\code\bacnet-stack\datetime.c file_022=C:\code\bacnet-stack\demo\handler\txbuf.c file_023=C:\code\bacnet-stack\demo\handler\h_whois.c file_024=mstp.c -file_025=C:\code\bacnet-stack\demo\handler\h_rp_tiny.c -file_026=bv.c -file_027=ai.c -file_028=bi.c -file_029=C:\code\bacnet-stack\wp.h -file_030=C:\code\bacnet-stack\abort.h -file_031=C:\code\bacnet-stack\apdu.h -file_032=C:\code\bacnet-stack\bacapp.h -file_033=C:\code\bacnet-stack\bacdcode.h -file_034=C:\code\bacnet-stack\bacdef.h -file_035=C:\code\bacnet-stack\bacenum.h -file_036=C:\code\bacnet-stack\bacerror.h -file_037=C:\code\bacnet-stack\bacstr.h -file_038=C:\code\bacnet-stack\config.h -file_039=C:\code\bacnet-stack\crc.h -file_040=C:\code\bacnet-stack\dcc.h -file_041=C:\code\bacnet-stack\dlmstp.h -file_042=C:\code\bacnet-stack\iam.h -file_043=C:\code\bacnet-stack\npdu.h -file_044=C:\code\bacnet-stack\rd.h -file_045=C:\code\bacnet-stack\reject.h -file_046=C:\code\bacnet-stack\rp.h -file_047=C:\code\bacnet-stack\whois.h -file_048=C:\code\bacnet-stack\demo\handler\client.h -file_049=C:\code\bacnet-stack\demo\handler\handlers.h -file_050=C:\code\bacnet-stack\demo\object\ai.h -file_051=C:\code\bacnet-stack\demo\object\ao.h -file_052=C:\code\bacnet-stack\demo\object\device.h -file_053=stdbool.h -file_054=stdint.h -file_055=hardware.h -file_056=rs485.h -file_057=C:\code\bacnet-stack\datetime.h -file_058=C:\code\bacnet-stack\demo\handler\txbuf.h -file_059=mstp.h -file_060=C:\code\bacnet-stack\datalink.h -file_061=C:\mcc18\h\p18f6720.h -file_062=18F6720.lkr +file_025=bv.c +file_026=ai.c +file_027=bi.c +file_028=av.c +file_029=h_rp.c +file_030=h_wp.c +file_031=C:\code\bacnet-stack\wp.c +file_032=C:\code\bacnet-stack\wp.h +file_033=C:\code\bacnet-stack\abort.h +file_034=C:\code\bacnet-stack\apdu.h +file_035=C:\code\bacnet-stack\bacapp.h +file_036=C:\code\bacnet-stack\bacdcode.h +file_037=C:\code\bacnet-stack\bacdef.h +file_038=C:\code\bacnet-stack\bacenum.h +file_039=C:\code\bacnet-stack\bacerror.h +file_040=C:\code\bacnet-stack\bacstr.h +file_041=C:\code\bacnet-stack\config.h +file_042=C:\code\bacnet-stack\crc.h +file_043=C:\code\bacnet-stack\dcc.h +file_044=C:\code\bacnet-stack\dlmstp.h +file_045=C:\code\bacnet-stack\iam.h +file_046=C:\code\bacnet-stack\npdu.h +file_047=C:\code\bacnet-stack\rd.h +file_048=C:\code\bacnet-stack\reject.h +file_049=C:\code\bacnet-stack\rp.h +file_050=C:\code\bacnet-stack\whois.h +file_051=C:\code\bacnet-stack\demo\handler\client.h +file_052=C:\code\bacnet-stack\demo\handler\handlers.h +file_053=C:\code\bacnet-stack\demo\object\ai.h +file_054=C:\code\bacnet-stack\demo\object\ao.h +file_055=C:\code\bacnet-stack\demo\object\device.h +file_056=stdbool.h +file_057=stdint.h +file_058=hardware.h +file_059=rs485.h +file_060=C:\code\bacnet-stack\datetime.h +file_061=C:\code\bacnet-stack\demo\handler\txbuf.h +file_062=mstp.h +file_063=C:\code\bacnet-stack\datalink.h +file_064=C:\mcc18\h\p18f6720.h +file_065=18F6720.lkr [SUITE_INFO] suite_guid={5B7D72DD-9861-47BD-9F60-2BE967BF8416} suite_state= diff --git a/bacnet-stack/ports/pic18f6720/BACnet-Server.mcw b/bacnet-stack/ports/pic18f6720/BACnet-Server.mcw index 3e467055383dc4279ea166863a521fbb9b27b5b6..63b379e63aa0ee7b12a5d0823c61309050c1a130 100644 GIT binary patch literal 54272 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 diff --git a/bacnet-stack/ports/pic18f6720/av.c b/bacnet-stack/ports/pic18f6720/av.c index 022ce72c..36ff384f 100644 --- a/bacnet-stack/ports/pic18f6720/av.c +++ b/bacnet-stack/ports/pic18f6720/av.c @@ -44,29 +44,24 @@ /* When all the priorities are level null, the present value returns */ /* the Relinquish Default value */ #define ANALOG_RELINQUISH_DEFAULT 0 -/* Here is our Priority Array. They are supposed to be Real, but */ +/* Here is our Present_Value. They are supposed to be Real, but */ /* we don't have that kind of memory, so we will use a single byte */ /* and load a Real for returning the value when asked. */ -static uint8_t Analog_Value_Level[MAX_ANALOG_VALUES][BACNET_MAX_PRIORITY]; -/* Writable out-of-service allows others to play with our Present Value */ -/* without changing the physical output */ -static bool Analog_Value_Out_Of_Service[MAX_ANALOG_VALUES]; +static uint8_t Present_Value[MAX_ANALOG_VALUES]; /* we need to have our arrays initialized before answering any calls */ static bool Analog_Value_Initialized = false; void Analog_Value_Init(void) { - unsigned i, j; + unsigned i; if (!Analog_Value_Initialized) { Analog_Value_Initialized = true; /* initialize all the analog output priority arrays to NULL */ for (i = 0; i < MAX_ANALOG_VALUES; i++) { - for (j = 0; j < BACNET_MAX_PRIORITY; j++) { - Analog_Value_Level[i][j] = ANALOG_LEVEL_NULL; - } + Present_Value[i] = ANALOG_LEVEL_NULL; } } @@ -125,12 +120,7 @@ static float Analog_Value_Present_Value(uint32_t object_instance) Analog_Value_Init(); index = Analog_Value_Instance_To_Index(object_instance); if (index < MAX_ANALOG_VALUES) { - for (i = 0; i < BACNET_MAX_PRIORITY; i++) { - if (Analog_Value_Level[index][i] != ANALOG_LEVEL_NULL) { - value = Analog_Value_Level[index][i]; - break; - } - } + value = Present_Value[index]; } return value; @@ -142,7 +132,7 @@ char *Analog_Value_Name(uint32_t object_instance) static char text_string[32] = ""; /* okay for single thread */ if (object_instance < MAX_ANALOG_VALUES) { - sprintf(text_string, "ANALOG VALUE %u", object_instance); + sprintf(text_string, "AV-%lu", object_instance); return text_string; } @@ -196,13 +186,16 @@ int Analog_Value_Encode_Property_APDU(uint8_t * apdu, apdu_len = encode_tagged_enumerated(&apdu[0], EVENT_STATE_NORMAL); break; case PROP_OUT_OF_SERVICE: +#if 0 object_index = Analog_Value_Instance_To_Index(object_instance); - state = Analog_Value_Out_Of_Service[object_index]; - apdu_len = encode_tagged_boolean(&apdu[0], state); + state = Analog_Value_Out_Of_Service[object_index]; +#endif + apdu_len = encode_tagged_boolean(&apdu[0], false); break; case PROP_UNITS: apdu_len = encode_tagged_enumerated(&apdu[0], UNITS_PERCENT); break; +#if 0 case PROP_PRIORITY_ARRAY: /* Array element zero is the number of elements in the array */ if (array_index == 0) @@ -214,11 +207,11 @@ int Analog_Value_Encode_Property_APDU(uint8_t * apdu, object_index = Analog_Value_Instance_To_Index(object_instance); for (i = 0; i < BACNET_MAX_PRIORITY; i++) { /* FIXME: check if we have room before adding it to APDU */ - if (Analog_Value_Level[object_index][i] == + if (Present_Value[object_index][i] == ANALOG_LEVEL_NULL) len = encode_tagged_null(&apdu[apdu_len]); else { - real_value = Analog_Value_Level[object_index][i]; + real_value = Present_Value[object_index][i]; len = encode_tagged_real(&apdu[apdu_len], real_value); } /* add it if we have room */ @@ -234,12 +227,12 @@ int Analog_Value_Encode_Property_APDU(uint8_t * apdu, } else { object_index = Analog_Value_Instance_To_Index(object_instance); if (array_index <= BACNET_MAX_PRIORITY) { - if (Analog_Value_Level[object_index][array_index - 1] == + if (Present_Value[object_index][array_index - 1] == ANALOG_LEVEL_NULL) apdu_len = encode_tagged_null(&apdu[0]); else { real_value = - Analog_Value_Level[object_index][array_index - 1]; + Present_Value[object_index][array_index - 1]; apdu_len = encode_tagged_real(&apdu[0], real_value); } } else { @@ -254,6 +247,7 @@ int Analog_Value_Encode_Property_APDU(uint8_t * apdu, real_value = ANALOG_RELINQUISH_DEFAULT; apdu_len = encode_tagged_real(&apdu[0], real_value); break; +#endif default: *error_class = ERROR_CLASS_PROPERTY; *error_code = ERROR_CODE_UNKNOWN_PROPERTY; @@ -301,7 +295,7 @@ bool Analog_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, Analog_Value_Instance_To_Index(wp_data-> object_instance); priority--; - Analog_Value_Level[object_index][priority] = level; + Present_Value[object_index] = level; /* Note: you could set the physical output here if we are the highest priority. However, if Out of Service is TRUE, then don't set the @@ -318,14 +312,15 @@ bool Analog_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, *error_class = ERROR_CLASS_PROPERTY; *error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; } - } else if (value.tag == BACNET_APPLICATION_TAG_NULL) { +#if 0 + } else if (value.tag == BACNET_APPLICATION_TAG_NULL) { level = ANALOG_LEVEL_NULL; object_index = Analog_Value_Instance_To_Index(wp_data->object_instance); priority = wp_data->priority; if (priority && (priority <= BACNET_MAX_PRIORITY)) { priority--; - Analog_Value_Level[object_index][priority] = level; + Present_Value[object_index][priority] = level; /* Note: you could set the physical output here to the next highest priority, or to the relinquish default if no priorities are set. @@ -337,11 +332,13 @@ bool Analog_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, *error_class = ERROR_CLASS_PROPERTY; *error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; } - } else { +#endif + } else { *error_class = ERROR_CLASS_PROPERTY; *error_code = ERROR_CODE_INVALID_DATA_TYPE; } break; +#if 0 case PROP_OUT_OF_SERVICE: if (value.tag == BACNET_APPLICATION_TAG_BOOLEAN) { object_index = @@ -353,6 +350,7 @@ bool Analog_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, *error_code = ERROR_CODE_INVALID_DATA_TYPE; } break; +#endif default: *error_class = ERROR_CLASS_PROPERTY; *error_code = ERROR_CODE_WRITE_ACCESS_DENIED; diff --git a/bacnet-stack/ports/pic18f6720/device.c b/bacnet-stack/ports/pic18f6720/device.c index 1dfacb41..248527a2 100644 --- a/bacnet-stack/ports/pic18f6720/device.c +++ b/bacnet-stack/ports/pic18f6720/device.c @@ -36,6 +36,7 @@ #include "dlmstp.h" #include "rs485.h" #include "ai.h" +#include "av.h" #include "bi.h" #include "bv.h" #include "wp.h" @@ -182,13 +183,16 @@ bool Device_Object_List_Identifier(unsigned array_index, *instance = Object_Instance_Number; status = true; } + /* normalize the index since + we know it is not the previous objects */ + /* array index starts at 1 */ + object_index = array_index - 1; + /* 1 for the device object */ + object_count = 1; /* FIXME: add objects as needed */ - /* binary input objects */ + /* binary value objects */ if (!status) { - /* normalize the index since - we know it is not the previous objects */ - /* array index starts at 1, and 1 for the device object */ - object_index = array_index - 2; + object_index -= object_count; object_count = Binary_Value_Count(); /* is it a valid index for this object? */ if (object_index < object_count) { @@ -198,6 +202,17 @@ bool Device_Object_List_Identifier(unsigned array_index, } } /* analog input objects */ + if (!status) { + /* array index starts at 1, and 1 for the device object */ + object_index -= object_count; + object_count = Analog_Value_Count(); + if (object_index < object_count) { + *object_type = OBJECT_ANALOG_VALUE; + *instance = Analog_Value_Index_To_Instance(object_index); + status = true; + } + } + /* analog input objects */ if (!status) { /* array index starts at 1, and 1 for the device object */ object_index -= object_count; @@ -329,6 +344,7 @@ int Device_Encode_Property_APDU(uint8_t * apdu, } /* FIXME: indicate the objects that YOU support */ bitstring_set_bit(&bit_string, OBJECT_DEVICE, true); + bitstring_set_bit(&bit_string, OBJECT_ANALOG_VALUE, true); bitstring_set_bit(&bit_string, OBJECT_BINARY_VALUE, true); bitstring_set_bit(&bit_string, OBJECT_ANALOG_INPUT, true); bitstring_set_bit(&bit_string, OBJECT_BINARY_INPUT, true); diff --git a/bacnet-stack/ports/pic18f6720/h_wp.c b/bacnet-stack/ports/pic18f6720/h_wp.c index 2be77f93..4ecc82b5 100644 --- a/bacnet-stack/ports/pic18f6720/h_wp.c +++ b/bacnet-stack/ports/pic18f6720/h_wp.c @@ -38,23 +38,17 @@ /* demo objects */ #include "device.h" #include "ai.h" -#include "ao.h" #include "av.h" #include "bi.h" -#include "bo.h" #include "bv.h" -#include "lc.h" -#include "lsp.h" -#include "mso.h" -#if BACFILE -#include "bacfile.h" -#endif + +/* too big to reside on stack frame for PIC */ +static BACNET_WRITE_PROPERTY_DATA wp_data; void handler_write_property(uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_DATA * service_data) { - BACNET_WRITE_PROPERTY_DATA wp_data; int len = 0; int pdu_len = 0; BACNET_NPDU_DATA npdu_data; @@ -131,28 +125,6 @@ void handler_write_property(uint8_t * service_request, fprintf(stderr, "Sending Write Access Error!\n"); #endif break; - case OBJECT_BINARY_OUTPUT: - if (Binary_Output_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 BO!\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 BO!\n"); -#endif - } - break; case OBJECT_BINARY_VALUE: if (Binary_Value_Write_Property(&wp_data, &error_class, &error_code)) { @@ -172,28 +144,6 @@ void handler_write_property(uint8_t * service_request, error_code); #if PRINT_ENABLED fprintf(stderr, "Sending Write Access Error for BV!\n"); -#endif - } - break; - case OBJECT_ANALOG_OUTPUT: - if (Analog_Output_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 AO!\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 AO!\n"); #endif } break; @@ -219,97 +169,6 @@ void handler_write_property(uint8_t * service_request, #endif } break; - case OBJECT_LIFE_SAFETY_POINT: - if (Life_Safety_Point_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 LSP!\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 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; - case OBJECT_MULTI_STATE_OUTPUT: - if (Multistate_Output_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 MSO!\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 MSO!\n"); -#endif - } - break; -#if BACFILE - case OBJECT_FILE: - if (bacfile_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 File!\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 File!\n"); -#endif - } - break; -#endif /* BACFILE */ default: len = bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len], diff --git a/bacnet-stack/ports/pic18f6720/main.c b/bacnet-stack/ports/pic18f6720/main.c index 3523a850..abaeb5be 100644 --- a/bacnet-stack/ports/pic18f6720/main.c +++ b/bacnet-stack/ports/pic18f6720/main.c @@ -103,9 +103,9 @@ static void BACnet_Service_Handlers_Init(void) handler_read_property); apdu_set_confirmed_handler(SERVICE_CONFIRMED_REINITIALIZE_DEVICE, handler_reinitialize_device); -#if 0 apdu_set_confirmed_handler(SERVICE_CONFIRMED_WRITE_PROPERTY, handler_write_property); +#if 0 apdu_set_unconfirmed_handler (SERVICE_UNCONFIRMED_UTC_TIME_SYNCHRONIZATION, handler_timesync_utc);