This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

GPIOInterruptInitialize not implemented with sdk_gpio.h for applications

Hi

BSP: BSP_WINCE_ARM_A8_02_00_00

As recommended by the WinCE-BSP ARM-A8 User guide, i am using the sdk_gpio.h for my application. However, if you look at the code, the dispatcher is not completly implemented.
C:\WINCE700\platform\common\src\soc\COMMON_TI_V1\COMMON_TI\GPIO\DISPATCH\DEVICE\gpio_dispatch.c

The following functions are only available as function pointers, and are not implemented as DeviceIOControl commands:

  • GPIOPullup
  • GPIOPulldown
  • GPIOInterruptInitialize
  • GPIOInterruptMask
  • GPIOInterruptDisable
  • GPIOInterruptDone
  • GPIOGetSystemIrq
  • GPIOInterruptWakeUp

In the GPIO implementation the IOCTL_GPIO_INIT_INTERRUPT are commented out as well.
C:\WINCE700\platform\common\src\soc\COMMON_TI_V1\COMMON_TI\GPIO\OMAP_GPIO\omap35xx_gpio.cpp

Why did you remove the GPIO interrupt functionality for applications from the GPIO API?

  • Hi MGun,

    Have you made any progress with this? I also need to use GPIO interrupt functionality in an application.  Someone please respond to this post.

    David

  • Hi David

    I haven't got any response at all. A little disappointing, would have expected a little bit more feedback from TI / Adeneo..

    Since it was only a prototype application, I have created a low priority thread and checked the state of the GPIO pins.
    As soon as a pin was high, I have fired the event manually.

  • The GPIO SDK you are referring to can be used by both applications and drivers. However some of its API can only be called from drivers that are running in kernel mode, and cannot be used by applications. This is the case for "GpioInterruptInitialize" that is intended to be used from drivers only as it calls the "KernelIoControl" which cannot be called from applications.

    To sum up, you cannot use this function from your applications and you should instead use a driver that will handle the GPIO interrupt and send it out to the application through an event, message queue, or else...