aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gsm_call_fsm.py7
-rw-r--r--mncc_sock.py12
2 files changed, 16 insertions, 3 deletions
diff --git a/gsm_call_fsm.py b/gsm_call_fsm.py
index fa15940..167a805 100644
--- a/gsm_call_fsm.py
+++ b/gsm_call_fsm.py
@@ -14,7 +14,7 @@ import ctypes
import pykka
from fysom import Fysom
-from mncc_sock import mncc_msg, mncc_number, mncc_rtp_msg, mncc_bridge_msg
+from mncc_sock import mncc_msg, mncc_number, mncc_rtp_msg, mncc_bridge_msg, mncc_bearer_cap
Uint32Array2 = mncc.uint32_t * 2
@@ -82,9 +82,10 @@ class GsmCallFsm(pykka.ThreadingActor):
def _onmncc_setup_req(self, e):
msg = mncc_msg(msg_type = mncc.MNCC_SETUP_REQ, callref = self.callref,
- fields = mncc.MNCC_F_CALLED | mncc.MNCC_F_CALLING,
+ fields = mncc.MNCC_F_CALLED | mncc.MNCC_F_CALLING | mncc.MNCC_F_BEARER_CAP,
calling = mncc_number(self.calling),
- called = mncc_number(self.called))
+ called = mncc_number(self.called),
+ bearer_cap = mncc_bearer_cap(self.codecs_permitted))
self.mncc_ref.tell({'type': 'send', 'msg': msg})
def find_matching_codec(self, ms_codecs):
diff --git a/mncc_sock.py b/mncc_sock.py
index 3d29691..3cc1ba1 100644
--- a/mncc_sock.py
+++ b/mncc_sock.py
@@ -52,6 +52,18 @@ def mncc_number(number, num_type = 0, num_plan = 0, num_present = 1, num_screen
plan = num_plan, present = num_present,
screen = num_screen)
+def mncc_bearer_cap(codecs_permitted):
+ speech_ver = ctypes.c_int * 8
+ speech_types = speech_ver()
+ index = 0
+
+ for codec in codecs_permitted:
+ speech_types[index] = codec
+ index = index + 1
+
+ speech_types[index] = -1
+ return mncc.gsm_mncc_bearer_cap(coding = 0, speech_ctm=0, radio = 1, speech_ver = speech_types, transfer = 0, mode = 0)
+
class MnccSocketBase(object):
def send(self, msg):
return self.sock.sendall(msg.send())