You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/02/19 02:33:15 UTC

[incubator-nuttx] branch master updated: lpc17xx_40xx/lpc17_40_i2c.c: Propagate I2C I/O errors

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 43a9866  lpc17xx_40xx/lpc17_40_i2c.c: Propagate I2C I/O errors
43a9866 is described below

commit 43a98662f3a794f51305a26475c102e10fd09f50
Author: Augusto Fraga Giachero <af...@augustofg.net>
AuthorDate: Thu Feb 18 08:17:44 2021 -0300

    lpc17xx_40xx/lpc17_40_i2c.c: Propagate I2C I/O errors
    
    Check if all messages were transferred, if not, return -ENXIO.
    
    This is particularly useful when the slave returns an unexpected NAK,
    the application code should catch the error to avoid failing silently.
---
 arch/arm/src/lpc17xx_40xx/lpc17_40_i2c.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm/src/lpc17xx_40xx/lpc17_40_i2c.c b/arch/arm/src/lpc17xx_40xx/lpc17_40_i2c.c
index 03223fe..0c1547c 100644
--- a/arch/arm/src/lpc17xx_40xx/lpc17_40_i2c.c
+++ b/arch/arm/src/lpc17xx_40xx/lpc17_40_i2c.c
@@ -242,7 +242,9 @@ static int lpc17_40_i2c_start(struct lpc17_40_i2cdev_s *priv)
            lpc17_40_i2c_timeout, (wdparm_t)priv);
   nxsem_wait(&priv->wait);
 
-  return priv->nmsg;
+  /* Remaining messages should be zero or an error occurred */
+
+  return priv->nmsg ? -ENXIO : OK;
 }
 
 /****************************************************************************