A new debug flag is introduced: "DMNCC". MNCC is the Mobile Network Call
Control. This is required for later patches, that extract the call
control from gsm_04_08.c
Some messages have one or two length-value information elements. The is
no IE type included in the message. These information elements are
mandatory, so their actual IE type is known. The improved parse_tlv()
function allows to parse zero, one, or two length-value elements.
Paging refers to a BTS. To page a mobile phone, the current location is
required. If paging succeeds or expires, the BTS structure is also given
to the callback function (cbfn).
Because paging refers to a BTS, the cbfn (callback function) must
include a pointer to bts.
There is no implementation yet for the paging of the actual BTS where
the subscriber is located. gsm_04_08.c always uses BTS 0 (in later
patches) The database requires improvement to store the current BTS
number.
To slow down transmission of many ABIS frames at a time, a delay timer
is used for the E1's time slot. This timer replaces the "usleep()"
function, so the process will not block the execution of libbsc. The
timer is started after a frame is transmitted. If another frame is in
the transmit queue, the frame will only be queued until the timer times
out. If the timer is not running or times out, the frame is transmitted
and the timer is restarted.
The problem with partly provisioned TRX (locks show on LMT) is solved.
The adjustment for the inter frame delay of 50 miliseconds is for
further study.
An application that has own events and file descriptors, must poll
select function ob libbsc. A "polling" flag is used to enable polling.
In this case select() will not sleep until file descriptor events occurr
or nearest timer expires. Also a return value will indicate if there was
an event that has been handled. If there was an event, the application
decides to poll again and don't wait.
In case for bsc_hack, the polling flag is not set. select will sleep as
usual.
this patch renames the timer functions to avoid name collisions with
libmisdn.
the return value of bsc_update_timers() is required for applications to
find out if a timer was fired. (this is required for later patches).
This patch chnages the variable "new" to "_new" in order to include it
in C++ code.
The define "container_of" will cast pointer before assigning. Compiler
with stricter options require this.