ci_ctl_qtel.py 2.82 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements.  See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1  (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# *      http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# *      contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
#   Required Python Version
#     Python 3.x
#
#---------------------------------------------------------------------

27 28 29
#usage example:
#sudo python3 ci_ctl_qtel.py /dev/ttyUSB2 wup
#sudo python3 ci_ctl_qtel.py /dev/ttyUSB2 detach
30 31 32 33 34 35 36 37


import sys
import time
import serial


class qtel_ctl:
38 39 40
	#---------------
	#private methods
	#---------------
41
    def __init__(self, usb_port_at):
42
        self.QUECTEL_USB_PORT_AT = usb_port_at #ex : '/dev/ttyUSB2'
43
        self.modem = serial.Serial(self.QUECTEL_USB_PORT_AT, timeout=1)
44
        self.cmd_dict= {"wup": self.wup,"detach":self.detach}#dictionary of function pointers
45 46 47 48 49 50

    def __set_modem_state(self,ser,state):
	    self.__send_command(ser,"AT+CFUN={}\r".format(state))

    def __send_command(self,ser,com):
        ser.write(com.encode())
51 52 53 54 55 56 57 58 59 60 61 62 63 64
        time.sleep(0.1)
        ret=[]
        while ser.inWaiting()>0:
            print("waiting")
            msg=ser.readline()
            msg=msg.decode("utf-8")
            msg=msg.replace("\r","")
            msg=msg.replace("\n","")
            print(msg)
            if msg!="":
                ret.append(msg)
            else:
                print("msg empty")
        return ret
65

66 67 68 69
	#--------------
	#public methods
	#--------------
    def wup(self):#sending AT+CFUN=0, then AT+CFUN=1
70
        self.__set_modem_state(self.modem,'0')
71
        time.sleep(3)
72
        self.__set_modem_state(self.modem,'1')
73

74
    def detach(self):#sending AT+CFUN=0
75
        self.__set_modem_state(self.modem,'0')
76 77 78 79 80




if __name__ == "__main__":
81 82
    #argv[1] : usb port
    #argv[2] : qtel command (see function pointers dict "wup", "detach" etc ...)
83 84
    command = sys.argv[2]
    Module=qtel_ctl(sys.argv[1])
85
    #calling the function to be applied
86
    Module.cmd_dict[command]()