@@ -5,15 +5,26 @@ bool libtock_servo_exists(void) {
5
5
return driver_exists (DRIVER_NUM_SERVO );
6
6
}
7
7
8
+ returncode_t libtock_servo_number (uint16_t * servo_number ){
9
+ uint32_t value = 0 ;
10
+ syscall_return_t r = command (DRIVER_NUM_SERVO , 1 , 0 , 0 );
11
+ // Converts the returned value stored in `r`
12
+ // and assigns it to `ret`.
13
+ returncode_t ret = tock_command_return_u32_to_returncode (r , & value );
14
+ * servo_number = (uint16_t )value ;
15
+ return ret ;
16
+
17
+ }
18
+
8
19
returncode_t libtock_servo_angle (uint16_t index , uint16_t angle ) {
9
- syscall_return_t cval = command (DRIVER_NUM_SERVO , 1 , index , angle );
20
+ syscall_return_t cval = command (DRIVER_NUM_SERVO , 2 , index , angle );
10
21
return tock_command_return_novalue_to_returncode (cval );
11
22
}
12
23
13
24
returncode_t libtock_current_servo_angle (uint16_t index , uint16_t * angle ) {
14
25
uint32_t value = 0 ;
15
- syscall_return_t r = command (DRIVER_NUM_SERVO , 2 , index , 0 );
16
- // Converts the value returned by the servo, stored in `r`,
26
+ syscall_return_t r = command (DRIVER_NUM_SERVO , 3 , index , 0 );
27
+ // Converts the value returned by the servo, stored in `r`
17
28
// and assigns it to `ret`.
18
29
returncode_t ret = tock_command_return_u32_to_returncode (r , & value );
19
30
* angle = (uint16_t )value ;
0 commit comments