added some supprt fct for cliparser, to take a hex byte param and fall back to a default value, or specify how many bytes the param must be
This commit is contained in:
@@ -285,4 +285,26 @@ uint64_t arg_get_u64_hexstr_def(CLIParserContext *ctx, uint8_t paramnum, uint64_
|
||||
return rv;
|
||||
}
|
||||
|
||||
int arg_get_u32_hexstr_def(CLIParserContext *ctx, uint8_t paramnum, uint32_t def, uint32_t *out) {
|
||||
return arg_get_u32_hexstr_def_nlen(ctx, paramnum, def, out, 4);
|
||||
}
|
||||
|
||||
int arg_get_u32_hexstr_def_nlen(CLIParserContext *ctx, uint8_t paramnum, uint32_t def, uint32_t *out, uint8_t nlen) {
|
||||
int n = 0;
|
||||
uint8_t d[nlen];
|
||||
int res = CLIParamHexToBuf(arg_get_str(ctx, paramnum), d, sizeof(d), &n);
|
||||
if (res == 0 && n == nlen) {
|
||||
uint32_t rv = 0;
|
||||
for (uint8_t i = 0; i < n; i++) {
|
||||
rv <<= 8;
|
||||
rv |= d[i];
|
||||
}
|
||||
*out = rv;
|
||||
return 1;
|
||||
} else if (res == 0 && n) {
|
||||
*out = def;
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -68,4 +68,6 @@ int CLIParamHexToBuf(struct arg_str *argstr, uint8_t *data, int maxdatalen, int
|
||||
int CLIParamStrToBuf(struct arg_str *argstr, uint8_t *data, int maxdatalen, int *datalen);
|
||||
|
||||
uint64_t arg_get_u64_hexstr_def(CLIParserContext *ctx, uint8_t paramnum, uint64_t def);
|
||||
int arg_get_u32_hexstr_def(CLIParserContext *ctx, uint8_t paramnum, uint32_t def, uint32_t *out);
|
||||
int arg_get_u32_hexstr_def_nlen(CLIParserContext *ctx, uint8_t paramnum, uint32_t def, uint32_t *out, uint8_t nlen);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user