#pragma once #include #include #ifdef __cplusplus extern "C" { #endif typedef enum gateway_bacnet_object_kind { GW_BACNET_OBJECT_UNKNOWN = 0, GW_BACNET_OBJECT_ANALOG_INPUT, GW_BACNET_OBJECT_ANALOG_VALUE, GW_BACNET_OBJECT_ANALOG_OUTPUT, GW_BACNET_OBJECT_BINARY_INPUT, GW_BACNET_OBJECT_BINARY_VALUE, GW_BACNET_OBJECT_BINARY_OUTPUT, GW_BACNET_OBJECT_MULTI_STATE_INPUT, GW_BACNET_OBJECT_MULTI_STATE_VALUE, GW_BACNET_OBJECT_MULTI_STATE_OUTPUT, } gateway_bacnet_object_kind_t; typedef enum gateway_bacnet_write_value_kind { GW_BACNET_WRITE_VALUE_REAL = 1, GW_BACNET_WRITE_VALUE_BOOLEAN = 2, GW_BACNET_WRITE_VALUE_UNSIGNED = 3, } gateway_bacnet_write_value_kind_t; typedef struct gateway_bacnet_write_value { gateway_bacnet_write_value_kind_t kind; double real_value; bool boolean_value; uint32_t unsigned_value; } gateway_bacnet_write_value_t; typedef void (*gateway_bacnet_stack_write_callback_t)( gateway_bacnet_object_kind_t object_kind, uint32_t object_instance, const gateway_bacnet_write_value_t* value, void* context); bool gateway_bacnet_stack_start( uint32_t device_instance, const char* device_name, uint16_t udp_port, gateway_bacnet_stack_write_callback_t write_callback, void* callback_context); void gateway_bacnet_stack_cleanup(void); bool gateway_bacnet_stack_upsert_object( gateway_bacnet_object_kind_t object_kind, uint32_t object_instance, const char* object_name, const char* description, bool out_of_service, uint32_t reliability); bool gateway_bacnet_stack_clear_objects(void); void gateway_bacnet_stack_send_i_am(void); void gateway_bacnet_stack_poll(uint16_t elapsed_ms); #ifdef __cplusplus } #endif