aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoding.h
AgeCommit message (Collapse)AuthorFilesLines
2023-07-26Split rlc_{dl_,ul_,}window out of rlc.{h,cpp}Pau Espin Pedrol1-0/+2
This new structure was already used when porting existing osmo-pcu code to libosmo-gprs-rlcmac, and proved to be much more clear. It makes no sense to keep both ul and dl window code mixed, since the code base is mostly different between them, and the developer usually is only interested in reading/debugging one side at a time. Change-Id: If21b6f48ef190a718502389cbfde8cbdfc8d7f7a
2021-12-14treewide: remove FSF address2021q4Oliver Smith1-4/+0
Remove the paragraph about writing to the Free Software Foundation's mailing address. The FSF has changed addresses in the past, and may do so again. In 2021 this is not useful, let's rather have a bit less boilerplate at the start of source files. Change-Id: I4a49dbeeec89b22624c968152118aecf8886dac6
2021-08-23Get rid of lots of code only used by testsPau Espin Pedrol1-1/+0
There are 2 methods "rcvd_dl_ack()" in osmo-pcu code. One is used by osmo-pcu itself, and the other is only used in tests. Changing the tests to use the same method as osmo-pcu allows removing the second one, and with it, a lot of code and complexity out of osmo-pcu. Change-Id: I14d9312cb61534dc97fca83141b9c0cd933c9206
2021-01-19Convert gprs_bssgp_pcu.cpp to CPau Espin Pedrol1-4/+22
There's no real use of C++ in that file, and it causes problems when using llist_head entry macros in future patches adding initial support for multiple BTS in PCU object, so let's move it to plain C. Change-Id: Ic771a89fd78b5e66151a5384f0ff6a8895589466
2020-05-20Get rid of class GprsCodingSchemePau Espin Pedrol1-6/+6
We have same kind of object splitted into two layers, in coding_scheme and gprs_coding_scheme. Let's merge them together and get rid of the class, which is not really useful because it's only a set of functions operating on one enum value. This change also fixes gcc 10.1.0 error about memseting a complex type in rlc.h init(). Change-Id: Ie9ce2144ba9e8dbba9704d4e0000a2929e3e41df
2020-03-30Move gsm_rlcmac.cpp -> .cPau Espin Pedrol1-1/+4
Original file from wireshark.git (packet-gsm_csn1.c) is being built and maintained as a C file. There's no real need for us to maintain it as a C++, and doing so will make both files derive over time (as already happened). Let's keep it as a C compiler (which btw seems to be more strict) to make it easier to port patches back and forth wireshark.git. Take the chance to move some declarations we added to csn1.h to be able to build it out of wireshark. Let's keep those in a separate header file to ease looking for differences. Change-Id: I818a8ae947f002d35142f9f5473454cfd80e1830
2016-06-16Add header type 1 support for EGPRS uplinkAravind Sirsikar1-0/+4
Function is added to parse the EGPRS header type 1 in uplink tbf path. along with configuration parameter updation to reflect max mcs in UL Change-Id: I13c250e2e07377982ac3f29745f3cffd4088552a Reviewed-on: https://gerrit.osmocom.org/270 Reviewed-by: Harald Welte <laforge@gnumonks.org> Tested-by: Jenkins Builder
2016-06-16Add Header Type2 support in EGPRS ULAravind Sirsikar1-0/+4
This patch will add support for MCS5,6 in EGPRS UL along with incorrect assert correction to let MCS 6 work. Change-Id: Iac2422c8acbdcefe20aafbba6a4eb87c9893e3ba Reviewed-on: https://gerrit.osmocom.org/269 Tested-by: Jenkins Builder Reviewed-by: Harald Welte <laforge@gnumonks.org>
2016-05-31decoding: improve and add commentsAlexander Couzens1-1/+2
Change-Id: I45c9fc55243224909ca2fdece8cbfa686b0f444d Reviewed-on: https://gerrit.osmocom.org/139 Tested-by: Jenkins Builder Reviewed-by: Harald Welte <laforge@gnumonks.org>
2016-03-30Refactor the Uplink RLC header parsing functionBhargava Abhyankar1-1/+8
Parsing the uplink data header for GPRS and EGPRS header type 3 is handled in separate functions. This patch will enhance modularity of the code.
2016-02-08edge: Add a bitvec based Decoding::extract_rbb functionJacob Erlbeck1-0/+1
This shall replace the old one after the transition to bitvec based RBBs. Sponsored-by: On-Waves ehf
2016-02-08decode: Add bitvec based GPRS DL ACK/NACK decoderJacob Erlbeck1-0/+4
Currently the RBB is used and passed directly to the window handling methods. For EGPRS a more abstract bitvec is derived from the messages and will passed around instead. Add a similar function for GPRS so that the same window handling can be used for GPRS and EGPRS. Sponsored-by: On-Waves ehf
2016-02-08edge: Handle EGPRS PACKET DOWNLINK ACK NACKJacob Erlbeck1-0/+6
Currently this message is ignored. Support decoding and handling of this message. Use a bitvec for the decoder that just represents a BSN sequence without any encoding details (first bit -> first BSN). Return the corresponding BSN range (snsmod(bsn_begin + bits_in_bitvec) = bsn_end), so snsmod(bsn_end-1) is the last BSN if there is at least 1. If bsn_begin == bsn_end, no BSNs has been added. Note that this bitvec is not yet used for RBB handling. It just calls the old rcvd_dl_ack with a faked (all bits are 1) RBB map. Sponsored-by: On-Waves ehf
2016-02-05tbf: Remove obsolete TLLI functionsJacob Erlbeck1-2/+0
This commit removes gprs_rlcmac_tbf::extract_tlli and Decoding::tlli_from_ul_data. Sponsored-by: On-Waves ehf
2016-02-05edge: Rename gprs_rlc_ul_header_egprs and gprs_rlc_ul_data_block_infoJacob Erlbeck1-4/+4
These struct names are more specific than necessary. They are used for GPRS (uplink) already. In downlink direction, only a few fields will be added to the header struct. Add addition, gprs_rlc_ul_header_egprs does not map directly to an encoded header, like many other 'header' structs do. Change the names to fit both modes and both directions: gprs_rlc_ul_header_egprs -> gprs_rlc_data_info gprs_rlc_ul_data_block_info -> gprs_rlc_data_block_info Sponsored-by: On-Waves ehf
2015-12-16edge: Add unified decoder methods for GPRS/EGPRSJacob Erlbeck1-0/+22
This commit adds new RLC block decoder functions that support both GPRS and EGPRS. The code path is selected based on the value of the GprsCodingScheme cs object. - rlc_parse_ul_data_header parses the header of an RLC data block including the E and FBI/TI flags (currently supported CS-1 - CS-4, MCS-1 - MCS-4). - rlc_copy_to_aligned_buffer copies an RLC data unit to a byte aligned buffer and returns the unit's length. - rlc_get_data_aligned is a convenience wrapper around rlc_copy_to_aligned_buffer that avoids copying if the data unit is already byte aligned. Sponsored-by: On-Waves ehf
2015-11-30edge: Get EGPRS multislot classJacob Erlbeck1-0/+1
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
2013-11-26tbf/rlc: Move the parsing of RBB to Decoding, move window marking outHolger Hans Peter Freyther1-0/+2
Move the parsing of the bitbmap out of the TBF code into Decoding. Move the updating of the V_B into the V_B class. Add some comments about handling the mod_sns, mod_sns_half parameters by using template code.
2013-10-30pdch: Move the giant switch/case of gprs_rlcmac_rcv_control_blockHolger Hans Peter Freyther1-0/+3
Move the dispatch into the PDCH. This needs to be split up further into understandable blocks.
2013-10-30pdch/tbf: Move gprs_rlcmac_rcv_data_block_acknowledged into the pdchHolger Hans Peter Freyther1-0/+28
Move the method into the PDCH. Extract the finding of TLLI into a new class called Decoding. Move the assemble and forward LLC frames into the TBF as it is poking in the internals of the TBF.