summaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2016-04-15 16:04:44 +0200
committerHarald Welte <laforge@gnumonks.org>2016-04-16 13:47:52 +0200
commitf3f3505f493f63e9e79c72e407907783913b9c9c (patch)
treeda8df8b98ce801cc886f982ac2220f5cd0a5bd56 /openbsc/src
parentc9ac20ea43e0107c293b5d3f5c90076963e95059 (diff)
Add SI2quater support to SI3
Advertise SI2 quater presence and location (if available) using SI3 according to 3GPP TS 44.018 ยง 10.5.2.34
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/libbsc/bsc_init.c1
-rw-r--r--openbsc/src/libbsc/rest_octets.c9
-rw-r--r--openbsc/src/libbsc/system_information.c8
3 files changed, 17 insertions, 1 deletions
diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c
index 713109c23..fd8dd6677 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -140,6 +140,7 @@ int gsm_bts_trx_set_system_infos(struct gsm_bts_trx *trx)
gen_si[n_si++] = SYSINFO_TYPE_2;
gen_si[n_si++] = SYSINFO_TYPE_2bis;
gen_si[n_si++] = SYSINFO_TYPE_2ter;
+ gen_si[n_si++] = SYSINFO_TYPE_2quater;
gen_si[n_si++] = SYSINFO_TYPE_3;
gen_si[n_si++] = SYSINFO_TYPE_4;
diff --git a/openbsc/src/libbsc/rest_octets.c b/openbsc/src/libbsc/rest_octets.c
index 4545794a9..83cf2ec1f 100644
--- a/openbsc/src/libbsc/rest_octets.c
+++ b/openbsc/src/libbsc/rest_octets.c
@@ -129,6 +129,15 @@ int rest_octets_si3(uint8_t *data, const struct gsm48_si_ro_info *si3)
/* GPRS Indicator */
append_gprs_ind(&bv, &si3->gprs_ind);
+ /* 3G Early Classmark Sending Restriction controlled by
+ * early_cm_ctrl above */
+ bitvec_set_bit(&bv, H);
+
+ if (si3->si2quater_indicator) {
+ bitvec_set_bit(&bv, H); /* indicator struct present */
+ bitvec_set_uint(&bv, 0, 1); /* message is sent on BCCH Norm */
+ }
+
bitvec_spare_padding(&bv, (bv.data_len*8)-1);
return bv.data_len;
}
diff --git a/openbsc/src/libbsc/system_information.c b/openbsc/src/libbsc/system_information.c
index 1ee9d41c2..62ee30659 100644
--- a/openbsc/src/libbsc/system_information.c
+++ b/openbsc/src/libbsc/system_information.c
@@ -510,6 +510,7 @@ static struct gsm48_si_ro_info si_info = {
.ra_colour = 0,
.present = 1,
},
+ .si2quater_indicator = 0,
.lsa_params = {
.present = 0,
},
@@ -545,7 +546,12 @@ static int generate_si3(uint8_t *output, struct gsm_bts *bts)
} else {
si_info.si2ter_indicator = 0;
}
-
+ if ((bts->si_valid & (1 << SYSINFO_TYPE_2quater))) {
+ LOGP(DRR, LOGL_INFO, "SI 2quater is included.\n");
+ si_info.si2quater_indicator = 1;
+ } else {
+ si_info.si2quater_indicator = 0;
+ }
/* SI3 Rest Octets (10.5.2.34), containing
CBQ, CELL_RESELECT_OFFSET, TEMPORARY_OFFSET, PENALTY_TIME
Power Offset, 2ter Indicator, Early Classmark Sending,