libsoc has an implementation that will allow you to count interrupts by
using poll on the sysfs standard GPIO implementation. You can take a
look to see if that would help you.

https://github.com/jackmitch/libsoc

Cheers,
Jack.


On 05/03/14 15:08, Dorian Levy wrote:
> 
> I tried the gpio-keys driver. I was able to count the interrupts, but
> was not able to determine which pin. I tried the following code, but
> when I hooked up switches to two pins the first switch I triggered would
> give the correct code, but when I triggered the second switch it would
> give the code for the first switch 4-5 times before it began giving the
> correct code.
> 
> using namespace std;
> 
> volatile int fd1 = 0;
> volatile int counter1 = 0;
> volatile int code = 0;
> //volatile int value;
> FILE *ifp_gpio30_value;
> struct input_event event;
> 
> void IRQHandler(int sig){
>     counter1 ++;
> 
>     read(fd1, &event, sizeof(struct input_event));
>     code = event.code;
>     counter1 ++;
> 
> 
> 
> }
> 
> 
> int main(void){
> struct sigaction saio;
> fd1 = open("/dev/input/event1", O_RDWR|O_NONBLOCK);
> 
> saio.sa_handler = IRQHandler;
> //saio.sa_mask = 0;
> saio.sa_flags = 0;
> saio.sa_restorer = NULL;
> sigaction(SIGIO,&saio,NULL);
> fcntl(fd1, F_SETOWN, getpid());
> fcntl(fd1, F_SETFL, FASYNC);
> while(1){
>     cout << counter1;
>     cout << "\t";
>     cout << code;
>     cout << "\n";
> }
> 
> }
> 
> -- 
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google
> Groups "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected]
> <mailto:[email protected]>.
> For more options, visit https://groups.google.com/groups/opt_out.


-- 
  Jack Mitchell ([email protected])
  Embedded Systems Engineer
  Cambridgeshire, UK
  http://www.embed.me.uk
-- 

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to