[layer23/mobile] Improvement and fixes of idle mode process
[osmocom-bb.git] / src / host / layer23 / include / osmocom / bb / mobile / settings.h
1 #ifndef _settings_h
2 #define _settings_h
3
4 /* type of test SIM key */
5 enum {
6         GSM_SIM_KEY_XOR = 0,
7         GSM_SIM_KEY_COMP128
8 };
9
10 struct gsm_settings {
11         char                    layer2_socket_path[128];
12         char                    sap_socket_path[128];
13
14         /* IMEI */
15         char                    imei[16];
16         char                    imeisv[17];
17         char                    imei_random;
18
19         /* network search */
20         int                     plmn_mode; /* PLMN_MODE_* */
21
22         /* SIM */
23         int                     sim_type; /* selects card on power on */
24         char                    emergency_imsi[16];
25
26         /* test card simulator settings */
27         char                    test_imsi[16];
28         uint32_t                test_tmsi;
29         uint8_t                 test_ki_type;
30         uint8_t                 test_ki[16]; /* 128 bit max */
31         uint8_t                 test_barr;
32         uint8_t                 test_rplmn_valid;
33         uint16_t                test_rplmn_mcc, test_rplmn_mnc;
34         uint16_t                test_lac;
35         uint8_t                 test_always; /* ...search hplmn... */
36
37         /* call related settings */
38         uint8_t                 cw; /* set if call-waiting is allowed */
39         uint8_t                 auto_answer;
40         uint8_t                 clip, clir;
41         uint8_t                 half, half_prefer;
42
43         /* changing default behavior */
44         uint8_t                 alter_tx_power;
45         uint8_t                 alter_tx_power_value;
46         int8_t                  alter_delay;
47         uint8_t                 stick;
48         uint16_t                stick_arfcn;
49         uint8_t                 skip_max_per_band;
50         uint8_t                 no_lupd;
51         uint8_t                 no_neighbour;
52
53         /* supported by configuration */
54         uint8_t                 cc_dtmf;
55         uint8_t                 sms_ptp;
56         uint8_t                 a5_1;
57         uint8_t                 a5_2;
58         uint8_t                 a5_3;
59         uint8_t                 a5_4;
60         uint8_t                 a5_5;
61         uint8_t                 a5_6;
62         uint8_t                 a5_7;
63         uint8_t                 p_gsm;
64         uint8_t                 e_gsm;
65         uint8_t                 r_gsm;
66         uint8_t                 dcs;
67         uint8_t                 gsm_850;
68         uint8_t                 pcs;
69         uint8_t                 gsm_480;
70         uint8_t                 gsm_450;
71         uint8_t                 class_900;
72         uint8_t                 class_dcs;
73         uint8_t                 class_850;
74         uint8_t                 class_pcs;
75         uint8_t                 class_400;
76         uint8_t                 freq_map[128+38];
77         uint8_t                 full_v1;
78         uint8_t                 full_v2;
79         uint8_t                 full_v3;
80         uint8_t                 half_v1;
81         uint8_t                 half_v3;
82         uint8_t                 ch_cap; /* channel capability */
83         int8_t                  min_rxlev_db; /* min DB to access */
84
85         /* radio */
86         uint16_t                dsc_max;
87
88         /* dialing */
89         struct llist_head       abbrev;
90
91         /* EDGE / UMTS / CDMA */
92         uint8_t                 edge_ms_sup;
93         uint8_t                 edge_psk_sup;
94         uint8_t                 edge_psk_uplink;
95         uint8_t                 class_900_edge;
96         uint8_t                 class_dcs_pcs_edge;
97         uint8_t                 umts_fdd;
98         uint8_t                 umts_tdd;
99         uint8_t                 cdma_2000;
100         uint8_t                 dtm;
101         uint8_t                 class_dtm;
102         uint8_t                 dtm_mac;
103         uint8_t                 dtm_egprs;
104 };
105
106 struct gsm_settings_abbrev {
107         struct llist_head       list;
108         char                    abbrev[4];
109         char                    number[32];
110         char                    name[32];
111 };
112
113 int gsm_settings_arfcn(struct osmocom_ms *ms);
114 int gsm_settings_init(struct osmocom_ms *ms);
115 int gsm_settings_exit(struct osmocom_ms *ms);
116 char *gsm_check_imei(const char *imei, const char *sv);
117 int gsm_random_imei(struct gsm_settings *set);
118
119 #endif /* _settings_h */
120