25#ifndef PROTOCORE_BACNET_H
26#define PROTOCORE_BACNET_H
30#if PROTOCORE_ENABLE_BACNET
38#define BVLC_TYPE_BIP 0x81
39#define BVLC_HEADER_SIZE 4
42#define BVLC_FUNC_RESULT 0x00
43#define BVLC_FUNC_WRITE_BDT 0x01
44#define BVLC_FUNC_FORWARDED_NPDU 0x04
45#define BVLC_FUNC_REGISTER_FD 0x05
46#define BVLC_FUNC_ORIGINAL_UNICAST 0x0A
47#define BVLC_FUNC_ORIGINAL_BROADCAST 0x0B
49#define NPDU_VERSION 0x01
52#define NPCI_NETWORK_MSG 0x80
53#define NPCI_DEST_PRESENT 0x20
54#define NPCI_SRC_PRESENT 0x08
55#define NPCI_EXPECTING_REPLY 0x04
56#define NPCI_PRIORITY_MASK 0x03
59#define NPDU_PRIO_NORMAL 0x00
60#define NPDU_PRIO_URGENT 0x01
61#define NPDU_PRIO_CRITICAL 0x02
62#define NPDU_PRIO_LIFE_SAFETY 0x03
65#define BACNET_PDU_CONFIRMED_REQUEST 0
66#define BACNET_PDU_UNCONFIRMED_REQUEST 1
67#define BACNET_PDU_SIMPLE_ACK 2
68#define BACNET_PDU_COMPLEX_ACK 3
69#define BACNET_PDU_SEGMENT_ACK 4
70#define BACNET_PDU_ERROR 5
71#define BACNET_PDU_REJECT 6
72#define BACNET_PDU_ABORT 7
75#define BACNET_APDU_SEG 0x08
76#define BACNET_APDU_MOR 0x04
77#define BACNET_APDU_SA 0x02
80#define BACNET_SVC_UN_I_AM 0
81#define BACNET_SVC_UN_WHO_IS 8
84#define BACNET_SVC_CONF_READ_PROPERTY 12
86#define BACNET_MAX_INSTANCE 0x3FFFFFu
89#define BACNET_OBJ_ANALOG_INPUT 0
90#define BACNET_OBJ_ANALOG_OUTPUT 1
91#define BACNET_OBJ_ANALOG_VALUE 2
92#define BACNET_OBJ_BINARY_INPUT 3
93#define BACNET_OBJ_BINARY_OUTPUT 4
94#define BACNET_OBJ_BINARY_VALUE 5
95#define BACNET_OBJ_DEVICE 8
98#define BACNET_PROP_OBJECT_NAME 77
99#define BACNET_PROP_PRESENT_VALUE 85
123 uint8_t service_choice;
124 const uint8_t *service_data;
125 size_t service_data_len;
136} BacnetBvlcBuildArgs;
144 const uint8_t **npdu;
146} BacnetBvlcParseArgs;
162} BacnetNpduBuildArgs;
170} BacnetNpduParseArgs;
178} BacnetApduParseArgs;
188} BacnetApduBuildWhoIsArgs;
195 uint32_t device_instance;
197 uint8_t segmentation;
199} BacnetApduBuildIAmArgs;
208 uint16_t object_type;
209 uint32_t object_instance;
210 uint32_t property_id;
211} BacnetApduBuildReadPropertyArgs;
253 BacnetBvlcBuildArgs bvlc_build_args;
254 BacnetBvlcParseArgs bvlc_parse_args;
255 BacnetNpduBuildArgs npdu_build_args;
256 BacnetNpduParseArgs npdu_parse_args;
257 BacnetApduParseArgs apdu_parse_args;
258 BacnetApduBuildWhoIsArgs apdu_build_who_is_args;
259 BacnetApduBuildIAmArgs apdu_build_i_am_args;
260 BacnetApduBuildReadPropertyArgs apdu_build_read_property_args;
266extern BacnetVars BacnetV;
271 void (*
const bvlc_build)(uint8_t *work);
272 void (*
const bvlc_parse)(uint8_t *work);
273 void (*
const npdu_build)(uint8_t *work);
274 void (*
const npdu_parse)(uint8_t *work);
275 void (*
const apdu_parse)(uint8_t *work);
276 void (*
const apdu_build_who_is)(uint8_t *work);
277 void (*
const apdu_build_i_am)(uint8_t *work);
278 void (*
const apdu_build_read_property)(uint8_t *work);
283void protocore_bacnet_bvlc_build(uint8_t *work);
284void protocore_bacnet_bvlc_parse(uint8_t *work);
285void protocore_bacnet_npdu_build(uint8_t *work);
286void protocore_bacnet_npdu_parse(uint8_t *work);
287void protocore_bacnet_apdu_parse(uint8_t *work);
288void protocore_bacnet_apdu_build_who_is(uint8_t *work);
289void protocore_bacnet_apdu_build_i_am(uint8_t *work);
290void protocore_bacnet_apdu_build_read_property(uint8_t *work);
296static const BacnetNs Bacnet __attribute__((unused)) = {
297 .bvlc_build = protocore_bacnet_bvlc_build,
298 .bvlc_parse = protocore_bacnet_bvlc_parse,
299 .npdu_build = protocore_bacnet_npdu_build,
300 .npdu_parse = protocore_bacnet_npdu_parse,
301 .apdu_parse = protocore_bacnet_apdu_parse,
302 .apdu_build_who_is = protocore_bacnet_apdu_build_who_is,
303 .apdu_build_i_am = protocore_bacnet_apdu_build_i_am,
304 .apdu_build_read_property = protocore_bacnet_apdu_build_read_property,
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS