diff options
author | Harald Welte <laforge@gnumonks.org> | 2009-09-12 13:05:33 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-06-20 10:44:52 +0200 |
commit | 6e0cd04725db4a3c467ca689233b904d4e9800cc (patch) | |
tree | 8c18d0206c30e7cb4766b93e0f85ffc358f74882 | |
parent | b37e5f8a603d513056da697e08a9976206fd843b (diff) |
unfinished support for hopping channels
-rw-r--r-- | openbsc/include/openbsc/gsm_data.h | 5 | ||||
-rw-r--r-- | openbsc/src/abis_nm.c | 11 | ||||
-rw-r--r-- | openbsc/src/bsc_vty.c | 59 |
3 files changed, 69 insertions, 6 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h index bb790bc34..a1e881a81 100644 --- a/openbsc/include/openbsc/gsm_data.h +++ b/openbsc/include/openbsc/gsm_data.h @@ -337,6 +337,11 @@ struct gsm_bts_trx_ts { struct tlv_parsed nm_attr; u_int8_t nm_chan_comb; + struct { + u_int8_t maio; + u_int8_t hsn; + } hopping; + /* To which E1 subslot are we connected */ struct gsm_e1_subslot e1_link; diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c index 68373050a..8c6f5189a 100644 --- a/openbsc/src/abis_nm.c +++ b/openbsc/src/abis_nm.c @@ -1975,13 +1975,12 @@ int abis_nm_set_channel_attr(struct gsm_bts_trx_ts *ts, u_int8_t chan_comb) fill_om_fom_hdr(oh, len, NM_MT_SET_CHAN_ATTR, NM_OC_CHANNEL, bts->bts_nr, ts->trx->nr, ts->nr); - /* FIXME: don't send ARFCN list, hopping sequence, mAIO, ...*/ - if (bts->type == GSM_BTS_TYPE_BS11) - msgb_tlv16_put(msg, NM_ATT_ARFCN_LIST, 1, &arfcn); msgb_tv_put(msg, NM_ATT_CHAN_COMB, chan_comb); - if (bts->type == GSM_BTS_TYPE_BS11) { - msgb_tv_put(msg, NM_ATT_HSN, 0x00); - msgb_tv_put(msg, NM_ATT_MAIO, 0x00); + if (ts->hopping.hsn) { + msgb_tv_put(msg, NM_ATT_HSN, ts->hopping.hsn); + msgb_tv_put(msg, NM_ATT_MAIO, ts->hopping.maio); + /* FIXME: compute ARFCN list */ + msgb_tlv16_put(msg, NM_ATT_ARFCN_LIST, 1, &arfcn); } msgb_tv_put(msg, NM_ATT_TSC, bts->tsc); /* training sequence */ if (bts->type == GSM_BTS_TYPE_BS11) diff --git a/openbsc/src/bsc_vty.c b/openbsc/src/bsc_vty.c index a17064d0f..51db0b14c 100644 --- a/openbsc/src/bsc_vty.c +++ b/openbsc/src/bsc_vty.c @@ -305,6 +305,13 @@ static void config_write_ts_single(struct vty *vty, struct gsm_bts_trx_ts *ts) if (ts->pchan != GSM_PCHAN_NONE) vty_out(vty, " phys_chan_config %s%s", gsm_pchan_name(ts->pchan), VTY_NEWLINE); + if (ts->hopping.hsn) { + vty_out(vty, " hopping sequence number %u%s", + ts->hopping.hsn, VTY_NEWLINE); + vty_out(vty, " hopping maio %u%s", + ts->hopping.maio, VTY_NEWLINE); + /* FIXME: ARFCN list */ + } config_write_e1_link(vty, &ts->e1_link, " "); } @@ -1977,6 +1984,54 @@ DEFUN(cfg_ts_pchan, return CMD_SUCCESS; } +DEFUN(cfg_ts_hsn, + cfg_ts_hsn_cmd, + "hopping sequence number <0-63>", + "Which hopping sequence to use for this channel") +{ + struct gsm_bts_trx_ts *ts = vty->index; + + ts->hopping.hsn = atoi(argv[0]); + + return CMD_SUCCESS; +} + +DEFUN(cfg_ts_maio, + cfg_ts_maio_cmd, + "hopping maio <0-63>", + "Which hopping MAIO to use for this channel") +{ + struct gsm_bts_trx_ts *ts = vty->index; + + ts->hopping.maio = atoi(argv[0]); + + return CMD_SUCCESS; +} + +DEFUN(cfg_ts_arfcn_add, + cfg_ts_arfcn_add_cmd, + "hopping arfcn add <0-1023>", + "Add an entry to the hopping ARFCN list") +{ + struct gsm_bts_trx_ts *ts = vty->index; + int arfcn = atoi(argv[0]); + + /* FIXME */ + return CMD_SUCCESS; +} + +DEFUN(cfg_ts_arfcn_del, + cfg_ts_arfcn_del_cmd, + "hopping arfcn del <0-1023>", + "Delete an entry to the hopping ARFCN list") +{ + struct gsm_bts_trx_ts *ts = vty->index; + int arfcn = atoi(argv[0]); + + /* FIXME */ + return CMD_SUCCESS; +} + DEFUN(cfg_ts_e1_subslot, cfg_ts_e1_subslot_cmd, "e1 line E1_LINE timeslot <1-31> sub-slot (0|1|2|3|full)", @@ -2138,6 +2193,10 @@ int bsc_vty_init(void) install_element(TS_NODE, &ournode_exit_cmd); install_element(TS_NODE, &ournode_end_cmd); install_element(TS_NODE, &cfg_ts_pchan_cmd); + install_element(TS_NODE, &cfg_ts_hsn_cmd); + install_element(TS_NODE, &cfg_ts_maio_cmd); + install_element(TS_NODE, &cfg_ts_arfcn_add_cmd); + install_element(TS_NODE, &cfg_ts_arfcn_del_cmd); install_element(TS_NODE, &cfg_ts_e1_subslot_cmd); abis_nm_vty_init(); |