Corrected return value of WriteProperty in device object.
This commit is contained in:
@@ -53,7 +53,7 @@ static char My_Object_Name[32] = "ARM7 Device";
|
|||||||
static BACNET_DEVICE_STATUS System_Status = STATUS_OPERATIONAL;
|
static BACNET_DEVICE_STATUS System_Status = STATUS_OPERATIONAL;
|
||||||
static BACNET_REINITIALIZED_STATE Reinitialize_State =
|
static BACNET_REINITIALIZED_STATE Reinitialize_State =
|
||||||
BACNET_REINIT_IDLE;
|
BACNET_REINIT_IDLE;
|
||||||
|
|
||||||
/* forward prototypes */
|
/* forward prototypes */
|
||||||
int Device_Read_Property_Local(
|
int Device_Read_Property_Local(
|
||||||
BACNET_READ_PROPERTY_DATA *rpdata);
|
BACNET_READ_PROPERTY_DATA *rpdata);
|
||||||
@@ -108,13 +108,13 @@ static struct object_functions {
|
|||||||
Binary_Input_Read_Property,
|
Binary_Input_Read_Property,
|
||||||
NULL,
|
NULL,
|
||||||
Binary_Input_Property_Lists},
|
Binary_Input_Property_Lists},
|
||||||
{OBJECT_BINARY_VALUE,
|
{OBJECT_BINARY_VALUE,
|
||||||
Binary_Value_Init,
|
Binary_Value_Init,
|
||||||
Binary_Value_Count,
|
Binary_Value_Count,
|
||||||
Binary_Value_Index_To_Instance,
|
Binary_Value_Index_To_Instance,
|
||||||
Binary_Value_Valid_Instance,
|
Binary_Value_Valid_Instance,
|
||||||
Binary_Value_Name,
|
Binary_Value_Name,
|
||||||
Binary_Value_Read_Property,
|
Binary_Value_Read_Property,
|
||||||
Binary_Value_Write_Property,
|
Binary_Value_Write_Property,
|
||||||
Binary_Value_Property_Lists},
|
Binary_Value_Property_Lists},
|
||||||
|
|
||||||
@@ -216,7 +216,7 @@ int Device_Read_Property(
|
|||||||
bool Device_Write_Property(
|
bool Device_Write_Property(
|
||||||
BACNET_WRITE_PROPERTY_DATA * wp_data)
|
BACNET_WRITE_PROPERTY_DATA * wp_data)
|
||||||
{
|
{
|
||||||
int apdu_len = -1;
|
bool status = false;
|
||||||
unsigned index = 0;
|
unsigned index = 0;
|
||||||
struct object_functions *pObject = NULL;
|
struct object_functions *pObject = NULL;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
@@ -232,7 +232,7 @@ 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) {
|
||||||
apdu_len = pObject->Object_Write_Property(wp_data);
|
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;
|
||||||
@@ -251,7 +251,7 @@ bool Device_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_UNSUPPORTED_OBJECT_TYPE;
|
wp_data->error_code = ERROR_CODE_UNSUPPORTED_OBJECT_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return apdu_len;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned property_list_count(
|
static unsigned property_list_count(
|
||||||
@@ -425,7 +425,7 @@ char *Device_Valid_Object_Id(
|
|||||||
|
|
||||||
pObject = &Object_Table[0];
|
pObject = &Object_Table[0];
|
||||||
while (pObject->Object_Type < MAX_BACNET_OBJECT_TYPE) {
|
while (pObject->Object_Type < MAX_BACNET_OBJECT_TYPE) {
|
||||||
if ((pObject->Object_Type == object_type) &&
|
if ((pObject->Object_Type == object_type) &&
|
||||||
(pObject->Object_Name)) {
|
(pObject->Object_Name)) {
|
||||||
name = pObject->Object_Name(object_instance);
|
name = pObject->Object_Name(object_instance);
|
||||||
break;
|
break;
|
||||||
@@ -433,7 +433,7 @@ char *Device_Valid_Object_Id(
|
|||||||
index++;
|
index++;
|
||||||
pObject = &Object_Table[index];
|
pObject = &Object_Table[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -454,11 +454,11 @@ char *Device_Name(
|
|||||||
if (object_instance == Object_Instance_Number) {
|
if (object_instance == Object_Instance_Number) {
|
||||||
return My_Object_Name;
|
return My_Object_Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Device_Reinitialize(
|
bool Device_Reinitialize(
|
||||||
BACNET_REINITIALIZE_DEVICE_DATA *rd_data)
|
BACNET_REINITIALIZE_DEVICE_DATA *rd_data)
|
||||||
{
|
{
|
||||||
bool status = false;
|
bool status = false;
|
||||||
@@ -466,9 +466,9 @@ bool Device_Reinitialize(
|
|||||||
if (characterstring_ansi_same(&rd_data->password, "filister")) {
|
if (characterstring_ansi_same(&rd_data->password, "filister")) {
|
||||||
Reinitialize_State = rd_data->state;
|
Reinitialize_State = rd_data->state;
|
||||||
dcc_set_status_duration(COMMUNICATION_ENABLE, 0);
|
dcc_set_status_duration(COMMUNICATION_ENABLE, 0);
|
||||||
/* Note: you could use a mix of state
|
/* Note: you could use a mix of state
|
||||||
and password to multiple things */
|
and password to multiple things */
|
||||||
/* note: you probably want to restart *after* the
|
/* note: you probably want to restart *after* the
|
||||||
simple ack has been sent from the return handler
|
simple ack has been sent from the return handler
|
||||||
so just set a flag from here */
|
so just set a flag from here */
|
||||||
status = true;
|
status = true;
|
||||||
@@ -476,7 +476,7 @@ bool Device_Reinitialize(
|
|||||||
rd_data->error_class = ERROR_CLASS_SECURITY;
|
rd_data->error_class = ERROR_CLASS_SECURITY;
|
||||||
rd_data->error_code = ERROR_CODE_PASSWORD_FAILURE;
|
rd_data->error_code = ERROR_CODE_PASSWORD_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -552,7 +552,7 @@ int Device_Set_System_Status(
|
|||||||
if (status < MAX_DEVICE_STATUS) {
|
if (status < MAX_DEVICE_STATUS) {
|
||||||
System_Status = status;
|
System_Status = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ static int Read_Property_Common(
|
|||||||
BACNET_CHARACTER_STRING char_string;
|
BACNET_CHARACTER_STRING char_string;
|
||||||
char *pString = "";
|
char *pString = "";
|
||||||
uint8_t *apdu = NULL;
|
uint8_t *apdu = NULL;
|
||||||
|
|
||||||
if ((rpdata->application_data == NULL) ||
|
if ((rpdata->application_data == NULL) ||
|
||||||
(rpdata->application_data_len == 0)) {
|
(rpdata->application_data_len == 0)) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -199,7 +199,7 @@ static int Read_Property_Common(
|
|||||||
rpdata->object_instance = Object_Instance_Number;
|
rpdata->object_instance = Object_Instance_Number;
|
||||||
}
|
}
|
||||||
apdu_len =
|
apdu_len =
|
||||||
encode_application_object_id(&apdu[0],
|
encode_application_object_id(&apdu[0],
|
||||||
rpdata->object_type,
|
rpdata->object_type,
|
||||||
rpdata->object_instance);
|
rpdata->object_instance);
|
||||||
break;
|
break;
|
||||||
@@ -254,7 +254,7 @@ int Device_Read_Property(
|
|||||||
bool Device_Write_Property(
|
bool Device_Write_Property(
|
||||||
BACNET_WRITE_PROPERTY_DATA * wp_data)
|
BACNET_WRITE_PROPERTY_DATA * wp_data)
|
||||||
{
|
{
|
||||||
int apdu_len = -1;
|
bool status = false;
|
||||||
struct object_functions *pObject = NULL;
|
struct object_functions *pObject = NULL;
|
||||||
|
|
||||||
/* initialize the default return values */
|
/* initialize the default return values */
|
||||||
@@ -263,7 +263,7 @@ 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) {
|
||||||
apdu_len = pObject->Object_Write_Property(wp_data);
|
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;
|
||||||
@@ -277,7 +277,7 @@ bool Device_Write_Property(
|
|||||||
wp_data->error_code = ERROR_CODE_UNSUPPORTED_OBJECT_TYPE;
|
wp_data->error_code = ERROR_CODE_UNSUPPORTED_OBJECT_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return apdu_len;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned property_list_count(
|
static unsigned property_list_count(
|
||||||
@@ -315,7 +315,7 @@ void Device_Objects_Property_List(
|
|||||||
if ((pObject != NULL) && (pObject->Object_RPM_List != NULL)) {
|
if ((pObject != NULL) && (pObject->Object_RPM_List != NULL)) {
|
||||||
pObject->Object_RPM_List(
|
pObject->Object_RPM_List(
|
||||||
&pPropertyList->Required.pList,
|
&pPropertyList->Required.pList,
|
||||||
&pPropertyList->Optional.pList,
|
&pPropertyList->Optional.pList,
|
||||||
&pPropertyList->Proprietary.pList);
|
&pPropertyList->Proprietary.pList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -325,7 +325,7 @@ void Device_Objects_Property_List(
|
|||||||
|
|
||||||
pPropertyList->Optional.count = pPropertyList->Optional.pList == NULL
|
pPropertyList->Optional.count = pPropertyList->Optional.pList == NULL
|
||||||
? 0 : property_list_count(pPropertyList->Optional.pList);
|
? 0 : property_list_count(pPropertyList->Optional.pList);
|
||||||
|
|
||||||
pPropertyList->Proprietary.count = pPropertyList->Proprietary.pList == NULL
|
pPropertyList->Proprietary.count = pPropertyList->Proprietary.pList == NULL
|
||||||
? 0 : property_list_count(pPropertyList->Proprietary.pList);
|
? 0 : property_list_count(pPropertyList->Proprietary.pList);
|
||||||
|
|
||||||
@@ -365,7 +365,7 @@ char *Device_Name(
|
|||||||
uint8_t length = 0;
|
uint8_t length = 0;
|
||||||
static char name[NV_EEPROM_DEVICE_NAME_SIZE+1] = "";
|
static char name[NV_EEPROM_DEVICE_NAME_SIZE+1] = "";
|
||||||
char *pName = NULL;
|
char *pName = NULL;
|
||||||
|
|
||||||
if (object_instance == Object_Instance_Number) {
|
if (object_instance == Object_Instance_Number) {
|
||||||
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_ENCODING, &encoding, 1);
|
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_ENCODING, &encoding, 1);
|
||||||
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_LENGTH, &length, 1);
|
eeprom_bytes_read(NV_EEPROM_DEVICE_NAME_LENGTH, &length, 1);
|
||||||
@@ -390,7 +390,7 @@ char *Device_Name(
|
|||||||
}
|
}
|
||||||
pName = &name[0];
|
pName = &name[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
return pName;
|
return pName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -402,9 +402,9 @@ bool Device_Reinitialize(
|
|||||||
if (characterstring_ansi_same(&rd_data->password, "rehmite")) {
|
if (characterstring_ansi_same(&rd_data->password, "rehmite")) {
|
||||||
Reinitialize_State = rd_data->state;
|
Reinitialize_State = rd_data->state;
|
||||||
dcc_set_status_duration(COMMUNICATION_ENABLE, 0);
|
dcc_set_status_duration(COMMUNICATION_ENABLE, 0);
|
||||||
/* Note: you could use a mix of state
|
/* Note: you could use a mix of state
|
||||||
and password to multiple things */
|
and password to multiple things */
|
||||||
/* note: you probably want to restart *after* the
|
/* note: you probably want to restart *after* the
|
||||||
simple ack has been sent from the return handler
|
simple ack has been sent from the return handler
|
||||||
so just set a flag from here */
|
so just set a flag from here */
|
||||||
status = true;
|
status = true;
|
||||||
@@ -412,7 +412,7 @@ bool Device_Reinitialize(
|
|||||||
rd_data->error_class = ERROR_CLASS_SECURITY;
|
rd_data->error_class = ERROR_CLASS_SECURITY;
|
||||||
rd_data->error_code = ERROR_CODE_PASSWORD_FAILURE;
|
rd_data->error_code = ERROR_CODE_PASSWORD_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -483,13 +483,13 @@ int Device_Set_System_Status(
|
|||||||
bool local)
|
bool local)
|
||||||
{
|
{
|
||||||
/*return value - 0 = ok, -1 = bad value, -2 = not allowed */
|
/*return value - 0 = ok, -1 = bad value, -2 = not allowed */
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|
||||||
if (status < MAX_DEVICE_STATUS) {
|
if (status < MAX_DEVICE_STATUS) {
|
||||||
System_Status = status;
|
System_Status = status;
|
||||||
result = 0;
|
result = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -611,7 +611,7 @@ char *Device_Valid_Object_Id(
|
|||||||
if ((pObject) && (pObject->Object_Name)) {
|
if ((pObject) && (pObject->Object_Name)) {
|
||||||
name = pObject->Object_Name(object_instance);
|
name = pObject->Object_Name(object_instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -817,7 +817,7 @@ int Device_Read_Property_Local(
|
|||||||
bool Device_Write_Property_Local(
|
bool Device_Write_Property_Local(
|
||||||
BACNET_WRITE_PROPERTY_DATA * wp_data)
|
BACNET_WRITE_PROPERTY_DATA * wp_data)
|
||||||
{
|
{
|
||||||
bool status = false; /* return value */
|
bool status = false; /* return value - false=error */
|
||||||
int len = 0;
|
int len = 0;
|
||||||
BACNET_APPLICATION_DATA_VALUE value;
|
BACNET_APPLICATION_DATA_VALUE value;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user