2010-05-23 20:53:32 +00:00
|
|
|
#ifndef _settings_h
|
|
|
|
#define _settings_h
|
|
|
|
|
2018-06-01 15:20:03 +00:00
|
|
|
#define MOB_C7_DEFLT_ANY_TIMEOUT 30
|
|
|
|
|
2010-05-23 20:53:32 +00:00
|
|
|
struct gsm_settings {
|
2010-11-13 18:45:09 +00:00
|
|
|
char layer2_socket_path[128];
|
|
|
|
char sap_socket_path[128];
|
|
|
|
|
2010-05-24 16:15:21 +00:00
|
|
|
/* IMEI */
|
|
|
|
char imei[16];
|
|
|
|
char imeisv[17];
|
|
|
|
char imei_random;
|
|
|
|
|
|
|
|
/* network search */
|
|
|
|
int plmn_mode; /* PLMN_MODE_* */
|
|
|
|
|
|
|
|
/* SIM */
|
2010-08-28 09:46:36 +00:00
|
|
|
int sim_type; /* selects card on power on */
|
2011-07-16 15:41:02 +00:00
|
|
|
char emergency_imsi[16];
|
2010-05-23 20:53:32 +00:00
|
|
|
|
2011-10-31 17:14:03 +00:00
|
|
|
/* SMS */
|
2011-11-01 15:29:18 +00:00
|
|
|
char sms_sca[22];
|
2018-06-04 04:37:55 +00:00
|
|
|
bool store_sms;
|
2011-10-31 17:14:03 +00:00
|
|
|
|
2010-05-23 20:53:32 +00:00
|
|
|
/* test card simulator settings */
|
2011-07-16 15:41:02 +00:00
|
|
|
char test_imsi[16];
|
2010-11-20 08:32:32 +00:00
|
|
|
uint32_t test_tmsi;
|
2010-09-17 15:51:23 +00:00
|
|
|
uint8_t test_ki_type;
|
|
|
|
uint8_t test_ki[16]; /* 128 bit max */
|
2010-05-23 20:53:32 +00:00
|
|
|
uint8_t test_barr;
|
|
|
|
uint8_t test_rplmn_valid;
|
|
|
|
uint16_t test_rplmn_mcc, test_rplmn_mnc;
|
2010-11-20 08:32:32 +00:00
|
|
|
uint16_t test_lac;
|
2013-01-07 10:22:08 +00:00
|
|
|
uint8_t test_imsi_attached;
|
2010-05-23 20:53:32 +00:00
|
|
|
uint8_t test_always; /* ...search hplmn... */
|
2010-06-20 17:43:55 +00:00
|
|
|
|
|
|
|
/* call related settings */
|
|
|
|
uint8_t cw; /* set if call-waiting is allowed */
|
2010-10-27 18:30:13 +00:00
|
|
|
uint8_t auto_answer;
|
2010-06-20 18:18:45 +00:00
|
|
|
uint8_t clip, clir;
|
2010-09-26 17:08:10 +00:00
|
|
|
uint8_t half, half_prefer;
|
2010-07-13 14:21:52 +00:00
|
|
|
|
|
|
|
/* changing default behavior */
|
|
|
|
uint8_t alter_tx_power;
|
|
|
|
uint8_t alter_tx_power_value;
|
|
|
|
int8_t alter_delay;
|
|
|
|
uint8_t stick;
|
|
|
|
uint16_t stick_arfcn;
|
[layer23/mobile] Improvement and fixes of idle mode process
This patch introduces cell re-relection. When camping on a cell, it
scanns neighbour cells. If a 'better' cell is found, the cell is selected.
If the cell is in a different location area, a location upating is
performed under certain conditions.
The 'better' cell depends on various informations that are broadcasted on
the BCCH of a neihbour cell and of course the RX level. Most operators
don't set these informations, so the 'better' cell depend on a better
RX level for the same location area, or a much better RX level (6 dBm)
at a different location area.
There were many issues at the idle mode process that has been fixed.
Expecially when moving, the state machines got stuck, so no more cell search
was possible, or no further calls / location updating was possible.
In order to see the process of cell selection, enter the VTY interface and
enable the network monitor:
enable
monitor network 1 (where '1' is the instance of the MS)
In order to see the current state of the processes, enter:
show ms
2011-07-17 09:12:15 +00:00
|
|
|
uint8_t skip_max_per_band;
|
2010-07-17 12:43:53 +00:00
|
|
|
uint8_t no_lupd;
|
[layer23/mobile] Improvement and fixes of idle mode process
This patch introduces cell re-relection. When camping on a cell, it
scanns neighbour cells. If a 'better' cell is found, the cell is selected.
If the cell is in a different location area, a location upating is
performed under certain conditions.
The 'better' cell depends on various informations that are broadcasted on
the BCCH of a neihbour cell and of course the RX level. Most operators
don't set these informations, so the 'better' cell depend on a better
RX level for the same location area, or a much better RX level (6 dBm)
at a different location area.
There were many issues at the idle mode process that has been fixed.
Expecially when moving, the state machines got stuck, so no more cell search
was possible, or no further calls / location updating was possible.
In order to see the process of cell selection, enter the VTY interface and
enable the network monitor:
enable
monitor network 1 (where '1' is the instance of the MS)
In order to see the current state of the processes, enter:
show ms
2011-07-17 09:12:15 +00:00
|
|
|
uint8_t no_neighbour;
|
2010-10-03 10:51:31 +00:00
|
|
|
|
|
|
|
/* supported by configuration */
|
2010-10-15 18:54:57 +00:00
|
|
|
uint8_t cc_dtmf;
|
2010-10-03 10:51:31 +00:00
|
|
|
uint8_t sms_ptp;
|
|
|
|
uint8_t a5_1;
|
|
|
|
uint8_t a5_2;
|
|
|
|
uint8_t a5_3;
|
|
|
|
uint8_t a5_4;
|
|
|
|
uint8_t a5_5;
|
|
|
|
uint8_t a5_6;
|
|
|
|
uint8_t a5_7;
|
|
|
|
uint8_t p_gsm;
|
|
|
|
uint8_t e_gsm;
|
|
|
|
uint8_t r_gsm;
|
|
|
|
uint8_t dcs;
|
2011-03-16 08:52:01 +00:00
|
|
|
uint8_t gsm_850;
|
|
|
|
uint8_t pcs;
|
|
|
|
uint8_t gsm_480;
|
|
|
|
uint8_t gsm_450;
|
2010-10-03 10:51:31 +00:00
|
|
|
uint8_t class_900;
|
|
|
|
uint8_t class_dcs;
|
2011-03-16 08:52:01 +00:00
|
|
|
uint8_t class_850;
|
|
|
|
uint8_t class_pcs;
|
|
|
|
uint8_t class_400;
|
|
|
|
uint8_t freq_map[128+38];
|
2010-10-03 10:51:31 +00:00
|
|
|
uint8_t full_v1;
|
|
|
|
uint8_t full_v2;
|
|
|
|
uint8_t full_v3;
|
|
|
|
uint8_t half_v1;
|
|
|
|
uint8_t half_v3;
|
|
|
|
uint8_t ch_cap; /* channel capability */
|
2012-11-22 15:00:33 +00:00
|
|
|
int8_t min_rxlev_dbm; /* min dBm to access */
|
2010-10-12 08:26:48 +00:00
|
|
|
|
|
|
|
/* radio */
|
|
|
|
uint16_t dsc_max;
|
2012-02-14 22:54:25 +00:00
|
|
|
uint8_t force_rekey;
|
2010-10-14 07:37:52 +00:00
|
|
|
|
|
|
|
/* dialing */
|
|
|
|
struct llist_head abbrev;
|
2011-03-16 08:52:01 +00:00
|
|
|
|
|
|
|
/* EDGE / UMTS / CDMA */
|
|
|
|
uint8_t edge_ms_sup;
|
|
|
|
uint8_t edge_psk_sup;
|
|
|
|
uint8_t edge_psk_uplink;
|
|
|
|
uint8_t class_900_edge;
|
|
|
|
uint8_t class_dcs_pcs_edge;
|
|
|
|
uint8_t umts_fdd;
|
|
|
|
uint8_t umts_tdd;
|
|
|
|
uint8_t cdma_2000;
|
|
|
|
uint8_t dtm;
|
|
|
|
uint8_t class_dtm;
|
|
|
|
uint8_t dtm_mac;
|
|
|
|
uint8_t dtm_egprs;
|
2018-06-01 15:20:03 +00:00
|
|
|
|
|
|
|
/* Timeout for GSM 03.22 C7 state */
|
|
|
|
uint8_t any_timeout;
|
2010-10-14 07:37:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct gsm_settings_abbrev {
|
|
|
|
struct llist_head list;
|
|
|
|
char abbrev[4];
|
|
|
|
char number[32];
|
|
|
|
char name[32];
|
2010-05-23 20:53:32 +00:00
|
|
|
};
|
|
|
|
|
2011-03-16 08:52:01 +00:00
|
|
|
int gsm_settings_arfcn(struct osmocom_ms *ms);
|
2010-05-23 20:53:32 +00:00
|
|
|
int gsm_settings_init(struct osmocom_ms *ms);
|
2010-10-14 07:37:52 +00:00
|
|
|
int gsm_settings_exit(struct osmocom_ms *ms);
|
2010-05-24 16:15:21 +00:00
|
|
|
char *gsm_check_imei(const char *imei, const char *sv);
|
|
|
|
int gsm_random_imei(struct gsm_settings *set);
|
2010-05-23 20:53:32 +00:00
|
|
|
|
|
|
|
#endif /* _settings_h */
|
|
|
|
|