add mncc_rtp_msg() class for RTP messages on MNCC interface

This commit is contained in:
Harald Welte 2015-12-01 23:04:20 +01:00
parent 4f3762e793
commit 20523c7fd2
2 changed files with 16 additions and 1 deletions

View File

@ -5,7 +5,7 @@ import ctypes
import pykka
from fysom import Fysom
from mncc_sock import mncc_msg, mncc_number
from mncc_sock import mncc_msg, mncc_number, mncc_rtp_msg
class GsmCallFsm(pykka.ThreadingActor):
last_callref = 0

View File

@ -17,6 +17,18 @@ class mncc_msg(mncc.gsm_mncc):
def __unicode__(self):
return u'mncc_msg(type=0x%04x, callref=%u, fields=0x%04x)' % (self.msg_type, self.callref, self.fields)
class mncc_rtp_msg(mncc.gsm_mncc_rtp):
def send(self):
return buffer(self)[:]
def receive(self, bytes):
fit = min(len(bytes), ctypes.sizeof(self))
ctypes.memmove(ctypes.addressof(self), bytes, fit)
def __str__(self):
return 'mncc_rtp_msg(type=0x%04x, callref=%u, ip=%x, port=%u)' % (self.msg_type, self.callref, self.ip, self.port)
def __unicode__(self):
return u'mncc_rtp_msg(type=0x%04x, callref=%u, ip=%x, port=%u)' % (self.msg_type, self.callref, self.ip, self.port)
def mncc_number(number, num_type = 0, num_plan = 0, num_present = 1, num_screen = 0):
return mncc.gsm_mncc_number(number = number, type = num_type,
plan = num_plan, present = num_present,
@ -42,4 +54,7 @@ class MnccSocket(object):
data = self.sock.recv(1500)
ms = mncc_msg()
ms.receive(data)
if ms.msg_type == mncc.MNCC_RTP_CREATE or ms.msg_type == mncc.MNCC_RTP_CONNECT or ms.msg_type == mncc.MNCC_RTP_FREE:
ms = mncc_rtp_msg()
ms.receive(data)
return ms