24#ifndef DETERMINISTICESPASYNCWEBSERVER_SDI12_H
25#define DETERMINISTICESPASYNCWEBSERVER_SDI12_H
34#define SDI12_CRC_POLY 0xA001u
35#define SDI12_CRC_CHARS 3
40size_t sdi12_build(
char *buf,
size_t cap,
char addr,
const char *body);
43size_t sdi12_build_ack(
char *buf,
size_t cap,
char addr);
46size_t sdi12_build_identify(
char *buf,
size_t cap,
char addr);
49size_t sdi12_build_measure(
char *buf,
size_t cap,
char addr,
bool with_crc);
52size_t sdi12_build_concurrent(
char *buf,
size_t cap,
char addr,
bool with_crc);
55size_t sdi12_build_data(
char *buf,
size_t cap,
char addr, uint8_t d_index);
58size_t sdi12_build_change_address(
char *buf,
size_t cap,
char addr,
char new_addr);
61size_t sdi12_build_query_address(
char *buf,
size_t cap);
70bool sdi12_parse_measure(
const char *resp,
size_t len,
char *addr, uint16_t *ready_sec, uint8_t *num_values);
77bool sdi12_parse_values(
const char *resp,
size_t len,
float *out,
size_t max,
size_t *n);
82uint16_t sdi12_crc16(
const uint8_t *data,
size_t len);
85void sdi12_crc_encode(uint16_t crc,
char out[SDI12_CRC_CHARS]);
92bool sdi12_check_crc(
const char *resp,
size_t len);
User-facing configuration for DeterministicESPAsyncWebServer.