Age | Commit message (Collapse) | Author | Files | Lines |
|
The headers for LC1.5 are specified explicitly. Add corresponding option
to specify sysmoBTS headers location and use it in jenkins build. While
at it, unify header fixup code with the one used in OsmoBTS.
Change-Id: I5248e8b389fd240b4d5a0bcf6c954d6115262462
|
|
To facilitate testing and addition of support for new multislot classes,
hide multislot class struct internals:
* introduce mslot_class_get_*() functions
* use those functions instead of direct access to array of structs
* use ms_class as a parameter to find_multi_slot() instead of entire
object
Change-Id: Id796bcff1322b1e273a0e3236c66c23b9da8fac6
|
|
The fix in 0fb294a8dd45a86b8f9eb93211b69b6dbf0a6853 was only partially
valid, as it unconditionally used $includedir, without any prefix. This
polluted the include path with host include files in cross-compiling
builds.
Let's take a different approach and simply define LITECELL15_CFLAGS
(similar to what pkgconfig does), which makes the "-I" go away if no
--with-litecell15 has been specified.
Change-Id: I63393decfe42a24dab56c7654f716c1580416ab2
|
|
The osmocore bitvec is exact the same, but use a pointer instead of
a reference.
Change-Id: Id8f797631d89aa12b6e48efb2dc153a3e2f059f7
|
|
So far, we used to keep a copy of the header file around in
both osmo-pcu and osmo-bts projects. Before we start introducing
a third copy in openbsc, let's have the osmo-pcu install the header
file and make the other programs use that.
Change-Id: I60976c9be5488256d1ff55fdc5aa548e3705400d
|
|
Implemented tree based algorithm to decode compressed bitmap in EPDAN
as described in section 9.1.10 of 3GPP 44.060.
This algorithm intends to improve the performance over existing method.
New Regression test is added under bitcomp directory.
Test case is added to validate decompressed result of the bitmap
Present in EPDAN.
Test is done for multiple bitmaps of varying length.
Invalid inputs are also part of the test vector.
Change-Id: Ieae1992ed4b02bb1e09eec2d3de1a030eabd16ce
|
|
Layer 1 compatibility with previous generation or NuRan GSM product,
therefore the support for the Litecell 1.5 uses its own sources instead
of using tons of ifdef/endif.
Max's amendments:
* make headers path configurable
* use configured TRX instead of hardcoded value
* split subdir-objects into separate commit
* cosmetic changes
Change-Id: Ib1287375cb10a889625bbac8528fa60deed23a2b
Fixes: SYS#2443
Reviewed-on: https://gerrit.osmocom.org/61
Tested-by: Jenkins Builder
Reviewed-by: Harald Welte <laforge@gnumonks.org>
|
|
Change-Id: I01fd264fd1f990f39cdbf309149e0eb857d7732f
Related: SYS#2443
Reviewed-on: https://gerrit.osmocom.org/60
Reviewed-by: Harald Welte <laforge@gnumonks.org>
Tested-by: Jenkins Builder
|
|
Move hardware-spicefic files into subdirectory similar to the way it's
done in OsmoBTS to make adding new hardware support easier.
Change-Id: I05004ad9032759a5dbfa57290ed1df83e89d5cb8
Related: SYS#2443
Reviewed-on: https://gerrit.osmocom.org/58
Tested-by: Jenkins Builder
Reviewed-by: Holger Freyther <holger@freyther.de>
|
|
|
|
Currently the coding scheme is checked and compared at different
places which makes in cumbersome to extend it for EGPRS.
This class encapsules the coding scheme and provides required meta
information like sizes as well as helper methods.
Sponsored-by: On-Waves ehf
|
|
This OpenBTS socket interface was originally added to enable GPRS
capabilitie with a forked version of OpenBTS, at a time when the public
OpenBTS release didn't yet have any GPRS support.
Meanwhile, the later OpenBTS releases included their own version of
GPRS, without any external PCU/SGSN/GGSN, so this interface is no longer
needed.
This also means that the OsmoBTS socket interface is now the default at
compilation time. There is no other interface.
|
|
This also renames the --enable-sysmbts option to --enable-osmobts
This socket interface was nevery sysmoBTS specific, but it is a generic
socket interface to any OsmoBTS supported layer1/hardware. So it was a
mis-nomer so far.
|
|
This commit adds an implementation of the CoDel algorithm based on
the reference pseudocode presented in
http://queue.acm.org/appendices/codel.html. Instead of abstracting
the queue itself, the implementation provides a time stamp based
automaton which is invoked after a package has been dequeued.
Note that the modifications of the algorithm shown in
https://tools.ietf.org/html/draft-ietf-aqm-codel-01 are not yet
applied.
Sponsored-by: On-Waves ehf
|
|
This is needed to link programs using clock_gettime and related
functions when compiling with older glibc versions.
This should fix the Jenkins build. Nevertheless fixing this in
configure.ac were probably nicer.
Sponsored-by: On-Waves ehf
|
|
Currently the pcu_vty.c doesn't compile with C++. Thus C++ object
cannot be access directly there.
This commit adds a helper C++ file that exports all functions with C
calling conventions and naming to work around that limitation until
the transition of pcu_vty.c is completed.
Sponsored-by: On-Waves ehf
|
|
Currently the TA storage stores up to 30 TLLI->TA mappings, if more
entries are created the oldest one is dropped. In theory this can
lead to missing TA information if many MS are present.
This commit removes the TimingAdvance class completely, since the TA
value is now stored in the GprsMs objects.
Note that the GprsMs objects are currently not kept after the TBFs
have detached from them, so the TA values are now kept for a shorter
time than before.
Ticket: #1674
Sponsored-by: On-Waves ehf
|
|
Currently the MS objects are contained in the TBF objects only. To
allow for an extended life time after the TBF objects have been freed
and to find them based on TLLI, a container for the MS objects is
needed.
This commit adds the container class and also adds the corresponding
m_list member to GprsMs. Further integration into the PCU code is not
yet done.
Ticket: #1674
Sponsored-by: On-Waves ehf
|
|
This commit adds the LListHead class which is a wrapper around the
linuxlist. It adds an additional member to refer to the container,
since the container_of macro doesn't work properly with C++ classes.
All functions and macros from linuxlist.h are support except for the
entry macros (e.g. llist_entry, llist_for_each_entry, ...). To access
the container (entry), an entry() method is provided instead:
llist_for_each(pos, &elems) {
pos->entry()->do_something();
}
Sponsored-by: On-Waves ehf
|
|
Currently only TBF objects are used to handle the data flow between
the MS and the SGSN. MS specific data (e.g. pending LLC frames, TLLI)
is copied between successive TBFs. If all TBFs (uplink and downlink)
are idle for some time, all information about the MS is discarded in
the PCU. This makes the implementation of some features more
difficult, e.g. proper TLLI and timing advance handling,
connection based CS selection, and proper management of multiple TBF.
This commit adds the GprsMs class that is intended to hold
information directly related to the MS and to keep references to the
active TBFs.
The class is not yet integrated with the other PCU code. A GprsMs
object container and MS specific fields (TA, CS) will be added in
later commits.
Note that calling detach_tbf() can possibly delete the MS object
depending on the callback implementation.
Ticket: #1674
Sponsored-by: On-Waves ehf
|
|
Addresses:
src/gprs_rlcmac_sched.cpp:26:23: error: pcu_utils.h: No such file or directory
Sponsored-by: On-Waves ehf
|
|
tbf_ul.cpp for UL TBF methods
tbf_dl.cpp for DL TBF methods
This commit contains no code changes.
Ticket: SYS#389
Sponsored by: On-Waves ehf
|
|
Add remarks of possible broken behavior inside the tbf
routines. Move the preparation (and init) into the new
rlc.cpp file.
|
|
|
|
|
|
We can now remove the gprs_rlcmac_data as the code has been
moved into the tbf, pdch and bts.
|
|
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.
|
|
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.
|
|
Move the code around and then turn it into an object...
|
|
This allows us to easily flush the state in case a PCU/BTS
connection is lost.
|
|
|
|
Add some TODO to this class. E.g. they could all work on the
bitvec and the parameter handling could better.
|
|
|
|
For each frame indication received by the BTS the poll controller
is asked to expire timedout entries.
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
|
|
The measurements include:
- DL bandwidth usage
- DL packet loss rate
- DL measurements by mobile
- UL measurements by BTS
In order to receive DL measurements from mobile, it must be enabled via
system information message at BSC.
|
|
In order to use this feature, sysmoBTS requires option "-M", otherwise
the traffic is forwarded through socket interface.
This is essential, if PCU runs on processor of sysmoBTS. The reaction
time and delay of PDTCH frames could heavily degrade proper packet flow.
|
|
libosmocore might not be in the standard include path,
add the CFLAGS to the preprocessor flags. This is fixing
the build on the Osmocom Jenkins.
|
|
|
|
This makes more sense since the entire repository is called this way
|
|
Note: This requires new libosomocore that allows to compile VTY headers
with C++.
|
|
Merge is based on jolly_new branch with two modifications.
1. Modified PCU L1 interface.
pcu_l1_if.cpp - common functions for tx and rx messages on L1 interface.
sysmo_sock.cpp - SYSMO-PCU socket functions.
openbts_sock.cpp - OpenBTS-PCU socket functions.
pcuif_proto.h - L1 interface's primitives.
2. Modified encoding of RLC/MAC Control messages, now we use structures and encode_gsm_rlcmac_downlink() function for encode control blocks (without hand-coding).
|
|
...and link against libosmogb (part of libosmocore.git)
|
|
|
|
Merged jolly branch with master, fixed conflicts.
|
|
The OpenBTS socket functions are moved from main to pcu_l1_if.cpp.
New sysmo_l1_if.cpp is introduced. It used special unix socket interface
to connect to sysmo-BTS. This is required to access CCCH/RACH and info
about cell layout. Traffic is also forwarded via this interface, but
it direct access of L1 baseband DSP will be added soon.
In order to handle ready-to-send requests above l1_if, the transmit
queue (for downlink blocks) is moved to gprs_rlcmac.cpp.
The TBF instance additionally holds TRX and TS info, but this is only
a hack currently. TBF instance requires more details about allocated
ressources in the future.
|