rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Loading...
Searching...
No Matches
out_store_rec.h
Go to the documentation of this file.
1
53
54#pragma once
55
56#include <stdbool.h>
57#include <stddef.h>
58#include <stdint.h>
59
60#include "link_pages.h"
61
62#ifdef __cplusplus
63extern "C" {
64#endif
65
70#define OUT_STORE_VERSION 8u
71#define OUT_STORE_VERSION_V7 7u
72#define OUT_STORE_VERSION_V6 6u
73#define OUT_STORE_VERSION_V5 5u
74#define OUT_STORE_VERSION_V4 4u
75#define OUT_STORE_VERSION_V3 3u
76
86typedef struct {
87 uint16_t slots[LINK_OS_COUNT];
88 uint16_t chan_cfg[LINK_CC_COUNT];
89 uint16_t supply[LINK_SP_OUTPUT];
98 uint16_t prog_func;
99 uint16_t prog[LINK_PG_PORTS_MAX * 4u];
101 uint16_t sense_map_set;
102 uint16_t sense_limit[LINK_SM_CHANNELS];
103 uint16_t spare8;
105
108#define OUT_STORE_SLOT_BYTES 512u
109#define OUT_STORE_SLOT_BYTES_V7 256u
110
112#define OUT_STORE_MAGIC 0x7263626FuL
113
115typedef struct {
116 uint32_t magic;
117 uint32_t zeros;
118 uint32_t zeros_inv;
119 uint16_t crc;
120 uint16_t version;
121 uint32_t seq;
123
125typedef struct {
126 out_store_hdr_t hdr;
127 out_store_t cfg;
129
139size_t out_store_cfg_size(uint16_t version);
140
149size_t out_store_rec_size(uint16_t version);
150
167bool out_store_rec_build(uint8_t *rec, size_t slot, uint16_t version,
168 uint32_t seq, const out_store_t *cfg);
169
189bool out_store_rec_check(const uint8_t *rec, size_t avail,
190 uint16_t min_version, uint16_t max_version,
191 uint16_t *version, uint32_t *seq);
192
210bool out_store_cfg_read(uint16_t version, const void *cfg, out_store_t *out);
211
212#ifdef __cplusplus
213}
214#endif
size_t out_store_cfg_size(uint16_t version)
How many bytes of configuration a record of version carries, from the start of an out_store_t: 128 fo...
Definition out_store_rec.c:61
bool out_store_rec_build(uint8_t *rec, size_t slot, uint16_t version, uint32_t seq, const out_store_t *cfg)
A record of version for cfg and seq into the slot bytes at rec: the record, then 0xFF to the slot's e...
Definition out_store_rec.c:133
bool out_store_rec_check(const uint8_t *rec, size_t avail, uint16_t min_version, uint16_t max_version, uint16_t *version, uint32_t *seq)
Whether the avail bytes at rec start with a whole record of a version this build reads,...
Definition out_store_rec.c:159
size_t out_store_rec_size(uint16_t version)
A whole record of version, head and configuration: 308 bytes for version 8, 228 for 7....
Definition out_store_rec.c:93
bool out_store_cfg_read(uint16_t version, const void *cfg, out_store_t *out)
A record's configuration, as version wrote it at cfg (out_store_cfg_size() bytes),...
Definition out_store_rec.c:74
A record's head; the configuration follows it with no padding.
Definition out_store_rec.h:115
uint32_t zeros_inv
Definition out_store_rec.h:118
uint32_t zeros
Definition out_store_rec.h:117
uint16_t crc
Definition out_store_rec.h:119
uint32_t magic
Definition out_store_rec.h:116
uint16_t version
Definition out_store_rec.h:120
uint32_t seq
Definition out_store_rec.h:121
A record as the newest version writes it.
Definition out_store_rec.h:125
What is kept: the two pages that describe the outputs; the PD mini's wiring – SUPPLY's ENABLE to BAUD...
Definition out_store_rec.h:86
uint16_t sense_map_set
Definition out_store_rec.h:101
uint16_t prog[LINK_PG_PORTS_MAX *4u]
Definition out_store_rec.h:99
uint16_t slots[LINK_OS_COUNT]
Definition out_store_rec.h:87
uint16_t prog_func
Each port's function (protocol 4.26): bits 4n to 4n + 3 hold 1 + port n's FUNC, 0 none stored (prog_p...
Definition out_store_rec.h:98
uint16_t tone[LINK_TN_CONFIG_COUNT]
Definition out_store_rec.h:91
uint16_t sense_limit[LINK_SM_CHANNELS]
Definition out_store_rec.h:102
uint16_t spare8
Definition out_store_rec.h:103
uint16_t sense_map[LINK_SM_KEPT]
Definition out_store_rec.h:100
uint16_t sense[LINK_SN_CONFIG_COUNT]
Definition out_store_rec.h:90
uint16_t chan_cfg[LINK_CC_COUNT]
Definition out_store_rec.h:88
uint16_t supply[LINK_SP_OUTPUT]
Definition out_store_rec.h:89