diff --git a/src/bacnet/basic/object/ai.c b/src/bacnet/basic/object/ai.c index 2bd170fa..016cb435 100644 --- a/src/bacnet/basic/object/ai.c +++ b/src/bacnet/basic/object/ai.c @@ -1655,6 +1655,38 @@ int Analog_Input_Alarm_Summary( } #endif /* defined(INTRINSIC_REPORTING) */ +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Analog_Input_Context_Get(uint32_t object_instance) +{ + struct analog_input_descr *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Analog_Input_Context_Set(uint32_t object_instance, void *context) +{ + struct analog_input_descr *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Analog Input object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/ai.h b/src/bacnet/basic/object/ai.h index d7294922..2a1acc24 100644 --- a/src/bacnet/basic/object/ai.h +++ b/src/bacnet/basic/object/ai.h @@ -34,6 +34,7 @@ typedef struct analog_input_descr { bool Changed; const char *Object_Name; const char *Description; + void *Context; #if defined(INTRINSIC_REPORTING) uint32_t Time_Delay; uint32_t Notification_Class; @@ -205,6 +206,11 @@ int Analog_Input_Alarm_Summary( unsigned index, BACNET_GET_ALARM_SUMMARY_DATA *getalarm_data); #endif +BACNET_STACK_EXPORT +void *Analog_Input_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Analog_Input_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Analog_Input_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/ao.c b/src/bacnet/basic/object/ao.c index b6f9b363..7b724178 100644 --- a/src/bacnet/basic/object/ao.c +++ b/src/bacnet/basic/object/ao.c @@ -46,6 +46,7 @@ struct object_data { uint8_t Reliability; const char *Object_Name; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -1257,6 +1258,38 @@ void Analog_Output_Write_Present_Value_Callback_Set( Analog_Output_Write_Present_Value_Callback = cb; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Analog_Output_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Analog_Output_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Analog Output object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/ao.h b/src/bacnet/basic/object/ao.h index a5bc9625..6dcf9aa2 100644 --- a/src/bacnet/basic/object/ao.h +++ b/src/bacnet/basic/object/ao.h @@ -132,6 +132,11 @@ int Analog_Output_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata); BACNET_STACK_EXPORT bool Analog_Output_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data); +BACNET_STACK_EXPORT +void *Analog_Output_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Analog_Output_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Analog_Output_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/auditlog.c b/src/bacnet/basic/object/auditlog.c index dd49d6ac..26a97028 100644 --- a/src/bacnet/basic/object/auditlog.c +++ b/src/bacnet/basic/object/auditlog.c @@ -103,6 +103,7 @@ struct object_data { int Record_Count_Total; const char *Object_Name; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -1378,6 +1379,38 @@ int Audit_Log_Read_Range_By_Time(BACNET_READ_RANGE_DATA *pRequest) return apdu_len; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Audit_Log_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Audit_Log_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Audit Log object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/auditlog.h b/src/bacnet/basic/object/auditlog.h index a07ac14b..a68fd194 100644 --- a/src/bacnet/basic/object/auditlog.h +++ b/src/bacnet/basic/object/auditlog.h @@ -69,6 +69,12 @@ BACNET_STACK_EXPORT int Audit_Log_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata); BACNET_STACK_EXPORT bool Audit_Log_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data); + +BACNET_STACK_EXPORT +void *Audit_Log_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Audit_Log_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Audit_Log_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/av.c b/src/bacnet/basic/object/av.c index 47227885..455c4876 100644 --- a/src/bacnet/basic/object/av.c +++ b/src/bacnet/basic/object/av.c @@ -1725,6 +1725,38 @@ int Analog_Value_Alarm_Summary( } #endif /* defined(INTRINSIC_REPORTING) */ +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Analog_Value_Context_Get(uint32_t object_instance) +{ + struct analog_value_descr *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Analog_Value_Context_Set(uint32_t object_instance, void *context) +{ + struct analog_value_descr *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Analog Value object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/av.h b/src/bacnet/basic/object/av.h index 20f3cf06..41105c63 100644 --- a/src/bacnet/basic/object/av.h +++ b/src/bacnet/basic/object/av.h @@ -36,6 +36,7 @@ typedef struct analog_value_descr { const char *Object_Name; const char *Description; BACNET_RELIABILITY Reliability; + void *Context; #if defined(INTRINSIC_REPORTING) uint32_t Time_Delay; uint32_t Notification_Class; @@ -219,6 +220,11 @@ int Analog_Value_Alarm_Summary( unsigned index, BACNET_GET_ALARM_SUMMARY_DATA *getalarm_data); #endif +BACNET_STACK_EXPORT +void *Analog_Value_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Analog_Value_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Analog_Value_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/bacfile.c b/src/bacnet/basic/object/bacfile.c index 7beff35d..99e4ec57 100644 --- a/src/bacnet/basic/object/bacfile.c +++ b/src/bacnet/basic/object/bacfile.c @@ -36,6 +36,7 @@ struct object_data { char *Object_Name; char *Pathname; char *File_Type; + void *Context; BACNET_DATE_TIME Modification_Date; bool File_Access_Stream : 1; bool Read_Only : 1; @@ -1148,6 +1149,38 @@ bool bacfile_read_ack_record_data( return found; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *bacfile_create_context_get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void bacfile_create_context_set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a File object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/bacfile.h b/src/bacnet/basic/object/bacfile.h index bb71dff4..a8a40083 100644 --- a/src/bacnet/basic/object/bacfile.h +++ b/src/bacnet/basic/object/bacfile.h @@ -134,6 +134,11 @@ void bacfile_file_size_callback_set(size_t (*callback)(const char *)); BACNET_STACK_EXPORT void bacfile_file_size_set_callback_set(bool (*callback)(const char *, size_t)); +BACNET_STACK_EXPORT +void *bacfile_context_get(uint32_t object_instance); +BACNET_STACK_EXPORT +void bacfile_context_set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t bacfile_create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/bi.c b/src/bacnet/basic/object/bi.c index 00f3ae9f..1a9239b0 100644 --- a/src/bacnet/basic/object/bi.c +++ b/src/bacnet/basic/object/bi.c @@ -44,6 +44,7 @@ struct object_data { const char *Active_Text; const char *Inactive_Text; const char *Description; + void *Context; #if defined(INTRINSIC_REPORTING) && (BINARY_INPUT_INTRINSIC_REPORTING) uint32_t Time_Delay; uint32_t Notification_Class; @@ -1285,6 +1286,38 @@ void Binary_Input_Write_Disable(uint32_t object_instance) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Binary_Input_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Binary_Input_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * Creates a Binary Input object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/bi.h b/src/bacnet/basic/object/bi.h index 054944e6..668a893b 100644 --- a/src/bacnet/basic/object/bi.h +++ b/src/bacnet/basic/object/bi.h @@ -127,6 +127,11 @@ void Binary_Input_Write_Enable(uint32_t instance); BACNET_STACK_EXPORT void Binary_Input_Write_Disable(uint32_t instance); +BACNET_STACK_EXPORT +void *Binary_Input_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Binary_Input_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Binary_Input_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/bitstring_value.c b/src/bacnet/basic/object/bitstring_value.c index dca2e336..b07deb24 100644 --- a/src/bacnet/basic/object/bitstring_value.c +++ b/src/bacnet/basic/object/bitstring_value.c @@ -33,6 +33,7 @@ struct object_data { BACNET_RELIABILITY Reliability; const char *Object_Name; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -789,6 +790,38 @@ void BitString_Value_Write_Disable(uint32_t object_instance) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *BitString_Value_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void BitString_Value_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * Creates a BitString Value object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/bitstring_value.h b/src/bacnet/basic/object/bitstring_value.h index e15c64f8..41eefc43 100644 --- a/src/bacnet/basic/object/bitstring_value.h +++ b/src/bacnet/basic/object/bitstring_value.h @@ -107,6 +107,11 @@ void BitString_Value_Write_Enable(uint32_t instance); BACNET_STACK_EXPORT void BitString_Value_Write_Disable(uint32_t instance); +BACNET_STACK_EXPORT +void *BitString_Value_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void BitString_Value_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t BitString_Value_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/blo.c b/src/bacnet/basic/object/blo.c index 26e7543e..23961df7 100644 --- a/src/bacnet/basic/object/blo.c +++ b/src/bacnet/basic/object/blo.c @@ -26,6 +26,7 @@ /* object property values */ struct object_data { + void *Context; const char *Object_Name; const char *Description; BACNET_RELIABILITY Reliability; @@ -1517,6 +1518,38 @@ void Binary_Lighting_Output_Blink_Warn_Callback_Set( Binary_Lighting_Output_Blink_Warn_Callback = cb; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Binary_Lighting_Output_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Binary_Lighting_Output_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Color object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/blo.h b/src/bacnet/basic/object/blo.h index 9de99a65..f1bc06e9 100644 --- a/src/bacnet/basic/object/blo.h +++ b/src/bacnet/basic/object/blo.h @@ -154,6 +154,12 @@ BACNET_STACK_EXPORT void Binary_Lighting_Output_Blink_Warn_Callback_Set( binary_lighting_output_blink_warn_callback cb); +BACNET_STACK_EXPORT +void *Binary_Lighting_Output_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Binary_Lighting_Output_Context_Set( + uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Binary_Lighting_Output_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/bo.c b/src/bacnet/basic/object/bo.c index 6cadcc17..8eeffd1f 100644 --- a/src/bacnet/basic/object/bo.c +++ b/src/bacnet/basic/object/bo.c @@ -46,6 +46,7 @@ struct object_data { const char *Active_Text; const char *Inactive_Text; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -1242,6 +1243,38 @@ void Binary_Output_Write_Present_Value_Callback_Set( Binary_Output_Write_Present_Value_Callback = cb; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Binary_Output_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Binary_Output_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Binary Output object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/bo.h b/src/bacnet/basic/object/bo.h index 28b485c6..7ba41798 100644 --- a/src/bacnet/basic/object/bo.h +++ b/src/bacnet/basic/object/bo.h @@ -134,6 +134,11 @@ int Binary_Output_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata); BACNET_STACK_EXPORT bool Binary_Output_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data); +BACNET_STACK_EXPORT +void *Binary_Output_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Binary_Output_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Binary_Output_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/bv.c b/src/bacnet/basic/object/bv.c index 4e79e871..bdbebaa0 100644 --- a/src/bacnet/basic/object/bv.c +++ b/src/bacnet/basic/object/bv.c @@ -43,6 +43,7 @@ struct object_data { const char *Active_Text; const char *Inactive_Text; const char *Description; + void *Context; #if defined(INTRINSIC_REPORTING) && (BINARY_VALUE_INTRINSIC_REPORTING) uint32_t Time_Delay; uint32_t Notification_Class; @@ -1187,6 +1188,38 @@ void Binary_Value_Write_Disable(uint32_t object_instance) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Binary_Value_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Binary_Value_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Binary Value object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/bv.h b/src/bacnet/basic/object/bv.h index 3940e1c9..075f8a5a 100644 --- a/src/bacnet/basic/object/bv.h +++ b/src/bacnet/basic/object/bv.h @@ -120,6 +120,11 @@ const char *Binary_Value_Active_Text(uint32_t instance); BACNET_STACK_EXPORT bool Binary_Value_Active_Text_Set(uint32_t instance, const char *new_name); +BACNET_STACK_EXPORT +void *Binary_Value_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Binary_Value_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Binary_Value_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/calendar.c b/src/bacnet/basic/object/calendar.c index 4b872417..cc5331e8 100644 --- a/src/bacnet/basic/object/calendar.c +++ b/src/bacnet/basic/object/calendar.c @@ -40,6 +40,7 @@ struct object_data { OS_Keylist Date_List; const char *Object_Name; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -667,6 +668,38 @@ void Calendar_Write_Disable(uint32_t object_instance) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Calendar_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Calendar_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * Creates a Calendar object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/calendar.h b/src/bacnet/basic/object/calendar.h index 1a446dd5..cddf2f38 100644 --- a/src/bacnet/basic/object/calendar.h +++ b/src/bacnet/basic/object/calendar.h @@ -89,6 +89,11 @@ void Calendar_Write_Enable(uint32_t instance); BACNET_STACK_EXPORT void Calendar_Write_Disable(uint32_t instance); +BACNET_STACK_EXPORT +void *Calendar_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Calendar_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Calendar_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/channel.c b/src/bacnet/basic/object/channel.c index 0516ef1a..6afd4c1f 100644 --- a/src/bacnet/basic/object/channel.c +++ b/src/bacnet/basic/object/channel.c @@ -47,6 +47,7 @@ struct object_data { uint32_t Control_Groups[CONTROL_GROUPS_MAX]; const char *Object_Name; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ @@ -1379,6 +1380,38 @@ void Channel_Write_Property_Internal_Callback_Set(write_property_function cb) Write_Property_Internal_Callback = cb; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Channel_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Channel_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a new object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/channel.h b/src/bacnet/basic/object/channel.h index a5962cec..c3278fff 100644 --- a/src/bacnet/basic/object/channel.h +++ b/src/bacnet/basic/object/channel.h @@ -103,6 +103,11 @@ bool Channel_Write_Member_Value( BACNET_STACK_EXPORT void Channel_Write_Property_Internal_Callback_Set(write_property_function cb); +BACNET_STACK_EXPORT +void *Channel_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Channel_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Channel_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/color_object.c b/src/bacnet/basic/object/color_object.c index c510df80..189d1836 100644 --- a/src/bacnet/basic/object/color_object.c +++ b/src/bacnet/basic/object/color_object.c @@ -55,6 +55,7 @@ struct object_data { BACNET_COLOR_TRANSITION Transition; const char *Object_Name; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -1132,6 +1133,38 @@ void Color_Write_Disable(uint32_t object_instance) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Color_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Color_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Color object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/color_object.h b/src/bacnet/basic/object/color_object.h index 4914caba..01ddb84e 100644 --- a/src/bacnet/basic/object/color_object.h +++ b/src/bacnet/basic/object/color_object.h @@ -118,6 +118,11 @@ void Color_Write_Disable(uint32_t instance); BACNET_STACK_EXPORT void Color_Timer(uint32_t object_instance, uint16_t milliseconds); +BACNET_STACK_EXPORT +void *Color_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Color_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Color_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/color_temperature.c b/src/bacnet/basic/object/color_temperature.c index d8179d96..53e0b97d 100644 --- a/src/bacnet/basic/object/color_temperature.c +++ b/src/bacnet/basic/object/color_temperature.c @@ -48,6 +48,7 @@ struct object_data { uint32_t Present_Value_Maximum; const char *Object_Name; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -1575,6 +1576,38 @@ void Color_Temperature_Write_Disable(uint32_t object_instance) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Color_Temperature_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Color_Temperature_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Color Temperature object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/color_temperature.h b/src/bacnet/basic/object/color_temperature.h index 10099967..89bcfe55 100644 --- a/src/bacnet/basic/object/color_temperature.h +++ b/src/bacnet/basic/object/color_temperature.h @@ -141,6 +141,11 @@ void Color_Temperature_Write_Disable(uint32_t instance); BACNET_STACK_EXPORT void Color_Temperature_Timer(uint32_t object_instance, uint16_t milliseconds); +BACNET_STACK_EXPORT +void *Color_Temperature_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Color_Temperature_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Color_Temperature_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/csv.c b/src/bacnet/basic/object/csv.c index 08ed8cd0..547ce6fb 100644 --- a/src/bacnet/basic/object/csv.c +++ b/src/bacnet/basic/object/csv.c @@ -51,6 +51,7 @@ typedef struct characterstring_object { BACNET_CHARACTER_STRING Present_Value; const char *Object_Name; const char *Description; + void *Context; } CHARACTERSTRING_VALUE_DESCR; /** @@ -77,6 +78,38 @@ void CharacterString_Value_Property_Lists( return; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *CharacterString_Value_Context_Get(uint32_t object_instance) +{ + struct characterstring_object *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void CharacterString_Value_Context_Set(uint32_t object_instance, void *context) +{ + struct characterstring_object *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a CharacterString Value object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/csv.h b/src/bacnet/basic/object/csv.h index 577d2697..c8cca021 100644 --- a/src/bacnet/basic/object/csv.h +++ b/src/bacnet/basic/object/csv.h @@ -24,12 +24,6 @@ BACNET_STACK_EXPORT void CharacterString_Value_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); -BACNET_STACK_EXPORT -uint32_t CharacterString_Value_Create(uint32_t object_instance); -BACNET_STACK_EXPORT -bool CharacterString_Value_Delete(uint32_t object_instance); -BACNET_STACK_EXPORT -void CharacterString_Value_Cleanup(void); BACNET_STACK_EXPORT bool CharacterString_Value_Valid_Instance(uint32_t object_instance); BACNET_STACK_EXPORT @@ -85,6 +79,18 @@ BACNET_STACK_EXPORT bool CharacterString_Value_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE *value_list); +BACNET_STACK_EXPORT +void *CharacterString_Value_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void CharacterString_Value_Context_Set(uint32_t object_instance, void *context); + +BACNET_STACK_EXPORT +uint32_t CharacterString_Value_Create(uint32_t object_instance); +BACNET_STACK_EXPORT +bool CharacterString_Value_Delete(uint32_t object_instance); + +BACNET_STACK_EXPORT +void CharacterString_Value_Cleanup(void); BACNET_STACK_EXPORT void CharacterString_Value_Init(void); diff --git a/src/bacnet/basic/object/iv.c b/src/bacnet/basic/object/iv.c index 005efdc6..f9895596 100644 --- a/src/bacnet/basic/object/iv.c +++ b/src/bacnet/basic/object/iv.c @@ -46,6 +46,7 @@ struct integer_object { uint32_t Instance; const char *Object_Name; const char *Description; + void *Context; } INTERGER_VALUE_DESCR; /* These three arrays are used by the ReadPropertyMultiple handler */ @@ -719,6 +720,38 @@ void Integer_Value_COV_Increment_Set(uint32_t object_instance, uint32_t value) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Integer_Value_Context_Get(uint32_t object_instance) +{ + struct integer_object *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Integer_Value_Context_Set(uint32_t object_instance, void *context) +{ + struct integer_object *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Integer Value object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/iv.h b/src/bacnet/basic/object/iv.h index 918a533b..dafb998c 100644 --- a/src/bacnet/basic/object/iv.h +++ b/src/bacnet/basic/object/iv.h @@ -96,16 +96,19 @@ BACNET_STACK_EXPORT void Integer_Value_Out_Of_Service_Set(uint32_t instance, bool oos_flag); BACNET_STACK_EXPORT -void Integer_Value_Init(void); +void *Integer_Value_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Integer_Value_Context_Set(uint32_t object_instance, void *context); BACNET_STACK_EXPORT uint32_t Integer_Value_Create(uint32_t object_instance); - BACNET_STACK_EXPORT bool Integer_Value_Delete(uint32_t object_instance); BACNET_STACK_EXPORT void Integer_Value_Cleanup(void); +BACNET_STACK_EXPORT +void Integer_Value_Init(void); #ifdef __cplusplus } diff --git a/src/bacnet/basic/object/lc.c b/src/bacnet/basic/object/lc.c index deac1fb0..676a5e3e 100644 --- a/src/bacnet/basic/object/lc.c +++ b/src/bacnet/basic/object/lc.c @@ -33,6 +33,7 @@ #define LOAD_CONTROL_TASK_INTERVAL_MS 1000UL struct object_data { + void *Context; const char *Object_Name; const char *Description; /* indicates the current load shedding state of the object */ @@ -1664,6 +1665,38 @@ bool Load_Control_Shed_Level_Array( return true; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Load_Control_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Load_Control_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Load Control object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/lc.h b/src/bacnet/basic/object/lc.h index d0dc18cf..bb49c589 100644 --- a/src/bacnet/basic/object/lc.h +++ b/src/bacnet/basic/object/lc.h @@ -110,6 +110,11 @@ bool Load_Control_Shed_Level_Array( uint32_t array_entry, struct shed_level_data *value); +BACNET_STACK_EXPORT +void *Load_Control_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Load_Control_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Load_Control_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/lo.c b/src/bacnet/basic/object/lo.c index 83c932b5..6e838a9a 100644 --- a/src/bacnet/basic/object/lo.c +++ b/src/bacnet/basic/object/lo.c @@ -51,6 +51,7 @@ struct object_data { BACNET_OBJECT_ID Override_Color_Reference; const char *Object_Name; const char *Description; + void *Context; /* bits */ bool Blink_Warn_Enable : 1; bool Egress_Active : 1; @@ -3377,6 +3378,38 @@ void Lighting_Output_Write_Present_Value_Callback_Set( Lighting_Command_Tracking_Value_Callback = cb; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Lighting_Output_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Lighting_Output_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a Color object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/lo.h b/src/bacnet/basic/object/lo.h index f213bb9b..876d80fc 100644 --- a/src/bacnet/basic/object/lo.h +++ b/src/bacnet/basic/object/lo.h @@ -221,6 +221,11 @@ BACNET_STACK_EXPORT void Lighting_Output_Write_Present_Value_Callback_Set( lighting_command_tracking_value_callback cb); +BACNET_STACK_EXPORT +void *Lighting_Output_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Lighting_Output_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Lighting_Output_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/lsp.c b/src/bacnet/basic/object/lsp.c index b0757989..fa133ebe 100644 --- a/src/bacnet/basic/object/lsp.c +++ b/src/bacnet/basic/object/lsp.c @@ -30,6 +30,7 @@ struct object_data { BACNET_LIFE_SAFETY_OPERATION Operation_Expected; uint8_t Reliability; const char *Object_Name; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -667,6 +668,38 @@ bool Life_Safety_Point_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data) return status; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Life_Safety_Point_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Life_Safety_Point_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates an object and initialize its properties to defaults * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/lsp.h b/src/bacnet/basic/object/lsp.h index f4d1e1f9..9ad332c8 100644 --- a/src/bacnet/basic/object/lsp.h +++ b/src/bacnet/basic/object/lsp.h @@ -81,6 +81,11 @@ int Life_Safety_Point_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata); BACNET_STACK_EXPORT bool Life_Safety_Point_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data); +BACNET_STACK_EXPORT +void *Life_Safety_Point_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Life_Safety_Point_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Life_Safety_Point_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/lsz.c b/src/bacnet/basic/object/lsz.c index b8953e53..f2005a8d 100644 --- a/src/bacnet/basic/object/lsz.c +++ b/src/bacnet/basic/object/lsz.c @@ -40,6 +40,7 @@ struct object_data { uint8_t Reliability; const char *Object_Name; OS_Keylist Zone_Members; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -844,6 +845,38 @@ bool Life_Safety_Zone_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data) return status; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Life_Safety_Zone_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Life_Safety_Zone_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates an object and initialize its properties to defaults * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/lsz.h b/src/bacnet/basic/object/lsz.h index 364566b1..7cd8e470 100644 --- a/src/bacnet/basic/object/lsz.h +++ b/src/bacnet/basic/object/lsz.h @@ -94,6 +94,11 @@ int Life_Safety_Zone_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata); BACNET_STACK_EXPORT bool Life_Safety_Zone_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data); +BACNET_STACK_EXPORT +void *Life_Safety_Zone_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Life_Safety_Zone_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Life_Safety_Zone_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/ms-input.c b/src/bacnet/basic/object/ms-input.c index f1175a4e..1bd98da0 100644 --- a/src/bacnet/basic/object/ms-input.c +++ b/src/bacnet/basic/object/ms-input.c @@ -33,6 +33,7 @@ struct object_data { /* The state text functions expect a list of C strings separated by '\0' */ const char *State_Text; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -951,6 +952,38 @@ void Multistate_Input_Write_Disable(uint32_t object_instance) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Multistate_Input_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Multistate_Input_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a new object and adds it to the object list * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/ms-input.h b/src/bacnet/basic/object/ms-input.h index 9e351674..c8c0c1a0 100644 --- a/src/bacnet/basic/object/ms-input.h +++ b/src/bacnet/basic/object/ms-input.h @@ -117,6 +117,11 @@ BACNET_STACK_EXPORT const char * Multistate_Input_State_Text(uint32_t object_instance, uint32_t state_index); +BACNET_STACK_EXPORT +void *Multistate_Input_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Multistate_Input_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Multistate_Input_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/mso.c b/src/bacnet/basic/object/mso.c index 7bfc77b4..c20e2381 100644 --- a/src/bacnet/basic/object/mso.c +++ b/src/bacnet/basic/object/mso.c @@ -42,6 +42,7 @@ struct object_data { /* The state text functions expect a list of C strings separated by '\0' */ const char *State_Text; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -1245,6 +1246,38 @@ void Multistate_Output_Write_Present_Value_Callback_Set( Multistate_Output_Write_Present_Value_Callback = cb; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Multistate_Output_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Multistate_Output_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a new object and adds it to the object list * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/mso.h b/src/bacnet/basic/object/mso.h index 0649d00a..a4c391d3 100644 --- a/src/bacnet/basic/object/mso.h +++ b/src/bacnet/basic/object/mso.h @@ -125,6 +125,11 @@ BACNET_STACK_EXPORT bool Multistate_Output_Relinquish_Default_Set( uint32_t object_instance, uint32_t value); +BACNET_STACK_EXPORT +void *Multistate_Output_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Multistate_Output_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Multistate_Output_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/msv.c b/src/bacnet/basic/object/msv.c index 3a1d2817..c53910de 100644 --- a/src/bacnet/basic/object/msv.c +++ b/src/bacnet/basic/object/msv.c @@ -33,6 +33,7 @@ struct object_data { /* The state text functions expect a list of C strings separated by '\0' */ const char *State_Text; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ static OS_Keylist Object_List; @@ -953,6 +954,38 @@ void Multistate_Value_Write_Disable(uint32_t object_instance) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Multistate_Value_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Multistate_Value_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * @brief Creates a new object and adds it to the object list * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/msv.h b/src/bacnet/basic/object/msv.h index 0ea4137b..ef71825d 100644 --- a/src/bacnet/basic/object/msv.h +++ b/src/bacnet/basic/object/msv.h @@ -116,6 +116,11 @@ BACNET_STACK_EXPORT bool Multistate_Value_Reliability_Set( uint32_t object_instance, BACNET_RELIABILITY value); +BACNET_STACK_EXPORT +void *Multistate_Value_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Multistate_Value_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Multistate_Value_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/netport.c b/src/bacnet/basic/object/netport.c index d35ae37d..ce705760 100644 --- a/src/bacnet/basic/object/netport.c +++ b/src/bacnet/basic/object/netport.c @@ -114,6 +114,7 @@ struct object_data { float Link_Speed; bacnet_network_port_activate_changes Activate_Changes; bacnet_network_port_discard_changes Discard_Changes; + void *Context; union { struct bacnet_ipv4_port IPv4; struct bacnet_ipv6_port IPv6; @@ -4753,6 +4754,38 @@ void Network_Port_Cleanup(void) #endif } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Network_Port_Context_Get(uint32_t object_instance) +{ + unsigned index = 0; + + index = Network_Port_Instance_To_Index(object_instance); + if (index < BACNET_NETWORK_PORTS_MAX) { + return Object_List[index].Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Network_Port_Context_Set(uint32_t object_instance, void *context) +{ + unsigned index = 0; + + index = Network_Port_Instance_To_Index(object_instance); + if (index < BACNET_NETWORK_PORTS_MAX) { + Object_List[index].Context = context; + } +} + /** * Initializes the Network Port object data */ diff --git a/src/bacnet/basic/object/netport.h b/src/bacnet/basic/object/netport.h index 64392c21..e6a389c1 100644 --- a/src/bacnet/basic/object/netport.h +++ b/src/bacnet/basic/object/netport.h @@ -386,6 +386,11 @@ BACNET_STACK_EXPORT bool Network_Port_Read_Range( BACNET_READ_RANGE_DATA *pRequest, RR_PROP_INFO *pInfo); +BACNET_STACK_EXPORT +void *Network_Port_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Network_Port_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Network_Port_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/structured_view.c b/src/bacnet/basic/object/structured_view.c index 5c3fd78e..27130a82 100644 --- a/src/bacnet/basic/object/structured_view.c +++ b/src/bacnet/basic/object/structured_view.c @@ -37,6 +37,7 @@ struct object_data { const char *Description; BACNET_NODE_TYPE Node_Type; const char *Node_Subtype; + void *Context; BACNET_SUBORDINATE_DATA *Subordinate_List; BACNET_RELATIONSHIP Default_Subordinate_Relationship; BACNET_DEVICE_OBJECT_REFERENCE Represents; @@ -777,6 +778,38 @@ int Structured_View_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata) return apdu_len; } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Structured_View_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Structured_View_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * Creates a Structured View object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/structured_view.h b/src/bacnet/basic/object/structured_view.h index ee8337cc..21e96643 100644 --- a/src/bacnet/basic/object/structured_view.h +++ b/src/bacnet/basic/object/structured_view.h @@ -113,6 +113,11 @@ BACNET_STACK_EXPORT bool Structured_View_Represents_Set( uint32_t object_instance, const BACNET_DEVICE_OBJECT_REFERENCE *represents); +BACNET_STACK_EXPORT +void *Structured_View_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Structured_View_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Structured_View_Create(uint32_t object_instance); BACNET_STACK_EXPORT diff --git a/src/bacnet/basic/object/time_value.c b/src/bacnet/basic/object/time_value.c index 0513750c..748c0b90 100644 --- a/src/bacnet/basic/object/time_value.c +++ b/src/bacnet/basic/object/time_value.c @@ -40,6 +40,7 @@ struct object_data { BACNET_TIME Present_Value; const char *Object_Name; const char *Description; + void *Context; }; /* Key List for storing the object data sorted by instance number */ @@ -763,6 +764,38 @@ void Time_Value_Write_Disable(uint32_t object_instance) } } +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void *Time_Value_Context_Get(uint32_t object_instance) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + return pObject->Context; + } + + return NULL; +} + +/** + * @brief Set the context used with a specific object instance + * @param object_instance [in] BACnet object instance number + * @param context [in] pointer to the context + */ +void Time_Value_Context_Set(uint32_t object_instance, void *context) +{ + struct object_data *pObject; + + pObject = Keylist_Data(Object_List, object_instance); + if (pObject) { + pObject->Context = context; + } +} + /** * Creates a Time Value object * @param object_instance - object-instance number of the object diff --git a/src/bacnet/basic/object/time_value.h b/src/bacnet/basic/object/time_value.h index fd878289..3ed9f5a7 100644 --- a/src/bacnet/basic/object/time_value.h +++ b/src/bacnet/basic/object/time_value.h @@ -93,6 +93,11 @@ bool Time_Value_Change_Of_Value(uint32_t instance); BACNET_STACK_EXPORT void Time_Value_Change_Of_Value_Clear(uint32_t instance); +BACNET_STACK_EXPORT +void *Time_Value_Context_Get(uint32_t object_instance); +BACNET_STACK_EXPORT +void Time_Value_Context_Set(uint32_t object_instance, void *context); + BACNET_STACK_EXPORT uint32_t Time_Value_Create(uint32_t object_instance); BACNET_STACK_EXPORT