From ebd3c09bf86d2dd01039b97abb0496dd6c95389d Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Sun, 17 Feb 2013 14:28:52 +1100 Subject: [PATCH] gsmd: record status and be more lenient of CFUN errors. Only treat CFUN states as bad if signal level is zero. Signed-off-by: NeilBrown --- gsm/gsmd.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/gsm/gsmd.py b/gsm/gsmd.py index e1980d9..ccd30a0 100644 --- a/gsm/gsmd.py +++ b/gsm/gsmd.py @@ -22,12 +22,19 @@ import dnotify, suspend from tracing import log from subprocess import Popen +recording = {} def record(key, value): - f = open('/run/gsm-state/.new.' + key, 'w') - f.write(value) - f.close() - os.rename('/run/gsm-state/.new.' + key, - '/run/gsm-state/' + key) + global recording + try: + f = open('/run/gsm-state/.new.' + key, 'w') + f.write(value) + f.close() + os.rename('/run/gsm-state/.new.' + key, + '/run/gsm-state/' + key) + except OSError: + # I got this once on the rename, don't know why + pass + recording[key] = value def recall(key, nofile = ""): try: @@ -442,6 +449,12 @@ def check_cfun(channel, line, m): channel.set_state('init2') return if m.groups()[0] != '0': + global recording + if 'signal_strength' in recording: + s = recording['signal_strength'].split('/') + if s[0] != '0': + return + if channel.last_reset + 100 < time.time(): channel.last_reset = time.time() channel.set_state('reset') -- 2.39.5