Refactored the Property_List property and added Protocol_Revision 14 define restriction for Property_List and Channel and Lighting Output objects.
This commit is contained in:
@@ -382,7 +382,6 @@ int Analog_Input_Read_Property(
|
|||||||
int len = 0;
|
int len = 0;
|
||||||
#endif
|
#endif
|
||||||
uint8_t *apdu = NULL;
|
uint8_t *apdu = NULL;
|
||||||
const int *pRequired = NULL, *pOptional = NULL, *pProprietary = NULL;
|
|
||||||
|
|
||||||
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
|
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
|
||||||
(rpdata->application_data_len == 0)) {
|
(rpdata->application_data_len == 0)) {
|
||||||
@@ -592,14 +591,6 @@ int Analog_Input_Read_Property(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case PROP_PROPERTY_LIST:
|
|
||||||
Analog_Input_Property_Lists(&pRequired, &pOptional, &pProprietary);
|
|
||||||
apdu_len = property_list_encode(
|
|
||||||
rpdata,
|
|
||||||
pRequired,
|
|
||||||
pOptional,
|
|
||||||
pProprietary);
|
|
||||||
break;
|
|
||||||
case 9997:
|
case 9997:
|
||||||
/* test case for real encoding-decoding unsigned value correctly */
|
/* test case for real encoding-decoding unsigned value correctly */
|
||||||
apdu_len = encode_application_real(&apdu[0], 90.510F);
|
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 */
|
/* only array properties can have array options */
|
||||||
if ((apdu_len >= 0) && (rpdata->object_property != PROP_EVENT_TIME_STAMPS)
|
if ((apdu_len >= 0) && (rpdata->object_property != PROP_EVENT_TIME_STAMPS)
|
||||||
&& (rpdata->object_property != PROP_PROPERTY_LIST)
|
|
||||||
&& (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;
|
||||||
@@ -653,7 +643,6 @@ bool Analog_Input_Write_Property(
|
|||||||
}
|
}
|
||||||
/* only array properties can have array options */
|
/* only array properties can have array options */
|
||||||
if ((wp_data->object_property != PROP_EVENT_TIME_STAMPS) &&
|
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->array_index != BACNET_ARRAY_ALL)) {
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
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_ACKED_TRANSITIONS:
|
||||||
case PROP_EVENT_TIME_STAMPS:
|
case PROP_EVENT_TIME_STAMPS:
|
||||||
#endif
|
#endif
|
||||||
case PROP_PROPERTY_LIST:
|
|
||||||
case 9997:
|
case 9997:
|
||||||
case 9998:
|
case 9998:
|
||||||
case 9999:
|
case 9999:
|
||||||
|
|||||||
@@ -1361,7 +1361,6 @@ int Channel_Read_Property(BACNET_READ_PROPERTY_DATA * rpdata)
|
|||||||
bool state = false;
|
bool state = false;
|
||||||
BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE *pMember = NULL;
|
BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE *pMember = NULL;
|
||||||
uint8_t *apdu = NULL;
|
uint8_t *apdu = NULL;
|
||||||
const int *pRequired = NULL, *pOptional = NULL, *pProprietary = NULL;
|
|
||||||
|
|
||||||
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
|
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
|
||||||
(rpdata->application_data_len == 0)) {
|
(rpdata->application_data_len == 0)) {
|
||||||
@@ -1500,14 +1499,6 @@ int Channel_Read_Property(BACNET_READ_PROPERTY_DATA * rpdata)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PROP_PROPERTY_LIST:
|
|
||||||
Channel_Property_Lists(&pRequired, &pOptional, &pProprietary);
|
|
||||||
apdu_len = property_list_encode(
|
|
||||||
rpdata,
|
|
||||||
pRequired,
|
|
||||||
pOptional,
|
|
||||||
pProprietary);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
||||||
rpdata->error_code = ERROR_CODE_UNKNOWN_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 */
|
/* only array properties can have array options */
|
||||||
if ((apdu_len >= 0)
|
if ((apdu_len >= 0)
|
||||||
&& (rpdata->object_property != PROP_PRIORITY_ARRAY)
|
&& (rpdata->object_property != PROP_PRIORITY_ARRAY)
|
||||||
&& (rpdata->object_property != PROP_PROPERTY_LIST)
|
|
||||||
&& (rpdata->object_property != PROP_LIST_OF_OBJECT_PROPERTY_REFERENCES)
|
&& (rpdata->object_property != PROP_LIST_OF_OBJECT_PROPERTY_REFERENCES)
|
||||||
&& (rpdata->array_index != BACNET_ARRAY_ALL)) {
|
&& (rpdata->array_index != BACNET_ARRAY_ALL)) {
|
||||||
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
||||||
@@ -1558,7 +1548,6 @@ bool Channel_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
if ((wp_data->object_property != PROP_PRIORITY_ARRAY) &&
|
||||||
(wp_data->object_property != PROP_PROPERTY_LIST) &&
|
|
||||||
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
/* only array properties can have array options */
|
/* only array properties can have array options */
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
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_LAST_PRIORITY:
|
||||||
case PROP_WRITE_STATUS:
|
case PROP_WRITE_STATUS:
|
||||||
case PROP_STATUS_FLAGS:
|
case PROP_STATUS_FLAGS:
|
||||||
case PROP_PROPERTY_LIST:
|
|
||||||
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;
|
||||||
|
|||||||
@@ -607,7 +607,6 @@ int Command_Read_Property(
|
|||||||
uint8_t *apdu = NULL;
|
uint8_t *apdu = NULL;
|
||||||
uint16_t apdu_max = 0;
|
uint16_t apdu_max = 0;
|
||||||
COMMAND_DESCR *CurrentCommand;
|
COMMAND_DESCR *CurrentCommand;
|
||||||
const int *pRequired = NULL, *pOptional = NULL, *pProprietary = NULL;
|
|
||||||
|
|
||||||
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
|
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
|
||||||
(rpdata->application_data_len == 0)) {
|
(rpdata->application_data_len == 0)) {
|
||||||
@@ -707,12 +706,6 @@ int Command_Read_Property(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PROP_PROPERTY_LIST:
|
|
||||||
Command_Property_Lists(&pRequired, &pOptional, &pProprietary);
|
|
||||||
apdu_len =
|
|
||||||
property_list_encode(rpdata, pRequired, pOptional,
|
|
||||||
pProprietary);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
||||||
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
@@ -721,7 +714,6 @@ int Command_Read_Property(
|
|||||||
}
|
}
|
||||||
/* only array properties can have array options */
|
/* only array properties can have array options */
|
||||||
if ((apdu_len >= 0) && (rpdata->object_property != PROP_ACTION)
|
if ((apdu_len >= 0) && (rpdata->object_property != PROP_ACTION)
|
||||||
&& (rpdata->object_property != PROP_PROPERTY_LIST)
|
|
||||||
&& (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;
|
||||||
@@ -760,7 +752,6 @@ bool Command_Write_Property(
|
|||||||
}
|
}
|
||||||
/* only array properties can have array options */
|
/* only array properties can have array options */
|
||||||
if ((wp_data->object_property != PROP_ACTION) &&
|
if ((wp_data->object_property != PROP_ACTION) &&
|
||||||
(wp_data->object_property != PROP_PROPERTY_LIST) &&
|
|
||||||
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
(wp_data->array_index != BACNET_ARRAY_ALL)) {
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
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_IN_PROCESS:
|
||||||
case PROP_ALL_WRITES_SUCCESSFUL:
|
case PROP_ALL_WRITES_SUCCESSFUL:
|
||||||
case PROP_ACTION:
|
case PROP_ACTION:
|
||||||
case PROP_PROPERTY_LIST:
|
|
||||||
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;
|
||||||
|
|||||||
@@ -352,6 +352,7 @@ static object_functions_t My_Object_Table[] = {
|
|||||||
NULL /* COV */ ,
|
NULL /* COV */ ,
|
||||||
NULL /* COV Clear */ ,
|
NULL /* COV Clear */ ,
|
||||||
NULL /* Intrinsic Reporting */ },
|
NULL /* Intrinsic Reporting */ },
|
||||||
|
#if (BACNET_PROTOCOL_REVISION >= 14)
|
||||||
{OBJECT_LIGHTING_OUTPUT,
|
{OBJECT_LIGHTING_OUTPUT,
|
||||||
Lighting_Output_Init,
|
Lighting_Output_Init,
|
||||||
Lighting_Output_Count,
|
Lighting_Output_Count,
|
||||||
@@ -382,6 +383,7 @@ static object_functions_t My_Object_Table[] = {
|
|||||||
NULL /* COV */ ,
|
NULL /* COV */ ,
|
||||||
NULL /* COV Clear */ ,
|
NULL /* COV Clear */ ,
|
||||||
NULL /* Intrinsic Reporting */ },
|
NULL /* Intrinsic Reporting */ },
|
||||||
|
#endif
|
||||||
#if defined(BACFILE)
|
#if defined(BACFILE)
|
||||||
{OBJECT_FILE,
|
{OBJECT_FILE,
|
||||||
bacfile_init,
|
bacfile_init,
|
||||||
@@ -1442,7 +1444,7 @@ int Device_Read_Property_Local(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* only array properties can have array options */
|
/* 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->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;
|
||||||
@@ -1465,6 +1467,9 @@ int Device_Read_Property(
|
|||||||
{
|
{
|
||||||
int apdu_len = BACNET_STATUS_ERROR;
|
int apdu_len = BACNET_STATUS_ERROR;
|
||||||
struct object_functions *pObject = NULL;
|
struct object_functions *pObject = NULL;
|
||||||
|
#if (BACNET_PROTOCOL_REVISION >= 14)
|
||||||
|
struct special_property_list_t property_list;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* initialize the default return values */
|
/* initialize the default return values */
|
||||||
rpdata->error_class = ERROR_CLASS_OBJECT;
|
rpdata->error_class = ERROR_CLASS_OBJECT;
|
||||||
@@ -1474,7 +1479,21 @@ int Device_Read_Property(
|
|||||||
if (pObject->Object_Valid_Instance &&
|
if (pObject->Object_Valid_Instance &&
|
||||||
pObject->Object_Valid_Instance(rpdata->object_instance)) {
|
pObject->Object_Valid_Instance(rpdata->object_instance)) {
|
||||||
if (pObject->Object_Read_Property) {
|
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 &&
|
if (pObject->Object_Valid_Instance &&
|
||||||
pObject->Object_Valid_Instance(wp_data->object_instance)) {
|
pObject->Object_Valid_Instance(wp_data->object_instance)) {
|
||||||
if (pObject->Object_Write_Property) {
|
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 {
|
} else {
|
||||||
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;
|
||||||
|
|||||||
@@ -951,7 +951,6 @@ int Lighting_Output_Read_Property(
|
|||||||
unsigned i = 0;
|
unsigned i = 0;
|
||||||
bool state = false;
|
bool state = false;
|
||||||
uint8_t *apdu = NULL;
|
uint8_t *apdu = NULL;
|
||||||
const int *pRequired = NULL, *pOptional = NULL, *pProprietary = NULL;
|
|
||||||
|
|
||||||
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
|
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
|
||||||
(rpdata->application_data_len == 0)) {
|
(rpdata->application_data_len == 0)) {
|
||||||
@@ -1099,14 +1098,6 @@ int Lighting_Output_Read_Property(
|
|||||||
apdu_len = encode_application_unsigned(&apdu[0],
|
apdu_len = encode_application_unsigned(&apdu[0],
|
||||||
unsigned_value);
|
unsigned_value);
|
||||||
break;
|
break;
|
||||||
case PROP_PROPERTY_LIST:
|
|
||||||
Lighting_Output_Property_Lists(&pRequired, &pOptional, &pProprietary);
|
|
||||||
apdu_len = property_list_encode(
|
|
||||||
rpdata,
|
|
||||||
pRequired,
|
|
||||||
pOptional,
|
|
||||||
pProprietary);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
||||||
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||||
@@ -1115,7 +1106,6 @@ int Lighting_Output_Read_Property(
|
|||||||
}
|
}
|
||||||
/* 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_PRIORITY_ARRAY) &&
|
||||||
(rpdata->object_property != PROP_PROPERTY_LIST) &&
|
|
||||||
(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;
|
||||||
|
|||||||
@@ -203,10 +203,10 @@ bool Analog_Input_Units_Set(
|
|||||||
Units[index] = value;
|
Units[index] = value;
|
||||||
status = true;
|
status = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t Analog_Input_Units(
|
uint16_t Analog_Input_Units(
|
||||||
uint32_t object_instance)
|
uint32_t object_instance)
|
||||||
{
|
{
|
||||||
@@ -217,8 +217,8 @@ uint16_t Analog_Input_Units(
|
|||||||
if (index < MAX_ANALOG_INPUTS) {
|
if (index < MAX_ANALOG_INPUTS) {
|
||||||
value = Units[index];
|
value = Units[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return apdu length, or -1 on error */
|
/* 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_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,
|
bitstring_set_bit(&bit_string, STATUS_FLAG_OUT_OF_SERVICE,
|
||||||
Analog_Input_Out_Of_Service(rpdata->object_instance));
|
Analog_Input_Out_Of_Service(rpdata->object_instance));
|
||||||
apdu_len = encode_application_bitstring(&apdu[0], &bit_string);
|
apdu_len = encode_application_bitstring(&apdu[0], &bit_string);
|
||||||
break;
|
break;
|
||||||
@@ -270,11 +270,11 @@ int Analog_Input_Read_Property(
|
|||||||
encode_application_enumerated(&apdu[0], EVENT_STATE_NORMAL);
|
encode_application_enumerated(&apdu[0], EVENT_STATE_NORMAL);
|
||||||
break;
|
break;
|
||||||
case PROP_OUT_OF_SERVICE:
|
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));
|
Analog_Input_Out_Of_Service(rpdata->object_instance));
|
||||||
break;
|
break;
|
||||||
case PROP_UNITS:
|
case PROP_UNITS:
|
||||||
apdu_len = encode_application_enumerated(&apdu[0],
|
apdu_len = encode_application_enumerated(&apdu[0],
|
||||||
Analog_Input_Units(rpdata->object_instance));
|
Analog_Input_Units(rpdata->object_instance));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -314,7 +314,6 @@ bool Analog_Input_Write_Property(
|
|||||||
}
|
}
|
||||||
/* only array properties can have array options */
|
/* only array properties can have array options */
|
||||||
if ((wp_data->object_property != PROP_EVENT_TIME_STAMPS) &&
|
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->array_index != BACNET_ARRAY_ALL)) {
|
||||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||||
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
wp_data->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
|
||||||
|
|||||||
Reference in New Issue
Block a user