From 5c131135cb7e62fa5c252619f420c706ba571375 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Thu, 5 Mar 2020 00:05:45 +0100 Subject: [PATCH] mncc_{test,mg_loadgen}.py: Add a manual call-release function Change-Id: I30265b765f03bd0485bdaa7d6be6d95ad678b0ee --- gsm_call_fsm.py | 10 ++++++++++ mncc_mt_loadgen.py | 3 +++ mncc_test.py | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gsm_call_fsm.py b/gsm_call_fsm.py index a9ad8c0..c8bcf39 100644 --- a/gsm_call_fsm.py +++ b/gsm_call_fsm.py @@ -90,6 +90,10 @@ class GsmCallFsm(pykka.ThreadingActor): bearer_cap = mncc_bearer_cap(self.codecs_permitted)) self.mncc_ref.tell({'type': 'send', 'msg': msg}) + def _onmncc_disc_req(self, e): + msg = mncc_msg(msg_type = mncc.MNCC_DISC_REQ, callref = self.callref) + self.mncc_ref.tell({'type': 'send', 'msg': msg}) + def find_matching_codec(self, ms_codecs): # find common denominator of permitted codecs and MS codecs for i in self.codecs_permitted: @@ -182,6 +186,7 @@ class GsmCallFsm(pykka.ThreadingActor): ('onmncc_call_conf_ind', self._onmncc_call_conf_ind), ('onmncc_setup_cnf', self._onmncc_setup_cnf), ('onmncc_disc_ind', self._onmncc_disc_ind), + ('onmncc_disc_req', self._onmncc_disc_req), ('onenterNULL', self._onenter_NULL), ], ) @@ -302,6 +307,8 @@ class GsmCallFsm(pykka.ThreadingActor): self.connect_rtp(message['rtp']) elif message['type'] == 'get_callref': return self.callref + elif message['type'] == 'release': + self.fsm.mncc_disc_req(None) else: raise Exception('mncc', '%s: Unknown message %s' % (self, message)) @@ -366,3 +373,6 @@ class GsmCallConnector(pykka.ThreadingActor): self.rtp_created(message['called'], message['rtp']) #else: # raise Exception('mncc', 'GsmCallConnector Rx Unknown message %s' % message) + + def release(self): + self.call_a.tell({'type':'release'}) diff --git a/mncc_mt_loadgen.py b/mncc_mt_loadgen.py index 69a5ec2..bd69998 100755 --- a/mncc_mt_loadgen.py +++ b/mncc_mt_loadgen.py @@ -120,6 +120,9 @@ class MTCallRtpsource(pykka.ThreadingActor): self.call.tell({'type':'start_mt_call', 'calling':self.msisdn_calling, 'called':self.msisdn_called}) + def release(self): + self.call.tell({'type':'release'}) + def on_stop(self): # Attempt to do a graceful shutdown by deleting the RTP connection from rtpsource self.ctrl_act.ask({'type':'rtp_delete', 'cname':self.callref}) diff --git a/mncc_test.py b/mncc_test.py index 90610e4..f92c94b 100755 --- a/mncc_test.py +++ b/mncc_test.py @@ -69,7 +69,8 @@ def connect_call(msisdn_a, msisdn_b, rtp_bridge = True, codecs = GSM48.AllCodecs log.info("") log.info("") log.info("Start calls by typing:") -log.info(' connect_call("90001", "90002")') +log.info(' c = connect_call("90001", "90002")') +log.info(' c.release()') log.info("") log.info("")