diff --git a/bacnet-stack/demo/object/ai.c b/bacnet-stack/demo/object/ai.c index 689a9514..ea1c4341 100644 --- a/bacnet-stack/demo/object/ai.c +++ b/bacnet-stack/demo/object/ai.c @@ -382,7 +382,6 @@ int Analog_Input_Read_Property( int len = 0; #endif uint8_t *apdu = NULL; - const int *pRequired = NULL, *pOptional = NULL, *pProprietary = NULL; if ((rpdata == NULL) || (rpdata->application_data == NULL) || (rpdata->application_data_len == 0)) { @@ -592,14 +591,6 @@ int Analog_Input_Read_Property( } break; #endif - case PROP_PROPERTY_LIST: - Analog_Input_Property_Lists(&pRequired, &pOptional, &pProprietary); - apdu_len = property_list_encode( - rpdata, - pRequired, - pOptional, - pProprietary); - break; case 9997: /* test case for real encoding-decoding unsigned value correctly */ apdu_len = encode_application_real(&apdu[0], 90.510F); @@ -620,7 +611,6 @@ int Analog_Input_Read_Property( } /* only array properties can have array options */ if ((apdu_len >= 0) && (rpdata->object_property != PROP_EVENT_TIME_STAMPS) - && (rpdata->object_property != PROP_PROPERTY_LIST) && (rpdata->array_index != BACNET_ARRAY_ALL)) { rpdata->error_class = ERROR_CLASS_PROPERTY; rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY; @@ -653,7 +643,6 @@ bool Analog_Input_Write_Property( } /* only array properties can have array options */ if ((wp_data->object_property != PROP_EVENT_TIME_STAMPS) && - (wp_data->object_property != PROP_PROPERTY_LIST) && (wp_data->array_index != BACNET_ARRAY_ALL)) { wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY; @@ -838,7 +827,6 @@ bool Analog_Input_Write_Property( case PROP_ACKED_TRANSITIONS: case PROP_EVENT_TIME_STAMPS: #endif - case PROP_PROPERTY_LIST: case 9997: case 9998: case 9999: diff --git a/bacnet-stack/demo/object/channel.c b/bacnet-stack/demo/object/channel.c index 57ce8520..de3724a9 100644 --- a/bacnet-stack/demo/object/channel.c +++ b/bacnet-stack/demo/object/channel.c @@ -1361,7 +1361,6 @@ int Channel_Read_Property(BACNET_READ_PROPERTY_DATA * rpdata) bool state = false; BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE *pMember = NULL; uint8_t *apdu = NULL; - const int *pRequired = NULL, *pOptional = NULL, *pProprietary = NULL; if ((rpdata == NULL) || (rpdata->application_data == NULL) || (rpdata->application_data_len == 0)) { @@ -1500,14 +1499,6 @@ int Channel_Read_Property(BACNET_READ_PROPERTY_DATA * rpdata) } } break; - case PROP_PROPERTY_LIST: - Channel_Property_Lists(&pRequired, &pOptional, &pProprietary); - apdu_len = property_list_encode( - rpdata, - pRequired, - pOptional, - pProprietary); - break; default: rpdata->error_class = ERROR_CLASS_PROPERTY; rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY; @@ -1517,7 +1508,6 @@ int Channel_Read_Property(BACNET_READ_PROPERTY_DATA * rpdata) /* only array properties can have array options */ if ((apdu_len >= 0) && (rpdata->object_property != PROP_PRIORITY_ARRAY) - && (rpdata->object_property != PROP_PROPERTY_LIST) && (rpdata->object_property != PROP_LIST_OF_OBJECT_PROPERTY_REFERENCES) && (rpdata->array_index != BACNET_ARRAY_ALL)) { rpdata->error_class = ERROR_CLASS_PROPERTY; @@ -1558,7 +1548,6 @@ bool Channel_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data) return false; } if ((wp_data->object_property != PROP_PRIORITY_ARRAY) && - (wp_data->object_property != PROP_PROPERTY_LIST) && (wp_data->array_index != BACNET_ARRAY_ALL)) { /* only array properties can have array options */ wp_data->error_class = ERROR_CLASS_PROPERTY; @@ -1661,7 +1650,6 @@ bool Channel_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data) case PROP_LAST_PRIORITY: case PROP_WRITE_STATUS: case PROP_STATUS_FLAGS: - case PROP_PROPERTY_LIST: wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED; break; diff --git a/bacnet-stack/demo/object/command.c b/bacnet-stack/demo/object/command.c index 148a6642..34368bc5 100644 --- a/bacnet-stack/demo/object/command.c +++ b/bacnet-stack/demo/object/command.c @@ -607,7 +607,6 @@ int Command_Read_Property( uint8_t *apdu = NULL; uint16_t apdu_max = 0; COMMAND_DESCR *CurrentCommand; - const int *pRequired = NULL, *pOptional = NULL, *pProprietary = NULL; if ((rpdata == NULL) || (rpdata->application_data == NULL) || (rpdata->application_data_len == 0)) { @@ -707,12 +706,6 @@ int Command_Read_Property( } } break; - case PROP_PROPERTY_LIST: - Command_Property_Lists(&pRequired, &pOptional, &pProprietary); - apdu_len = - property_list_encode(rpdata, pRequired, pOptional, - pProprietary); - break; default: rpdata->error_class = ERROR_CLASS_PROPERTY; rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY; @@ -721,7 +714,6 @@ int Command_Read_Property( } /* only array properties can have array options */ if ((apdu_len >= 0) && (rpdata->object_property != PROP_ACTION) - && (rpdata->object_property != PROP_PROPERTY_LIST) && (rpdata->array_index != BACNET_ARRAY_ALL)) { rpdata->error_class = ERROR_CLASS_PROPERTY; rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY; @@ -760,7 +752,6 @@ bool Command_Write_Property( } /* only array properties can have array options */ if ((wp_data->object_property != PROP_ACTION) && - (wp_data->object_property != PROP_PROPERTY_LIST) && (wp_data->array_index != BACNET_ARRAY_ALL)) { wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY; @@ -798,7 +789,6 @@ bool Command_Write_Property( case PROP_IN_PROCESS: case PROP_ALL_WRITES_SUCCESSFUL: case PROP_ACTION: - case PROP_PROPERTY_LIST: wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED; break; diff --git a/bacnet-stack/demo/object/device.c b/bacnet-stack/demo/object/device.c index 0c1a25b2..fb963170 100644 --- a/bacnet-stack/demo/object/device.c +++ b/bacnet-stack/demo/object/device.c @@ -352,6 +352,7 @@ static object_functions_t My_Object_Table[] = { NULL /* COV */ , NULL /* COV Clear */ , NULL /* Intrinsic Reporting */ }, +#if (BACNET_PROTOCOL_REVISION >= 14) {OBJECT_LIGHTING_OUTPUT, Lighting_Output_Init, Lighting_Output_Count, @@ -382,6 +383,7 @@ static object_functions_t My_Object_Table[] = { NULL /* COV */ , NULL /* COV Clear */ , NULL /* Intrinsic Reporting */ }, +#endif #if defined(BACFILE) {OBJECT_FILE, bacfile_init, @@ -1442,7 +1444,7 @@ int Device_Read_Property_Local( break; } /* only array properties can have array options */ - if ((apdu_len >= 0) && (rpdata->object_property != PROP_OBJECT_LIST) && + if ((apdu_len >= 0) && (rpdata->array_index != BACNET_ARRAY_ALL)) { rpdata->error_class = ERROR_CLASS_PROPERTY; rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY; @@ -1465,6 +1467,9 @@ int Device_Read_Property( { int apdu_len = BACNET_STATUS_ERROR; struct object_functions *pObject = NULL; +#if (BACNET_PROTOCOL_REVISION >= 14) + struct special_property_list_t property_list; +#endif /* initialize the default return values */ rpdata->error_class = ERROR_CLASS_OBJECT; @@ -1474,7 +1479,21 @@ int Device_Read_Property( if (pObject->Object_Valid_Instance && pObject->Object_Valid_Instance(rpdata->object_instance)) { if (pObject->Object_Read_Property) { - apdu_len = pObject->Object_Read_Property(rpdata); +#if (BACNET_PROTOCOL_REVISION >= 14) + if ((int)rpdata->object_property == PROP_PROPERTY_LIST) { + Device_Objects_Property_List( + rpdata->object_type, + &property_list); + apdu_len = property_list_encode( + rpdata, + property_list.Required.pList, + property_list.Optional.pList, + property_list.Proprietary.pList); + } else +#endif + { + apdu_len = pObject->Object_Read_Property(rpdata); + } } } } @@ -1717,7 +1736,15 @@ bool Device_Write_Property( if (pObject->Object_Valid_Instance && pObject->Object_Valid_Instance(wp_data->object_instance)) { if (pObject->Object_Write_Property) { - status = pObject->Object_Write_Property(wp_data); +#if (BACNET_PROTOCOL_REVISION >= 14) + if (wp_data->object_property == PROP_PROPERTY_LIST) { + wp_data->error_class = ERROR_CLASS_PROPERTY; + wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED; + } else +#endif + { + status = pObject->Object_Write_Property(wp_data); + } } else { wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED; diff --git a/bacnet-stack/demo/object/lo.c b/bacnet-stack/demo/object/lo.c index 04e60f8c..b9c8f351 100644 --- a/bacnet-stack/demo/object/lo.c +++ b/bacnet-stack/demo/object/lo.c @@ -951,7 +951,6 @@ int Lighting_Output_Read_Property( unsigned i = 0; bool state = false; uint8_t *apdu = NULL; - const int *pRequired = NULL, *pOptional = NULL, *pProprietary = NULL; if ((rpdata == NULL) || (rpdata->application_data == NULL) || (rpdata->application_data_len == 0)) { @@ -1099,14 +1098,6 @@ int Lighting_Output_Read_Property( apdu_len = encode_application_unsigned(&apdu[0], unsigned_value); break; - case PROP_PROPERTY_LIST: - Lighting_Output_Property_Lists(&pRequired, &pOptional, &pProprietary); - apdu_len = property_list_encode( - rpdata, - pRequired, - pOptional, - pProprietary); - break; default: rpdata->error_class = ERROR_CLASS_PROPERTY; rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY; @@ -1115,7 +1106,6 @@ int Lighting_Output_Read_Property( } /* only array properties can have array options */ if ((apdu_len >= 0) && (rpdata->object_property != PROP_PRIORITY_ARRAY) && - (rpdata->object_property != PROP_PROPERTY_LIST) && (rpdata->array_index != BACNET_ARRAY_ALL)) { rpdata->error_class = ERROR_CLASS_PROPERTY; rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY; diff --git a/bacnet-stack/ports/xplained/ai.c b/bacnet-stack/ports/xplained/ai.c index 725bf41d..04fb9254 100644 --- a/bacnet-stack/ports/xplained/ai.c +++ b/bacnet-stack/ports/xplained/ai.c @@ -203,10 +203,10 @@ bool Analog_Input_Units_Set( Units[index] = value; status = true; } - + return status; } - + uint16_t Analog_Input_Units( uint32_t object_instance) { @@ -217,8 +217,8 @@ uint16_t Analog_Input_Units( if (index < MAX_ANALOG_INPUTS) { value = Units[index]; } - - return value; + + return value; } /* return apdu length, or -1 on error */ @@ -261,7 +261,7 @@ int Analog_Input_Read_Property( bitstring_set_bit(&bit_string, STATUS_FLAG_IN_ALARM, false); bitstring_set_bit(&bit_string, STATUS_FLAG_FAULT, false); bitstring_set_bit(&bit_string, STATUS_FLAG_OVERRIDDEN, false); - bitstring_set_bit(&bit_string, STATUS_FLAG_OUT_OF_SERVICE, + bitstring_set_bit(&bit_string, STATUS_FLAG_OUT_OF_SERVICE, Analog_Input_Out_Of_Service(rpdata->object_instance)); apdu_len = encode_application_bitstring(&apdu[0], &bit_string); break; @@ -270,11 +270,11 @@ int Analog_Input_Read_Property( encode_application_enumerated(&apdu[0], EVENT_STATE_NORMAL); break; case PROP_OUT_OF_SERVICE: - apdu_len = encode_application_boolean(&apdu[0], + apdu_len = encode_application_boolean(&apdu[0], Analog_Input_Out_Of_Service(rpdata->object_instance)); break; case PROP_UNITS: - apdu_len = encode_application_enumerated(&apdu[0], + apdu_len = encode_application_enumerated(&apdu[0], Analog_Input_Units(rpdata->object_instance)); break; default: @@ -314,7 +314,6 @@ bool Analog_Input_Write_Property( } /* only array properties can have array options */ if ((wp_data->object_property != PROP_EVENT_TIME_STAMPS) && - (wp_data->object_property != PROP_PROPERTY_LIST) && (wp_data->array_index != BACNET_ARRAY_ALL)) { wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;