summaryrefslogtreecommitdiff
path: root/2.3-1/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
diff options
context:
space:
mode:
Diffstat (limited to '2.3-1/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c')
-rw-r--r--2.3-1/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c33
1 files changed, 29 insertions, 4 deletions
diff --git a/2.3-1/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c b/2.3-1/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
index 32a4a1f7..ab15b8de 100644
--- a/2.3-1/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
+++ b/2.3-1/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
This file must be used under the terms of the CeCILL.
This source file is licensed as described in the file COPYING, which
@@ -11,9 +11,34 @@
*/
#include "RPIPeripheralInterrupt.h"
+#include "RPI_wfi.h"
+#include <sys/time.h>
+#include <math.h>
+#include <stdlib.h>
int8 u8RPI_waitForInterrupts(uint8 pin,int16 time){
- int8 out;
- out=waitForInterrupt(pin,time);
- return (out);
+ __RPI_wfi=0;
+ if (wiringPiISR(pin,3,&RPI_wfi)<0){
+ return -1;
+ }
+ if (time==-1){
+ while (__RPI_wfi==0){;}
+ return 1;
+ }
+ else{
+ struct timeval time1,time2;
+ int nDigits;
+ double t1,t2;
+ gettimeofday(&time1, NULL);
+ nDigits=floor(log10(abs(time1.tv_usec)))+1;
+ t1=time1.tv_sec+time1.tv_usec/nDigits;
+ t2=t1;
+ while (__RPI_wfi==0 && t2-t1<time){
+ gettimeofday(&time2,NULL);
+ nDigits=floor(log10(abs(time2.tv_usec)))+1;
+ t2=time2.tv_sec+time2.tv_usec/nDigits;
+ }
+ if (__RPI_wfi==0){return 0;}
+ else{return 1;}
+ }
}