summaryrefslogtreecommitdiffstats
path: root/pyiplledmonitor/ipl_status_led_monitor.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyiplledmonitor/ipl_status_led_monitor.py')
-rw-r--r--pyiplledmonitor/ipl_status_led_monitor.py41
1 files changed, 23 insertions, 18 deletions
diff --git a/pyiplledmonitor/ipl_status_led_monitor.py b/pyiplledmonitor/ipl_status_led_monitor.py
index a67186a..6e36d00 100644
--- a/pyiplledmonitor/ipl_status_led_monitor.py
+++ b/pyiplledmonitor/ipl_status_led_monitor.py
@@ -69,24 +69,29 @@ class IPLStatusLEDMonitor(DbusProperties, DbusObjectManager):
def IPLLEDReadI2CByte(self, byte):
retry_number = 0
retval = 0
- comm_fail = True;
- while (comm_fail == True):
- comm_fail = False;
- try:
- proc = subprocess.Popen(["i2cget", "-y", "12", "0x31", str(byte)], stdout=subprocess.PIPE, stderr=open(os.devnull, 'wb'), shell=False)
- (out, err) = proc.communicate()
- if (proc.returncode != 0):
- comm_fail = True
- else:
- retval = int(out, 16)
- except:
- comm_fail = True;
- pass
- if (comm_fail == True):
- retry_number += 1
- if (retry_number > 16):
- break
- time.sleep(0.1)
+ candidate_values = []
+ for read_count in range(0, 64):
+ comm_fail = True;
+ while (comm_fail == True):
+ comm_fail = False;
+ try:
+ proc = subprocess.Popen(["i2cget", "-y", "12", "0x31", str(byte)], stdout=subprocess.PIPE, stderr=open(os.devnull, 'wb'), shell=False)
+ (out, err) = proc.communicate()
+ if (proc.returncode != 0):
+ comm_fail = True
+ else:
+ retval = int(out, 64)
+ except:
+ comm_fail = True;
+ pass
+ if (comm_fail == True):
+ retry_number += 1
+ if (retry_number > 64):
+ break
+ time.sleep(0.1)
+ if (comm_fail == False):
+ candidate_values.append(retval)
+ retval = max(set(candidate_values), key=candidate_values.count)
return retval
def IPLLEDCheckSystem(self):
OpenPOWER on IntegriCloud