Move Sms class to a separate module

Preparation for following commits to add smpp support, as we will have a
class SmppClient with a method accepting an Sms object to send it.

Change-Id: I1f28e14e963abb64df687b69d54975be2aeb0d0d
This commit is contained in:
Pau Espin 2017-05-30 15:13:29 +02:00
parent b8011695b8
commit 996651a3a3
3 changed files with 67 additions and 47 deletions

View File

@ -1,20 +1,20 @@
#!/usr/bin/env python3
import _prep
from osmo_gsm_tester import ofono_client
from osmo_gsm_tester import sms
print(ofono_client.Sms())
print(ofono_client.Sms())
print(ofono_client.Sms())
sms = ofono_client.Sms('123', '456')
print(str(sms))
print(sms.Sms())
print(sms.Sms())
print(sms.Sms())
msg = sms.Sms('123', '456')
print(str(msg))
sms2 = ofono_client.Sms('123', '456')
print(str(sms2))
assert sms != sms2
msg2 = sms.Sms('123', '456')
print(str(msg2))
assert msg != msg2
sms2.msg = str(sms.msg)
print(str(sms2))
assert sms == sms2
msg2.msg = str(msg.msg)
print(str(msg2))
assert msg == msg2
# vim: expandtab tabstop=4 shiftwidth=4

View File

@ -17,7 +17,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from . import log, test, util, event_loop
from . import log, test, util, event_loop, sms
from pydbus import SystemBus, Variant
import time
@ -338,20 +338,20 @@ class Modem(log.Origin):
tokens.append('to ' + to_msisdn_or_modem.name())
else:
to_msisdn = str(to_msisdn_or_modem)
sms = Sms(self.msisdn, to_msisdn, 'from ' + self.name(), *tokens)
self.log('sending sms to MSISDN', to_msisdn, sms=sms)
msg = sms.Sms(self.msisdn, to_msisdn, 'from ' + self.name(), *tokens)
self.log('sending sms to MSISDN', to_msisdn, sms=msg)
mm = self.dbus.interface(I_SMS)
mm.SendMessage(to_msisdn, str(sms))
return sms
mm.SendMessage(to_msisdn, str(msg))
return msg
def _on_incoming_message(self, message, info):
self.log('Incoming SMS:', repr(message))
self.dbg(info=info)
self.sms_received_list.append((message, info))
def sms_was_received(self, sms):
def sms_was_received(self, sms_obj):
for msg, info in self.sms_received_list:
if sms.matches(msg):
if sms_obj.matches(msg):
self.log('SMS received as expected:', repr(msg))
self.dbg(info=info)
return True
@ -364,32 +364,4 @@ class Modem(log.Origin):
def log_info(self, *args, **kwargs):
self.log(self.info(*args, **kwargs))
class Sms:
_last_sms_idx = 0
msg = None
def __init__(self, from_msisdn=None, to_msisdn=None, *tokens):
Sms._last_sms_idx += 1
msgs = ['message nr. %d' % Sms._last_sms_idx]
msgs.extend(tokens)
if from_msisdn:
msgs.append('from %s' % from_msisdn)
if to_msisdn:
msgs.append('to %s' % to_msisdn)
self.msg = ', '.join(msgs)
def __str__(self):
return self.msg
def __repr__(self):
return repr(self.msg)
def __eq__(self, other):
if isinstance(other, Sms):
return self.msg == other.msg
return inself.msg == other
def matches(self, msg):
return self.msg == msg
# vim: expandtab tabstop=4 shiftwidth=4

View File

@ -0,0 +1,48 @@
# osmo_gsm_tester: DBUS client to talk to ofono
#
# Copyright (C) 2016-2017 by sysmocom - s.f.m.c. GmbH
#
# Author: Neels Hofmeyr <neels@hofmeyr.de>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
class Sms:
_last_sms_idx = 0
msg = None
def __init__(self, from_msisdn=None, to_msisdn=None, *tokens):
Sms._last_sms_idx += 1
msgs = ['message nr. %d' % Sms._last_sms_idx]
msgs.extend(tokens)
if from_msisdn:
msgs.append('from %s' % from_msisdn)
if to_msisdn:
msgs.append('to %s' % to_msisdn)
self.msg = ', '.join(msgs)
def __str__(self):
return self.msg
def __repr__(self):
return repr(self.msg)
def __eq__(self, other):
if isinstance(other, Sms):
return self.msg == other.msg
return inself.msg == other
def matches(self, msg):
return self.msg == msg
# vim: expandtab tabstop=4 shiftwidth=4