Added Audit Log and Time Value objects to basic device. (#1128)

* Added ListElement service callback for storing data.  

* Added Audit Log and Time Value objects to basic device.

* Added Audit Log object to Makefile and CMake builds.
This commit is contained in:
Steve Karg
2025-11-06 14:10:07 -06:00
committed by GitHub
parent 2acde643fd
commit 4e52f26823
9 changed files with 132 additions and 17 deletions
-2
View File
@@ -653,14 +653,12 @@ int Audit_Log_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
BACNET_CHARACTER_STRING char_string = { 0 };
BACNET_BIT_STRING bit_string = { 0 };
uint8_t *apdu = NULL;
int apdu_max = 0;
if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
(rpdata->application_data_len == 0)) {
return 0;
}
apdu = rpdata->application_data;
apdu_max = rpdata->application_data_len;
switch (rpdata->object_property) {
case PROP_OBJECT_IDENTIFIER:
apdu_len = encode_application_object_id(
+26
View File
@@ -666,6 +666,8 @@ static uint32_t Database_Revision = 0;
static BACNET_REINITIALIZED_STATE Reinitialize_State = BACNET_REINIT_IDLE;
static const char *Reinit_Password = "filister";
static write_property_function Device_Write_Property_Store_Callback;
static list_element_function Device_Add_List_Element_Callback;
static list_element_function Device_Remove_List_Element_Callback;
#ifdef BAC_ROUTING
static bool Device_Router_Mode = false;
@@ -2150,6 +2152,15 @@ bool Device_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data)
return (status);
}
/**
* @brief Set the callback for a Add_List_Element successful operation
* @param cb [in] The function to be called, or NULL to disable
*/
void Device_Add_List_Element_Callback_Set(list_element_function cb)
{
Device_Add_List_Element_Callback = cb;
}
/**
* @brief AddListElement from an object list property
* @param list_element [in] Pointer to the BACnet_List_Element_Data structure,
@@ -2168,6 +2179,9 @@ int Device_Add_List_Element(BACNET_LIST_ELEMENT_DATA *list_element)
pObject->Object_Valid_Instance(list_element->object_instance)) {
if (pObject->Object_Add_List_Element) {
status = pObject->Object_Add_List_Element(list_element);
if (status) {
Device_Add_List_Element_Callback(list_element);
}
} else {
list_element->error_class = ERROR_CLASS_PROPERTY;
list_element->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
@@ -2184,6 +2198,15 @@ int Device_Add_List_Element(BACNET_LIST_ELEMENT_DATA *list_element)
return status;
}
/**
* @brief Set the callback for a Remove_List_Element successful operation
* @param cb [in] The function to be called, or NULL to disable
*/
void Device_Remove_List_Element_Callback_Set(list_element_function cb)
{
Device_Remove_List_Element_Callback = cb;
}
/**
* @brief RemoveListElement from an object list property
* @param list_element [in] Pointer to the BACnet_List_Element_Data structure,
@@ -2202,6 +2225,9 @@ int Device_Remove_List_Element(BACNET_LIST_ELEMENT_DATA *list_element)
pObject->Object_Valid_Instance(list_element->object_instance)) {
if (pObject->Object_Remove_List_Element) {
status = pObject->Object_Remove_List_Element(list_element);
if (status) {
Device_Remove_List_Element_Callback(list_element);
}
} else {
list_element->error_class = ERROR_CLASS_PROPERTY;
list_element->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
+4 -1
View File
@@ -394,9 +394,12 @@ int Device_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata);
BACNET_STACK_EXPORT
bool Device_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data);
BACNET_STACK_EXPORT
void Device_Add_List_Element_Callback_Set(list_element_function cb);
BACNET_STACK_EXPORT
int Device_Add_List_Element(BACNET_LIST_ELEMENT_DATA *list_element);
BACNET_STACK_EXPORT
void Device_Remove_List_Element_Callback_Set(list_element_function cb);
BACNET_STACK_EXPORT
int Device_Remove_List_Element(BACNET_LIST_ELEMENT_DATA *list_element);