GpioService : API functions SetOpenDrainOutput and SetTriStateOutput not usable


My GPIO testapplication runs on a MangOH Green with a WP8548 controller.
I use legato version 16.10.x and checked the GPIO documentation in .
My output pins behave correctly when I use the API function SetPushPullOutput.
Our hardware configuration will have external pullup resistors, so, I want to use the API functions SetOpenDrainOutput and SetTriStateOutput.
The build process does not give warnings or errors, but, during runtime I get following fatal errors in the Logs:

gpioService [522]/sysfsGpio T=main gpioSysfsUtils.c gpioSysfs_SetTriState() 462 Tri-State API not implemented in sysfs GPIO
gpioService [522]/sysfsGpio T=main gpioSysfsUtils.c gpioSysfs_SetOpenDrain() 445 Open Drain API not implemented in sysfs GPIO

Why does the gpioService (which is part of the standard firmware) give runtime errors, while the build process does not complain about my bindings?
How can I check if the gpioService supports a certain API function?
Do I need another version of the gpioService service?


The underlying sysfs interface that the GpioService is built on doesn’t support configuring the GPIO type. I think the GPIOs supported by the GPIO expander on mangOH may support Tri-State and Open Drain, but I’m saying that from memory so I could be wrong. Personally, I think that the GPIO API should provide some sort of capabilities interface so that the user can lookup the capabilities of the I/O. I remember hearing of a related issue where someone tried to register an event handler on a GPIO that didn’t support interrupts.

If this is a feature that you care about, then I would suggest that you raise an issue on github against the legato application framework here: