aboutsummaryrefslogtreecommitdiffstats
path: root/src/bts.cpp
AgeCommit message (Collapse)AuthorFilesLines
2013-10-30bts: Start creating statistics inside the BTS codeHolger Hans Peter Freyther1-0/+33
2013-10-30tbf: Move gprs_rlcmac_send_packet_uplink_assignment into the tbfHolger Hans Peter Freyther1-1/+1
2013-10-30bts: Move gprs_rlcmac_rcv_rach into the BTS classHolger Hans Peter Freyther1-0/+81
2013-10-30bts: Move gprs_rlcmac_trigger_downlink_assignment into BTSHolger Hans Peter Freyther1-0/+38
2013-10-30tbf: Move gprs_rlcmac_poll_timeout into the tbfHolger Hans Peter Freyther1-0/+19
Move the gprs_rlcmac_poll_timeout method into the tbf class and gprs_rlcmac_downlink_assignment into the BTS.
2013-10-30bts: Move rcv_imm_ass_cnf into the bts codeHolger Hans Peter Freyther1-0/+39
2013-10-30tbf/bts: Move the tfi_find_free into the btsHolger Hans Peter Freyther1-0/+55
2013-10-30tbf/pdch/bts: Move the tbf look-up by tfi into the BTSHolger Hans Peter Freyther1-3/+25
2013-10-30pdch/tbf: Add another todo item for badly placed code...Holger Hans Peter Freyther1-0/+1
2013-10-30sba/pdch: Use thepdch to look up a sba for a frame numberHolger Hans Peter Freyther1-2/+2
2013-10-30pdch: Remove the trx_no/ts_no parameter and use/caclulate it on demandHolger Hans Peter Freyther1-20/+16
Simplify the depedencies and use the inline functions when we need to figure out the numbers.
2013-10-30pdch: Remove the bts argument from rcv_control_blockHolger Hans Peter Freyther1-22/+21
2013-10-30pdch: Remove the the bts parameter from rcv_data_block_acknowledgedHolger Hans Peter Freyther1-7/+7
2013-10-30tbf: Move the timer routine into the classHolger Hans Peter Freyther1-3/+2
The timer is used for various timeouts and there is still external client code that is calling it. In a perfect world the client code would indicate that an event has happened and the internal timer will be stopped. The best compromise is the "stop_t3191" method. It allows to add semantic verification that the timer has been running.
2013-10-30pdch: Move the giant switch/case of gprs_rlcmac_rcv_control_blockHolger Hans Peter Freyther1-1/+253
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-2/+233
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.
2013-10-30pdch: Move the dispatch of gprs_rlcmac_rcv_block into the pdchHolger Hans Peter Freyther1-2/+29
2013-10-30pdch: Instead of passing bts, trx, ts use the pdchHolger Hans Peter Freyther1-0/+6
All dispatching will go through the PDCH. This will clean a lot of the look-ups inside the gprs_rlcmac_data.c and continue with adding structure to the pcu code.
2013-10-30pdch: Simplify the reset code, rename variables to XYZ_noHolger Hans Peter Freyther1-2/+2
Simplify the reset code now that the PDCH can know where it is located. Rename the variables in the sba to trx_no and ts_no as it stores the number and not the actual thing.
2013-10-30bts: Add backpointers to the PDCH and TRX structuresHolger Hans Peter Freyther1-0/+13
This will allow to kill various parameters from all the functions as we can walk back.
2013-10-30bts/tbf: Move the lists into the BTS and do the look-up from the BTSHolger Hans Peter Freyther1-8/+54
The list belongs to the BTS. This makes cleaning this up more easy and establishes a hierachy of resources that start from the BTS. The debug_diagram code is now broken.
2013-10-30sba: Create a SBAController that will manage the sbas for a BTSHolger Hans Peter Freyther1-8/+4
The PollController is a friend of the SBAController and is allowed to access the internal list. The list is hidden from everyone else. This is done because the calculation of timeout should belong into the PollController and not into the SBAController.
2013-10-30encoding: Move the functions into the encoding classHolger Hans Peter Freyther1-2/+3
Add some TODO to this class. E.g. they could all work on the bitvec and the parameter handling could better.
2013-10-30pdch: Only say we have paged when this has actually been doneHolger Hans Peter Freyther1-1/+1
2013-10-30bts/pdch: Move the adding of paging to the BTS/PDCH objectsHolger Hans Peter Freyther1-0/+88
Only the gprs_rlcmac_pdch will manipulate the paging list now. There can be various more refactorings of the code but they can be done later. E.g. on memory allocation failure we can continue instead of leaving the code, we should also set any_tbf only after things have been paged.
2013-10-30pdch: Move paging dequeue into the PDCH objectHolger Hans Peter Freyther1-1/+99
Rely on packet_paging_request returning NULL in case the queue is empty. We should move the write_packet_paging_request into a separate file/object as well.
2013-10-30pdch: Move enable/disable into the PDCH codeHolger Hans Peter Freyther1-0/+44
When a PDCH is disabled all resources should be freed. This is currently not possible as the PDCH does not know where it belongs to. On top of that the list (and other resources) should be properly initialized on construction so that disable() is idempotent and does not check if it was disabled. During the re-factoring I noticed that during a sysmobts re-start some resources are not freed. I left a warning in the code to resolve this issue later.
2013-10-30bts: Introduce a PollController that has the responsibility to pollHolger Hans Peter Freyther1-0/+4
For each frame indication received by the BTS the poll controller is asked to expire timedout entries.
2013-10-30bts: Move the frame_number into the BTS sructureHolger Hans Peter Freyther1-0/+6
The current_frame is an attribute of the BTS. Move it from the pcu_l1_if.cpp into the BTS. As the next step we can trigger actions depending on the change of the frame.
2013-10-30bts: Introduce a singleton for the BTS and use it in the codeHolger Hans Peter Freyther1-0/+45
Compared to the previous code there will be a branch to get the global pointer so the code will be slightly slower than the previous version but it allows us to start creating objects but still use the code from C. It is best approach I have found so far. One downside of C++ is that by default talloc will not be used (unless we override the new operator to use talloc. Right now we need to memset the C data structure by hand. The benefit of enforcing a better structure should is more important though.