emersondms
6/3/2018 - 8:30 PM

Apply AT commands on Android smartphones

Apply AT commands on Android smartphones

import serial
import serial.tools.list_ports
import time

ser = serial.Serial()

def getNumberOfUsbModemsConnected():
    ports = list(serial.tools.list_ports.comports())
    modemsConnected = 0
    for comPort, description, address in ports:
        if 'USB' in description:
            modemsConnected += 1
    return modemsConnected

def getComPortsAvailable():
    comPortsAvailable = []
    for port in range(400):
        try:
            ser = serial.Serial(port)
            comPortsAvailable.append((port))
            ser.close()
        except serial.SerialException:
            pass
    return comPortsAvailable

def getConnectedComPort():
    for port in range(len(getComPortsAvailable())):
        connectedComPort = getComPortsAvailable()[port]
        try:
            ser = serial.Serial(connectedComPort, timeout=1)
            ser.write("AT\r")
            time.sleep(0.5)
            result = ser.read()
            ser.close()
            if result != "":
                return connectedComPort
        except:
            pass

def sendAtCommand(cmd):
    ser.port = getConnectedComPort()
    if not ser.isOpen(): ser.open()
    ser.write("AT%" +cmd+ "\r")
    time.sleep(0.5)
    result = ser.read(ser.inWaiting()).replace("", "").replace("", "")
    ser.close()
    return result
import modem
import random

def sendAtCommand(cmd):
    return modem.sendAtCommand(cmd)

def getCurrentValue(param):
    return sendAtCommand(param).replace("AT%%%s" % param, "").replace("OK", "").strip()

def setNewValue(param, newValue):
    return sendAtCommand(param + "=%s" % newValue)

def luhnResidue(digits):
    return sum(sum(divmod(int(d) * (1 + i % 2), 10)) for i, d in enumerate(digits[::-1])) % 10

def getValidImei():
    part = ''.join(str(random.randrange(0, 9)) for _ in range(14))
    res = luhnResidue('{}{}'.format(part, 0))
    return '{}{}'.format(part, -res % 10)

def getValidMacAddress():
    mac = [0xC4, random.randint(0x00, 0xff), random.randint(0x00, 0xff), random.randint(0x00, 0xff), random.randint(0x00, 0xff), random.randint(0x00, 0xff)]
    return ','.join(''.join(map(lambda x: "%02X" % x, mac)))

def applyUlcw():
    return setNewValue("ULCW", "1,1234567812345678,2,1234567812345678,4,1234567812345678,8,1234567812345678,16,1234567812345678")

def applySlType():
    currentSlType = getCurrentValue("SLTYPE")
    if currentSlType == "0":
        slType = setNewValue("SLTYPE", "1")
    else:
        slType = setNewValue("SLTYPE", "0")
    return slType