rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Loading...
Searching...
No Matches
kst_plan.h
Go to the documentation of this file.
1
57
58#ifndef KST_PLAN_H
59#define KST_PLAN_H
60
61#include <stdbool.h>
62#include <stdint.h>
63
64#include "kst_limits.h"
65#include "kst_reg.h"
66
67#ifdef __cplusplus
68extern "C" {
69#endif
70
75#define KST_PLAN_MAX_STEPS 33u
76
83
95
97#define KST_PLAN_NO_CAP 0xFFFFFFFFu
103#define KST_PLAN_PIECE_UNITS 10u
117#define KST_PLAN_SLICE_UNITS 100u
129#define KST_PLAN_WORK_CAP 216000u
130
132typedef struct {
133 uint8_t reg;
134 uint8_t value;
135 uint8_t prev;
136 uint8_t settled;
139
150
160typedef struct {
163 uint32_t spent;
164 uint32_t cap;
166 uint8_t open[32];
167 uint8_t dead[16];
168 uint8_t known[16];
169 uint8_t sound[16];
170 uint8_t order[7];
171 uint8_t tried[7];
172 uint8_t held[7];
173 uint8_t phase;
174 uint8_t result;
176 uint8_t group;
177 uint8_t todo_all;
178 uint8_t todo;
179 uint8_t depth;
180 uint8_t entered;
181 uint8_t in_detour;
182 uint8_t field;
183 uint8_t lo;
184 uint8_t lo_before;
185 uint8_t extra;
186 uint8_t settle;
187 uint16_t x;
189
215 const kst_image_t *start,
216 const kst_image_t *target,
217 kst_field_set_t unlocked,
218 kst_plan_t *out,
219 kst_rules_t *violated,
220 uint32_t cap);
221
234 const kst_image_t *current,
235 const kst_image_t *backup,
236 kst_plan_t *out,
237 uint32_t cap);
238
259kst_plan_result_t kst_plan_step(kst_plan_job_t *job, uint32_t budget);
260
267uint32_t kst_plan_units(const kst_plan_job_t *job);
268
286 const kst_image_t *target,
287 kst_field_set_t unlocked,
288 kst_plan_t *out,
289 kst_rules_t *violated);
290
304 const kst_image_t *backup,
305 kst_plan_t *out);
306
319 kst_plan_t *out);
320
331bool kst_plan_image_after(const kst_plan_t *plan, unsigned steps,
332 kst_image_t *out);
333
334#ifdef __cplusplus
335}
336#endif
337
338#endif /* KST_PLAN_H */
KST servo programming protocol: limits on an edited image.
uint64_t kst_rules_t
A set of rules, bit n for rule n.
Definition kst_limits.h:141
kst_plan_result_t kst_plan_step(kst_plan_job_t *job, uint32_t budget)
Advance a job by budget units.
Definition kst_plan.c:673
kst_plan_kind_t
Kind of a plan.
Definition kst_plan.h:78
@ KST_PLAN_EDIT
Definition kst_plan.h:79
@ KST_PLAN_RESTORE
Definition kst_plan.h:80
@ KST_PLAN_RELEASE_PAIRING
Definition kst_plan.h:81
#define KST_PLAN_MAX_STEPS
31 writable registers and 1 extra write in each of the 2 searched groups.
Definition kst_plan.h:75
kst_plan_result_t kst_plan_restore_begin(kst_plan_job_t *job, const kst_image_t *current, const kst_image_t *backup, kst_plan_t *out, uint32_t cap)
The same for kst_plan_restore(): KST_PLAN_BUSY, or KST_PLAN_ERR_ARG or KST_PLAN_ERR_R00 at once.
Definition kst_plan.c:787
bool kst_plan_image_after(const kst_plan_t *plan, unsigned steps, kst_image_t *out)
The image after the first steps writes of a plan.
Definition kst_plan.c:864
kst_plan_result_t kst_plan_release_pairing(const kst_image_t *current, kst_plan_t *out)
Plan the write of 0x00 to register 0x1D.
Definition kst_plan.c:842
kst_plan_result_t kst_plan_edit_begin(kst_plan_job_t *job, const kst_image_t *start, const kst_image_t *target, kst_field_set_t unlocked, kst_plan_t *out, kst_rules_t *violated, uint32_t cap)
Check an edit from start to target and prepare job to plan it into out.
Definition kst_plan.c:748
uint32_t kst_plan_units(const kst_plan_job_t *job)
Units the job has taken so far.
Definition kst_plan.c:691
kst_plan_result_t kst_plan_restore(const kst_image_t *current, const kst_image_t *backup, kst_plan_t *out)
Plan the way from current back to backup.
Definition kst_plan.c:832
kst_plan_result_t kst_plan_edit(const kst_image_t *start, const kst_image_t *target, kst_field_set_t unlocked, kst_plan_t *out, kst_rules_t *violated)
Plan an edit from start to target.
Definition kst_plan.c:820
kst_plan_result_t
Result of a planning request or job.
Definition kst_plan.h:85
@ KST_PLAN_ERR_PAIRING
Definition kst_plan.h:90
@ KST_PLAN_ERR_R00
Definition kst_plan.h:89
@ KST_PLAN_ERR_ARG
Definition kst_plan.h:87
@ KST_PLAN_ERR_NO_PATH
Definition kst_plan.h:91
@ KST_PLAN_ERR_TOO_COMPLEX
Definition kst_plan.h:93
@ KST_PLAN_OK
Definition kst_plan.h:86
@ KST_PLAN_ERR_RULES
Definition kst_plan.h:88
@ KST_PLAN_BUSY
Definition kst_plan.h:92
KST servo programming protocol: the register image and its fields.
uint64_t kst_field_set_t
A set of fields, bit n for field n.
Definition kst_reg.h:110
The 32 registers, by address.
Definition kst_reg.h:47
The state of one planning job: 176 bytes.
Definition kst_plan.h:160
uint8_t phase
Definition kst_plan.h:173
uint8_t tried[7]
Definition kst_plan.h:171
uint8_t extra
Definition kst_plan.h:185
uint8_t may_be_unchecked
Definition kst_plan.h:175
uint8_t sound[16]
Definition kst_plan.h:169
uint8_t lo_before
Definition kst_plan.h:184
uint8_t result
Definition kst_plan.h:174
uint8_t depth
Definition kst_plan.h:179
uint8_t open[32]
Definition kst_plan.h:166
uint8_t order[7]
Definition kst_plan.h:170
uint8_t todo_all
Definition kst_plan.h:177
kst_plan_t * plan
Definition kst_plan.h:162
kst_rules_t allowed
Definition kst_plan.h:161
uint8_t group
Definition kst_plan.h:176
uint8_t known[16]
Definition kst_plan.h:168
uint8_t entered
Definition kst_plan.h:180
uint8_t held[7]
Definition kst_plan.h:172
uint32_t cap
Definition kst_plan.h:164
uint8_t settle
Definition kst_plan.h:186
uint8_t field
Definition kst_plan.h:182
uint8_t in_detour
Definition kst_plan.h:181
uint8_t lo
Definition kst_plan.h:183
uint32_t spent
Definition kst_plan.h:163
uint8_t dead[16]
Definition kst_plan.h:167
kst_image_t img
Definition kst_plan.h:165
uint8_t todo
Definition kst_plan.h:178
uint16_t x
Definition kst_plan.h:187
A plan: the writes that take the servo from start to target.
Definition kst_plan.h:141
uint8_t kind
Definition kst_plan.h:145
uint8_t unchecked
Definition kst_plan.h:147
uint8_t n
Definition kst_plan.h:146
kst_field_set_t unlocked
Definition kst_plan.h:144
kst_image_t start
Definition kst_plan.h:142
kst_write_t step[KST_PLAN_MAX_STEPS]
Definition kst_plan.h:148
kst_image_t target
Definition kst_plan.h:143
One write.
Definition kst_plan.h:132
uint8_t settled
Definition kst_plan.h:136
uint8_t reg
Definition kst_plan.h:133
uint8_t value
Definition kst_plan.h:134
uint8_t prev
Definition kst_plan.h:135