Issues/issue 787 app bacepics misses optional parameters for the device object (#789)

* Added some optional properties into the object property lists up to protocol-revision 22

* Added serial-number property to basic device object example.
This commit is contained in:
Steve Karg
2024-09-27 16:22:58 -05:00
committed by GitHub
parent 3eee88dd31
commit 7b18add6d3
5 changed files with 479 additions and 110 deletions
+37
View File
@@ -511,6 +511,7 @@ static const int Device_Properties_Optional[] = {
#endif
PROP_DESCRIPTION, PROP_LOCAL_TIME, PROP_UTC_OFFSET, PROP_LOCAL_DATE,
PROP_DAYLIGHT_SAVINGS_STATUS, PROP_LOCATION, PROP_ACTIVE_COV_SUBSCRIPTIONS,
PROP_SERIAL_NUMBER,
#if defined(BACNET_TIME_MASTER)
PROP_TIME_SYNCHRONIZATION_RECIPIENTS, PROP_TIME_SYNCHRONIZATION_INTERVAL,
PROP_ALIGN_INTERVALS, PROP_INTERVAL_OFFSET,
@@ -583,6 +584,8 @@ static char Application_Software_Version[MAX_DEV_VER_LEN + 1] = "1.0";
static const char *BACnet_Version = BACNET_VERSION_TEXT;
static char Location[MAX_DEV_LOC_LEN + 1] = "USA";
static char Description[MAX_DEV_DESC_LEN + 1] = "server";
static char Serial_Number[MAX_DEV_DESC_LEN + 1] =
"BACnetDMcN56RBkeDJuNfxn3M44tfC2Y";
/* static uint8_t Protocol_Version = 1; - constant, not settable */
/* static uint8_t Protocol_Revision = 4; - constant, not settable */
/* Protocol_Services_Supported - dynamically generated */
@@ -968,6 +971,35 @@ bool Device_Set_Location(const char *name, size_t length)
return status;
}
/**
* @brief Get the device serial-number property value.
* @return The device serial-number, as a character string.
*/
const char *Device_Serial_Number(void)
{
return Serial_Number;
}
/**
* @brief Set the device serial-number property value.
* @param str [in] The new device serial-number, as a character string.
* @param length [in] The number of characters in the string.
* @return true if the device serial-number was set, false if the value was
* too long to store in the object.
*/
bool Device_Serial_Number_Set(const char *str, size_t length)
{
bool status = false; /*return value */
if (length < sizeof(Serial_Number)) {
memmove(Serial_Number, str, length);
Serial_Number[length] = 0;
status = true;
}
return status;
}
uint8_t Device_Protocol_Version(void)
{
return BACNET_PROTOCOL_VERSION;
@@ -1504,6 +1536,11 @@ int Device_Read_Property_Local(BACNET_READ_PROPERTY_DATA *rpdata)
apdu_len = BACNET_STATUS_ABORT;
}
break;
case PROP_SERIAL_NUMBER:
characterstring_init_ansi(&char_string, Serial_Number);
apdu_len =
encode_application_character_string(&apdu[0], &char_string);
break;
default:
rpdata->error_class = ERROR_CLASS_PROPERTY;
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
+5
View File
@@ -346,6 +346,11 @@ const char *Device_Location(void);
BACNET_STACK_EXPORT
bool Device_Set_Location(const char *name, size_t length);
BACNET_STACK_EXPORT
const char *Device_Serial_Number(void);
BACNET_STACK_EXPORT
bool Device_Serial_Number_Set(const char *name, size_t length);
/* some stack-centric constant values - no set methods */
BACNET_STACK_EXPORT
uint8_t Device_Protocol_Version(void);