29#ifndef DETERMINISTICESPASYNCWEBSERVER_IOLINK_H
30#define DETERMINISTICESPASYNCWEBSERVER_IOLINK_H
34#if DETWS_ENABLE_IOLINK
39#define IOL_CHECKSUM_SEED 0x52u
42#define IOL_MC_READ 0x80u
43#define IOL_MC_WRITE 0x00u
44#define IOL_CH_PROCESS 0u
46#define IOL_CH_DIAGNOSIS 2u
50#define IOL_MSEQ_TYPE_0 0u
51#define IOL_MSEQ_TYPE_1 1u
52#define IOL_MSEQ_TYPE_2 2u
55#define IOL_CKS_EVENT 0x80u
56#define IOL_CKS_PD_INVALID 0x40u
58#define IOL_CHECK_HIGH_MASK 0xC0u
59#define IOL_CHECK_SUM_MASK 0x3Fu
64uint8_t iol_mc(
bool read, uint8_t channel, uint8_t address);
67bool iol_mc_is_read(uint8_t mc);
70uint8_t iol_mc_channel(uint8_t mc);
73uint8_t iol_mc_address(uint8_t mc);
76uint8_t iol_ckt(uint8_t mseq_type, uint8_t checksum6);
79uint8_t iol_cks(
bool event,
bool pd_invalid, uint8_t checksum6);
87uint8_t iol_checksum6(
const uint8_t *msg,
size_t len);
94uint8_t iol_finalize(uint8_t *msg,
size_t len,
size_t check_idx);
100bool iol_verify(
const uint8_t *msg,
size_t len,
size_t check_idx);
User-facing configuration for DeterministicESPAsyncWebServer.