aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorMike Haben <michael.haben@btinternet.com>2009-10-02 12:19:34 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2009-10-05 12:12:54 +0200
commite2d82274990ddae78cabdb96087ed90ffd7a9d3a (patch)
treef0107ef917bc4df83773bf31d76507f01aa57a81 /openbsc
parenta03f97775b0f853195bc2c8dad9397863ebd6c10 (diff)
[ipaccess] Add nanoBTS 1900 support
Add support for 1900 nanoBTS by using unified bts_type GSM_BTS_TYPE_NANOBTS for 900, 1800 and 1900 versions. Reduce the nanoBTS enum values to one and derive the version from the user supplied band. In the future we might want to do auto band detection. The configuration file needs to be changed to refer to nanobts instead of nanobts900/nanobts1800. Signed-off-by: Mike Haben <michael.haben@btinternet.com> Signed-off-by: Holger Hans Peter Freyther <zecke@selfish.org>
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/include/openbsc/gsm_data.h6
-rwxr-xr-xopenbsc/src/abis_nm.c3
-rw-r--r--openbsc/src/bsc_init.c24
-rw-r--r--openbsc/src/gsm_04_08.c3
-rw-r--r--openbsc/src/gsm_data.c3
-rw-r--r--openbsc/src/ipaccess-config.c2
6 files changed, 19 insertions, 22 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 495f74119..a493a69d9 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -242,8 +242,7 @@ struct gsm_bts_trx {
enum gsm_bts_type {
GSM_BTS_TYPE_UNKNOWN,
GSM_BTS_TYPE_BS11,
- GSM_BTS_TYPE_NANOBTS_900,
- GSM_BTS_TYPE_NANOBTS_1800,
+ GSM_BTS_TYPE_NANOBTS,
};
/**
@@ -445,8 +444,7 @@ extern void *tall_bsc_ctx;
static inline int is_ipaccess_bts(struct gsm_bts *bts)
{
switch (bts->type) {
- case GSM_BTS_TYPE_NANOBTS_900:
- case GSM_BTS_TYPE_NANOBTS_1800:
+ case GSM_BTS_TYPE_NANOBTS:
return 1;
default:
break;
diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c
index 35ed8dbc6..9a2fad7bf 100755
--- a/openbsc/src/abis_nm.c
+++ b/openbsc/src/abis_nm.c
@@ -1025,8 +1025,7 @@ static int abis_nm_rcvmsg_manuf(struct msgb *mb)
int bts_type = mb->trx->bts->type;
switch (bts_type) {
- case GSM_BTS_TYPE_NANOBTS_900:
- case GSM_BTS_TYPE_NANOBTS_1800:
+ case GSM_BTS_TYPE_NANOBTS:
rc = abis_nm_rx_ipacc(mb);
break;
default:
diff --git a/openbsc/src/bsc_init.c b/openbsc/src/bsc_init.c
index c626415d3..78e98610a 100644
--- a/openbsc/src/bsc_init.c
+++ b/openbsc/src/bsc_init.c
@@ -526,8 +526,7 @@ static void nm_reconfig_trx(struct gsm_bts_trx *trx)
sizeof(trx1_attr_radio));
}
break;
- case GSM_BTS_TYPE_NANOBTS_900:
- case GSM_BTS_TYPE_NANOBTS_1800:
+ case GSM_BTS_TYPE_NANOBTS:
trx->nominal_power = 20;
default:
break;
@@ -594,8 +593,7 @@ static void bootstrap_om(struct gsm_bts *bts)
case GSM_BTS_TYPE_BS11:
bootstrap_om_bs11(bts);
break;
- case GSM_BTS_TYPE_NANOBTS_900:
- case GSM_BTS_TYPE_NANOBTS_1800:
+ case GSM_BTS_TYPE_NANOBTS:
bootstrap_om_nanobts(bts);
break;
default:
@@ -985,23 +983,27 @@ void input_event(int event, enum e1inp_sign_type type, struct gsm_bts_trx *trx)
static int bootstrap_bts(struct gsm_bts *bts)
{
- switch (bts->type) {
- case GSM_BTS_TYPE_NANOBTS_1800:
+ switch (bts->band) {
+ case GSM_BAND_1800:
if (bts->c0->arfcn < 512 || bts->c0->arfcn > 885) {
fprintf(stderr, "GSM1800 channel must be between 512-885.\n");
return -EINVAL;
}
break;
- case GSM_BTS_TYPE_BS11:
- case GSM_BTS_TYPE_NANOBTS_900:
- /* Assume we have a P-GSM900 here */
+ case GSM_BAND_1900:
+ if (bts->c0->arfcn < 512 || bts->c0->arfcn > 810) {
+ fprintf(stderr, "GSM1900 channel must be between 512-810.\n");
+ return -EINVAL;
+ }
+ break;
+ case GSM_BAND_900:
if (bts->c0->arfcn < 1 || bts->c0->arfcn > 124) {
fprintf(stderr, "GSM900 channel must be between 1-124.\n");
return -EINVAL;
}
break;
- case GSM_BTS_TYPE_UNKNOWN:
- fprintf(stderr, "Unknown BTS. Please specify\n");
+ default:
+ fprintf(stderr, "Unsupported frequency band.\n");
return -EINVAL;
}
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index bac920e31..9ad9e1539 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -1954,8 +1954,7 @@ static int tch_map(struct gsm_lchan *lchan, struct gsm_lchan *remote_lchan)
}
switch (bts->type) {
- case GSM_BTS_TYPE_NANOBTS_900:
- case GSM_BTS_TYPE_NANOBTS_1800:
+ case GSM_BTS_TYPE_NANOBTS:
if (!ipacc_rtp_direct) {
/* connect the TCH's to our RTP proxy */
rc = ipacc_connect_proxy_bind(lchan);
diff --git a/openbsc/src/gsm_data.c b/openbsc/src/gsm_data.c
index a50ba8c20..6767c3fd5 100644
--- a/openbsc/src/gsm_data.c
+++ b/openbsc/src/gsm_data.c
@@ -232,8 +232,7 @@ char *gsm_ts_name(struct gsm_bts_trx_ts *ts)
static const char *bts_types[] = {
[GSM_BTS_TYPE_UNKNOWN] = "unknown",
[GSM_BTS_TYPE_BS11] = "bs11",
- [GSM_BTS_TYPE_NANOBTS_900] = "nanobts900",
- [GSM_BTS_TYPE_NANOBTS_1800] = "nanobts1800",
+ [GSM_BTS_TYPE_NANOBTS] = "nanobts",
};
enum gsm_bts_type parse_btstype(const char *arg)
diff --git a/openbsc/src/ipaccess-config.c b/openbsc/src/ipaccess-config.c
index 7358d6496..46043d571 100644
--- a/openbsc/src/ipaccess-config.c
+++ b/openbsc/src/ipaccess-config.c
@@ -348,7 +348,7 @@ int main(int argc, char **argv)
if (!gsmnet)
exit(1);
- bts = gsm_bts_alloc(gsmnet, GSM_BTS_TYPE_NANOBTS_900, HARDCODED_TSC,
+ bts = gsm_bts_alloc(gsmnet, GSM_BTS_TYPE_NANOBTS, HARDCODED_TSC,
HARDCODED_BSIC);
register_signal_handler(SS_NM, nm_sig_cb, NULL);