int param_getlength(const char *line, int paramnum) { int bg, en; if (param_getptr(line, &bg, &en, paramnum)) return 0; return en - bg + 1; }
char param_getchar(const char *line, int paramnum) { int bg, en; if (param_getptr(line, &bg, &en, paramnum)) return 0x00; return line[bg]; }
uint64_t param_get64ex(const char *line, int paramnum, int deflt, int base) { int bg, en; if (!param_getptr(line, &bg, &en, paramnum)) return strtoull(&line[bg], NULL, base); else return deflt; }
/** * @brief Checks if param is decimal * @param line * @param paramnum * @return */ uint8_t param_isdec(const char *line, int paramnum) { int bg, en; //TODO, check more thorougly if (!param_getptr(line, &bg, &en, paramnum)) return 1; // return strtoul(&line[bg], NULL, 10) & 0xff; return 0; }
char param_getchar_indx(const char *line, int indx, int paramnum) { int bg, en; if (param_getptr(line, &bg, &en, paramnum)) return 0x00; if (bg + indx > en) return '\0'; return line[bg + indx]; }
int param_gethex(const char *line, int paramnum, uint8_t * data, int hexcnt) { int bg, en, temp, i; if (hexcnt % 2) return 1; if (param_getptr(line, &bg, &en, paramnum)) return 1; if (en - bg + 1 != hexcnt) return 1; for(i = 0; i < hexcnt; i += 2) { if (!(isxdigit((unsigned char)line[bg + i]) && isxdigit((unsigned char)line[bg + i + 1])) ) return 1; sscanf((char[]){line[bg + i], line[bg + i + 1], 0}, "%X", &temp); data[i / 2] = temp & 0xff; }