Exemple #1
0
int16_t
parse_cmd_ask_2272_send(char *cmd, char *output, uint16_t len)
{
  (void) output;
  (void) len;

  uint8_t command[3];
  uint8_t delay = 74;
  uint8_t cnt = 10;
  uint8_t sync = 96;

#ifdef TEENSY_SUPPORT
  uint16_t val;
  uint8_t ret;

  for (uint8_t i = 0; i < sizeof(command); i++)
  {
    ret = next_uint16(cmd, &val);
    if (!ret)
      return ECMD_ERR_PARSE_ERROR;

    command[i] = (uint8_t) val;
    cmd += ret;
    if (i < sizeof(command) - 1 && *cmd != ',')
      return ECMD_ERR_PARSE_ERROR;

    cmd++;
  }
  ret = next_uint16(cmd, &val);
  if (ret)
  {
    delay = (uint8_t) val;
    cmd += ret;
    ret = next_uint16(cmd, &val);
    if (ret)
    {
      cnt = (uint8_t) val;
      cmd += ret;
      ret = next_uint16(cmd, &val);
      if (ret)
      {
        sync = (uint8_t) val;
      }
    }
  }
#else
  int ret = sscanf_P(cmd, PSTR("%hhu,%hhu,%hhu %hhu %hhu %hhu"),
                     &(command[0]), &(command[1]), &(command[2]),
                     &delay, &cnt, &sync);
  if (ret < 3)
    return ECMD_ERR_PARSE_ERROR;
#endif

  ask_2272_send(command, delay, cnt, sync);
  return ECMD_FINAL_OK;
}
Exemple #2
0
int16_t
parse_cmd_ask_2272_send(char *cmd, char *output, uint16_t len)
{
  (void) output;
  (void) len;

  uint8_t command[3];
  uint8_t delay = 74;
  uint8_t cnt = 10;
#ifdef TEENSY_SUPPORT
  while (*cmd == ' ')
    cmd++;
  command[0] = getIntFromString(cmd);
  while (*cmd != ',')
    cmd++;
  cmd++;
  command[1] = getIntFromString(cmd);
  while (*cmd != ',')
    cmd++;
  cmd++;
  command[2] = getIntFromString(cmd);
  while (*cmd != ' ')
    cmd++;
  cmd++;
  delay = getIntFromString(cmd);
  while (*cmd != ' ')
    cmd++;
  cmd++;
  cnt = getIntFromString(cmd);
  int ret = 5;
#else
  int ret = sscanf_P(cmd, PSTR("%hhu,%hhu,%hhu %hhu %hhu"), &(command[0]),
                     &(command[1]), &(command[2]), &delay, &cnt);
#endif
  if (ret < 3)
    return ECMD_ERR_PARSE_ERROR;

  ask_2272_send(command, delay, cnt);
  return ECMD_FINAL_OK;
}