15#include "devicelist.h"
18static void Gyro_exec(
UART_t *uart,
char *);
20DEFINE_PROGRAM_HANDLE(
"gyro", Gyro_exec, NULL)
29static void Gyro_exec(
UART_t *uart,
char *flags) {
32 int argPrintIdx = parser.addArg(
33 &parser,
"print", 0, ARG_TYPE_BOOL,
false
35 int argResetIdx = parser.addArg(
36 &parser,
"reset", 0, ARG_TYPE_BOOL,
false
38 int argRepeatIdx = parser.addArg(
39 &parser,
"--repeat",
'r', ARG_TYPE_BOOL,
false
41 int argVerboseIdx = parser.addArg(
42 &parser,
"--verbose",
'v', ARG_TYPE_BOOL,
false
44 int argBiasIdx = parser.addArg(
45 &parser,
"bias", 0, ARG_TYPE_STRING,
false
48 char *tokens[MAX_ARGS];
52 char *token = strtok(flags,
" ");
53 while (token != NULL && numTokens < MAX_ARGS) {
54 tokens[numTokens++] = token;
55 token = strtok(NULL,
" ");
59 parser.parseArgs(&parser, numTokens, tokens);
62 if (parser.error.status == PARSER_STATUS_ERROR) {
63 uart->println(uart, parser.error.msg);
70 if (parser.args[argPrintIdx].provided) {
73 char *terminal = (parser.args[argRepeatIdx].provided) ?
"\r" :
"\r\n";
76 if (parser.args[argVerboseIdx].provided) {
80 timestamp,
sizeof(timestamp),
"[t=%fs] ",
81 state->flightTimeMs / 1000.0f
83 uart->print(uart, timestamp);
88 str, 50,
"X: % -10.4f Y: % -10.4f Z: % -10.4f%s",
94 uart->print(uart, str);
97 if (parser.args[argRepeatIdx].provided)
102 else if (parser.args[argResetIdx].provided) {
115 uart->println(uart,
"Reset gyroscope parameters.");
119 uart->println(uart, parser.error.msg);
float * gyroData
Processed angular rates array.
uint8_t * rawGyroData
Raw angular rates array.
float * bias
Bias offset array.
DeviceHandle_t DeviceList_getDeviceHandle(DeviceKey)
Retrieve device handle from list by key.
Struct definition for UART interface.
Defines the API for the Gyroscope sensor.