diff --git a/drivers/ioexpander/skeleton.c b/drivers/ioexpander/skeleton.c index 668c57561c..73e5a913a4 100644 --- a/drivers/ioexpander/skeleton.c +++ b/drivers/ioexpander/skeleton.c @@ -178,80 +178,6 @@ static void skel_lock(FAR struct skel_dev_s *priv) #define skel_unlock(p) sem_post(&(p)->exclsem) -/**************************************************************************** - * Name: skel_setbit - * - * Description: - * Write a bit in a register pair - * - ****************************************************************************/ - -static int skel_setbit(FAR struct skel_dev_s *priv, uint8_t pin, int bitval) -{ - ioe_pinset_t pinset; - int ret; - - if (pin >= CONFIG_IOEXPANDER_NPINS) - { - return -ENXIO; - } - - /* Read the pinset from the IO-Expander hardware */ -#warning Missing logic - - /* Set or clear the pin value */ - - if (bitval) - { - pinset |= (1 << pin); - } - else - { - pinset &= ~(1 << pin); - } - - /* Write the modified value back to the I/O expander */ -#warning Missing logic - -#ifdef CONFIG_IOEXPANDER_RETRY - if (ret < 0) - { - /* Try again (only once) */ -#warning Missing logic - } -#endif - - return ret; -} - -/**************************************************************************** - * Name: skel_getbit - * - * Description: - * Get a bit from a register pair - * - ****************************************************************************/ - -static int skel_getbit(FAR struct skel_dev_s *priv, uint8_t addr, - uint8_t pin, FAR bool *val) -{ - ioe_pinset_t pinset; - int ret; - - if (pin >= CONFIG_IOEXPANDER_NPINS) - { - return -ENXIO; - } - - /* Read the pinset from the IO-Expander hardware */ -#warning Missing logic - - /* Return true is the corresponding pin is set */ - - *val = ((pinset & (1 << pin)) != 0); - return OK; -} - /**************************************************************************** * Name: skel_direction * @@ -266,6 +192,13 @@ static int skel_direction(FAR struct ioexpander_dev_s *dev, uint8_t pin, FAR struct skel_dev_s *priv = (FAR struct skel_dev_s *)dev; int ret; + gpioinfo("pin=%u direction=%s\n", + pin, (direction == IOEXPANDER_DIRECTION_IN) ? "IN" : "OUT"); + + DEBUGASSERT(priv != NULL && pin < CONFIG_IOEXPANDER_NPINS && + (direction == IOEXPANDER_DIRECTION_IN || + direction == IOEXPANDER_DIRECTION_IN)); + /* Get exclusive access to the I/O Expander */ skel_lock(priv); @@ -321,6 +254,10 @@ static int skel_writepin(FAR struct ioexpander_dev_s *dev, uint8_t pin, FAR struct skel_dev_s *priv = (FAR struct skel_dev_s *)dev; int ret; + gpioinfo("pin=%u value=%u\n", pin, value); + + DEBUGASSERT(priv != NULL && pin < CONFIG_IOEXPANDER_NPINS); + /* Get exclusive access to the I/O Expander */ skel_lock(priv); @@ -346,6 +283,10 @@ static int skel_readpin(FAR struct ioexpander_dev_s *dev, uint8_t pin, FAR struct skel_dev_s *priv = (FAR struct skel_dev_s *)dev; int ret; + gpioinfo("pin=%u\n", priv->addr); + + DEBUGASSERT(priv != NULL && pin < CONFIG_IOEXPANDER_NPINS && value != NULL); + /* Get exclusive access to the I/O Expander */ skel_lock(priv); diff --git a/include/nuttx/ioexpander/ioexpander.h b/include/nuttx/ioexpander/ioexpander.h index 5ebb6cfb45..aa3d703b3a 100644 --- a/include/nuttx/ioexpander/ioexpander.h +++ b/include/nuttx/ioexpander/ioexpander.h @@ -59,7 +59,7 @@ # error No support for devices with more than 64 pins #endif -/* Pin definiotions *********************************************************/ +/* Pin definitions **********************************************************/ #define IOEXPANDER_DIRECTION_IN 0 #define IOEXPANDER_DIRECTION_OUT 1 @@ -259,7 +259,6 @@ /* This type represents a bitmap of pins */ -#ifdef CONFIG_IOEXPANDER_INT_ENABLE #if CONFIG_IOEXPANDER_NPINS <= 8 typedef uint8_t ioe_pinset_t; #elif CONFIG_IOEXPANDER_NPINS <= 16 @@ -268,8 +267,8 @@ typedef uint16_t ioe_pinset_t; typedef uint32_t ioe_pinset_t; #else /* if CONFIG_IOEXPANDER_NPINS <= 64 */ typedef uint64_t ioe_pinset_t; -#endif +#ifdef CONFIG_IOEXPANDER_INT_ENABLE /* This type represents a pin interrupt callback function */ struct ioexpander_dev_s;