diff options
Diffstat (limited to 'src/host/layer23/include/osmocom/bb/mobile')
4 files changed, 52 insertions, 4 deletions
diff --git a/src/host/layer23/include/osmocom/bb/mobile/gsm322.h b/src/host/layer23/include/osmocom/bb/mobile/gsm322.h index c93e8faa..d94e368d 100644 --- a/src/host/layer23/include/osmocom/bb/mobile/gsm322.h +++ b/src/host/layer23/include/osmocom/bb/mobile/gsm322.h @@ -82,10 +82,10 @@ struct gsm322_la_list { struct gsm322_ba_list { struct llist_head entry; uint16_t mcc, mnc; - /* Band allocation for 1024 frequencies. + /* Band allocation for 1024+299 frequencies. * First bit of first index is frequency 0. */ - uint8_t freq[128]; + uint8_t freq[128+38]; }; #define GSM322_CS_FLAG_SUPPORT 0x01 /* frequency is supported by radio */ @@ -143,12 +143,14 @@ struct gsm322_cellsel { struct osmo_timer_list timer; uint16_t mcc, mnc; /* current network to search for */ - struct gsm322_cs_list list[1024]; /* cell selection list per freq. */ + struct gsm322_cs_list list[1024+299]; + /* cell selection list per frequency. */ uint8_t powerscan; /* currently scanning for power */ uint32_t scan_state; /* special state of current scan */ uint8_t ccch_state; /* special state of current ccch */ uint16_t arfcn; /* current tuned idle mode arfcn */ + int arfci; /* list index of frequency above */ uint8_t ccch_mode; /* curren CCCH_MODE_* */ struct gsm48_sysinfo *si; /* current sysinfo */ @@ -170,6 +172,8 @@ struct gsm322_msg { #define GSM322_ALLOC_SIZE sizeof(struct gsm322_msg) #define GSM322_ALLOC_HEADROOM 0 +uint16_t index2arfcn(int index); +int arfcn2index(uint16_t arfcn); int gsm322_init(struct osmocom_ms *ms); int gsm322_exit(struct osmocom_ms *ms); struct msgb *gsm322_msgb_alloc(int msg_type); diff --git a/src/host/layer23/include/osmocom/bb/mobile/gsm48_mm.h b/src/host/layer23/include/osmocom/bb/mobile/gsm48_mm.h index 021b78d8..1cfe401f 100644 --- a/src/host/layer23/include/osmocom/bb/mobile/gsm48_mm.h +++ b/src/host/layer23/include/osmocom/bb/mobile/gsm48_mm.h @@ -207,6 +207,7 @@ struct gsm48_mm_conn { int state; }; +uint8_t gsm48_current_pwr_lev(struct gsm_settings *set, uint16_t arfcn); int gsm48_mm_init(struct osmocom_ms *ms); int gsm48_mm_exit(struct osmocom_ms *ms); struct msgb *gsm48_mmr_msgb_alloc(int msg_type); diff --git a/src/host/layer23/include/osmocom/bb/mobile/settings.h b/src/host/layer23/include/osmocom/bb/mobile/settings.h index f666f378..7fa60894 100644 --- a/src/host/layer23/include/osmocom/bb/mobile/settings.h +++ b/src/host/layer23/include/osmocom/bb/mobile/settings.h @@ -62,8 +62,16 @@ struct gsm_settings { uint8_t e_gsm; uint8_t r_gsm; uint8_t dcs; + uint8_t gsm_850; + uint8_t pcs; + uint8_t gsm_480; + uint8_t gsm_450; uint8_t class_900; uint8_t class_dcs; + uint8_t class_850; + uint8_t class_pcs; + uint8_t class_400; + uint8_t freq_map[128+38]; uint8_t full_v1; uint8_t full_v2; uint8_t full_v3; @@ -77,6 +85,20 @@ struct gsm_settings { /* dialing */ struct llist_head abbrev; + + /* 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; }; struct gsm_settings_abbrev { @@ -86,6 +108,7 @@ struct gsm_settings_abbrev { char name[32]; }; +int gsm_settings_arfcn(struct osmocom_ms *ms); int gsm_settings_init(struct osmocom_ms *ms); int gsm_settings_exit(struct osmocom_ms *ms); char *gsm_check_imei(const char *imei, const char *sv); diff --git a/src/host/layer23/include/osmocom/bb/mobile/support.h b/src/host/layer23/include/osmocom/bb/mobile/support.h index cbe6e19b..035e10a3 100644 --- a/src/host/layer23/include/osmocom/bb/mobile/support.h +++ b/src/host/layer23/include/osmocom/bb/mobile/support.h @@ -50,9 +50,15 @@ struct gsm_support { uint8_t e_gsm; uint8_t r_gsm; uint8_t dcs; + uint8_t gsm_850; + uint8_t pcs; + uint8_t gsm_480; + uint8_t gsm_450; uint8_t class_900; uint8_t class_dcs; - uint8_t freq_map[128]; + uint8_t class_850; + uint8_t class_pcs; + uint8_t class_400; /* multi slot support */ uint8_t ms_sup; /* ucs2 treatment */ @@ -84,6 +90,20 @@ struct gsm_support { uint8_t full_v3; uint8_t half_v1; uint8_t half_v3; + + /* 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; }; struct gsm_support_scan_max { |