ev3_servo.h
Go to the documentation of this file.
1 
2 /* ev3_servo.h was generated by yup.py (yupp) 1.0c3
3  out of ev3_servo.yu-h
4  */
11 #ifndef EV3_SERVO_H
12 #define EV3_SERVO_H
13 
14 #ifdef EV3_SERVO_IMPLEMENT
15 #define EV3_SERVO_VAR( decl ) \
16  decl
17 #define EV3_SERVO_VAR_INIT( decl, ... ) \
18  decl = __VA_ARGS__
19 
20 #define EV3_SERVO_INL
21 
22 #else /* EV3_SERVO_IMPLEMENT */
23 #define EV3_SERVO_VAR( decl ) \
24  extern decl
25 #define EV3_SERVO_VAR_INIT( decl, ... ) \
26  extern decl
27 
28 #if __GNUC__ && !__GNUC_STDC_INLINE__
29 #define EV3_SERVO_INL \
30  extern inline
31 #else
32 #define EV3_SERVO_INL \
33  inline
34 #endif
35 
36 #endif /* EV3_SERVO_IMPLEMENT */
37 
38 #include <stddef.h>
39 #include <stdint.h>
40 #include <stdbool.h>
41 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52 
53 #define SERVO_DIR "/sys/class/servo-motor"
58 typedef struct {
59  INX_T type_inx;
60  uint8_t port;
61  uint8_t extport;
62  uint8_t addr;
64 } EV3_SERVO;
65 
66 #define SERVO_DESC__LIMIT_ DESC_LIMIT
68 #define SERVO__NONE_ SERVO_DESC__LIMIT_
73 EV3_SERVO_VAR( EV3_SERVO ev3_servo[ SERVO_DESC__LIMIT_ ] );
74 
78 enum {
79  SERVO_TYPE__NONE_ = 0, /* XXX: memset( 0 ) is used */
80 
81  SERVO_MOTOR,
82 
84  SERVO_TYPE__UNKNOWN_ = SERVO_TYPE__COUNT_
85 };
86 
90 enum {
91  SERVO_COMMAND__NONE_ = 0,
92 
93  SERVO_RUN,
94  SERVO_FLOAT,
95 
97  SERVO_COMMAND__UNKNOWN_ = SERVO_COMMAND__COUNT_
98 };
99 
103 enum {
104  SERVO_POLARITY__NONE_ = 0,
105 
106  SERVO_NORMAL,
107  SERVO_INVERSED,
108 
110  SERVO_POLARITY__UNKNOWN_ = SERVO_POLARITY__COUNT_
111 };
112 
116 enum {
117  SERVO_STATE__NONE_ = 0,
118 
119  SERVO_RUNNING = 0x1L,
120 
121 };
122 
130 extern size_t get_servo_address( uint8_t sn, char *buf, size_t sz );
131 
139 extern size_t get_servo_command( uint8_t sn, char *buf, size_t sz );
140 
148 extern size_t set_servo_command( uint8_t sn, char *value );
149 
157 extern size_t multi_set_servo_command( uint8_t *sn, char *value );
158 
166 extern size_t get_servo_driver_name( uint8_t sn, char *buf, size_t sz );
167 
175 extern size_t get_servo_max_pulse_sp( uint8_t sn, int *buf );
176 
184 extern size_t set_servo_max_pulse_sp( uint8_t sn, int value );
185 
193 extern size_t multi_set_servo_max_pulse_sp( uint8_t *sn, int value );
194 
202 extern size_t get_servo_mid_pulse_sp( uint8_t sn, int *buf );
203 
211 extern size_t set_servo_mid_pulse_sp( uint8_t sn, int value );
212 
220 extern size_t multi_set_servo_mid_pulse_sp( uint8_t *sn, int value );
221 
229 extern size_t get_servo_min_pulse_sp( uint8_t sn, int *buf );
230 
238 extern size_t set_servo_min_pulse_sp( uint8_t sn, int value );
239 
247 extern size_t multi_set_servo_min_pulse_sp( uint8_t *sn, int value );
248 
256 extern size_t get_servo_polarity( uint8_t sn, char *buf, size_t sz );
257 
265 extern size_t set_servo_polarity( uint8_t sn, char *value );
266 
274 extern size_t multi_set_servo_polarity( uint8_t *sn, char *value );
275 
283 extern size_t get_servo_position_sp( uint8_t sn, int *buf );
284 
292 extern size_t set_servo_position_sp( uint8_t sn, int value );
293 
301 extern size_t multi_set_servo_position_sp( uint8_t *sn, int value );
302 
310 extern size_t get_servo_rate_sp( uint8_t sn, int *buf );
311 
319 extern size_t set_servo_rate_sp( uint8_t sn, int value );
320 
328 extern size_t multi_set_servo_rate_sp( uint8_t *sn, int value );
329 
337 extern size_t get_servo_state( uint8_t sn, char *buf, size_t sz );
338 
344 extern const char *ev3_servo_type( INX_T type_inx );
345 
351 extern INX_T get_servo_type_inx( uint8_t sn );
352 
359 extern size_t get_servo_desc( uint8_t sn, EV3_SERVO *desc );
360 
366 extern EV3_SERVO *ev3_servo_desc( uint8_t sn );
367 
373 extern INX_T ev3_servo_desc_type_inx( uint8_t sn );
374 
380 extern uint8_t ev3_servo_desc_port( uint8_t sn );
381 
387 extern uint8_t ev3_servo_desc_extport( uint8_t sn );
388 
394 extern uint8_t ev3_servo_desc_addr( uint8_t sn );
395 
402 extern char *ev3_servo_port_name( uint8_t sn, char *buf );
403 
411 extern bool ev3_search_servo( INX_T type_inx, uint8_t *sn, uint8_t from );
412 
421 extern bool ev3_search_servo_plugged_in( uint8_t port, uint8_t extport, uint8_t *sn, uint8_t from );
422 
428 extern const char *ev3_servo_command( INX_T command_inx );
429 
435 extern INX_T get_servo_command_inx( uint8_t sn );
436 
443 extern size_t set_servo_command_inx( uint8_t sn, INX_T command_inx );
444 
451 extern size_t multi_set_servo_command_inx( uint8_t *sn, INX_T command_inx );
452 
458 extern const char *ev3_servo_polarity( INX_T polarity_inx );
459 
465 extern INX_T get_servo_polarity_inx( uint8_t sn );
466 
473 extern size_t set_servo_polarity_inx( uint8_t sn, INX_T polarity_inx );
474 
481 extern size_t multi_set_servo_polarity_inx( uint8_t *sn, INX_T polarity_inx );
482 
489 extern size_t get_servo_state_flags( uint8_t sn, FLAGS_T *flags );
490 
495 extern int ev3_servo_init( void );
496 
497 #ifdef __cplusplus
498 }
499 #endif
500 
503 #undef EV3_SERVO_VAR
504 #undef EV3_SERVO_VAR_INIT
505 #undef EV3_SERVO_INL
506 #endif
507 
const char * ev3_servo_command(INX_T command_inx)
Get name of the specified servo motor command.
Definition: ev3_servo.c:325
size_t set_servo_rate_sp(uint8_t sn, int value)
Write "rate_sp" attribute of the servo motor.
Definition: ev3_servo.c:197
INX_T ev3_servo_desc_type_inx(uint8_t sn)
Get type from the servo motor descriptor.
Definition: ev3_servo.c:263
size_t set_servo_polarity(uint8_t sn, char *value)
Write "polarity" attribute of the servo motor.
Definition: ev3_servo.c:151
size_t set_servo_mid_pulse_sp(uint8_t sn, int value)
Write "mid_pulse_sp" attribute of the servo motor.
Definition: ev3_servo.c:105
bool ev3_search_servo_plugged_in(uint8_t port, uint8_t extport, uint8_t *sn, uint8_t from)
Search of a sequence number the servo motor by plug-in attributes.
Definition: ev3_servo.c:303
size_t get_servo_min_pulse_sp(uint8_t sn, int *buf)
Read "min_pulse_sp" attribute of the servo motor.
Definition: ev3_servo.c:120
size_t set_servo_min_pulse_sp(uint8_t sn, int value)
Write "min_pulse_sp" attribute of the servo motor.
Definition: ev3_servo.c:128
size_t get_servo_command(uint8_t sn, char *buf, size_t sz)
Read "command" attribute of the servo motor.
Definition: ev3_servo.c:43
size_t get_servo_position_sp(uint8_t sn, int *buf)
Read "position_sp" attribute of the servo motor.
Definition: ev3_servo.c:166
size_t set_servo_position_sp(uint8_t sn, int value)
Write "position_sp" attribute of the servo motor.
Definition: ev3_servo.c:174
size_t get_servo_rate_sp(uint8_t sn, int *buf)
Read "rate_sp" attribute of the servo motor.
Definition: ev3_servo.c:189
int ev3_servo_init(void)
Detect connected servo motors.
Definition: ev3_servo.c:409
size_t multi_set_servo_command_inx(uint8_t *sn, INX_T command_inx)
Write "command" attribute of several servo motors by the index.
Definition: ev3_servo.c:354
INX_T get_servo_polarity_inx(uint8_t sn)
Read "polarity" attribute of the servo motor and get the index.
Definition: ev3_servo.c:371
size_t multi_set_servo_min_pulse_sp(uint8_t *sn, int value)
Write "min_pulse_sp" attribute of several servo motors.
Definition: ev3_servo.c:136
size_t get_servo_max_pulse_sp(uint8_t sn, int *buf)
Read "max_pulse_sp" attribute of the servo motor.
Definition: ev3_servo.c:74
uint8_t extport
Definition: ev3_servo.h:61
uint8_t addr
Definition: ev3_servo.h:62
Structure of a servo motor descriptor.
Definition: ev3_servo.h:58
Definition: ev3_servo.h:83
size_t get_servo_state(uint8_t sn, char *buf, size_t sz)
Read "state" attribute of the servo motor.
Definition: ev3_servo.c:212
uint8_t ev3_servo_desc_extport(uint8_t sn)
Get extended port from the servo motor descriptor.
Definition: ev3_servo.c:273
INX_T get_servo_command_inx(uint8_t sn)
Read "command" attribute of the servo motor and get the index.
Definition: ev3_servo.c:337
size_t get_servo_mid_pulse_sp(uint8_t sn, int *buf)
Read "mid_pulse_sp" attribute of the servo motor.
Definition: ev3_servo.c:97
size_t multi_set_servo_polarity_inx(uint8_t *sn, INX_T polarity_inx)
Write "polarity" attribute of several servo motors by the index.
Definition: ev3_servo.c:388
size_t get_servo_polarity(uint8_t sn, char *buf, size_t sz)
Read "polarity" attribute of the servo motor.
Definition: ev3_servo.c:143
bool ev3_search_servo(INX_T type_inx, uint8_t *sn, uint8_t from)
Search of a sequence number of the specified servo motor type.
Definition: ev3_servo.c:288
uint8_t port
Definition: ev3_servo.h:60
INX_T get_servo_type_inx(uint8_t sn)
Read "driver_name" attribute and get index of the servo motor type.
Definition: ev3_servo.c:230
size_t multi_set_servo_position_sp(uint8_t *sn, int value)
Write "position_sp" attribute of several servo motors.
Definition: ev3_servo.c:182
EV3_SERVO * ev3_servo_desc(uint8_t sn)
Get descriptor of the servo motor.
Definition: ev3_servo.c:257
size_t get_servo_desc(uint8_t sn, EV3_SERVO *desc)
Read servo motor attributes that are required for filling the descriptor.
Definition: ev3_servo.c:241
size_t set_servo_command(uint8_t sn, char *value)
Write "command" attribute of the servo motor.
Definition: ev3_servo.c:51
const char * ev3_servo_type(INX_T type_inx)
Get name of the specified servo motor type.
Definition: ev3_servo.c:220
size_t set_servo_command_inx(uint8_t sn, INX_T command_inx)
Write "command" attribute of the servo motor by the index.
Definition: ev3_servo.c:349
size_t get_servo_state_flags(uint8_t sn, FLAGS_T *flags)
Read "state" attribute of the servo motor and get the flags.
Definition: ev3_servo.c:393
uint8_t ev3_servo_desc_addr(uint8_t sn)
Get I2C address from the servo motor descriptor.
Definition: ev3_servo.c:278
size_t multi_set_servo_max_pulse_sp(uint8_t *sn, int value)
Write "max_pulse_sp" attribute of several servo motors.
Definition: ev3_servo.c:90
const char * ev3_servo_polarity(INX_T polarity_inx)
Get name of the specified servo motor polarity.
Definition: ev3_servo.c:359
size_t multi_set_servo_mid_pulse_sp(uint8_t *sn, int value)
Write "mid_pulse_sp" attribute of several servo motors.
Definition: ev3_servo.c:113
size_t multi_set_servo_polarity(uint8_t *sn, char *value)
Write "polarity" attribute of several servo motors.
Definition: ev3_servo.c:159
INX_T type_inx
Definition: ev3_servo.h:59
size_t set_servo_polarity_inx(uint8_t sn, INX_T polarity_inx)
Write "polarity" attribute of the servo motor by the index.
Definition: ev3_servo.c:383
size_t multi_set_servo_rate_sp(uint8_t *sn, int value)
Write "rate_sp" attribute of several servo motors.
Definition: ev3_servo.c:205
size_t set_servo_max_pulse_sp(uint8_t sn, int value)
Write "max_pulse_sp" attribute of the servo motor.
Definition: ev3_servo.c:82
size_t get_servo_address(uint8_t sn, char *buf, size_t sz)
Read "address" attribute of the servo motor.
Definition: ev3_servo.c:35
Definition: ev3_servo.h:96
Definition: ev3_servo.h:109
char * ev3_servo_port_name(uint8_t sn, char *buf)
Assemble EV3 port name from the servo motor descriptor.
Definition: ev3_servo.c:283
size_t get_servo_driver_name(uint8_t sn, char *buf, size_t sz)
Read "driver_name" attribute of the servo motor.
Definition: ev3_servo.c:66
size_t multi_set_servo_command(uint8_t *sn, char *value)
Write "command" attribute of several servo motors.
Definition: ev3_servo.c:59
uint8_t ev3_servo_desc_port(uint8_t sn)
Get EV3 port from the servo motor descriptor.
Definition: ev3_servo.c:268