diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/ai.c b/bacnet-stack/ports/bdk-atxx4-mstp/ai.c
index c166173c..747df57f 100644
--- a/bacnet-stack/ports/bdk-atxx4-mstp/ai.c
+++ b/bacnet-stack/ports/bdk-atxx4-mstp/ai.c
@@ -151,7 +151,8 @@ int Analog_Input_Read_Property(
BACNET_READ_PROPERTY_DATA * rpdata)
{
int apdu_len = 0; /* return value */
- BACNET_BIT_STRING bit_string;
+ BACNET_CHARACTER_STRING char_string = { 0 };
+ BACNET_BIT_STRING bit_string = { 0 };
uint8_t *apdu = NULL;
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
@@ -160,7 +161,22 @@ int Analog_Input_Read_Property(
}
apdu = rpdata->application_data;
switch (rpdata->object_property) {
- /* object id, object name, object type are handled in Device object */
+ case PROP_OBJECT_IDENTIFIER:
+ apdu_len =
+ encode_application_object_id(&apdu[0], rpdata->object_type,
+ rpdata->object_instance);
+ break;
+ case PROP_OBJECT_NAME:
+ Analog_Input_Object_Name(rpdata->object_instance, &char_string);
+ apdu_len =
+ encode_application_character_string(&apdu[0],
+ &char_string);
+ break;
+ case PROP_OBJECT_TYPE:
+ apdu_len =
+ encode_application_enumerated(&apdu[0],
+ rpdata->object_type);
+ break;
case PROP_PRESENT_VALUE:
apdu_len =
encode_application_real(&apdu[0],
diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/av.c b/bacnet-stack/ports/bdk-atxx4-mstp/av.c
index 44f2fc20..b56bed17 100644
--- a/bacnet-stack/ports/bdk-atxx4-mstp/av.c
+++ b/bacnet-stack/ports/bdk-atxx4-mstp/av.c
@@ -199,6 +199,7 @@ int Analog_Value_Read_Property(
int apdu_len = 0; /* return value */
BACNET_BIT_STRING bit_string;
float real_value = 1.414F;
+ BACNET_CHARACTER_STRING char_string = { 0 };
#if 0
unsigned object_index = 0;
unsigned i = 0;
@@ -212,7 +213,22 @@ int Analog_Value_Read_Property(
}
apdu = rpdata->application_data;
switch (rpdata->object_property) {
- /* object id, object name, object type are handled in Device object */
+ case PROP_OBJECT_IDENTIFIER:
+ apdu_len =
+ encode_application_object_id(&apdu[0], rpdata->object_type,
+ rpdata->object_instance);
+ break;
+ case PROP_OBJECT_NAME:
+ Analog_Value_Object_Name(rpdata->object_instance, &char_string);
+ apdu_len =
+ encode_application_character_string(&apdu[0],
+ &char_string);
+ break;
+ case PROP_OBJECT_TYPE:
+ apdu_len =
+ encode_application_enumerated(&apdu[0],
+ rpdata->object_type);
+ break;
case PROP_PRESENT_VALUE:
real_value = Analog_Value_Present_Value(rpdata->object_instance);
apdu_len = encode_application_real(&apdu[0], real_value);
diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/bacnet.ewp b/bacnet-stack/ports/bdk-atxx4-mstp/bacnet.ewp
index ea802ba8..97c41ed8 100644
--- a/bacnet-stack/ports/bdk-atxx4-mstp/bacnet.ewp
+++ b/bacnet-stack/ports/bdk-atxx4-mstp/bacnet.ewp
@@ -10,9 +10,9 @@
1
General
- 10
+ 11
- 8
+ 9
1
1
-
+
ICCAVR
- 5
+ 6
- 14
+ 17
1
1
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
AAVR
- 4
+ 5
- 10
+ 11
1
1
+
@@ -1006,9 +1023,9 @@
0
General
- 10
+ 11
- 8
+ 9
1
0
-
+
ICCAVR
- 5
+ 6
- 14
+ 17
1
0
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
AAVR
- 4
+ 5
- 10
+ 11
1
0
+
diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/bi.c b/bacnet-stack/ports/bdk-atxx4-mstp/bi.c
index 3f40fd29..81134f2d 100644
--- a/bacnet-stack/ports/bdk-atxx4-mstp/bi.c
+++ b/bacnet-stack/ports/bdk-atxx4-mstp/bi.c
@@ -178,9 +178,10 @@ int Binary_Input_Read_Property(
BACNET_READ_PROPERTY_DATA * rpdata)
{
int apdu_len = 0; /* return value */
- BACNET_BIT_STRING bit_string;
+ BACNET_BIT_STRING bit_string = {0};
BACNET_POLARITY polarity = POLARITY_NORMAL;
BACNET_BINARY_PV value = BINARY_INACTIVE;
+ BACNET_CHARACTER_STRING char_string = {0};
uint8_t *apdu = NULL;
if ((rpdata->application_data == NULL) ||
@@ -189,7 +190,22 @@ int Binary_Input_Read_Property(
}
apdu = rpdata->application_data;
switch (rpdata->object_property) {
- /* object id, object name, object type are handled in Device object */
+ case PROP_OBJECT_IDENTIFIER:
+ apdu_len =
+ encode_application_object_id(&apdu[0], rpdata->object_type,
+ rpdata->object_instance);
+ break;
+ case PROP_OBJECT_NAME:
+ Binary_Input_Object_Name(rpdata->object_instance, &char_string);
+ apdu_len =
+ encode_application_character_string(&apdu[0],
+ &char_string);
+ break;
+ case PROP_OBJECT_TYPE:
+ apdu_len =
+ encode_application_enumerated(&apdu[0],
+ rpdata->object_type);
+ break;
case PROP_PRESENT_VALUE:
value = Binary_Input_Present_Value(rpdata->object_instance);
apdu_len = encode_application_enumerated(&apdu[0], value);
diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/bo.c b/bacnet-stack/ports/bdk-atxx4-mstp/bo.c
index d7d6cf64..ab7863ad 100644
--- a/bacnet-stack/ports/bdk-atxx4-mstp/bo.c
+++ b/bacnet-stack/ports/bdk-atxx4-mstp/bo.c
@@ -250,8 +250,8 @@ int Binary_Output_Read_Property(
{
int len = 0;
int apdu_len = 0; /* return value */
- BACNET_BIT_STRING bit_string;
- BACNET_CHARACTER_STRING char_string;
+ BACNET_BIT_STRING bit_string = {0};
+ BACNET_CHARACTER_STRING char_string = {0};
BACNET_BINARY_PV present_value = BINARY_INACTIVE;
unsigned object_index = 0;
unsigned i = 0;
@@ -264,7 +264,22 @@ int Binary_Output_Read_Property(
}
apdu = rpdata->application_data;
switch (rpdata->object_property) {
- /* object id, object name, object type are handled in Device object */
+ case PROP_OBJECT_IDENTIFIER:
+ apdu_len =
+ encode_application_object_id(&apdu[0], rpdata->object_type,
+ rpdata->object_instance);
+ break;
+ case PROP_OBJECT_NAME:
+ Binary_Output_Object_Name(rpdata->object_instance, &char_string);
+ apdu_len =
+ encode_application_character_string(&apdu[0],
+ &char_string);
+ break;
+ case PROP_OBJECT_TYPE:
+ apdu_len =
+ encode_application_enumerated(&apdu[0],
+ rpdata->object_type);
+ break;
case PROP_PRESENT_VALUE:
present_value =
Binary_Output_Present_Value(rpdata->object_instance);
diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/device.c b/bacnet-stack/ports/bdk-atxx4-mstp/device.c
index 8ef4856b..951de3fe 100644
--- a/bacnet-stack/ports/bdk-atxx4-mstp/device.c
+++ b/bacnet-stack/ports/bdk-atxx4-mstp/device.c
@@ -169,52 +169,6 @@ static int Read_Property_Common(
}
apdu = rpdata->application_data;
switch (rpdata->object_property) {
- case PROP_OBJECT_IDENTIFIER:
- /* only array properties can have array options */
- if (rpdata->array_index != BACNET_ARRAY_ALL) {
- rpdata->error_class = ERROR_CLASS_PROPERTY;
- rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
- apdu_len = BACNET_STATUS_ERROR;
- } else {
- /* Device Object exception: requested instance
- may not match our instance if a wildcard */
- if (rpdata->object_type == OBJECT_DEVICE) {
- rpdata->object_instance = Object_Instance_Number;
- }
- apdu_len =
- encode_application_object_id(&apdu[0], rpdata->object_type,
- rpdata->object_instance);
- }
- break;
- case PROP_OBJECT_NAME:
- /* only array properties can have array options */
- if (rpdata->array_index != BACNET_ARRAY_ALL) {
- rpdata->error_class = ERROR_CLASS_PROPERTY;
- rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
- apdu_len = BACNET_STATUS_ERROR;
- } else {
- characterstring_init_ansi(&char_string, "");
- if (pObject->Object_Name) {
- (void) pObject->Object_Name(rpdata->object_instance,
- &char_string);
- }
- apdu_len =
- encode_application_character_string(&apdu[0],
- &char_string);
- }
- break;
- case PROP_OBJECT_TYPE:
- /* only array properties can have array options */
- if (rpdata->array_index != BACNET_ARRAY_ALL) {
- rpdata->error_class = ERROR_CLASS_PROPERTY;
- rpdata->error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
- apdu_len = BACNET_STATUS_ERROR;
- } else {
- apdu_len =
- encode_application_enumerated(&apdu[0],
- rpdata->object_type);
- }
- break;
default:
if (pObject->Object_Read_Property) {
apdu_len = pObject->Object_Read_Property(rpdata);
@@ -234,18 +188,16 @@ int Device_Read_Property(
struct my_object_functions *pObject = NULL;
/* initialize the default return values */
+ rpdata->error_class = ERROR_CLASS_OBJECT;
+ rpdata->error_code = ERROR_CODE_UNKNOWN_OBJECT;
pObject = Device_Objects_Find_Functions(rpdata->object_type);
- if (pObject) {
+ if (pObject != NULL) {
if (pObject->Object_Valid_Instance &&
pObject->Object_Valid_Instance(rpdata->object_instance)) {
- apdu_len = Read_Property_Common(pObject, rpdata);
- } else {
- rpdata->error_class = ERROR_CLASS_OBJECT;
- rpdata->error_code = ERROR_CODE_UNKNOWN_OBJECT;
+ if (pObject->Object_Read_Property) {
+ apdu_len = pObject->Object_Read_Property(rpdata);
+ }
}
- } else {
- rpdata->error_class = ERROR_CLASS_OBJECT;
- rpdata->error_code = ERROR_CODE_UNKNOWN_OBJECT;
}
return apdu_len;
@@ -633,8 +585,8 @@ int Device_Read_Property_Local(
{
int apdu_len = 0; /* return value */
int len = 0; /* apdu len intermediate value */
- BACNET_BIT_STRING bit_string;
- BACNET_CHARACTER_STRING char_string;
+ BACNET_BIT_STRING bit_string = {0};
+ BACNET_CHARACTER_STRING char_string = {0};
unsigned i = 0;
int object_type = 0;
uint32_t instance = 0;
@@ -648,7 +600,22 @@ int Device_Read_Property_Local(
}
apdu = rpdata->application_data;
switch (rpdata->object_property) {
- /* object name, object id, object type are handled in Device object */
+ case PROP_OBJECT_IDENTIFIER:
+ apdu_len =
+ encode_application_object_id(&apdu[0], rpdata->object_type,
+ rpdata->object_instance);
+ break;
+ case PROP_OBJECT_NAME:
+ Device_Object_Name(rpdata->object_instance, &char_string);
+ apdu_len =
+ encode_application_character_string(&apdu[0],
+ &char_string);
+ break;
+ case PROP_OBJECT_TYPE:
+ apdu_len =
+ encode_application_enumerated(&apdu[0],
+ rpdata->object_type);
+ break;
case PROP_DESCRIPTION:
bacnet_name(NV_EEPROM_DEVICE_DESCRIPTION, &char_string,
"BACnet Development Kit");