30#ifndef DETERMINISTICESPASYNCWEBSERVER_SUNSPEC_H
31#define DETERMINISTICESPASYNCWEBSERVER_SUNSPEC_H
35#if DETWS_ENABLE_SUNSPEC
40#define SUNSPEC_MARKER 0x53756E53u
41#define SUNSPEC_END_MODEL 0xFFFFu
42#define SUNSPEC_COMMON_MODEL 1
56bool sunspec_check_marker(
const uint8_t *regs,
size_t len);
59bool sunspec_begin(
const uint8_t *regs,
size_t len,
size_t *offset);
65bool sunspec_next_model(
const uint8_t *regs,
size_t len,
size_t *offset, SunSpecModel *out);
68uint16_t sunspec_u16(
const uint8_t *body,
size_t reg);
69int16_t sunspec_i16(
const uint8_t *body,
size_t reg);
70uint32_t sunspec_u32(
const uint8_t *body,
size_t reg);
71int32_t sunspec_i32(
const uint8_t *body,
size_t reg);
77bool sunspec_string(
const uint8_t *body,
size_t reg,
size_t nregs,
char *out,
size_t out_cap);
90void sunspec_writer_init(SunSpecWriter *w, uint8_t *buf,
size_t cap);
91bool sunspec_write_marker(SunSpecWriter *w);
92bool sunspec_write_model_header(SunSpecWriter *w, uint16_t
id, uint16_t length);
93bool sunspec_write_u16(SunSpecWriter *w, uint16_t v);
94bool sunspec_write_i16(SunSpecWriter *w, int16_t v);
95bool sunspec_write_u32(SunSpecWriter *w, uint32_t v);
96bool sunspec_write_i32(SunSpecWriter *w, int32_t v);
97bool sunspec_write_string(SunSpecWriter *w,
const char *s,
size_t nregs);
98bool sunspec_write_end_model(SunSpecWriter *w);
99size_t sunspec_writer_finish(SunSpecWriter *w);
User-facing configuration for DeterministicESPAsyncWebServer.