static void parse_args(FAR struct adc_state_s *adc, int argc, FAR char **argv) { FAR char *ptr; FAR char *str; long value; int index; int nargs; for (index = 1; index < argc; ) { ptr = argv[index]; if (ptr[0] != '-') { printf("Invalid options format: %s\n", ptr); exit(0); } switch (ptr[1]) { case 'n': nargs = arg_decimal(&argv[index], &value); if (value < 0) { printf("Count must be non-negative: %ld\n", value); exit(1); } adc->count = (uint32_t)value; index += nargs; break; case 'p': nargs = arg_string(&argv[index], &str); adc_devpath(adc, str); index += nargs; break; case 'h': adc_help(adc); exit(0); default: printf("Unsupported option: %s\n", ptr); adc_help(adc); exit(1); } } }
static void parse_args(FAR struct wdog_example_s *wdog, int argc, FAR char **argv) { FAR char *ptr; long value; int index; int nargs; wdog->pingtime = CONFIG_EXAMPLES_WATCHDOG_PINGTIME; wdog->pingdelay = CONFIG_EXAMPLES_WATCHDOG_PINGDELAY; wdog->timeout = CONFIG_EXAMPLES_WATCHDOG_TIMEOUT; for (index = 1; index < argc; ) { ptr = argv[index]; if (ptr[0] != '-') { message("Invalid options format: %s\n", ptr); exit(EXIT_SUCCESS); } switch (ptr[1]) { case 'd': nargs = arg_decimal(&argv[index], &value); if (value < 1) { message("Ping delay out of range: %ld\n", value); exit(EXIT_FAILURE); } wdog->pingdelay = (uint32_t)value; index += nargs; break; case 'p': nargs = arg_decimal(&argv[index], &value); if (value < 1 || value > 99) { message("Ping time out of range: %ld\n", value); exit(EXIT_FAILURE); } wdog->pingtime = (uint8_t)value; index += nargs; break; case 't': nargs = arg_decimal(&argv[index], &value); if (value < 1 || value > INT_MAX) { message("Duration out of range: %ld\n", value); exit(EXIT_FAILURE); } wdog->timeout = (int)value; index += nargs; break; case 'h': wdog_help(); exit(EXIT_SUCCESS); default: message("Unsupported option: %s\n", ptr); wdog_help(); exit(EXIT_FAILURE); } } }
static void parse_args(int argc, FAR char **argv) { FAR char *ptr; FAR char *str; long value; int index; int nargs; g_qeexample.reset = false; g_qeexample.nloops = 1; g_qeexample.delay = CONFIG_EXAMPLES_QENCODER_DELAY; for (index = 1; index < argc; ) { ptr = argv[index]; if (ptr[0] != '-') { message("Invalid options format: %s\n", ptr); exit(0); } switch (ptr[1]) { case 'n': nargs = arg_decimal(&argv[index], &value); if (value < 0 || value > INT_MAX) { message("Sample count out of range: %ld\n", value); exit(1); } g_qeexample.nloops = (unsigned int)value; index += nargs; break; case 'p': nargs = arg_string(&argv[index], &str); qe_devpath(str); index += nargs; break; case 't': nargs = arg_decimal(&argv[index], &value); if (value < 0 || value > INT_MAX) { message("Sample delay out of range: %ld\n", value); exit(1); } g_qeexample.delay = (unsigned int)value; index += nargs; break; case 'r': g_qeexample.reset = true; index++; break; case 'h': qe_help(); exit(EXIT_SUCCESS); default: message("Unsupported option: %s\n", ptr); qe_help(); exit(EXIT_FAILURE); } } }
static void parse_args(FAR struct pwm_state_s *pwm, int argc, FAR char **argv) { FAR char *ptr; FAR char *str; long value; int index; int nargs; for (index = 1; index < argc; ) { ptr = argv[index]; if (ptr[0] != '-') { message("Invalid options format: %s\n", ptr); exit(0); } switch (ptr[1]) { case 'f': nargs = arg_decimal(&argv[index], &value); if (value < 1) { message("Frequency out of range: %ld\n", value); exit(1); } pwm->freq = (uint32_t)value; index += nargs; break; case 'd': nargs = arg_decimal(&argv[index], &value); if (value < 1 || value > 99) { message("Duty out of range: %ld\n", value); exit(1); } pwm->duty = (uint8_t)value; index += nargs; break; #ifdef CONFIG_PWM_PULSECOUNT case 'n': nargs = arg_decimal(&argv[index], &value); if (value < 0) { message("Count must be non-negative: %ld\n", value); exit(1); } pwm->count = (uint32_t)value; index += nargs; break; #endif case 'p': nargs = arg_string(&argv[index], &str); pwm_devpath(pwm, str); index += nargs; break; case 't': nargs = arg_decimal(&argv[index], &value); if (value < 1 || value > INT_MAX) { message("Duration out of range: %ld\n", value); exit(1); } pwm->duration = (int)value; index += nargs; break; case 'h': pwm_help(pwm); exit(0); default: message("Unsupported option: %s\n", ptr); pwm_help(pwm); exit(1); } } }
static int parse_args(int argc, FAR char **argv) { FAR char *ptr; long value; int index; int nargs; g_stepper.motor = DEFAULT_MOTOR; g_stepper.freq = DEFAULT_FREQ; g_stepper.steps = DEFAULT_STEPS; g_stepper.rel_pos = DEFAULT_REL_POS; g_stepper.delay_ms = DEFAULT_DELAY; g_stepper.blocking = DEFAULT_BLOCKING; g_stepper.loops = DEFAULT_LOOPS; g_stepper.reset_index = DEFAULT_RESET_INDEX; for (index = 1; index < argc; ) { ptr = argv[index]; if (ptr[0] != '-') { printf("Invalid options format: %s\n", ptr); exit(0); } switch (ptr[1]) { /* Motor device to be controlled */ case 'm': nargs = arg_decimal(&argv[index], &value); if (nargs == 0 || value < 0) { printf("'m' out of range, nargs:%d, value:%ld\n", nargs, value); return ERROR; } g_stepper.motor = (uint8_t)value; index += nargs; break; /* Step count */ case 's': nargs = arg_decimal(&argv[index], &value); if (nargs == 0) { printf("'s' out of range, nargs:%d\n", nargs); return ERROR; } g_stepper.steps = (int32_t)value; index += nargs; break; /* Frequency */ case 'f': nargs = arg_decimal(&argv[index], &value); if (nargs == 0 || value < 1) { printf("'f' out of range, nargs:%d, value:%ld\n", nargs, value); return ERROR; } g_stepper.freq = (uint32_t)value; index += nargs; break; /* Relative position index */ case 'r': nargs = arg_decimal(&argv[index], &value); if (nargs == 0 || (value < 0 || value > 1)) { printf("'r' out of range, nargs:%d, value:%ld\n", nargs, value); return ERROR; } g_stepper.rel_pos = (uint8_t)value; index += nargs; break; /* Delay between loops */ case 'd': nargs = arg_decimal(&argv[index], &value); if (nargs == 0 || value < 0) { printf("'d' out of range, nargs:%d, value:%ld\n", nargs, value); return ERROR; } g_stepper.delay_ms = (uint32_t)value; index += nargs; break; /* Blocking / non-blocking mode */ case 'b': nargs = arg_decimal(&argv[index], &value); if (nargs == 0 || (value < 0 || value > 1)) { printf("'b' out of range, nargs:%d, value:%ld\n", nargs, value); return ERROR; } g_stepper.blocking = (uint8_t)value; index += nargs; break; /* Loop n-times */ case 'l': nargs = arg_decimal(&argv[index], &value); if (nargs == 0 || value < 1) { printf("'l' out of range, nargs:%d, value:%ld\n", nargs, value); return ERROR; } g_stepper.loops = (uint32_t)value; index += nargs; break; /* Reset position index */ case 'i': nargs = arg_decimal(&argv[index], &value); if (nargs == 0 || (value < 0 || value > 1)) { printf("'i' out of range, nargs:%d, value:%ld\n", nargs, value); return ERROR; } g_stepper.reset_index = (bool)value; index += nargs; break; default: printf("Unsupported option: %s\n", ptr); stepper_help(); exit(1); } } return OK; }
int common_args(FAR struct i2ctool_s *i2ctool, FAR char **arg) { FAR char *ptr = *arg; long value; int ret; if (ptr[0] != '-') { goto invalid_argument; } switch (ptr[1]) { case 'a': ret = arg_hex(arg, &value); if (value < CONFIG_I2CTOOL_MINADDR || value > CONFIG_I2CTOOL_MAXADDR) { goto out_of_range; } i2ctool->addr = (uint8_t) value; return ret; case 'b': ret = arg_decimal(arg, &value); if (value < CONFIG_I2CTOOL_MINBUS || value > CONFIG_I2CTOOL_MAXBUS) { goto out_of_range; } i2ctool->bus = (uint8_t) value; return ret; case 'f': ret = arg_decimal(arg, &value); if (value == 0) { goto out_of_range; } i2ctool->freq = value; return ret; case 'i': i2ctool->autoincr = true; return 1; case 'j': i2ctool->autoincr = false; return 1; case 'n': i2ctool->start = false; return 1; case 'r': ret = arg_hex(arg, &value); if (value < 0 || value > CONFIG_I2CTOOL_MAXREGADDR) { goto out_of_range; } i2ctool->regaddr = (uint8_t) value; return ret; case 's': i2ctool->start = true; return 1; case 'w': ret = arg_decimal(arg, &value); if (value != 8 && value != 16) { goto out_of_range; } i2ctool->width = (uint8_t) value; return ret; default: goto invalid_argument; } invalid_argument: i2ctool_printf(i2ctool, g_i2carginvalid, ptr); return ERROR; out_of_range: i2ctool_printf(i2ctool, g_i2cargrange, ptr); return ERROR; }