Exemple #1
0
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);
        }
    }
}
Exemple #3
0
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;
}
Exemple #6
0
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;
}