On Mon, Jan 11, 2021 at 02:34:24PM +0100, Bartosz Golaszewski wrote: > From: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> > > Open-source and open-drain drive settings are mutually exclusive just like > the bias settings. Make them into an enum so that becomes clear. > > Signed-off-by: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> > --- > bindings/cxx/gpiod.hpp | 24 +++++---- > bindings/cxx/line.cpp | 18 +++---- > bindings/cxx/tests/tests-line.cpp | 45 ++++++---------- > bindings/python/gpiodmodule.c | 73 ++++++++++++++------------ > bindings/python/tests/gpiod_py_test.py | 18 +++---- > include/gpiod.h | 26 +++++---- > lib/core.c | 12 ++--- > tests/tests-line.c | 36 ++++++------- > tools/gpioinfo.c | 14 ++++- > 9 files changed, 134 insertions(+), 132 deletions(-) > > diff --git a/bindings/cxx/gpiod.hpp b/bindings/cxx/gpiod.hpp > index fb675fc..f9c341d 100644 > --- a/bindings/cxx/gpiod.hpp > +++ b/bindings/cxx/gpiod.hpp > @@ -332,16 +332,10 @@ public: > GPIOD_API bool is_used(void) const; > > /** > - * @brief Check if this line represents an open-drain GPIO. > - * @return True if the line is an open-drain GPIO, false otherwise. > + * @brief Get current drive setting of this line. > + * @return Current drive setting. > */ > - GPIOD_API bool is_open_drain(void) const; > - > - /** > - * @brief Check if this line represents an open-source GPIO. > - * @return True if the line is an open-source GPIO, false otherwise. > - */ > - GPIOD_API bool is_open_source(void) const; > + GPIOD_API int drive(void) const; > > /** > * @brief Request this line. > @@ -482,6 +476,18 @@ public: > /**< Line's direction setting is output. */ > }; > > + /** > + * @brief Possible drive settings. > + */ > + enum : int { > + DRIVE_NONE = 1, > + /**< Drive setting is unknown. */ Unlike bias, the drive setting is never unknown - if zero the pin is assumed push-pull. And to me DRIVE_NONE implies a high impedance state. Cheers, Kent.