30#ifndef PROTOCORE_SUNSPEC_H
31#define PROTOCORE_SUNSPEC_H
40#define SUNSPEC_MARKER 0x53756E53u
41#define SUNSPEC_END_MODEL 0xFFFFu
42#define SUNSPEC_COMMON_MODEL 1
56bool pc_sunspec_check_marker(
const uint8_t *regs,
size_t len);
59bool pc_sunspec_begin(
const uint8_t *regs,
size_t len,
size_t *offset);
65bool pc_sunspec_next_model(
const uint8_t *regs,
size_t len,
size_t *offset, SunSpecModel *out);
68uint16_t pc_sunspec_u16(
const uint8_t *body,
size_t reg);
69int16_t pc_sunspec_i16(
const uint8_t *body,
size_t reg);
70uint32_t pc_sunspec_u32(
const uint8_t *body,
size_t reg);
71int32_t pc_sunspec_i32(
const uint8_t *body,
size_t reg);
77bool pc_sunspec_string(
const uint8_t *body,
size_t reg,
size_t nregs,
char *out,
size_t out_cap);
90void pc_sunspec_writer_init(SunSpecWriter *w, uint8_t *buf,
size_t cap);
91bool pc_sunspec_write_marker(SunSpecWriter *w);
92bool pc_sunspec_write_model_header(SunSpecWriter *w, uint16_t
id, uint16_t length);
93bool pc_sunspec_write_u16(SunSpecWriter *w, uint16_t v);
94bool pc_sunspec_write_i16(SunSpecWriter *w, int16_t v);
95bool pc_sunspec_write_u32(SunSpecWriter *w, uint32_t v);
96bool pc_sunspec_write_i32(SunSpecWriter *w, int32_t v);
97bool pc_sunspec_write_string(SunSpecWriter *w,
const char *s,
size_t nregs);
98bool pc_sunspec_write_end_model(SunSpecWriter *w);
99size_t pc_sunspec_writer_finish(SunSpecWriter *w);
User-facing configuration for ProtoCore.