1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
#ifndef _LIBGSMD_PBOOK_H
#define _LIBGSMD_PBOOK_H
#include <libgsmd/libgsmd.h>
/* Phonebook */
/* Chapter 8.11 */
enum lgsm_pbook_type {
LGSM_PB_ME_DIALLED = 1,
LGSM_PB_SIM_EMERGENCY = 2,
LGSM_PB_SIM_FIXDIAL = 3,
LGSM_PB_SIM_DIALLED = 4,
LGSM_PB_ME_MISSED = 5,
LGSM_PB_ME_PHONEBOOK = 6,
LGSM_PB_COMB_PHONEBOOK = 7,
LGSM_PB_SIM_OWN_NUMBERS = 8,
LGSM_PB_ME_RECEIVED = 9,
LGSM_PB_SIM_PHONEBOOK = 10,
LGSM_PB_TA_PHONEBOOK = 11,
};
/* Refer to GSM 07.07 subclause 8.14 */
enum lgsm_pb_addr_type {
LGSM_PB_ATYPE_INTL = 145,
LGSM_PB_ATYPE_OTHE = 129,
};
/* Refer to GSM 07.07 subclause 8.12 */
struct lgsm_phonebook_readrg {
int index1;
int index2;
};
/* Refer to GSM 07.07 subclause 8.14 */
/* FIXME: the nlength and tlength depend on SIM, use +CPBR=? to get */
#define LGSM_PB_NUMB_MAXLEN 44
#define LGSM_PB_TEXT_MAXLEN 14
struct lgsm_phonebook {
int index;
char numb[LGSM_PB_NUMB_MAXLEN+1];
enum lgsm_pb_addr_type type;
char text[LGSM_PB_TEXT_MAXLEN+1];
};
/* Refer to GSM 07.07 subclause 8.13 */
/* FIXME: the tlength depends on SIM, use +CPBR=? to get */
struct lgsm_phonebook_find {
char findtext[LGSM_PB_TEXT_MAXLEN+1];
};
#if 0
/* Get a bitmask of supported phonebook types */
extern int lgsm_pb_get_types(struct lgsm_handle *lh, u_int32 *typemask);
/* Get a range of supported indexes in given phonebook type, Chapter 8.12 */
extern int lgsm_pb_get_range(struct lgsm_handle *lh,
enum lgsm_pbook_type type,
u_int32_t *from, u_int32_t *to,
u_int32_t *nlength, *u_int32_t tlength);
#define LGSM_PB_TEXT_MAXLEN 31
#endif
struct lgsm_pb_entry {
struct lgsm_pb_entry *next;
enum lgsm_pbook_type type;
u_int32_t index;
char text[LGSM_PB_TEXT_MAXLEN+1];
};
/* Get a specific phonebook entry and store it to 'pb'
* pb' is caller-allocated */
extern int lgsm_pb_get_entry(struct lgsm_handle *lh,
struct lgsm_pb_entry *pb);
/* Store a specific phonebook entry 'pb' into phone */
extern int lgsm_pb_set_entry(struct lgsm_handle *lh,
struct lgsm_pb_entry *pb);
/* Find phonebook entires which alphanumeric filed start
* with string <findtext> */
extern int lgsm_pb_find_entry(struct lgsm_handle *lh,
const struct lgsm_phonebook_find *pb_find);
/* Read phonebook entry in location number index */
extern int lgsm_pb_read_entry(struct lgsm_handle *lh, int index);
/* Read phonebook entries in location number range */
extern int lgsm_pb_read_entryies(struct lgsm_handle *lh,
const struct lgsm_phonebook_readrg *pb_readrg);
/* Delete phonebook entry in location index */
extern int lgsmd_pb_del_entry(struct lgsm_handle *lh, int index);
/* Write phonebook entry in location */
extern int lgsmd_pb_write_entry(struct lgsm_handle *lh,
const struct lgsm_phonebook *pb);
/* Get the location range/nlength/tlength supported */
extern int lgsm_pb_get_support(struct lgsm_handle *lh);
#endif
|