You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.1 KiB
55 lines
2.1 KiB
python MNCC interface for OsmoNITB
|
|
(C) 2015 by Harald Welte
|
|
======================================================================
|
|
|
|
I've been working on a small python tool that can be used to attach to
|
|
the MNCC interface of OsmoNITB. It implements the 04.08 CC state
|
|
machine with our MNCC primitives, including support for RTP bridge mode
|
|
of the voice streams.
|
|
|
|
= Requirements =
|
|
|
|
mncc-python needs python-pykka, and fysom.
|
|
|
|
On Debian or Ubuntu you can install them via
|
|
sudo apt-get install python-pykka python-fysom
|
|
|
|
= Getting the code =
|
|
|
|
The first working version of the tool is available from
|
|
http://git.osmocom.org/mncc-python/
|
|
or
|
|
git clone git://git.osmocom.org/mncc-python
|
|
|
|
The code is pretty hacky in some places. That's partially due to the
|
|
fact that I'm much more familiar in the C, Perl and Erlang world than in
|
|
python. Still I thought it's a good idea to do it in python to enable
|
|
more people to use/edit/contribute to it.
|
|
|
|
I'm happy for review / cleanup suggestion by people with more Python-foo
|
|
than I have.
|
|
|
|
Architecturally, I decided to do things a bit erlang-like, where we have
|
|
finite state machines in an actor models, and message passing between
|
|
the actors. This is what happens with the GsmCallFsm()'s, which are
|
|
created by the GsmCallConnector() representing both legs of a call and
|
|
the MnccActor() that wraps the MNCC socket towards OsmoNITB.
|
|
|
|
The actual encoding/decoding of MNCC messages is auto-generated from the
|
|
mncc header file #defines, enums and c-structures by means of ctypes
|
|
code generation.
|
|
|
|
The immediate first use case for this was to be able to generate MT
|
|
calls to a set of known MSISDNs and load all 14 TCH/H channels of a
|
|
single-TRX BTS. It will connect the MT calls in pairs, so you end up
|
|
with 7 MS-to-MS calls.
|
|
|
|
mncc_test.py currently drops you into a python shell where you can e.g.
|
|
start more / new calls by calling functions like
|
|
connect_call("7839", "3802")
|
|
from that shell. Above example initiates MT calls to subscribers with
|
|
extension number 7839 and 3802.
|
|
|
|
Exiting the shell by quit() or Ctrl+C will terminate all call FSMs and
|
|
terminate.
|