static int rx_cmd_config(struct cli_state *s, int argc, char **argv) { int i; char *val; int status; struct rx_params *rx_params = s->rx->params; assert(argc >= 2); if (argc == 2) { rx_print_config(s->rx); return 0; } for (i = 2; i < argc; i++) { status = rxtx_handle_config_param(s, s->rx, argv[0], argv[i], &val); if (status < 0) { return status; } else if (status == 0) { if (!strcasecmp("n", argv[i])) { /* Configure number of samples to receive */ unsigned int n; bool ok; n = str2uint_suffix(val, 0, UINT_MAX, rxtx_kmg_suffixes, (int)rxtx_kmg_suffixes_len, &ok); if (ok) { pthread_mutex_lock(&s->rx->param_lock); rx_params->n_samples = n; pthread_mutex_unlock(&s->rx->param_lock); } else { cli_err(s, argv[0], RXTX_ERRMSG_VALUE(argv[1], val)); return CMD_RET_INVPARAM; } } else { cli_err(s, argv[0], "Unrecognized command: %s", argv[1]); return CMD_RET_INVPARAM; } } } return 0; }
static int tx_config(struct cli_state *s, int argc, char **argv) { int i; char *val; int status; struct tx_params *tx_params = s->tx->params; assert(argc >= 2); if (argc == 2) { tx_print_config(s->tx); return 0; } for (i = 2; i < argc; i++) { status = rxtx_handle_config_param(s, s->tx, argv[0], argv[i], &val); if (status < 0) { return status; } else if (status == 0) { if (!strcasecmp("repeat", argv[i])) { /* Configure the number of transmission repetitions to use */ unsigned int tmp; bool ok; tmp = str2uint(val, 0, UINT_MAX, &ok); if (ok) { MUTEX_LOCK(&s->tx->param_lock); tx_params->repeat = tmp; MUTEX_UNLOCK(&s->tx->param_lock); } else { cli_err(s, argv[0], RXTX_ERRMSG_VALUE(argv[1], val)); return CLI_RET_INVPARAM; } } else if (!strcasecmp("delay", argv[i])) { /* Configure the number of useconds between each repetition */ unsigned int tmp; bool ok; tmp = str2uint(val, 0, UINT_MAX, &ok); if (ok) { MUTEX_LOCK(&s->tx->param_lock); tx_params->repeat_delay = tmp; MUTEX_UNLOCK(&s->tx->param_lock); } else { cli_err(s, argv[0], RXTX_ERRMSG_VALUE(argv[1], val)); return CLI_RET_INVPARAM; } } else { cli_err(s, argv[0], "Unrecognized config parameter: %s\n", argv[i]); return CLI_RET_INVPARAM; } } } return 0; }