Files
gateway/components/gateway_bacnet/include/gateway_bacnet_stack_port.h
T

66 lines
1.7 KiB
C

#pragma once
#include <stdbool.h>
#include <stdint.h>
#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