45#define KST_DUTY_RAW_MAX 250u
46#define KST_DUTY_RAW_MIN 26u
47#define KST_DUTY_RAW_HALF 128u
48#define KST_DUTY_RAW_90 230u
49#define KST_BOOST_RAW_MAX 236u
50#define KST_STRETCH_INDEX_MAX 5u
51#define KST_SPD_RAW_MAX 1000u
52#define KST_SPD_RAW_MIN_ON 50u
53#define KST_SPD_RAW_SLOW 300u
54#define KST_DEAD_BAND_RAW_1US 60u
55#define KST_PULSE_RAW_MIN 625u
56#define KST_PULSE_RAW_MAX 3125u
57#define KST_NEUTRAL_RAW_MIN 2754u
58#define KST_NEUTRAL_RAW_MAX 4156u
59#define KST_UNCONT_TIME_RAW_MIN 4u
60#define KST_UNCONT_TIME_RAW_MAX 130u
61#define KST_UNCONT_TIME_RAW_SHORT 10u
62#define KST_ANGLE_RAW_SMALL 50u
69#define KST_MARGIN_HARD_TENTH_US 1000
70#define KST_MARGIN_SOFT_TENTH_US 3000
71#define KST_SPAN_MIN_TENTH_US 4000
72#define KST_END_MOVE_TENTH_US 1000
73#define KST_NEUTRAL_MOVE_TENTH_US 200
74#define KST_UNCONT_FAR_TENTH_US 3000
142#define KST_RULE_BIT(rule) ((kst_rules_t)1 << (rule))
145#define KST_RULES_HARD (KST_RULE_BIT(KST_S_DUTY_RAISED) - 1u)
kst_rule_t
The rules.
Definition kst_limits.h:82
@ KST_H_NEVER
Definition kst_limits.h:108
@ KST_S_GYRO_CHANGED
Definition kst_limits.h:132
@ KST_H_DUTY_HIGH
Definition kst_limits.h:84
@ KST_H_DUTY_COPY
Definition kst_limits.h:86
@ KST_H_LOWER_LOW
Definition kst_limits.h:96
@ KST_H_DUTY_LOW
Definition kst_limits.h:85
@ KST_H_SPD_SEL_LOW_SPD
Definition kst_limits.h:90
@ KST_S_LOWER_MOVED
Definition kst_limits.h:123
@ KST_H_SPAN
Definition kst_limits.h:100
@ KST_S_NARROW_BAND_GAIN
Definition kst_limits.h:133
@ KST_S_LEFT_RAISED
Definition kst_limits.h:128
@ KST_S_RIGHT_SMALL
Definition kst_limits.h:131
@ KST_S_NEUTRAL_MOVED
Definition kst_limits.h:126
@ KST_S_LOWER_NEAR
Definition kst_limits.h:122
@ KST_H_RIGHT_ZERO
Definition kst_limits.h:104
@ KST_S_ALLOW_UNCONT_ON
Definition kst_limits.h:119
@ KST_H_NEUTRAL_HIGH
Definition kst_limits.h:102
@ KST_H_SPD_HIGH
Definition kst_limits.h:89
@ KST_H_GYRO_MODE
Definition kst_limits.h:105
@ KST_S_DUTY_RAISED
Definition kst_limits.h:110
@ KST_S_UNCONT_POS_FAR
Definition kst_limits.h:120
@ KST_S_HIGH_DUTY_TRAVEL
Definition kst_limits.h:135
@ KST_S_SPD_SEL_ON
Definition kst_limits.h:115
@ KST_S_SOFT_START_OFF
Definition kst_limits.h:114
@ KST_S_DEAD_BAND_BELOW_1US
Definition kst_limits.h:118
@ KST_H_UPPER_HIGH
Definition kst_limits.h:98
@ KST_H_LOCKED
Definition kst_limits.h:107
@ KST_S_LEFT_SMALL
Definition kst_limits.h:129
@ KST_H_UNCONT_TIME_LOW
Definition kst_limits.h:94
@ KST_S_STRETCH_RAISED
Definition kst_limits.h:113
@ KST_S_UNCONT_TIME_SHORT
Definition kst_limits.h:121
@ KST_S_UPPER_MOVED
Definition kst_limits.h:125
@ KST_H_STRETCH_INDEX
Definition kst_limits.h:88
@ KST_S_DUTY_BELOW_HALF
Definition kst_limits.h:111
@ KST_H_UNCONT_POS_SPAN
Definition kst_limits.h:93
@ KST_S_BOOST_RAISED
Definition kst_limits.h:112
@ KST_H_BOOST_HIGH
Definition kst_limits.h:87
@ KST_S_DEAD_BAND_NARROWED
Definition kst_limits.h:117
@ KST_H_LOWER_MARGIN
Definition kst_limits.h:97
@ KST_H_LEFT_ZERO
Definition kst_limits.h:103
@ KST_S_RIGHT_RAISED
Definition kst_limits.h:130
@ KST_S_REVERSION_CHANGED
Definition kst_limits.h:127
@ KST_S_SPD_SLOW
Definition kst_limits.h:116
@ KST_H_UPPER_MARGIN
Definition kst_limits.h:99
@ KST_H_UNCONT_TIME_HIGH
Definition kst_limits.h:95
@ KST_S_UPPER_NEAR
Definition kst_limits.h:124
@ KST_H_UNCONT_POS_LOW
Definition kst_limits.h:91
@ KST_H_NEUTRAL_LOW
Definition kst_limits.h:101
@ KST_H_UNCONT_POS_HIGH
Definition kst_limits.h:92
kst_rules_t kst_limits_image(const kst_image_t *img)
The hard rules an image breaks on its own.
Definition kst_limits.c:138
kst_rules_t kst_limits_edit(const kst_image_t *backup, const kst_image_t *target, kst_field_set_t unlocked, kst_field_set_t *refused)
The hard and soft rules the image target breaks as an edit of the servo's image backup.
Definition kst_limits.c:245
uint64_t kst_rules_t
A set of rules, bit n for rule n.
Definition kst_limits.h:141
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