rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Loading...
Searching...
No Matches
esc_sim.h
Go to the documentation of this file.
1
28
29#ifndef RCBENCH_ESC_SIM_H
30#define RCBENCH_ESC_SIM_H
31
32#include <stdbool.h>
33#include <stddef.h>
34#include <stdint.h>
35
36#include "esc_profile.h"
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
43typedef struct {
44 uint32_t beep_ms;
45 uint32_t gap_ms;
46 uint32_t long_ms;
47 uint32_t pause_ms;
48 uint32_t entry_ms;
50 uint32_t window_ms;
53 uint32_t idle_ma;
54 uint32_t beep_ma;
55 uint32_t noise_ma;
56 uint32_t seed;
57 uint8_t extra;
59 int32_t drop_group;
61 bool deaf;
62 bool mute;
63 bool wait_hand;
67
69typedef enum {
70 ESC_SIM_OFF = 0,
72 ESC_SIM_ENTRY,
74 ESC_SIM_ITEMS,
75 ESC_SIM_VALUES,
79
81#define ESC_SIM_LOOP_MAX 64u
83#define ESC_SIM_PULSE_MAX 16u
84
86typedef struct {
90 bool powered;
91 uint32_t on_ms;
94
95 /* What is being sounded. */
98 uint8_t loop_n,
102 uint8_t pulse_n,
104 uint8_t seg;
105 uint32_t seg_end;
107 uint8_t sounding;
108 uint8_t ended;
109 uint32_t ended_ms;
110 uint8_t item;
111 uint8_t pend_item;
112 uint8_t pend_value;
113 uint8_t pend_step;
114 uint32_t resets;
115 uint32_t menu_groups;
116 bool dropped;
121
122 /* What it keeps, by item number. */
123 uint8_t stored[256];
125 uint32_t stores;
126 uint32_t misplaced;
128 uint32_t lcg;
129} esc_sim_t;
130
137
145void esc_sim_init(esc_sim_t *s, const esc_profile_t *p,
146 const esc_sim_cfg_t *c);
147
162int32_t esc_sim_step(esc_sim_t *s, uint32_t now_ms, bool powered,
163 float throttle_pct);
164
175void esc_sim_hand(esc_sim_t *s, uint32_t now_ms);
176
193unsigned esc_sim_store_moves(const esc_profile_t *p, uint8_t item,
194 uint8_t value, esc_throttle_t *out, size_t cap);
195
205uint8_t esc_sim_stored(const esc_sim_t *s, uint8_t item);
206
207#ifdef __cplusplus
208}
209#endif
210
211#endif /* RCBENCH_ESC_SIM_H */
ESC (electronic speed controller) programming profiles: how to enter an ESC's throttle-stick programm...
esc_throttle_t
Throttle stick position that a step uses.
Definition esc_profile.h:99
int32_t esc_sim_step(esc_sim_t *s, uint32_t now_ms, bool powered, float throttle_pct)
Advance the simulated ESC to a time and return its supply current.
Definition esc_sim.c:637
void esc_sim_init(esc_sim_t *s, const esc_profile_t *p, const esc_sim_cfg_t *c)
Start a simulated ESC on a profile.
Definition esc_sim.c:46
unsigned esc_sim_store_moves(const esc_profile_t *p, uint8_t item, uint8_t value, esc_throttle_t *out, size_t cap)
List the moves that store a selected value.
Definition esc_sim.c:456
void esc_sim_hand(esc_sim_t *s, uint32_t now_ms)
Record the person's action at the ESC.
Definition esc_sim.c:700
uint8_t esc_sim_stored(const esc_sim_t *s, uint8_t item)
Value stored for an item.
Definition esc_sim.c:63
void esc_sim_defaults(esc_sim_cfg_t *c)
Fill a simulator config with its default settings.
Definition esc_sim.c:30
#define ESC_SIM_PULSE_MAX
Most pulses in one group's beep sequence.
Definition esc_sim.h:83
esc_sim_mode_t
Mode of the simulated ESC's menu.
Definition esc_sim.h:69
@ ESC_SIM_WAIT_LISTEN
Definition esc_sim.h:73
@ ESC_SIM_DONE
Definition esc_sim.h:77
@ ESC_SIM_PENDING
Definition esc_sim.h:76
@ ESC_SIM_IDLE
Definition esc_sim.h:71
#define ESC_SIM_LOOP_MAX
Most group numbers in the loop being sounded.
Definition esc_sim.h:81
#define s
Short name for esc_stick_s inside the five stick-class files.
Definition esc_stick_panel_int.h:295
One ESC programming profile: its family, menu and steps.
Definition esc_profile.h:233
Timing and fault settings of the simulated ESC.
Definition esc_sim.h:43
uint8_t extra
Definition esc_sim.h:57
uint32_t gap_ms
Definition esc_sim.h:45
uint32_t idle_ma
Definition esc_sim.h:53
uint32_t seed
Definition esc_sim.h:56
uint32_t pause_ms
Definition esc_sim.h:47
uint32_t noise_ma
Definition esc_sim.h:55
uint32_t entry_ms
Definition esc_sim.h:48
uint32_t window_ms
Definition esc_sim.h:50
uint32_t long_ms
Definition esc_sim.h:46
bool wait_hand
Definition esc_sim.h:63
bool deaf
Definition esc_sim.h:61
bool mute
Definition esc_sim.h:62
int32_t drop_group
Definition esc_sim.h:59
uint32_t beep_ms
Definition esc_sim.h:44
uint32_t beep_ma
Definition esc_sim.h:54
Full state of one simulated ESC.
Definition esc_sim.h:86
uint8_t item
Definition esc_sim.h:110
bool dropped
Definition esc_sim.h:116
bool menu_group
Definition esc_sim.h:106
esc_sim_cfg_t c
Definition esc_sim.h:88
esc_throttle_t stored_from[256]
Definition esc_sim.h:124
uint32_t ended_ms
Definition esc_sim.h:109
uint32_t menu_groups
Definition esc_sim.h:115
uint8_t pulse_i
Definition esc_sim.h:103
uint8_t pend_item
Definition esc_sim.h:111
uint8_t sounding
Definition esc_sim.h:107
uint8_t pend_value
Definition esc_sim.h:112
bool powered
Definition esc_sim.h:90
uint32_t stores
Definition esc_sim.h:125
uint8_t pulse_n
Definition esc_sim.h:102
uint8_t loop_n
Definition esc_sim.h:98
bool answering
Definition esc_sim.h:120
bool hand_done
Definition esc_sim.h:118
uint32_t seg_end
Definition esc_sim.h:105
esc_sim_mode_t mode
Definition esc_sim.h:89
bool tones_done
Definition esc_sim.h:117
uint8_t stored[256]
Definition esc_sim.h:123
const esc_profile_t * p
Definition esc_sim.h:87
uint32_t misplaced
Definition esc_sim.h:126
esc_throttle_t entry
Definition esc_sim.h:93
uint8_t seg
Definition esc_sim.h:104
uint32_t resets
Definition esc_sim.h:114
uint8_t rep
Definition esc_sim.h:100
uint8_t pend_step
Definition esc_sim.h:113
uint32_t on_ms
Definition esc_sim.h:91
uint8_t loop_i
Definition esc_sim.h:99
uint8_t pulse[ESC_SIM_PULSE_MAX]
Definition esc_sim.h:101
uint8_t loop[ESC_SIM_LOOP_MAX]
Definition esc_sim.h:96
uint8_t ended
Definition esc_sim.h:108
esc_throttle_t pos
Definition esc_sim.h:92
uint32_t lcg
Definition esc_sim.h:128