diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-09-28 17:55:32 +0200 |
---|---|---|
committer | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-11-30 12:20:36 +0100 |
commit | c3c58046c7223d48c61eb7126f33dca300254485 (patch) | |
tree | 6c28490d15cc70d5a0774a3c7fd56e645bf2ae50 /src/bts.cpp | |
parent | 111ebe84c2b0a49472ec59022aecf56adfefd82e (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.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/bts.cpp b/src/bts.cpp index edae7371..26077c21 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); |