diff options
Diffstat (limited to 'include/gsmd')
-rw-r--r-- | include/gsmd/gsmd.h | 3 | ||||
-rw-r--r-- | include/gsmd/usock.h | 20 |
2 files changed, 21 insertions, 2 deletions
diff --git a/include/gsmd/gsmd.h b/include/gsmd/gsmd.h index f1773c3..ed334f1 100644 --- a/include/gsmd/gsmd.h +++ b/include/gsmd/gsmd.h @@ -92,6 +92,9 @@ struct gsmd_user { struct gsmd *gsmd; struct gsmd_fd gfd; /* the socket */ u_int32_t subscriptions; /* bitmaks of subscribed event groups */ + + struct llist_head pb_readrg_list; /* our READRG phonebook list */ + struct llist_head pb_find_list; /* our FIND phonebook list */ }; #define GSMD_DEBUG 1 /* debugging information */ diff --git a/include/gsmd/usock.h b/include/gsmd/usock.h index c2f03f5..66cdf48 100644 --- a/include/gsmd/usock.h +++ b/include/gsmd/usock.h @@ -194,6 +194,8 @@ enum gsmd_msg_phonebook { GSMD_PHONEBOOK_GET_SUPPORT = 6, GSMD_PHONEBOOK_LIST_STORAGE = 7, GSMD_PHONEBOOK_SET_STORAGE = 8, + GSMD_PHONEBOOK_RETRIEVE_READRG = 9, + GSMD_PHONEBOOK_RETRIEVE_FIND = 10, }; /* Type-of-Address, Numbering-Plan-Identification field, GSM 03.40, 9.1.2.5 */ @@ -432,7 +434,6 @@ struct gsmd_phonebook { char text[GSMD_PB_TEXT_MAXLEN+1]; } __attribute__ ((packed)); - /* Refer to GSM 07.07 subclause 8.13 */ /* FIXME: the tlength depends on SIM, use +CPBR=? to get */ struct gsmd_phonebook_find { @@ -472,8 +473,18 @@ struct gsmd_msg_prefoper { char opname_longalpha[16]; }; +/* Refer to GSM 07.07 subclause 8.11 */ +struct gsmd_phonebook_mem { + u_int8_t type[3]; + u_int8_t pad; + u_int16_t used; + u_int16_t total; +} __attribute__ ((packed)); + struct gsmd_phonebook_storage { - char storage[3]; + /* FIXME the amount of phonebook storage should be dynamic */ + u_int8_t num; + struct gsmd_phonebook_mem mem[20]; } __attribute__ ((packed)); /* Subscriber number information from 3GPP TS 07.07, Clause 7.1 */ @@ -518,6 +529,11 @@ struct gsmd_ucmd { char buf[]; } __attribute__ ((packed)); +struct gsmd_phonebooks { + struct llist_head list; + struct gsmd_phonebook pb; +} __attribute__ ((packed)); + extern struct gsmd_ucmd *ucmd_alloc(int extra_size); extern int usock_init(struct gsmd *g); extern void usock_cmd_enqueue(struct gsmd_ucmd *ucmd, struct gsmd_user *gu); |