29#ifndef PROTOCORE_ENIP_H
30#define PROTOCORE_ENIP_H
34#if PROTOCORE_ENABLE_ENIP
42#define EIP_HEADER_SIZE 24
45#define EIP_CMD_LIST_SERVICES 0x0004
46#define EIP_CMD_LIST_IDENTITY 0x0063
47#define EIP_CMD_LIST_INTERFACES 0x0064
48#define EIP_CMD_REGISTER_SESSION 0x0065
49#define EIP_CMD_UNREGISTER_SESSION 0x0066
50#define EIP_CMD_SEND_RR_DATA 0x006F
51#define EIP_CMD_SEND_UNIT_DATA 0x0070
53#define EIP_STATUS_SUCCESS 0x00000000u
56#define EIP_CPF_NULL 0x0000
57#define EIP_CPF_CONNECTED_ADDRESS 0x00A1
58#define EIP_CPF_CONNECTED_DATA 0x00B1
59#define EIP_CPF_UNCONNECTED_DATA 0x00B2
60#define EIP_CPF_LIST_IDENTITY 0x000C
67 uint32_t session_handle;
69 uint8_t sender_context[8];
78 uint16_t protocol_version;
81 uint16_t product_code;
82 uint8_t revision_major;
83 uint8_t revision_minor;
85 uint32_t serial_number;
86 const char *product_name;
87 uint8_t product_name_len;
107 const uint8_t **data;
116 const uint8_t *sender_context;
117} EnipBuildRegisterSessionArgs;
124 uint32_t session_handle;
125 const uint8_t *sender_context;
126} EnipBuildUnregisterSessionArgs;
133 uint32_t session_handle;
134 const uint8_t *sender_context;
138} EnipBuildSendRrDataArgs;
147} EnipParseSendRrDataArgs;
154 const uint8_t *sender_context;
155} EnipBuildListIdentityArgs;
163} EnipParseListIdentityArgs;
205 EnipBuildArgs build_args;
206 EnipParseArgs parse_args;
207 EnipBuildRegisterSessionArgs build_register_session_args;
208 EnipBuildUnregisterSessionArgs build_unregister_session_args;
209 EnipBuildSendRrDataArgs build_send_rr_data_args;
210 EnipParseSendRrDataArgs parse_send_rr_data_args;
211 EnipBuildListIdentityArgs build_list_identity_args;
212 EnipParseListIdentityArgs parse_list_identity_args;
218extern EnipVars EnipV;
223 void (*
const build)(uint8_t *work);
224 void (*
const parse)(uint8_t *work);
225 void (*
const build_register_session)(uint8_t *work);
226 void (*
const build_unregister_session)(uint8_t *work);
227 void (*
const build_send_rr_data)(uint8_t *work);
228 void (*
const parse_send_rr_data)(uint8_t *work);
229 void (*
const build_list_identity)(uint8_t *work);
230 void (*
const parse_list_identity)(uint8_t *work);
235void protocore_enip_build(uint8_t *work);
236void protocore_enip_parse(uint8_t *work);
237void protocore_enip_build_register_session(uint8_t *work);
238void protocore_enip_build_unregister_session(uint8_t *work);
239void protocore_enip_build_send_rr_data(uint8_t *work);
240void protocore_enip_parse_send_rr_data(uint8_t *work);
241void protocore_enip_build_list_identity(uint8_t *work);
242void protocore_enip_parse_list_identity(uint8_t *work);
248static const EnipNs Enip __attribute__((unused)) = {
249 .build = protocore_enip_build,
250 .parse = protocore_enip_parse,
251 .build_register_session = protocore_enip_build_register_session,
252 .build_unregister_session = protocore_enip_build_unregister_session,
253 .build_send_rr_data = protocore_enip_build_send_rr_data,
254 .parse_send_rr_data = protocore_enip_parse_send_rr_data,
255 .build_list_identity = protocore_enip_build_list_identity,
256 .parse_list_identity = protocore_enip_parse_list_identity,
#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