#include <aversive/pgmspace.h>
#include <aversive/queue.h>
#include <aversive/endian.h>
+#include <aversive/error.h>
#include <parse.h>
#include <rdline.h>
#include <parse_string.h>
#include <parse_num.h>
+#include <uart.h>
#include "xbee_atcmd.h"
#include "xbee_neighbor.h"
#include "rc_proto.h"
#include "main.h"
+#include "cmdline.h"
/* commands_gen.c */
extern parse_pgm_inst_t cmd_reset;
},
};
+#ifndef USE_USB
+/**********************************************************/
+
+/* this structure is filled when cmd_baudrate is parsed successfully */
+struct cmd_baudrate_result {
+ fixed_string_t arg0;
+ uint32_t arg1;
+};
+
+/* function called when cmd_baudrate is parsed successfully */
+static void cmd_baudrate_parsed(void * parsed_result, __attribute__((unused)) void *data)
+{
+ struct cmd_baudrate_result *res = parsed_result;
+ struct uart_config c;
+
+ uart_getconf(XBEE_UART, &c);
+ c.baudrate = res->arg1;
+ uart_setconf(XBEE_UART, &c);
+}
+
+prog_char str_baudrate_arg0[] = "baudrate";
+parse_pgm_token_string_t cmd_baudrate_arg0 =
+ TOKEN_STRING_INITIALIZER(struct cmd_baudrate_result, arg0,
+ str_baudrate_arg0);
+parse_pgm_token_num_t cmd_baudrate_arg1 =
+ TOKEN_NUM_INITIALIZER(struct cmd_baudrate_result, arg1,
+ UINT32);
+
+prog_char help_baudrate[] = "Change xbee baudrate";
+parse_pgm_inst_t cmd_baudrate = {
+ .f = cmd_baudrate_parsed, /* function to call */
+ .data = NULL, /* 2nd arg of func */
+ .help_str = help_baudrate,
+ .tokens = { /* token list, NULL terminated */
+ (prog_void *)&cmd_baudrate_arg0,
+ (prog_void *)&cmd_baudrate_arg1,
+ NULL,
+ },
+};
+#endif
/* in progmem */
(parse_pgm_inst_t *)&cmd_raw,
(parse_pgm_inst_t *)&cmd_dump,
(parse_pgm_inst_t *)&cmd_debug,
+#ifndef USE_USB
+ (parse_pgm_inst_t *)&cmd_baudrate,
+#endif
NULL,
};