Python scripting interface to OsmoNITB/OsmoMSC MNCC interface
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.
 
 
 
 
Pau Espin 45ff1d2e62 main: generate coredump and exit upon SIGABRT received 2 years ago
contrib contrib/manual_test_server: Make executable, add #! 3 years ago
rtpsource main: generate coredump and exit upon SIGABRT received 2 years ago
.gitignore update .gitignore with rtpsource object code file names 2 years ago
.gitreview Add git-review config 4 years ago
README recommend stock Debian/Ubuntu package for fysom 4 years ago
ctrl.py mncc_mt_loadgen.py: Program for MT call load testing with rtpsource 3 years ago
gsm_call_fsm.py GsmCallFsm: permit MNCC_REL_CNF in any state 2 years ago
mncc.h Update to MNCC v7 (Support IPv6 addresses) 2 years ago
mncc.py Update to MNCC v7 (Support IPv6 addresses) 2 years ago
mncc.xml Update to MNCC v7 (Support IPv6 addresses) 2 years ago
mncc_mt_loadgen.py mncc_mt_loadgen.py: add codec arg 2 years ago
mncc_sock.py MnccSocketServer: Don't unlink if the socket doesn't exist 3 years ago
mncc_test.py mncc_test: add calls() to initiate series of calls 3 years ago
regen-mncc-py.sh regen-mncc-py.sh: Document how to obtain required bins from source 2 years ago
smpp_test.py *.py: use generic logging framework instead of print() 4 years ago

README

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.