Age | Commit message (Collapse) | Author | Files | Lines |
|
* The MSC is sending us the next 04.08 packet before we have
received the answer for the cipher model complete. The code was
supposed to copy all packets from the current queue, to a new
queue and then send the packets again.
* This would (re)establish the different SAPIs. Now the requeuing
code was grabbing the packet from the empty queue (NULL pointer)
and we were dereferencing it. It appears that we need to use
"head" until the queue is empty.
|
|
In case we need to handle speech but we are currently on a SDCCH
we need to assign a new channel and close the old one. This
implementation should have the correct flow of things but we might
need to fix some error situations properly.
It is implemented by keeping a secondary_lchan pointer that will
be swapped into the lchan pointer after the assignment complete
message from the MS. The old lchan will be deactivated (the SACCH
should stay open). We have to manually remove the subscr from the
lchan structure to properly close things down.
|
|
Use switch/case, switch/case for the subsys and signal
to prepare to handle more signals in the future.
|
|
The MSC is asking us to enable ciphering and then immediately
sends a DTAP msg for SAPI=3. We handle this correctly by attempting
to establish SAPI=3 but we never get an establishment confirm
for this SAPI.
Attempt to fix it by not sending any DTAP message when we receive
the Cipher Mode Request and unblock the queue when the ciphering
is confirmed. The unblocking currently works by taking all messages
out of the queue and then submitting them again. This will attempt
to establish the SAPI=3 and such automaticaly.
And the MSC stopped sending me SMS so this needs to be verified at a
later time.
|
|
The LAI generation wants to have 16bit unsigned, just keep
them like this already. This means the int32_t will be truncated
inside the get_*_code methods which is better than doing it
somewhere else.
|
|
We want to use the real number on the Um... Using the core
network code is totally wrong in this scope...
|
|
* Be able to have a country code in the air but use a different
country code when talking to the core network.
* Now both country and network code can be different on air and
on the MSC communication.
|
|
* Make it possible to have a different MNC in the RSL traffic
than in the core network.
* Introduce the "core network code NUMBER" variable. If it is
set this network code will be used in traffic with the MSC.
* Use the core_network_code number when sending a packet to
the MSC
* Regenerate the LAI (this is where I could have a bug) when
sending packets to the BTS.
* Add size checks.
This is not tested, I might got something wrong.
|
|
* For half rate we also need to set the 3rd bit to one
* See GSM08.08 §3.2.2.51 and then §3.2.2.11
|
|
Report to the MSC with the right code and patch
it on the air...
|
|
Remove the timer handling from the LCHAN and release the
channel ones the use count is dropping to zero.
Change code that was sending/using the lchan after the
release and change the send data method to warn in case
the lchan is used after it has been freed.
|
|
When more than one trunk group is allocated to the BSC the
MSC will start to assign channels from the different multiplexer.
We will map them the following way onto MGCP endpoints
Multiplex 0:
0 -> 1
1 -> signalling
2 -> 2
.. -> ..
16 -> signalling (might be 15)
30 -> 30
Multiplex 1:
0 -> 31
2 -> 32
...
Multiplex 3:
..
|
|
Stop having a global variable... keep it in the
gsm network or the mgcp
|
|
The timeslot of the network maps the following way
0 -> 1
1 -> n/a
2 -> 2
... -> ...
31 -> 31
|
|
Send a hardcoded multirate config when usin the
AMR codec. This should be more configurable in
the future.
|
|
It is possible to specify a list of possible speech codecs
and we will try to match the assignment command with the
one from the config file. This is not tested yet and we have
one problem. We assume we can modify the channel to hold
the speech value... this will require more work.
|
|
Follow the configuration of the gsm network. If the Cipher
Mode Request does not allow our preferred format we will
reject it. Otherwise send the cipher mode command to the
mobile station. This code is mostly untested.
|
|
Generate a classmark update message from a given payload
this might need to be changed to get the version2 and
version3 parameters
|
|
Send the RSL value... it is the right value
|
|
|
|
- Fix the generation of the assignment failure message
- Parse the permitted indicator of the assignment request message
|
|
|
|
This is fixing a bug when we try to submit a SMS from the MS to
the network. We send the RLS ESTABLISH REQUEST but as the MS
already established this SAPI we waited for the timeout and failed..
|
|
|
|
|
|
|
|
|
|
For the MSC we need to queue GSM04.08 messages until the
SCCP connection is confirmed to be open and then can send
the stored messages. The queue is limited to 10 messages
at which point new ones will be dropped. Currently the
only messages we get are measurement indication messages
but it is better to be safe than sorry.
The SCCP messages are sent as soon as the connection
is considered established and then no queueing happens
any more. While replacing sccp_connection_write calls
various memory leaks has been fixed.
For the MS we might have received a DTAP and need to do
an operation that requires a roundtrip and want to send
wait until this has happened. The two scenerios are sending
a SMS to the phone that requires to do something special
for the different SAPI. Currently it is assumed that
only one SAPI=0 -> SAPI=3 change happen during the connection.
For the first SAPI != 0 we will send the rll_ request
and then wait for the timeout or confirmation. In case
of timeout a SAPI "n" reject is sent and in case of
success the queue is getting emptied.
|
|
This message will be needed when no RLL connection
on a different SAPI can be established or we don't
want to establish it.
|
|
This is a BSC to be used by on-waves.com to connect to a real
MSC using SCCP over IP.
The following messages and features are currently implemented:
- IPA identity ack's
- COMPLETE LAYER3 INFORMATION
- DTAP
- PAGING COMMAND
- CLEAR COMPLETE/CLEAR REQUEST
- CIPHER MODE COMMAND/ REJECT /COMPLETE
It comes with a tool to create the enum's from the spec and
a very simple test server to do the handshaking.
|