aboutsummaryrefslogtreecommitdiffstats
path: root/src/bts.cpp
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-09-28 17:55:32 +0200
committerJacob Erlbeck <jerlbeck@sysmocom.de>2015-11-30 12:20:36 +0100
commitc3c58046c7223d48c61eb7126f33dca300254485 (patch)
tree6c28490d15cc70d5a0774a3c7fd56e645bf2ae50 /src/bts.cpp
parent111ebe84c2b0a49472ec59022aecf56adfefd82e (diff)
edge: Get EGPRS multislot class
The EGPRS MS class ist contained in the MS_RA_capability information. Its presence indicates, that the MS is able (and willing) to use EGPRS. This commit implements basic support for retrieving, storing, and showing it in the VTY. The information is stored in the MS object. Sponsored-by: On-Waves ehf
Diffstat (limited to 'src/bts.cpp')
-rw-r--r--src/bts.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index edae737..26077c2 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -990,6 +990,7 @@ void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request,
struct gprs_rlcmac_dl_tbf *dl_tbf = NULL;
uint32_t tlli = request->ID.u.TLLI;
uint8_t ms_class = 0;
+ uint8_t egprs_ms_class = 0;
uint8_t ta = 0;
struct pcu_l1_meas meas;
@@ -1039,10 +1040,19 @@ void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request,
ta = sba->ta;
bts()->sba()->free_sba(sba);
}
- if (request->Exist_MS_Radio_Access_capability)
- ms_class = Decoding::get_ms_class_by_capability(&request->MS_Radio_Access_capability);
+ if (request->Exist_MS_Radio_Access_capability) {
+ ms_class = Decoding::get_ms_class_by_capability(
+ &request->MS_Radio_Access_capability);
+ egprs_ms_class =
+ Decoding::get_egprs_ms_class_by_capability(
+ &request->MS_Radio_Access_capability);
+ }
if (!ms_class)
LOGP(DRLCMAC, LOGL_NOTICE, "MS does not give us a class.\n");
+ if (egprs_ms_class)
+ LOGP(DRLCMAC, LOGL_NOTICE,
+ "MS supports EGPRS multislot class %d.\n",
+ egprs_ms_class);
ul_tbf = tbf_alloc_ul(bts_data(), trx_no(), ms_class, tlli, ta, ms);
if (!ul_tbf)
return;
@@ -1053,6 +1063,10 @@ void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request,
/* schedule uplink assignment */
ul_tbf->ul_ass_state = GPRS_RLCMAC_UL_ASS_SEND_ASS;
+ /* get capabilities */
+ if (ul_tbf->ms())
+ ul_tbf->ms()->set_egprs_ms_class(egprs_ms_class);
+
/* get measurements */
if (ul_tbf->ms()) {
get_meas(&meas, request);