31#ifndef PROTOCORE_HISLIP_H
32#define PROTOCORE_HISLIP_H
36#if PROTOCORE_ENABLE_HISLIP
41#define PROTOCORE_HISLIP_PORT 4880
44#define PROTOCORE_HISLIP_HEADER_LEN 16
48#define PROTOCORE_HISLIP_VERSION_1_0 0x0100
49#define PROTOCORE_HISLIP_VERSION_1_1 0x0101
50#define PROTOCORE_HISLIP_VERSION_2_0 0x0200
54#define PROTOCORE_HISLIP_MESSAGE_ID_INIT 0xFFFFFF00u
57#define PROTOCORE_HISLIP_INITRESP_OVERLAP 0x01
58#define PROTOCORE_HISLIP_INITRESP_ENC_MANDATORY 0x02
59#define PROTOCORE_HISLIP_INITRESP_ENC_INITIAL 0x04
61#define PROTOCORE_HISLIP_DATA_RMT_DELIVERED 0x01
66 HISLIP_MSG_INITIALIZE = 0,
67 HISLIP_MSG_INITIALIZE_RESPONSE = 1,
68 HISLIP_MSG_FATAL_ERROR = 2,
70 HISLIP_MSG_ASYNC_LOCK = 4,
71 HISLIP_MSG_ASYNC_LOCK_RESPONSE = 5,
73 HISLIP_MSG_DATA_END = 7,
74 HISLIP_MSG_DEVICE_CLEAR_COMPLETE = 8,
75 HISLIP_MSG_DEVICE_CLEAR_ACKNOWLEDGE = 9,
76 HISLIP_MSG_ASYNC_REMOTE_LOCAL_CONTROL = 10,
77 HISLIP_MSG_ASYNC_REMOTE_LOCAL_RESPONSE = 11,
78 HISLIP_MSG_TRIGGER = 12,
79 HISLIP_MSG_INTERRUPTED = 13,
80 HISLIP_MSG_ASYNC_INTERRUPTED = 14,
81 HISLIP_MSG_ASYNC_MAX_MSG_SIZE = 15,
82 HISLIP_MSG_ASYNC_MAX_MSG_SIZE_RESPONSE = 16,
83 HISLIP_MSG_ASYNC_INITIALIZE = 17,
84 HISLIP_MSG_ASYNC_INITIALIZE_RESPONSE = 18,
85 HISLIP_MSG_ASYNC_DEVICE_CLEAR = 19,
86 HISLIP_MSG_ASYNC_SERVICE_REQUEST = 20,
87 HISLIP_MSG_ASYNC_STATUS_QUERY = 21,
88 HISLIP_MSG_ASYNC_STATUS_RESPONSE = 22,
89 HISLIP_MSG_ASYNC_DEVICE_CLEAR_ACKNOWLEDGE = 23,
90 HISLIP_MSG_ASYNC_LOCK_INFO = 24,
91 HISLIP_MSG_ASYNC_LOCK_INFO_RESPONSE = 25,
92 HISLIP_MSG_GET_DESCRIPTORS = 26,
93 HISLIP_MSG_GET_DESCRIPTORS_RESPONSE = 27,
94 HISLIP_MSG_START_TLS = 28,
95 HISLIP_MSG_ASYNC_START_TLS = 29,
96 HISLIP_MSG_ASYNC_START_TLS_RESPONSE = 30,
97 HISLIP_MSG_END_TLS = 31,
98 HISLIP_MSG_ASYNC_END_TLS = 32,
99 HISLIP_MSG_ASYNC_END_TLS_RESPONSE = 33,
100 HISLIP_MSG_GET_SASL_MECHANISM_LIST = 34,
101 HISLIP_MSG_GET_SASL_MECHANISM_LIST_RESPONSE = 35,
102 HISLIP_MSG_AUTHENTICATION_START = 36,
103 HISLIP_MSG_AUTHENTICATION_EXCHANGE = 37,
104 HISLIP_MSG_AUTHENTICATION_RESULT = 38,
113 uint64_t payload_len;
120size_t protocore_hislip_build_header(uint8_t *buf,
size_t cap, HislipMsg type, uint8_t control, uint32_t parameter,
121 uint64_t payload_len);
128proto_bool protocore_hislip_parse_header(
const uint8_t *buf,
size_t len, HislipHeader *out);
137size_t protocore_hislip_build_initialize(uint8_t *buf,
size_t cap, uint16_t protocol_version, uint16_t vendor_id,
138 const char *sub_address);
145size_t protocore_hislip_build_initialize_response(uint8_t *buf,
size_t cap, uint8_t control, uint16_t protocol_version,
146 uint16_t session_id);
152size_t protocore_hislip_build_async_initialize(uint8_t *buf,
size_t cap, uint16_t session_id);
158size_t protocore_hislip_build_async_initialize_response(uint8_t *buf,
size_t cap, uint8_t control,
159 uint16_t server_vendor_id);
167size_t protocore_hislip_build_data(uint8_t *buf,
size_t cap,
proto_bool is_end, uint8_t control, uint32_t message_id,
168 const uint8_t *payload,
size_t payload_len);
171uint32_t protocore_hislip_next_message_id(uint32_t
id);
178 uint16_t protocol_version;
180 const char *sub_address;
181 size_t sub_address_len;
188proto_bool protocore_hislip_parse_initialize(
const uint8_t *buf,
size_t len, HislipInitialize *out);
193 uint16_t protocol_version;
197} HislipInitializeResponse;
203proto_bool protocore_hislip_parse_initialize_response(
const uint8_t *buf,
size_t len, HislipInitializeResponse *out);
PROTO_ENUM_PACKED
Application protocol spoken on a listener port or connection slot.
#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