21#ifndef DETERMINISTICESPASYNCWEBSERVER_PROFINET_H
22#define DETERMINISTICESPASYNCWEBSERVER_PROFINET_H
28#if DETWS_ENABLE_PROFINET
32 static constexpr uint16_t PN_FRAMEID_DCP_HELLO = 0xFEFC;
33 static constexpr uint16_t PN_FRAMEID_DCP_GETSET = 0xFEFD;
34 static constexpr uint16_t PN_FRAMEID_DCP_IDENT_REQ = 0xFEFE;
35 static constexpr uint16_t PN_FRAMEID_DCP_IDENT_RES = 0xFEFF;
36 static constexpr uint16_t PN_DCP_SERVICE_GET = 0x03;
37 static constexpr uint16_t PN_DCP_SERVICE_SET = 0x04;
38 static constexpr uint16_t PN_DCP_SERVICE_IDENTIFY = 0x05;
39 static constexpr uint16_t PN_DCP_TYPE_REQUEST = 0x00;
40 static constexpr uint16_t PN_DCP_TYPE_RESPONSE_SUCCESS = 0x01;
41 static constexpr uint16_t PN_DCP_OPT_IP = 0x01;
42 static constexpr uint16_t PN_DCP_SUB_IP_PARAM = 0x02;
43 static constexpr uint16_t PN_DCP_OPT_DEVICE = 0x02;
44 static constexpr uint16_t PN_DCP_SUB_DEV_NAME_OF_STATION = 0x02;
45 static constexpr uint16_t PN_DCP_SUB_DEV_ID = 0x03;
46 static constexpr uint16_t PN_DCP_OPT_ALL = 0xFF;
47 static constexpr uint16_t PN_DCP_SUB_ALL = 0xFF;
48 static constexpr uint16_t PN_DCP_HDR_LEN = 10;
55size_t detws_pn_dcp_header(uint16_t frame_id, uint8_t service_id, uint8_t service_type, uint32_t xid,
56 uint16_t data_length, uint8_t *out,
size_t cap);
64size_t detws_pn_dcp_block(uint8_t option, uint8_t suboption,
const uint8_t *value,
size_t value_len, uint8_t *out,
78bool detws_pn_dcp_parse_header(
const uint8_t *frame,
size_t len, PnDcpHeader *out);
81typedef void (*DetwsPnDcpBlockCb)(uint8_t option, uint8_t suboption,
const uint8_t *value,
size_t value_len,
void *arg);
87bool detws_pn_dcp_walk(
const uint8_t *blocks,
size_t len, DetwsPnDcpBlockCb cb,
void *arg);
User-facing configuration for DeterministicESPAsyncWebServer.