From d9d5f67f202129d724959e8105b0a307d10f7c6f Mon Sep 17 00:00:00 2001 From: kruger <kruger@astron.nl> Date: Mon, 14 Mar 2022 15:46:28 +0100 Subject: [PATCH] i2C retry for HBA BF coefficients --- i2cserv/hba1.py | 11 +++++++---- i2cserv/i2c.py | 6 +++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/i2cserv/hba1.py b/i2cserv/hba1.py index 152c6a5..25b13af 100644 --- a/i2cserv/hba1.py +++ b/i2cserv/hba1.py @@ -57,11 +57,14 @@ class hba1(hwdev): logging.debug("SetHba addr=0x%x reg=0x%x",addr,reg) I2Ccallback=self.conf['parentcls'].i2csetget I2Ccallback(0x40,[0],read=1)#wakeup, do nothing - #sleep(0.01) - I2Ccallback(addr,data[:16],reg=reg) +# sleep(0.005) + retry=0; + while not(I2Ccallback(addr,data[:16],reg=reg)) and (retry<2): retry+=1; + if retry==2: logging.warn("uC BF comm error"); if len(data)>16: - #sleep(0.01) - I2Ccallback(addr,data[16:],reg=reg+16) +# sleep(0.005) + while not(I2Ccallback(addr,data[16:],reg=reg+16)) and (retry<2): retry+=1; + if retry>=2: logging.warn("uC BF comm error2"); #sleep(0.01) return True diff --git a/i2cserv/i2c.py b/i2cserv/i2c.py index 7376df4..a902c7f 100644 --- a/i2cserv/i2c.py +++ b/i2cserv/i2c.py @@ -41,7 +41,11 @@ class i2c(hwdev): bus.iaddr_bytes=0 reg=0; logging.debug(str(("I2C set",addr,reg,bytes(bytearray(data)),read))) - bus.ioctl_write(reg,bytes(bytearray(data))) + TXlen=bus.ioctl_write(reg,bytes(bytearray(data))) + if TXlen<0: + bus.close; + return False; + if (TXlen!=len(data)): logging.warn("I2C write error %i/%i"%(TXlen,len(data))) bus.close() return True; except: -- GitLab