diff options
Diffstat (limited to 'include/gsmd/extrsp.h')
-rw-r--r-- | include/gsmd/extrsp.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/include/gsmd/extrsp.h b/include/gsmd/extrsp.h new file mode 100644 index 0000000..1f6e6a5 --- /dev/null +++ b/include/gsmd/extrsp.h @@ -0,0 +1,45 @@ +#ifndef _GSMD_EXTRSP_H +#define _GSMD_EXTRSP_H + +/* how many tokens (CSV items) can an extended response have, max */ +#define GSM_EXTRSP_MAX_TOKENS 16 + +/* how many individual sub-ranges can one range contain */ +#define GSM_EXTRSP_MAX_RANGES 16 + + +struct gsm_extrsp_range_item { + int min; + int max; +}; + +enum gsm_extrsp_tok_type { + GSMD_ECMD_RTT_NONE, + GSMD_ECMD_RTT_EMPTY, + GSMD_ECMD_RTT_NUMERIC, + GSMD_ECMD_RTT_STRING, + GSMD_ECMD_RTT_RANGE, +}; + +struct gsm_extrsp_tok { + enum gsm_extrsp_tok_type type; + union { + struct { + struct gsm_extrsp_range_item item[GSM_EXTRSP_MAX_RANGES]; + int num_items; + } range; + char string[64]; + int numeric; + } u; +}; + +struct gsm_extrsp { + unsigned int num_tokens; + struct gsm_extrsp_tok tokens[GSM_EXTRSP_MAX_TOKENS]; +}; + +extern int extrsp_supports(const struct gsm_extrsp *er, int index, int value); +extern struct gsm_extrsp *extrsp_parse(const void *ctx, const char *input); +extern void extrsp_dump(const struct gsm_extrsp *er); + +#endif |