From: Fabrice Desclaux Date: Thu, 29 Mar 2012 17:35:23 +0000 (+0200) Subject: new command to change the baudrate of the xbee X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=0f9366b7328777d91aa72f4b92cfcb232969e1ce;p=protos%2Fxbee-avr.git new command to change the baudrate of the xbee --- diff --git a/commands.c b/commands.c index 986ca92..a14d098 100644 --- a/commands.c +++ b/commands.c @@ -28,10 +28,12 @@ #include #include #include +#include #include #include #include #include +#include #include "xbee_atcmd.h" #include "xbee_neighbor.h" @@ -46,6 +48,7 @@ #include "rc_proto.h" #include "main.h" +#include "cmdline.h" /* commands_gen.c */ extern parse_pgm_inst_t cmd_reset; @@ -1214,6 +1217,46 @@ parse_pgm_inst_t cmd_debug = { }, }; +#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 */ @@ -1251,5 +1294,8 @@ parse_pgm_ctx_t main_ctx[] = { (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, };