use multi-thread to wait sms
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import logging
|
||||
import threading
|
||||
import time
|
||||
|
||||
import params
|
||||
from definitions import SMS_TIMEOUT
|
||||
from pojo.serial_modem import SerialModem
|
||||
|
||||
|
||||
class WaitSmsWorker:
|
||||
|
||||
def __init__(self, serial_modem: SerialModem):
|
||||
self.serial_modem = serial_modem
|
||||
self.logger = logging.getLogger("WaitSmsWorker")
|
||||
|
||||
def handle_sms(self, sms):
|
||||
self.logger.info(
|
||||
"sms received for phone:{}(ccid:{})".format(self.serial_modem.phone_number, self.serial_modem.ccid))
|
||||
self.logger.info(
|
||||
u'== SMS message received ==\nFrom: {0}\nTime: {1}\nMessage:\n{2}\n'.format(sms.number, sms.time, sms.text))
|
||||
# extract the otp number
|
||||
params.oracle_log_sender.send_sms_reception_log(sms.number, sms.text, self.serial_modem.ccid)
|
||||
|
||||
def run(self):
|
||||
t = threading.Thread(target=self.start_wait)
|
||||
t.start()
|
||||
# t.join()
|
||||
|
||||
def start_wait(self):
|
||||
try:
|
||||
self.serial_modem.modem.deleteMultipleStoredSms(memory="SM")
|
||||
except Exception as error:
|
||||
print(error)
|
||||
|
||||
self.serial_modem.modem.smsReceivedCallback = self.handle_sms
|
||||
self.serial_modem.modem.smsTextMode = False
|
||||
self.logger.info('Waiting for SMS message, for phone number ' + str(self.serial_modem.phone_number))
|
||||
listen_at = time.time()
|
||||
# threading.current_thread().join(self.OTP_TIMEOUT)
|
||||
while True:
|
||||
# self.logger.info("sleep for 2s in thread({})".format(threading.currentThread().name))
|
||||
time.sleep(5)
|
||||
# check whether timeout
|
||||
now = time.time()
|
||||
if (listen_at + SMS_TIMEOUT) < now:
|
||||
self.logger.info("time out for {}, switch to next contact".format(self.serial_modem.phone_number))
|
||||
# save the contact in timeout
|
||||
self.serial_modem.modem.close()
|
||||
return
|
||||
Reference in New Issue
Block a user