diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ec6d266..9ea477d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ The git repositories are hosted at the following sites: * https://bacnet.sourceforge.net/ * https://github.com/bacnet-stack/bacnet-stack/ -## [Unreleased] - 2026-01-05 +## [Unreleased] - 2026-01-15 ### Security @@ -32,6 +32,8 @@ The git repositories are hosted at the following sites: ### Added +* Added device WriteProperty callbacks for Timer object in example device + objects implementations. (#1203) * Added file path name checking for AtomicReadFile and AtomicWriteFile example applications. Prohibits use of relative and absolute file paths when BACNET_FILE_PATH_RESTRICTED is defined non-zero. (#1197) diff --git a/src/bacnet/basic/object/device.c b/src/bacnet/basic/object/device.c index 0bd01571..6e75ecc8 100644 --- a/src/bacnet/basic/object/device.c +++ b/src/bacnet/basic/object/device.c @@ -96,6 +96,14 @@ static object_functions_t My_Object_Table[] = { NULL /* COV */, NULL /* COV Clear */, NULL /* Intrinsic Reporting */, NULL /* Add_List_Element */, NULL /* Remove_List_Element */, NULL /* Create */, NULL /* Delete */, NULL /* Timer */ }, + { OBJECT_TIMER, Timer_Init, Timer_Count, + Timer_Index_To_Instance, Timer_Valid_Instance, + Timer_Object_Name, Timer_Read_Property, + Timer_Write_Property, Timer_Property_Lists, + NULL /* ReadRangeInfo */, NULL /* Iterator */, NULL /* Value_Lists */, + NULL /* COV */, NULL /* COV Clear */, NULL /* Intrinsic Reporting */, + Timer_Add_List_Element, Timer_Remove_List_Element, + Timer_Create, Timer_Delete, Timer_Task }, #endif { OBJECT_ANALOG_INPUT, Analog_Input_Init, Analog_Input_Count, Analog_Input_Index_To_Instance, Analog_Input_Valid_Instance, @@ -209,14 +217,6 @@ static object_functions_t My_Object_Table[] = { NULL /* COV */, NULL /* COV Clear */, NULL /* Intrinsic Reporting */, NULL /* Add_List_Element */, NULL /* Remove_List_Element */, NULL /* Create */, NULL /* Delete */, NULL /* Timer */ }, - { OBJECT_TIMER, Timer_Init, Timer_Count, - Timer_Index_To_Instance, Timer_Valid_Instance, - Timer_Object_Name, Timer_Read_Property, - Timer_Write_Property, Timer_Property_Lists, - NULL /* ReadRangeInfo */, NULL /* Iterator */, NULL /* Value_Lists */, - NULL /* COV */, NULL /* COV Clear */, NULL /* Intrinsic Reporting */, - Timer_Add_List_Element, Timer_Remove_List_Element, - Timer_Create, Timer_Delete, Timer_Task }, { OBJECT_INTEGER_VALUE, Integer_Value_Init, Integer_Value_Count, Integer_Value_Index_To_Instance, Integer_Value_Valid_Instance, Integer_Value_Object_Name, Integer_Value_Read_Property, @@ -2523,6 +2523,10 @@ void Device_Init(object_functions_t *object_table) /* link ReadProperty and WriteProperty to Loop object for references */ Loop_Read_Property_Internal_Callback_Set(Device_Read_Property); Loop_Write_Property_Internal_Callback_Set(Device_Write_Property); +#if (BACNET_PROTOCOL_REVISION >= 17) + /* link WriteProperty to Timer object for references */ + Timer_Write_Property_Internal_Callback_Set(Device_Write_Property); +#endif } bool DeviceGetRRInfo( diff --git a/src/bacnet/basic/server/bacnet_device.c b/src/bacnet/basic/server/bacnet_device.c index d7bfdc9e..e6ccec61 100644 --- a/src/bacnet/basic/server/bacnet_device.c +++ b/src/bacnet/basic/server/bacnet_device.c @@ -2919,6 +2919,7 @@ void Device_Init(object_functions_t *object_table) characterstring_init_ansi(&My_Object_Name, Device_Name_Default); #if (BACNET_PROTOCOL_REVISION >= 14) #ifdef CONFIG_BACNET_BASIC_OBJECT_CHANNEL + /* link WriteProperty to Channel object for references */ Channel_Write_Property_Internal_Callback_Set(Device_Write_Property); #endif #endif @@ -2927,6 +2928,10 @@ void Device_Init(object_functions_t *object_table) Loop_Read_Property_Internal_Callback_Set(Device_Read_Property); Loop_Write_Property_Internal_Callback_Set(Device_Write_Property); #endif +#ifdef CONFIG_BACNET_BASIC_OBJECT_TIMER + /* link WriteProperty to Timer object for references */ + Timer_Write_Property_Internal_Callback_Set(Device_Write_Property); +#endif } bool DeviceGetRRInfo(