aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bts-virtual/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/osmo-bts-virtual/main.c')
-rw-r--r--src/osmo-bts-virtual/main.c45
1 files changed, 36 insertions, 9 deletions
diff --git a/src/osmo-bts-virtual/main.c b/src/osmo-bts-virtual/main.c
index e5e44edf..367d923b 100644
--- a/src/osmo-bts-virtual/main.c
+++ b/src/osmo-bts-virtual/main.c
@@ -12,7 +12,7 @@
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
@@ -61,26 +61,53 @@ int bts_model_init(struct gsm_bts *bts)
bts->model_priv = bts_virt;
bts->variant = BTS_OSMO_VIRTUAL;
bts->support.ciphers = CIPHER_A5(1) | CIPHER_A5(2) | CIPHER_A5(3);
+ bts->gprs.cell.support.gprs_codings = NM_IPAC_MASK_GPRS_CODING_CS
+ | NM_IPAC_MASK_GPRS_CODING_MCS;
+ /* order alphabetically */
+ osmo_bts_set_feature(bts->features, BTS_FEAT_CBCH);
+ osmo_bts_set_feature(bts->features, BTS_FEAT_EGPRS);
+ osmo_bts_set_feature(bts->features, BTS_FEAT_GPRS);
osmo_bts_set_feature(bts->features, BTS_FEAT_OML_ALERTS);
- osmo_bts_set_feature(bts->features, BTS_FEAT_SPEECH_F_V1);
- osmo_bts_set_feature(bts->features, BTS_FEAT_SPEECH_H_V1);
- osmo_bts_set_feature(bts->features, BTS_FEAT_SPEECH_F_EFR);
osmo_bts_set_feature(bts->features, BTS_FEAT_SPEECH_F_AMR);
+ osmo_bts_set_feature(bts->features, BTS_FEAT_SPEECH_F_EFR);
+ osmo_bts_set_feature(bts->features, BTS_FEAT_SPEECH_F_V1);
osmo_bts_set_feature(bts->features, BTS_FEAT_SPEECH_H_AMR);
- osmo_bts_set_feature(bts->features, BTS_FEAT_CBCH);
+ osmo_bts_set_feature(bts->features, BTS_FEAT_SPEECH_H_V1);
return 0;
}
int bts_model_trx_init(struct gsm_bts_trx *trx)
{
+ /* Frequency bands indicated to the BSC */
+ trx->support.freq_bands = NM_IPAC_F_FREQ_BAND_PGSM
+ | NM_IPAC_F_FREQ_BAND_EGSM
+ | NM_IPAC_F_FREQ_BAND_RGSM
+ | NM_IPAC_F_FREQ_BAND_DCS
+ | NM_IPAC_F_FREQ_BAND_PCS
+ | NM_IPAC_F_FREQ_BAND_850
+ | NM_IPAC_F_FREQ_BAND_480
+ | NM_IPAC_F_FREQ_BAND_450;
+
+ /* Channel types and modes indicated to the BSC */
+ trx->support.chan_types = NM_IPAC_MASK_CHANT_COMMON
+ | NM_IPAC_F_CHANT_BCCH_SDCCH4_CBCH
+ | NM_IPAC_F_CHANT_SDCCH8_CBCH
+ | NM_IPAC_F_CHANT_PDCHF
+ | NM_IPAC_F_CHANT_TCHF_PDCHF;
+ trx->support.chan_modes = NM_IPAC_MASK_CHANM_SPEECH
+ | NM_IPAC_MASK_CHANM_CSD_NT
+ | NM_IPAC_MASK_CHANM_CSD_T;
+ /* TODO: NM_IPAC_F_CHANM_CSD_T_14k4 (see OS#6167) */
+ trx->support.chan_modes &= ~NM_IPAC_F_CHANM_CSD_T_14k4;
+
return 0;
}
void bts_model_print_help()
{
- LOGP(DSUM, LOGL_NOTICE, "Unimplemented %s\n", __func__);
+ LOGP(DLGLOBAL, LOGL_NOTICE, "Unimplemented %s\n", __func__);
}
int bts_model_handle_options(int argc, char **argv)
@@ -126,18 +153,18 @@ void bts_model_phy_link_set_defaults(struct phy_link *plink)
void bts_model_phy_instance_set_defaults(struct phy_instance *pinst)
{
- LOGP(DSUM, LOGL_NOTICE, "Unimplemented %s\n", __func__);
+ LOGP(DLGLOBAL, LOGL_NOTICE, "Unimplemented %s\n", __func__);
}
int bts_model_ts_disconnect(struct gsm_bts_trx_ts *ts)
{
- LOGP(DSUM, LOGL_NOTICE, "Unimplemented %s\n", __func__);
+ LOGP(DLGLOBAL, LOGL_NOTICE, "Unimplemented %s\n", __func__);
return -ENOTSUP;
}
void bts_model_ts_connect(struct gsm_bts_trx_ts *ts, enum gsm_phys_chan_config as_pchan)
{
- LOGP(DSUM, LOGL_NOTICE, "Unimplemented %s\n", __func__);
+ LOGP(DLGLOBAL, LOGL_NOTICE, "Unimplemented %s\n", __func__);
}
int main(int argc, char **argv)