Added check in each example object WriteProperty handler to pass test:
9.22.2.1 Writing Non-Array Properties with an Array Index Thank you Kamalathas!
This commit is contained in:
@@ -497,12 +497,19 @@ bool Analog_Input_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* only array properties can have array options */
|
||||||
object_index = Analog_Input_Instance_To_Index(wp_data->object_instance);
|
if ((wp_data->object_property != PROP_EVENT_TIME_STAMPS) &&
|
||||||
if (object_index < MAX_ANALOG_INPUTS)
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
CurrentAI = &AI_Descr[object_index];
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
else
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
object_index = Analog_Input_Instance_To_Index(wp_data->object_instance);
|
||||||
|
if (object_index < MAX_ANALOG_INPUTS) {
|
||||||
|
CurrentAI = &AI_Descr[object_index];
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
switch ((int) wp_data->object_property) {
|
switch ((int) wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
|
|||||||
@@ -420,6 +420,13 @@ bool Analog_Output_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* only array properties can have array options */
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(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;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_REAL) {
|
if (value.tag == BACNET_APPLICATION_TAG_REAL) {
|
||||||
|
|||||||
@@ -560,7 +560,14 @@ bool Analog_Value_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->object_property != PROP_EVENT_TIME_STAMPS) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
object_index = Analog_Value_Instance_To_Index(wp_data->object_instance);
|
object_index = Analog_Value_Instance_To_Index(wp_data->object_instance);
|
||||||
if (object_index < MAX_ANALOG_VALUES)
|
if (object_index < MAX_ANALOG_VALUES)
|
||||||
CurrentAV = &AV_Descr[object_index];
|
CurrentAV = &AV_Descr[object_index];
|
||||||
|
|||||||
@@ -302,7 +302,12 @@ bool bacfile_write_property(
|
|||||||
wp_data->error_code = ERROR_CODE_UNKNOWN_OBJECT;
|
wp_data->error_code = ERROR_CODE_UNKNOWN_OBJECT;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* only array properties can have array options */
|
||||||
|
if (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;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/* decode the some of the request */
|
/* decode the some of the request */
|
||||||
len =
|
len =
|
||||||
bacapp_decode_application_data(wp_data->application_data,
|
bacapp_decode_application_data(wp_data->application_data,
|
||||||
@@ -340,10 +345,21 @@ bool bacfile_write_property(
|
|||||||
to wp_data->object_instance */
|
to wp_data->object_instance */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
case PROP_FILE_TYPE:
|
||||||
|
case PROP_MODIFICATION_DATE:
|
||||||
|
case PROP_READ_ONLY:
|
||||||
|
case PROP_FILE_ACCESS_METHOD:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -433,6 +433,12 @@ bool Binary_Input_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* only array properties can have array options */
|
||||||
|
if (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;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
status =
|
status =
|
||||||
|
|||||||
@@ -364,6 +364,13 @@ bool Binary_Output_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_ENUMERATED) {
|
if (value.tag == BACNET_APPLICATION_TAG_ENUMERATED) {
|
||||||
@@ -434,10 +441,24 @@ bool Binary_Output_Write_Property(
|
|||||||
value.type.Boolean;
|
value.type.Boolean;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_RELIABILITY:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_POLARITY:
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
|
case PROP_RELINQUISH_DEFAULT:
|
||||||
|
case PROP_ACTIVE_TEXT:
|
||||||
|
case PROP_INACTIVE_TEXT:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -238,7 +238,8 @@ int Binary_Value_Read_Property(
|
|||||||
bitstring_set_bit(&bit_string, STATUS_FLAG_IN_ALARM, false);
|
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_FAULT, false);
|
||||||
bitstring_set_bit(&bit_string, STATUS_FLAG_OVERRIDDEN, false);
|
bitstring_set_bit(&bit_string, STATUS_FLAG_OVERRIDDEN, false);
|
||||||
bitstring_set_bit(&bit_string, STATUS_FLAG_OUT_OF_SERVICE, false);
|
state = Binary_Value_Out_Of_Service[object_index];
|
||||||
|
bitstring_set_bit(&bit_string, STATUS_FLAG_OUT_OF_SERVICE, state);
|
||||||
apdu_len = encode_application_bitstring(&apdu[0], &bit_string);
|
apdu_len = encode_application_bitstring(&apdu[0], &bit_string);
|
||||||
break;
|
break;
|
||||||
case PROP_EVENT_STATE:
|
case PROP_EVENT_STATE:
|
||||||
@@ -302,7 +303,6 @@ int Binary_Value_Read_Property(
|
|||||||
apdu_len = BACNET_STATUS_ERROR;
|
apdu_len = BACNET_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case PROP_RELINQUISH_DEFAULT:
|
case PROP_RELINQUISH_DEFAULT:
|
||||||
present_value = RELINQUISH_DEFAULT;
|
present_value = RELINQUISH_DEFAULT;
|
||||||
@@ -347,6 +347,13 @@ bool Binary_Value_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* only array properties can have array options */
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(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;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_ENUMERATED) {
|
if (value.tag == BACNET_APPLICATION_TAG_ENUMERATED) {
|
||||||
@@ -416,10 +423,21 @@ bool Binary_Value_Write_Property(
|
|||||||
Binary_Value_Out_Of_Service[object_index] = value.type.Boolean;
|
Binary_Value_Out_Of_Service[object_index] = value.type.Boolean;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
|
case PROP_RELINQUISH_DEFAULT:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -886,38 +886,6 @@ int Device_Read_Property(
|
|||||||
return apdu_len;
|
return apdu_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The device-client version of this function just returns an error,
|
|
||||||
* since we don't need to allow writing to our objects.
|
|
||||||
*
|
|
||||||
* Note: it was necessary to include this trivial implementation of this function
|
|
||||||
* to avoid pulling in the device.c module from libbacnet.a for the
|
|
||||||
* handler_write_property() support, which resulted in hard-to-trace
|
|
||||||
* duplicate function errors.
|
|
||||||
*
|
|
||||||
* @param wp_data [in,out] Structure with the desired Object and Property info
|
|
||||||
* and new Value on entry, and APDU message on return.
|
|
||||||
* @return Always False because it is an error.
|
|
||||||
*/
|
|
||||||
bool Device_Write_Property(
|
|
||||||
BACNET_WRITE_PROPERTY_DATA * wp_data)
|
|
||||||
{
|
|
||||||
bool status = false;
|
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
|
||||||
return (status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ditto for the local version; always returns false */
|
|
||||||
bool Device_Write_Property_Local(
|
|
||||||
BACNET_WRITE_PROPERTY_DATA * wp_data)
|
|
||||||
{
|
|
||||||
bool status = false;
|
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
|
||||||
return (status);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Initialize the Device Object.
|
/** Initialize the Device Object.
|
||||||
Initialize the group of object helper functions for any supported Object.
|
Initialize the group of object helper functions for any supported Object.
|
||||||
Initialize each of the Device Object child Object instances.
|
Initialize each of the Device Object child Object instances.
|
||||||
|
|||||||
@@ -1441,6 +1441,13 @@ bool Device_Write_Property_Local(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_OBJECT_LIST) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/* FIXME: len < application_data_len: more data? */
|
/* FIXME: len < application_data_len: more data? */
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_OBJECT_IDENTIFIER:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
@@ -1557,8 +1564,8 @@ bool Device_Write_Property_Local(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if defined(BACDL_MSTP)
|
|
||||||
case PROP_MAX_INFO_FRAMES:
|
case PROP_MAX_INFO_FRAMES:
|
||||||
|
#if defined(BACDL_MSTP)
|
||||||
status =
|
status =
|
||||||
WPValidateArgType(&value, BACNET_APPLICATION_TAG_UNSIGNED_INT,
|
WPValidateArgType(&value, BACNET_APPLICATION_TAG_UNSIGNED_INT,
|
||||||
&wp_data->error_class, &wp_data->error_code);
|
&wp_data->error_class, &wp_data->error_code);
|
||||||
@@ -1573,7 +1580,9 @@ bool Device_Write_Property_Local(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case PROP_MAX_MASTER:
|
case PROP_MAX_MASTER:
|
||||||
|
#if defined(BACDL_MSTP)
|
||||||
status =
|
status =
|
||||||
WPValidateArgType(&value, BACNET_APPLICATION_TAG_UNSIGNED_INT,
|
WPValidateArgType(&value, BACNET_APPLICATION_TAG_UNSIGNED_INT,
|
||||||
&wp_data->error_class, &wp_data->error_code);
|
&wp_data->error_class, &wp_data->error_code);
|
||||||
@@ -1589,10 +1598,35 @@ bool Device_Write_Property_Local(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_VENDOR_NAME:
|
||||||
|
case PROP_FIRMWARE_REVISION:
|
||||||
|
case PROP_APPLICATION_SOFTWARE_VERSION:
|
||||||
|
case PROP_LOCAL_TIME:
|
||||||
|
case PROP_UTC_OFFSET:
|
||||||
|
case PROP_LOCAL_DATE:
|
||||||
|
case PROP_DAYLIGHT_SAVINGS_STATUS:
|
||||||
|
case PROP_PROTOCOL_VERSION:
|
||||||
|
case PROP_PROTOCOL_REVISION:
|
||||||
|
case PROP_PROTOCOL_SERVICES_SUPPORTED:
|
||||||
|
case PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED:
|
||||||
|
case PROP_OBJECT_LIST:
|
||||||
|
case PROP_MAX_APDU_LENGTH_ACCEPTED:
|
||||||
|
case PROP_SEGMENTATION_SUPPORTED:
|
||||||
|
case PROP_DEVICE_ADDRESS_BINDING:
|
||||||
|
case PROP_DATABASE_REVISION:
|
||||||
|
#if defined(BACDL_MSTP)
|
||||||
|
case PROP_MAX_INFO_FRAMES:
|
||||||
|
case PROP_MAX_MASTER:
|
||||||
|
#endif
|
||||||
|
case PROP_ACTIVE_COV_SUBSCRIPTIONS:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -478,6 +478,13 @@ bool Routed_Device_Write_Property_Local(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* only array properties can have array options */
|
||||||
|
if ((wp_data->object_property != PROP_OBJECT_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;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/* FIXME: len < application_data_len: more data? */
|
/* FIXME: len < application_data_len: more data? */
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_OBJECT_IDENTIFIER:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
@@ -601,7 +608,7 @@ void Routed_Device_Inc_Database_Revision(
|
|||||||
/** Check to see if the current Device supports this service.
|
/** Check to see if the current Device supports this service.
|
||||||
* Presently checks for RD and DCC and only allows them if the current
|
* Presently checks for RD and DCC and only allows them if the current
|
||||||
* device is the gateway device.
|
* device is the gateway device.
|
||||||
*
|
*
|
||||||
* @param service [in] The service being requested.
|
* @param service [in] The service being requested.
|
||||||
* @param service_argument [in] An optional argument (eg, service type).
|
* @param service_argument [in] An optional argument (eg, service type).
|
||||||
* @param apdu_buff [in,out] The buffer where we will encode a Reject message.
|
* @param apdu_buff [in,out] The buffer where we will encode a Reject message.
|
||||||
|
|||||||
@@ -946,6 +946,13 @@ bool Load_Control_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* only array properties can have array options */
|
||||||
|
if ((wp_data->object_property != PROP_SHED_LEVELS) &&
|
||||||
|
(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;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
object_index = Load_Control_Instance_To_Index(wp_data->object_instance);
|
object_index = Load_Control_Instance_To_Index(wp_data->object_instance);
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_REQUESTED_SHED_LEVEL:
|
case PROP_REQUESTED_SHED_LEVEL:
|
||||||
|
|||||||
@@ -324,6 +324,12 @@ bool Life_Safety_Point_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* only array properties can have array options */
|
||||||
|
if (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;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_MODE:
|
case PROP_MODE:
|
||||||
status =
|
status =
|
||||||
|
|||||||
@@ -510,6 +510,13 @@ bool Multistate_Input_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* only array properties can have array options */
|
||||||
|
if ((wp_data->object_property != PROP_STATE_TEXT) &&
|
||||||
|
(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;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
status =
|
status =
|
||||||
|
|||||||
@@ -332,7 +332,8 @@ int Multistate_Output_Read_Property(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* only array properties can have array options */
|
/* only array properties can have array options */
|
||||||
if ((apdu_len >= 0) && (rpdata->object_property != PROP_PRIORITY_ARRAY) &&
|
if ((apdu_len >= 0) && (rpdata->object_property != PROP_STATE_TEXT) &&
|
||||||
|
(rpdata->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
(rpdata->array_index != BACNET_ARRAY_ALL)) {
|
(rpdata->array_index != BACNET_ARRAY_ALL)) {
|
||||||
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
||||||
rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
@@ -364,6 +365,14 @@ bool Multistate_Output_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_STATE_TEXT) &&
|
||||||
|
(wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_UNSIGNED_INT) {
|
if (value.tag == BACNET_APPLICATION_TAG_UNSIGNED_INT) {
|
||||||
|
|||||||
@@ -484,6 +484,7 @@ int Multistate_Value_Read_Property(
|
|||||||
}
|
}
|
||||||
/* only array properties can have array options */
|
/* only array properties can have array options */
|
||||||
if ((apdu_len >= 0) && (rpdata->object_property != PROP_STATE_TEXT) &&
|
if ((apdu_len >= 0) && (rpdata->object_property != PROP_STATE_TEXT) &&
|
||||||
|
(rpdata->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
(rpdata->array_index != BACNET_ARRAY_ALL)) {
|
(rpdata->array_index != BACNET_ARRAY_ALL)) {
|
||||||
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
||||||
rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
@@ -512,6 +513,14 @@ bool Multistate_Value_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_STATE_TEXT) &&
|
||||||
|
(wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
status =
|
status =
|
||||||
|
|||||||
@@ -408,7 +408,19 @@ bool Notification_Class_Write_Property(
|
|||||||
len =
|
len =
|
||||||
bacapp_decode_application_data(wp_data->application_data,
|
bacapp_decode_application_data(wp_data->application_data,
|
||||||
wp_data->application_data_len, &value);
|
wp_data->application_data_len, &value);
|
||||||
|
if (len < 0) {
|
||||||
|
/* error while decoding - a value larger than we can handle */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRIORITY:
|
case PROP_PRIORITY:
|
||||||
status =
|
status =
|
||||||
|
|||||||
@@ -473,6 +473,13 @@ bool Trend_Log_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_EVENT_TIME_STAMPS) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_ENABLE:
|
case PROP_ENABLE:
|
||||||
status =
|
status =
|
||||||
|
|||||||
@@ -348,6 +348,13 @@ bool Analog_Value_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_REAL) {
|
if (value.tag == BACNET_APPLICATION_TAG_REAL) {
|
||||||
@@ -419,10 +426,23 @@ bool Analog_Value_Write_Property(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
case PROP_OUT_OF_SERVICE:
|
||||||
|
case PROP_UNITS:
|
||||||
|
case PROP_RELINQUISH_DEFAULT:
|
||||||
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -258,6 +258,13 @@ bool Binary_Value_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_ENUMERATED) {
|
if (value.tag == BACNET_APPLICATION_TAG_ENUMERATED) {
|
||||||
@@ -296,8 +303,8 @@ bool Binary_Value_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
wp_data->error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if 0
|
|
||||||
case PROP_OUT_OF_SERVICE:
|
case PROP_OUT_OF_SERVICE:
|
||||||
|
#if 0
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_BOOLEAN) {
|
if (value.tag == BACNET_APPLICATION_TAG_BOOLEAN) {
|
||||||
object_index =
|
object_index =
|
||||||
Binary_Value_Instance_To_Index(wp_data->object_instance);
|
Binary_Value_Instance_To_Index(wp_data->object_instance);
|
||||||
@@ -309,10 +316,21 @@ bool Binary_Value_Write_Property(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
|
case PROP_RELINQUISH_DEFAULT:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -846,6 +846,13 @@ bool Device_Write_Property_Local(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_OBJECT_LIST) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_OBJECT_IDENTIFIER:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
|
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
|
||||||
@@ -941,10 +948,37 @@ bool Device_Write_Property_Local(
|
|||||||
wp_data->error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
wp_data->error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_NUMBER_OF_APDU_RETRIES:
|
||||||
|
case PROP_APDU_TIMEOUT:
|
||||||
|
case PROP_VENDOR_IDENTIFIER:
|
||||||
|
case PROP_SYSTEM_STATUS:
|
||||||
|
case PROP_LOCATION:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
case PROP_MODEL_NAME:
|
||||||
|
case PROP_VENDOR_NAME:
|
||||||
|
case PROP_FIRMWARE_REVISION:
|
||||||
|
case PROP_APPLICATION_SOFTWARE_VERSION:
|
||||||
|
case PROP_LOCAL_TIME:
|
||||||
|
case PROP_UTC_OFFSET:
|
||||||
|
case PROP_LOCAL_DATE:
|
||||||
|
case PROP_DAYLIGHT_SAVINGS_STATUS:
|
||||||
|
case PROP_PROTOCOL_VERSION:
|
||||||
|
case PROP_PROTOCOL_REVISION:
|
||||||
|
case PROP_PROTOCOL_SERVICES_SUPPORTED:
|
||||||
|
case PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED:
|
||||||
|
case PROP_OBJECT_LIST:
|
||||||
|
case PROP_MAX_APDU_LENGTH_ACCEPTED:
|
||||||
|
case PROP_SEGMENTATION_SUPPORTED:
|
||||||
|
case PROP_DEVICE_ADDRESS_BINDING:
|
||||||
|
case PROP_DATABASE_REVISION:
|
||||||
|
case PROP_ACTIVE_COV_SUBSCRIPTIONS:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
/* not using len at this time */
|
/* not using len at this time */
|
||||||
len = len;
|
len = len;
|
||||||
|
|||||||
@@ -184,8 +184,15 @@ bool Analog_Value_Write_Property(
|
|||||||
/* FIXME: len < application_data_len: more data? */
|
/* FIXME: len < application_data_len: more data? */
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
/* error while decoding - a value larger than we can handle */
|
/* error while decoding - a value larger than we can handle */
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
@@ -200,10 +207,21 @@ bool Analog_Value_Write_Property(
|
|||||||
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_OUT_OF_SERVICE:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
*error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -201,8 +201,15 @@ bool Binary_Value_Write_Property(
|
|||||||
/* FIXME: len < application_data_len: more data? */
|
/* FIXME: len < application_data_len: more data? */
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
/* error while decoding - a value larger than we can handle */
|
/* error while decoding - a value larger than we can handle */
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
@@ -235,8 +242,8 @@ bool Binary_Value_Write_Property(
|
|||||||
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if 0
|
|
||||||
case PROP_OUT_OF_SERVICE:
|
case PROP_OUT_OF_SERVICE:
|
||||||
|
#if 0
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_BOOLEAN) {
|
if (value.tag == BACNET_APPLICATION_TAG_BOOLEAN) {
|
||||||
object_index =
|
object_index =
|
||||||
Binary_Value_Instance_To_Index(wp_data->object_instance);
|
Binary_Value_Instance_To_Index(wp_data->object_instance);
|
||||||
@@ -248,10 +255,19 @@ bool Binary_Value_Write_Property(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_POLARITY:
|
||||||
*error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -372,8 +372,15 @@ bool Device_Write_Property(
|
|||||||
/* FIXME: len < application_data_len: more data? */
|
/* FIXME: len < application_data_len: more data? */
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
/* error while decoding - a value larger than we can handle */
|
/* error while decoding - a value larger than we can handle */
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((wp_data->object_property != PROP_OBJECT_LIST) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
@@ -460,10 +467,37 @@ bool Device_Write_Property(
|
|||||||
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_NUMBER_OF_APDU_RETRIES:
|
||||||
|
case PROP_APDU_TIMEOUT:
|
||||||
|
case PROP_VENDOR_IDENTIFIER:
|
||||||
|
case PROP_SYSTEM_STATUS:
|
||||||
|
case PROP_LOCATION:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
case PROP_MODEL_NAME:
|
||||||
|
case PROP_VENDOR_NAME:
|
||||||
|
case PROP_FIRMWARE_REVISION:
|
||||||
|
case PROP_APPLICATION_SOFTWARE_VERSION:
|
||||||
|
case PROP_LOCAL_TIME:
|
||||||
|
case PROP_UTC_OFFSET:
|
||||||
|
case PROP_LOCAL_DATE:
|
||||||
|
case PROP_DAYLIGHT_SAVINGS_STATUS:
|
||||||
|
case PROP_PROTOCOL_VERSION:
|
||||||
|
case PROP_PROTOCOL_REVISION:
|
||||||
|
case PROP_PROTOCOL_SERVICES_SUPPORTED:
|
||||||
|
case PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED:
|
||||||
|
case PROP_OBJECT_LIST:
|
||||||
|
case PROP_MAX_APDU_LENGTH_ACCEPTED:
|
||||||
|
case PROP_SEGMENTATION_SUPPORTED:
|
||||||
|
case PROP_DEVICE_ADDRESS_BINDING:
|
||||||
|
case PROP_DATABASE_REVISION:
|
||||||
|
case PROP_ACTIVE_COV_SUBSCRIPTIONS:
|
||||||
*error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -340,6 +340,13 @@ bool Analog_Value_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
status =
|
status =
|
||||||
@@ -363,8 +370,8 @@ bool Analog_Value_Write_Property(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if 0
|
|
||||||
case PROP_OUT_OF_SERVICE:
|
case PROP_OUT_OF_SERVICE:
|
||||||
|
#if 0
|
||||||
status =
|
status =
|
||||||
WPValidateArgType(&value, BACNET_APPLICATION_TAG_BOOLEAN,
|
WPValidateArgType(&value, BACNET_APPLICATION_TAG_BOOLEAN,
|
||||||
&wp_data->error_class, &wp_data->error_code);
|
&wp_data->error_class, &wp_data->error_code);
|
||||||
@@ -375,10 +382,33 @@ bool Analog_Value_Write_Property(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
case PROP_UNITS:
|
||||||
|
#if 0
|
||||||
|
status =
|
||||||
|
WPValidateArgType(&value, BACNET_APPLICATION_TAG_UNSIGNED_INT,
|
||||||
|
&wp_data->error_class, &wp_data->error_code);
|
||||||
|
if (status) {
|
||||||
|
object_index =
|
||||||
|
Analog_Value_Instance_To_Index(wp_data->object_instance);
|
||||||
|
Analog_Value_Units[object_index] = value.type.Unsigned_Int;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
case PROP_RELINQUISH_DEFAULT:
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
/* not using len at this time */
|
/* not using len at this time */
|
||||||
len = len;
|
len = len;
|
||||||
|
|||||||
@@ -401,6 +401,13 @@ bool Binary_Output_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
status =
|
status =
|
||||||
@@ -480,10 +487,22 @@ bool Binary_Output_Write_Property(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
|
case PROP_RELINQUISH_DEFAULT:
|
||||||
|
case PROP_ACTIVE_TEXT:
|
||||||
|
case PROP_INACTIVE_TEXT:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
/* not using len at this time */
|
/* not using len at this time */
|
||||||
len = len;
|
len = len;
|
||||||
|
|||||||
@@ -852,6 +852,13 @@ bool Device_Write_Property_Local(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_OBJECT_LIST) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_OBJECT_IDENTIFIER:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
|
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
|
||||||
@@ -948,10 +955,29 @@ bool Device_Write_Property_Local(
|
|||||||
wp_data->error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
wp_data->error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_VENDOR_NAME:
|
||||||
|
case PROP_FIRMWARE_REVISION:
|
||||||
|
case PROP_APPLICATION_SOFTWARE_VERSION:
|
||||||
|
case PROP_DAYLIGHT_SAVINGS_STATUS:
|
||||||
|
case PROP_PROTOCOL_VERSION:
|
||||||
|
case PROP_PROTOCOL_REVISION:
|
||||||
|
case PROP_PROTOCOL_SERVICES_SUPPORTED:
|
||||||
|
case PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED:
|
||||||
|
case PROP_OBJECT_LIST:
|
||||||
|
case PROP_MAX_APDU_LENGTH_ACCEPTED:
|
||||||
|
case PROP_SEGMENTATION_SUPPORTED:
|
||||||
|
case PROP_DEVICE_ADDRESS_BINDING:
|
||||||
|
case PROP_DATABASE_REVISION:
|
||||||
|
case 512:
|
||||||
|
case 513:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -309,8 +309,15 @@ bool Analog_Value_Write_Property(
|
|||||||
/* FIXME: len < application_data_len: more data? */
|
/* FIXME: len < application_data_len: more data? */
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
/* error while decoding - a value larger than we can handle */
|
/* error while decoding - a value larger than we can handle */
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
@@ -384,10 +391,21 @@ bool Analog_Value_Write_Property(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_OUT_OF_SERVICE:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
*error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -220,8 +220,15 @@ bool Binary_Value_Write_Property(
|
|||||||
/* FIXME: len < application_data_len: more data? */
|
/* FIXME: len < application_data_len: more data? */
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
/* error while decoding - a value larger than we can handle */
|
/* error while decoding - a value larger than we can handle */
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
@@ -287,8 +294,8 @@ bool Binary_Value_Write_Property(
|
|||||||
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if 0
|
|
||||||
case PROP_OUT_OF_SERVICE:
|
case PROP_OUT_OF_SERVICE:
|
||||||
|
#if 0
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_BOOLEAN) {
|
if (value.tag == BACNET_APPLICATION_TAG_BOOLEAN) {
|
||||||
object_index =
|
object_index =
|
||||||
Binary_Value_Instance_To_Index(wp_data->object_instance);
|
Binary_Value_Instance_To_Index(wp_data->object_instance);
|
||||||
@@ -300,10 +307,19 @@ bool Binary_Value_Write_Property(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_POLARITY:
|
||||||
*error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -525,8 +525,15 @@ bool Device_Write_Property(
|
|||||||
/* FIXME: len < application_data_len: more data? */
|
/* FIXME: len < application_data_len: more data? */
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
/* error while decoding - a value larger than we can handle */
|
/* error while decoding - a value larger than we can handle */
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((wp_data->object_property != PROP_OBJECT_LIST) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
@@ -618,10 +625,37 @@ bool Device_Write_Property(
|
|||||||
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
*error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_NUMBER_OF_APDU_RETRIES:
|
||||||
|
case PROP_APDU_TIMEOUT:
|
||||||
|
case PROP_VENDOR_IDENTIFIER:
|
||||||
|
case PROP_SYSTEM_STATUS:
|
||||||
|
case PROP_LOCATION:
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
case PROP_MODEL_NAME:
|
||||||
|
case PROP_VENDOR_NAME:
|
||||||
|
case PROP_FIRMWARE_REVISION:
|
||||||
|
case PROP_APPLICATION_SOFTWARE_VERSION:
|
||||||
|
case PROP_LOCAL_TIME:
|
||||||
|
case PROP_UTC_OFFSET:
|
||||||
|
case PROP_LOCAL_DATE:
|
||||||
|
case PROP_DAYLIGHT_SAVINGS_STATUS:
|
||||||
|
case PROP_PROTOCOL_VERSION:
|
||||||
|
case PROP_PROTOCOL_REVISION:
|
||||||
|
case PROP_PROTOCOL_SERVICES_SUPPORTED:
|
||||||
|
case PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED:
|
||||||
|
case PROP_OBJECT_LIST:
|
||||||
|
case PROP_MAX_APDU_LENGTH_ACCEPTED:
|
||||||
|
case PROP_SEGMENTATION_SUPPORTED:
|
||||||
|
case PROP_DEVICE_ADDRESS_BINDING:
|
||||||
|
case PROP_DATABASE_REVISION:
|
||||||
|
case PROP_ACTIVE_COV_SUBSCRIPTIONS:
|
||||||
*error_class = ERROR_CLASS_PROPERTY;
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
*error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
*error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|||||||
@@ -391,6 +391,13 @@ bool Binary_Output_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
status =
|
status =
|
||||||
@@ -470,10 +477,24 @@ bool Binary_Output_Write_Property(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_RELIABILITY:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_POLARITY:
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
|
case PROP_RELINQUISH_DEFAULT:
|
||||||
|
case PROP_ACTIVE_TEXT:
|
||||||
|
case PROP_INACTIVE_TEXT:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
/* not using len at this time */
|
/* not using len at this time */
|
||||||
len = len;
|
len = len;
|
||||||
|
|||||||
@@ -826,6 +826,13 @@ bool Device_Write_Property_Local(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_OBJECT_LIST) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_OBJECT_IDENTIFIER:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
status =
|
status =
|
||||||
@@ -894,10 +901,29 @@ bool Device_Write_Property_Local(
|
|||||||
characterstring_length(&value.type.Character_String));
|
characterstring_length(&value.type.Character_String));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_VENDOR_NAME:
|
||||||
|
case PROP_VENDOR_IDENTIFIER:
|
||||||
|
case PROP_MODEL_NAME:
|
||||||
|
case PROP_FIRMWARE_REVISION:
|
||||||
|
case PROP_APPLICATION_SOFTWARE_VERSION:
|
||||||
|
case PROP_PROTOCOL_VERSION:
|
||||||
|
case PROP_PROTOCOL_REVISION:
|
||||||
|
case PROP_PROTOCOL_SERVICES_SUPPORTED:
|
||||||
|
case PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED:
|
||||||
|
case PROP_OBJECT_LIST:
|
||||||
|
case PROP_MAX_APDU_LENGTH_ACCEPTED:
|
||||||
|
case PROP_SEGMENTATION_SUPPORTED:
|
||||||
|
case PROP_DEVICE_ADDRESS_BINDING:
|
||||||
|
case PROP_ACTIVE_COV_SUBSCRIPTIONS:
|
||||||
|
case PROP_DATABASE_REVISION:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
/* not using len at this time */
|
/* not using len at this time */
|
||||||
len = len;
|
len = len;
|
||||||
|
|||||||
@@ -392,6 +392,13 @@ bool Binary_Output_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_PRESENT_VALUE:
|
case PROP_PRESENT_VALUE:
|
||||||
status =
|
status =
|
||||||
@@ -471,10 +478,23 @@ bool Binary_Output_Write_Property(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
|
case PROP_OBJECT_NAME:
|
||||||
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_STATUS_FLAGS:
|
||||||
|
case PROP_RELIABILITY:
|
||||||
|
case PROP_EVENT_STATE:
|
||||||
|
case PROP_PRIORITY_ARRAY:
|
||||||
|
case PROP_RELINQUISH_DEFAULT:
|
||||||
|
case PROP_ACTIVE_TEXT:
|
||||||
|
case PROP_INACTIVE_TEXT:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
/* not using len at this time */
|
/* not using len at this time */
|
||||||
len = len;
|
len = len;
|
||||||
|
|||||||
@@ -832,6 +832,13 @@ bool Device_Write_Property_Local(
|
|||||||
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ((wp_data->object_property != PROP_OBJECT_LIST) &&
|
||||||
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
|
/* only array properties can have array options */
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (wp_data->object_property) {
|
switch (wp_data->object_property) {
|
||||||
case PROP_OBJECT_IDENTIFIER:
|
case PROP_OBJECT_IDENTIFIER:
|
||||||
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
|
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
|
||||||
@@ -927,10 +934,29 @@ bool Device_Write_Property_Local(
|
|||||||
wp_data->error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
wp_data->error_code = ERROR_CODE_INVALID_DATA_TYPE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case PROP_OBJECT_TYPE:
|
||||||
|
case PROP_VENDOR_NAME:
|
||||||
|
case PROP_VENDOR_IDENTIFIER:
|
||||||
|
case PROP_MODEL_NAME:
|
||||||
|
case PROP_FIRMWARE_REVISION:
|
||||||
|
case PROP_APPLICATION_SOFTWARE_VERSION:
|
||||||
|
case PROP_PROTOCOL_VERSION:
|
||||||
|
case PROP_PROTOCOL_REVISION:
|
||||||
|
case PROP_PROTOCOL_SERVICES_SUPPORTED:
|
||||||
|
case PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED:
|
||||||
|
case PROP_OBJECT_LIST:
|
||||||
|
case PROP_MAX_APDU_LENGTH_ACCEPTED:
|
||||||
|
case PROP_SEGMENTATION_SUPPORTED:
|
||||||
|
case PROP_DEVICE_ADDRESS_BINDING:
|
||||||
|
case PROP_ACTIVE_COV_SUBSCRIPTIONS:
|
||||||
|
case PROP_DATABASE_REVISION:
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
|
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
/* not using len at this time */
|
/* not using len at this time */
|
||||||
len = len;
|
len = len;
|
||||||
|
|||||||
Reference in New Issue
Block a user