support multi-modem pools

This commit is contained in:
2022-04-14 19:06:11 +02:00
parent 3097032b09
commit 953e904a17
6 changed files with 54 additions and 40 deletions
+17 -10
View File
@@ -10,36 +10,43 @@ BAUDRATE = 115200
class CardPool:
def __init__(self, port):
def __init__(self, port_list):
self.logger = logging.getLogger("CardPool")
self._serial = serial.Serial(port, BAUDRATE, timeout=1)
self._serial_list = []
for port in port_list:
self._serial_list.append(serial.Serial(port, BAUDRATE, timeout=1))
def _send_command(self, cmd: str) -> bytes:
def _send_command(self, serial, cmd: str) -> bytes:
print("send command {}".format(cmd))
self._serial.write(cmd.encode())
msg = self._serial.read(100)
serial.write(cmd.encode())
msg = serial.read(100)
self.logger.info(msg)
return msg
# info: after reset, we need to restart modem pool
def reset(self):
self._send_command("AT+NEXT00\r")
for serial in self._serial_list:
self._send_command(serial, "AT+NEXT00\r")
def switch_to_next(self):
self._send_command("AT+NEXT11\r")
for serial in self._serial_list:
self._send_command(serial, "AT+NEXT11\r")
def switch_to_slot(self, slot_number: int):
params.oracle_log_sender.send_log(msg="换到" + str(slot_number) + "", source=LOG_SUBJECT_EVENT,
subject=LOG_SUBJECT_EVENT,
type=TYPE_EVENT_CHANGE_SLOT)
if slot_number < 10:
self._send_command("AT+SWIT00-000{}\r".format(slot_number))
for serial in self._serial_list:
self._send_command(serial, "AT+SWIT00-000{}\r".format(slot_number))
else:
self._send_command("AT+SWIT00-00{}\r".format(slot_number))
for serial in self._serial_list:
self._send_command(serial, "AT+SWIT00-00{}\r".format(slot_number))
# not work for the pool
def find_current_slot(self):
self._send_command("AT+USIM\r")
for serial in self._serial_list:
self._send_command(serial, "AT+USIM\r")
if __name__ == '__main__':