Added Time-Of-Device-Restart property to example device. (#860)
* Added Time-Of-Device-Restart property to example device. * Added BACnetTimeStamp bacapp support for encode, decode, and parse. * Added specific addresses handling to apps/writeprop bacwp command line.
This commit is contained in:
+19
-6
@@ -387,6 +387,12 @@ int bacapp_encode_application_data(
|
||||
/* Empty data list */
|
||||
apdu_len = 0; /* EMPTY */
|
||||
break;
|
||||
#if defined(BACAPP_TIMESTAMP)
|
||||
case BACNET_APPLICATION_TAG_TIMESTAMP:
|
||||
apdu_len =
|
||||
bacapp_encode_timestamp(apdu, &value->type.Time_Stamp);
|
||||
break;
|
||||
#endif
|
||||
#if defined(BACAPP_DATETIME)
|
||||
case BACNET_APPLICATION_TAG_DATETIME:
|
||||
apdu_len = bacapp_encode_datetime(apdu, &value->type.Date_Time);
|
||||
@@ -1522,18 +1528,18 @@ int bacapp_decode_application_tag_value(
|
||||
case BACNET_APPLICATION_TAG_EMPTYLIST:
|
||||
apdu_len = 0;
|
||||
break;
|
||||
#if defined(BACAPP_DATETIME)
|
||||
case BACNET_APPLICATION_TAG_DATETIME:
|
||||
apdu_len =
|
||||
bacnet_datetime_decode(apdu, apdu_size, &value->type.Date_Time);
|
||||
break;
|
||||
#endif
|
||||
#if defined(BACAPP_TIMESTAMP)
|
||||
case BACNET_APPLICATION_TAG_TIMESTAMP:
|
||||
apdu_len = bacnet_timestamp_decode(
|
||||
apdu, apdu_size, &value->type.Time_Stamp);
|
||||
break;
|
||||
#endif
|
||||
#if defined(BACAPP_DATETIME)
|
||||
case BACNET_APPLICATION_TAG_DATETIME:
|
||||
apdu_len =
|
||||
bacnet_datetime_decode(apdu, apdu_size, &value->type.Date_Time);
|
||||
break;
|
||||
#endif
|
||||
#if defined(BACAPP_DATERANGE)
|
||||
case BACNET_APPLICATION_TAG_DATERANGE:
|
||||
apdu_len = bacnet_daterange_decode(
|
||||
@@ -4339,6 +4345,13 @@ bool bacapp_parse_application_data(
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#if defined(BACAPP_TIMESTAMP)
|
||||
case BACNET_APPLICATION_TAG_TIMESTAMP:
|
||||
/* BACnetTimeStamp */
|
||||
status =
|
||||
bacapp_timestamp_init_ascii(&value->type.Time_Stamp, argv);
|
||||
break;
|
||||
#endif
|
||||
#if defined(BACAPP_DATETIME)
|
||||
case BACNET_APPLICATION_TAG_DATETIME:
|
||||
/* BACnetDateTime */
|
||||
|
||||
@@ -511,7 +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,
|
||||
PROP_SERIAL_NUMBER, PROP_TIME_OF_DEVICE_RESTART,
|
||||
#if defined(BACNET_TIME_MASTER)
|
||||
PROP_TIME_SYNCHRONIZATION_RECIPIENTS, PROP_TIME_SYNCHRONIZATION_INTERVAL,
|
||||
PROP_ALIGN_INTERVALS, PROP_INTERVAL_OFFSET,
|
||||
@@ -595,6 +595,7 @@ static char Serial_Number[MAX_DEV_DESC_LEN + 1] =
|
||||
/* static uint8_t Max_Segments_Accepted = 0; */
|
||||
/* VT_Classes_Supported */
|
||||
/* Active_VT_Sessions */
|
||||
static BACNET_TIMESTAMP Time_Of_Device_Restart;
|
||||
static BACNET_TIME Local_Time; /* rely on OS, if there is one */
|
||||
static BACNET_DATE Local_Date; /* rely on OS, if there is one */
|
||||
/* NOTE: BACnet UTC Offset is inverse of common practice.
|
||||
@@ -1565,6 +1566,10 @@ int Device_Read_Property_Local(BACNET_READ_PROPERTY_DATA *rpdata)
|
||||
apdu_len =
|
||||
encode_application_character_string(&apdu[0], &char_string);
|
||||
break;
|
||||
case PROP_TIME_OF_DEVICE_RESTART:
|
||||
apdu_len =
|
||||
bacapp_encode_timestamp(&apdu[0], &Time_Of_Device_Restart);
|
||||
break;
|
||||
default:
|
||||
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
||||
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||
@@ -1684,8 +1689,9 @@ bool Device_Write_Property_Local(BACNET_WRITE_PROPERTY_DATA *wp_data)
|
||||
#endif
|
||||
|
||||
/* decode the some of the request */
|
||||
len = bacapp_decode_application_data(
|
||||
wp_data->application_data, wp_data->application_data_len, &value);
|
||||
len = bacapp_decode_known_property(
|
||||
wp_data->application_data, wp_data->application_data_len, &value,
|
||||
wp_data->object_type, wp_data->object_property);
|
||||
if (len < 0) {
|
||||
/* error while decoding - a value larger than we can handle */
|
||||
wp_data->error_class = ERROR_CLASS_PROPERTY;
|
||||
@@ -1892,6 +1898,14 @@ bool Device_Write_Property_Local(BACNET_WRITE_PROPERTY_DATA *wp_data)
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case PROP_TIME_OF_DEVICE_RESTART:
|
||||
status = write_property_type_valid(
|
||||
wp_data, &value, BACNET_APPLICATION_TAG_TIMESTAMP);
|
||||
if (status) {
|
||||
bacapp_timestamp_copy(
|
||||
&Time_Of_Device_Restart, &value.type.Time_Stamp);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (property_lists_member(
|
||||
Device_Properties_Required, Device_Properties_Optional,
|
||||
|
||||
Reference in New Issue
Block a user