summaryrefslogtreecommitdiff
path: root/2.3-1/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
diff options
context:
space:
mode:
authorSiddhesh Wani2017-07-04 19:55:17 +0530
committerGitHub2017-07-04 19:55:17 +0530
commite7a1a9bd776aa3ebdd13aea4d4ef838e65acb34c (patch)
tree749b476d7653774c918af42ebd952d4050ed49b6 /2.3-1/src/c/hardware/rasberrypi/Interrupt/u8RPI_waitForInterrupts.c
parentc66867c874436fb37ef54c67b048885ce094e894 (diff)
parent8889f4a5edad040f47c3fcb717053352ab0d05b8 (diff)
downloadScilab2C-e7a1a9bd776aa3ebdd13aea4d4ef838e65acb34c.tar.gz
Scilab2C-e7a1a9bd776aa3ebdd13aea4d4ef838e65acb34c.tar.bz2
Scilab2C-e7a1a9bd776aa3ebdd13aea4d4ef838e65acb34c.zip
Merge pull request #13 from jschandi/master
Fixed standalone conversion errors with RPi files
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;}
+ }
}