From 3548aee12ab33a6fd2ae3d018f0f45d0c863527f Mon Sep 17 00:00:00 2001 From: Alexandre Bard Date: Fri, 14 Jun 2019 10:48:15 +0200 Subject: [PATCH] ublox-gsm-config: Add factory reset feature BugzID: 57487 --- .../files/ublox-gsm-config.py | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/recipes-connectivity/ublox-gsm-config/files/ublox-gsm-config.py b/recipes-connectivity/ublox-gsm-config/files/ublox-gsm-config.py index 956d41e..899cb54 100755 --- a/recipes-connectivity/ublox-gsm-config/files/ublox-gsm-config.py +++ b/recipes-connectivity/ublox-gsm-config/files/ublox-gsm-config.py @@ -114,6 +114,25 @@ def apn_setup(ser): print("Full functionality mode") execute_and_check(ser, b'AT+CFUN=1\r') +def reset_modem(ser): + print("Resetting modem") + ser.write(b'AT+CFUN=16\r') + ser.close() + while os.path.exists(SERIAL_DEV): + time.sleep(1) + while not os.path.exists(SERIAL_DEV): + time.sleep(1) + return serial.Serial(SERIAL_DEV, 115200, timeout=0.5) + +def factory_reset(): + print('factory reset the modem') + if not os.path.exists(SERIAL_DEV): + print('serial interface is not available, abort') + return -1 + ser = serial.Serial(SERIAL_DEV, 115200, timeout=0.5) + execute_and_check(ser, b'AT+UFACTORY=2,1') + reset_modem(ser) + def poweroff(gpio): print('poweroff') if not os.path.exists(SERIAL_DEV): @@ -128,12 +147,20 @@ def poweroff(gpio): gpio.set_value(0) +def help(): + print('Usage : {} [stop|factory-reset]'.format(sys.argv[0])) + def main(): line = gpiod.find_line('GSM_SUP_EN') line.request(consumer='ublox-config', type=gpiod.LINE_REQ_DIR_OUT) - if len(sys.argv) == 2 and sys.argv[1] == 'stop': - return poweroff(line) + if len(sys.argv) == 2: + if sys.argv[1] == 'stop': + return poweroff(line) + elif sys.argv[1] == 'factory-reset': + return factory_reset() + else: + return help() # Power on line.set_value(1) @@ -158,15 +185,7 @@ def main(): rst = sim_config(ser) or rst if rst: - print("Resetting modem") - ser.write(b'AT+CFUN=16\r') - - ser.close() - while os.path.exists(SERIAL_DEV): - time.sleep(1) - while not os.path.exists(SERIAL_DEV): - time.sleep(1) - ser = serial.Serial(SERIAL_DEV, 115200, timeout=0.5) + ser = reset_modem(ser) apn_setup(ser) config_dump.dump_modem_config(ser)