summaryrefslogtreecommitdiff
path: root/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
diff options
context:
space:
mode:
authorJorawar Singh2017-07-04 15:14:46 +0530
committerJorawar Singh2017-07-04 15:14:46 +0530
commit121b455e1e46617c670a8b9dfa77bbb1aa97a51a (patch)
treed4ebfb141c8036c3d59c0ac9007003f79ed68d02 /src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
parenta3dfa2a4069740517ca6e83f99dd4e0dbb71c377 (diff)
downloadscilab2c-121b455e1e46617c670a8b9dfa77bbb1aa97a51a.tar.gz
scilab2c-121b455e1e46617c670a8b9dfa77bbb1aa97a51a.tar.bz2
scilab2c-121b455e1e46617c670a8b9dfa77bbb1aa97a51a.zip
Fixed standalone conversion errors with RPi files
Diffstat (limited to 'src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c')
-rw-r--r--src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c b/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
index 32a4a1f7..ab15b8de 100644
--- a/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
+++ b/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;}
+ }
}