Holger Hans Peter Freyther
ba5543fbf3
Add a TODO file with high-level tasks
2013-10-30 21:23:18 +01:00
Holger Hans Peter Freyther
b78adcdd11
bts: Introduce a PollController that has the responsibility to poll
...
For each frame indication received by the BTS the poll controller
is asked to expire timedout entries.
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
9b30c7f46e
bts: Move the frame_number into the BTS sructure
...
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-30 21:20:45 +01:00
Holger Hans Peter Freyther
b6acfdaa24
bts: Introduce a singleton for the BTS and use it in the code
...
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.
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
67ed34eedb
bts: Move struct gprs_rlcmac_bts and other structs into a bts.h
...
Begin to make the BTS a real C++ object with real responsibilities.
The biggest issue will be the pcu_vty.c that might not like C++
at all.
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
1b33361bab
bts: Remove the global state from the tbf
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
b19d7268c3
bts: Remove global state from gprs_rlcmac_rcv_rts_block
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
1af73f6c81
bts: Remove global state from gprs_rlcmac_add_paging
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
ee7a535608
bts: Remove global state from write_immediate_assignment
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
485860cc31
bts: Remove global state from write_packet_uplink_assignment
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
d507ce6b85
bts: Remove global state from gprs_rlcmac_send_packet_uplink_assignment
...
This was the last method of gprs_rlcmac_data.cpp to access the
gprs_rlcmac_bts variable.
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
8d7a632eef
bts: Remove global state frm gprs_rlcmac_rcv_control_block
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
4ffc260869
bts: Remove global state from gprs_rlcmac_send_data_block_acknowledged
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
9f521cd4af
bts: Remove global state from gprs_rlcmac_send_packet_downlink_assignment
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
b0250ebeac
bts: Remove global state from gprs_rlcmac_rcv_rach
2013-10-30 21:20:45 +01:00
Holger Hans Peter Freyther
698b612188
bts: Remove global state from gprs_rlcmac_rcv_data_block_acknowledged
2013-10-30 21:20:44 +01:00
Holger Hans Peter Freyther
ae947fcf67
bts: Remove the global state from write_packet_uplink_ack
...
Similiar to the previous patches
2013-10-30 21:20:44 +01:00
Holger Hans Peter Freyther
344ff48756
bts: Remove the global state gprs_rlcmac_trigger_downlink_assignment
...
Remove the global state from gprs_rlcmac_trigger_downlink_assignment
and walk up to the pcu_l1_if.cpp where I find the timeout handling
that should be part of the SBA and TBF functionality. In terms of
hierachies things start to be more clear.
There should be the BTS object. That holds the SBA and TBF Controllers
that can allocate TBFs and SBAs and will handle the timeout polling
for a BTS.
2013-10-30 21:20:44 +01:00
Holger Hans Peter Freyther
173a240a7e
bts: Remove global state and the usage of the gprs_rlcmac_bts
...
Global state makes mocking/writing tests more difficult. Continue
by removing direct usage of the bts and adding it as pointer to
the function calls (showing the true dependencies of the functions)
2013-10-30 21:20:44 +01:00
Holger Hans Peter Freyther
45396a99d9
sched: Make sched_poll static and add a warning about fairness
2013-10-30 21:20:44 +01:00
Holger Hans Peter Freyther
bfdd5f285b
alloc: Add very basic test case for the alloc_a algorithm
2013-10-30 21:20:44 +01:00
Holger Hans Peter Freyther
948a3d62b1
alloc: Move usf into the scope it is actually used
2013-10-30 14:45:57 +01:00
Holger Hans Peter Freyther
b0a0075845
alloc: Factor out the routine to find an enabled PDCH
2013-10-30 14:45:57 +01:00
Holger Hans Peter Freyther
11a748935e
alloc: Remove the unimplemented/unfinished time constraint code
...
The algorithm is already complex enough. No reason to further
introduce the complexity with the branches it has.
2013-10-30 14:45:57 +01:00
Holger Hans Peter Freyther
8481a0553d
alloc: Remove code duplication for downlink assignment
...
There was no difference but there is no point in poking in the
internals of the tbf, pdch and trx from various places. Information
hiding has a real purpose, e.g. compare with reading "the mythical
man month".
2013-10-30 14:45:57 +01:00
Holger Hans Peter Freyther
743bafa50c
alloc: Introduce a backpointer from the tbf to the trx and simplify code
...
Kill all the level of indirections where one needs to have the BTS
the TBF to find the TRX.
2013-10-30 14:45:57 +01:00
Holger Hans Peter Freyther
96efa70a9e
alloc: Call it trx_no and not trx as it is not trx object
2013-10-30 14:45:57 +01:00
Holger Hans Peter Freyther
02ab4a8803
alloc: Move the two timeslot alloc algorithms to a dedicated file
2013-10-30 14:45:57 +01:00
Holger Hans Peter Freyther
96173aec93
alloc: Move the "assignment" of the slot into a common function
...
Vladimir Rolbin pointed out that in case of the alloc_algorithm_a
the usf has not been assigned. For now move all the assignment into
a method and call it from the A and B algorithm.
2013-10-30 14:45:57 +01:00
Holger Hans Peter Freyther
1c344e2668
tbf: Prepare to make thing things private in the tbf, start with the state
...
There really shouldn't be too many callers of state. Instead the
tbf should dispatch depending on the internal state. For now
introduce state_is and state_is_not accessor functions so we can
start to see who is using the internal state.
2013-10-28 12:54:09 +04:00
Holger Hans Peter Freyther
7380babdba
tbf: Move the tbf_timer_cb into the tbf class
...
Introduce the first instance method for printing out diagonistic
about itself and create a jump function for it.
2013-10-28 12:53:49 +04:00
Holger Hans Peter Freyther
0946f99b08
tbf: Remove dead code that called tbf_free
2013-10-28 12:53:29 +04:00
Holger Hans Peter Freyther
455613076a
tbf: Move many routines related to the tbf from gprs_rlcmac to tbf.c
2013-10-28 12:52:59 +04:00
Holger Hans Peter Freyther
4f6a4e5d6d
tbf: Add another variant of the free_all now by pdch
2013-10-28 12:52:33 +04:00
Holger Hans Peter Freyther
964ddb6aa0
tbf: Move the code to close all timeslots into the tbf class
...
Move the code out of the sysmocom_socket (as this is only required
to talk to our hardware) and into the TBF class that actually knows
what a TBF is.
2013-10-28 12:52:15 +04:00
Holger Hans Peter Freyther
9e21d84f1e
tbf: Move header definition from gprs_rlcmac to the tbf
2013-10-28 12:52:00 +04:00
Holger Hans Peter Freyther
099535a1a7
tbf: Move the struct to the tbf.h header file
...
This is the begin of a long march of turning tbf into a C++ class
and properly hiding the secrets inside this implementation instead
of having it spread across various different files.
2013-10-28 12:51:38 +04:00
Holger Hans Peter Freyther
8692128365
tbf: Move the alloc_ul_tbf into tbf.c and change signature
...
Add the bts parameter to the method list. This would be a static
method of the class (in case the TBF would be a class)
2013-10-18 15:17:43 +04:00
Holger Hans Peter Freyther
bb20b2c64c
tbf: Add more to do items for refactoring on the dl assignment
2013-10-18 15:17:27 +04:00
Holger Hans Peter Freyther
bcafdf8d90
tbf: Warn about copy and paste between different tbf alloc routines
...
These need to be re-factored to use a common allocation routine.
2013-10-18 15:17:13 +04:00
Holger Hans Peter Freyther
443c822f77
tbf: Move the creation of a new tbf for the downlink to a new method
...
Move the code that is dedicated to handle the assignment of a new
TFI/TBF for the downlink into a new method.
2013-10-18 15:16:56 +04:00
Holger Hans Peter Freyther
d868928888
tbf: Create an assign method for IMSI.
...
This will allow us to set flags (like IMSI) present and will
be of help when fixing the tbf lookup.
2013-10-18 15:16:42 +04:00
Holger Hans Peter Freyther
d1d114f5b7
tbf: Move code that sets the tbf's ms_class to a central place
2013-10-18 15:16:27 +04:00
Holger Hans Peter Freyther
31d0df92ac
tbf: Separate the easy path out of the receive path
...
* Create a look up routine for the TBF that will allow us to
easily find a TBF by IMSI...
* Separate the code that works on an existing TBF.
2013-10-18 15:16:11 +04:00
Holger Hans Peter Freyther
17c31ce173
tbf: Begin to add some structure to the tbf code
...
The TBF should use the IMSI to identify a block flow but all
handling is spread across the entire code. Start to clean this
up by moving relevant code into the tbf file. Afterwards one
can clean up and add more internal structure.
2013-10-18 15:15:49 +04:00
Holger Hans Peter Freyther
dcc9c39529
sba: Fix memory leak when all PDCHs are disabled
2013-10-17 11:36:11 +02:00
Holger Hans Peter Freyther
70862c9409
misc: Print the payload that is not known
...
Print the payload type that is not handled as this allows one to
look it up in the specification.
2013-10-16 16:37:22 +02:00
Holger Hans Peter Freyther
26da8361e9
rlc: Add missing break after GPRS_RLCMAC_CONTROL_BLOCK_OPT
...
Do not claim that the payload is not known. Add the missing break.
Do not print:
<0002> gprs_rlcmac.cpp:1174 GPRS_RLCMAC_CONTROL_BLOCK_OPT block payload is not supported.
<0002> gprs_rlcmac.cpp:1176 Unknown RLCMAC block payload.
2013-10-16 16:36:11 +02:00
Holger Hans Peter Freyther
483f77a275
misc: Fix some typos sed -i s,ressources,resources,g
2013-10-16 16:33:00 +02:00
Holger Hans Peter Freyther
985806030d
misc: Fix format and typos in the code
2013-10-16 16:28:16 +02:00