28#ifndef PROTOCORE_FINS_H
29#define PROTOCORE_FINS_H
38#define FINS_HEADER_SIZE 10
40#define FINS_ICF_COMMAND 0x80
41#define FINS_ICF_RESPONSE 0xC0
42#define FINS_ICF_NO_RESPONSE 0x01
45#define FINS_MRC_MEMORY_AREA 0x01
46#define FINS_SRC_MEMORY_AREA_READ 0x01
47#define FINS_SRC_MEMORY_AREA_WRITE 0x02
48#define FINS_MRC_OPERATING_MODE 0x04
49#define FINS_SRC_RUN 0x01
50#define FINS_SRC_STOP 0x02
53enum class FinsRunMode : uint8_t
75size_t pc_fins_build_command(uint8_t *buf,
size_t cap,
const FinsHeader *h, uint8_t mrc, uint8_t src,
76 const uint8_t *params,
size_t params_len);
82size_t pc_fins_build_memory_area_read(uint8_t *buf,
size_t cap,
const FinsHeader *h, uint8_t area, uint16_t address,
83 uint8_t bit, uint16_t count);
91size_t pc_fins_build_memory_area_write(uint8_t *buf,
size_t cap,
const FinsHeader *h, uint8_t area, uint16_t address,
92 uint8_t bit, uint16_t count,
const uint8_t *data,
size_t data_len);
98size_t pc_fins_build_run(uint8_t *buf,
size_t cap,
const FinsHeader *h, FinsRunMode mode);
104size_t pc_fins_build_stop(uint8_t *buf,
size_t cap,
const FinsHeader *h);
112 const uint8_t *params;
117bool pc_fins_parse_command(
const uint8_t *buf,
size_t len, FinsCommand *out);
132bool pc_fins_parse_response(
const uint8_t *buf,
size_t len, FinsResponse *out);
User-facing configuration for ProtoCore.