Browse Source

hcsr04: Made ISR be used internally and not be exposed to the user. Changed access modifier to private. Removed passing ISR to constructor.

Signed-off-by: Stefan Andritoiu <stefan.andritoiu@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
Stefan Andritoiu 9 years ago
parent
commit
1accafa145

+ 1
- 6
examples/c++/hcsr04.cxx View File

@@ -42,15 +42,10 @@ sig_handler(int signo)
42 42
 }
43 43
 
44 44
 //! [Interesting]
45
-void
46
-interrupt (void * args) {
47
-    sonar->ackEdgeDetected ();
48
-}
49
-
50 45
 int
51 46
 main(int argc, char **argv)
52 47
 {
53
-    sonar = new upm::HCSR04(5, 6, &interrupt);
48
+    sonar = new upm::HCSR04(5, 6);
54 49
     signal(SIGINT, sig_handler);
55 50
 
56 51
     sleep(1);

+ 1
- 25
examples/java/HCSR04Sample.java View File

@@ -22,8 +22,6 @@
22 22
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 23
  */
24 24
 
25
-import upm_hcsr04.IsrCallback;
26
-
27 25
 //NOT TESTED!!!
28 26
 public class HCSR04Sample {
29 27
 
@@ -38,10 +36,8 @@ public class HCSR04Sample {
38 36
 
39 37
 	// ! [Interesting]
40 38
 	public static void main(String[] args) throws InterruptedException {
41
-		HCSR04ISR callback = new HCSR04ISR();
39
+		upm_hcsr04.HCSR04 sonar = new upm_hcsr04.HCSR04((short) 5, (short) 6);
42 40
 
43
-		upm_hcsr04.HCSR04 sonar = new upm_hcsr04.HCSR04((short) 5, (short) 6, callback);
44
-		callback.setSonar(sonar);
45 41
 		Thread.sleep(1000);
46 42
 
47 43
 		while (true) {
@@ -53,24 +49,4 @@ public class HCSR04Sample {
53 49
 		}
54 50
 	}
55 51
 }
56
-
57
-class HCSR04ISR extends IsrCallback {
58
-
59
-	private upm_hcsr04.HCSR04 sonar = null;
60
-
61
-	public HCSR04ISR() {
62
-		super();
63
-	}
64
-
65
-	public void setSonar(upm_hcsr04.HCSR04 sonar) {
66
-		this.sonar = sonar;
67
-	}
68
-
69
-	public void run() {
70
-		if (sonar != null)
71
-			sonar.ackEdgeDetected();
72
-		else
73
-			System.out.println("No HCSR04ISR instance given to callback");
74
-	}
75
-}
76 52
 // ! [Interesting]

+ 9
- 15
src/hcsr04/hcsr04.cxx View File

@@ -34,14 +34,7 @@
34 34
 
35 35
 using namespace upm;
36 36
 
37
-#ifdef JAVACALLBACK
38
-HCSR04::HCSR04 (uint8_t triggerPin, uint8_t echoPin, IsrCallback *cb)
39
-{
40
-        HCSR04 (triggerPin, echoPin, generic_callback_isr);
41
-}
42
-#endif
43
-
44
-HCSR04::HCSR04 (uint8_t triggerPin, uint8_t echoPin, void (*fptr)(void *)) {
37
+HCSR04::HCSR04 (uint8_t triggerPin, uint8_t echoPin) {
45 38
     mraa_result_t error  = MRAA_SUCCESS;
46 39
     m_name              = "HCSR04";
47 40
 
@@ -63,7 +56,7 @@ HCSR04::HCSR04 (uint8_t triggerPin, uint8_t echoPin, void (*fptr)(void *)) {
63 56
     }
64 57
 
65 58
     mraa_gpio_dir(m_echoPinCtx, MRAA_GPIO_IN);
66
-    mraa_gpio_isr(m_echoPinCtx, MRAA_GPIO_EDGE_BOTH, fptr, (void*)this);
59
+    mraa_gpio_isr(m_echoPinCtx, MRAA_GPIO_EDGE_BOTH, &ackEdgeDetected, (void*)this);
67 60
 }
68 61
 
69 62
 HCSR04::~HCSR04 () {
@@ -96,16 +89,17 @@ HCSR04::timing() {
96 89
 }
97 90
 
98 91
 void
99
-HCSR04::ackEdgeDetected () {
92
+HCSR04::ackEdgeDetected (void *ctx) {
93
+    upm::HCSR04 *This = (upm::HCSR04 *)ctx;
100 94
     struct timeval timer;
101 95
     gettimeofday(&timer, NULL);
102 96
 
103
-    ++m_InterruptCounter;
104
-    if (!(m_InterruptCounter % 2)) {
105
-        m_FallingTimeStamp  = 1000000 * timer.tv_sec + timer.tv_usec;
106
-        m_doWork = 1;
97
+    This->m_InterruptCounter++;
98
+    if (!(This->m_InterruptCounter % 2)) {
99
+        This->m_FallingTimeStamp  = 1000000 * timer.tv_sec + timer.tv_usec;
100
+        This->m_doWork = 1;
107 101
     } else {
108
-        m_RisingTimeStamp = 1000000 * timer.tv_sec + timer.tv_usec;
102
+        This->m_RisingTimeStamp = 1000000 * timer.tv_sec + timer.tv_usec;
109 103
     }
110 104
 }
111 105
 

+ 7
- 14
src/hcsr04/hcsr04.h View File

@@ -68,11 +68,7 @@ class HCSR04 {
68 68
          * @param fptr Function pointer to handle rising-edge and
69 69
          * falling-edge interrupts
70 70
          */
71
-#if defined(SWIGJAVA) || defined(JAVACALLBACK)
72
-        HCSR04 (uint8_t triggerPin, uint8_t echoPin, IsrCallback *cb);
73
-#else
74
-        HCSR04 (uint8_t triggerPin, uint8_t echoPin, void (*fptr)(void *));
75
-#endif
71
+        HCSR04 (uint8_t triggerPin, uint8_t echoPin);
76 72
         /**
77 73
          * HCSR04 object destructor
78 74
          */
@@ -83,12 +79,6 @@ class HCSR04 {
83 79
          */
84 80
         double getDistance (int sys);
85 81
 
86
-        /**
87
-         * On each interrupt, this function detects if the interrupt
88
-         * was falling-edge or rising-edge.
89
-         * Should be called from the interrupt handler.
90
-         */
91
-        void ackEdgeDetected ();
92 82
 
93 83
         uint8_t m_doWork; /**< Flag to control blocking function while waiting for a falling-edge interrupt */
94 84
 
@@ -101,9 +91,12 @@ class HCSR04 {
101 91
         }
102 92
 
103 93
     private:
104
-#if defined(SWIGJAVA) || defined(JAVACALLBACK)
105
-        HCSR04 (uint8_t triggerPin, uint8_t echoPin, void (*fptr)(void *));
106
-#endif
94
+        /**
95
+         * On each interrupt, this function detects if the interrupt
96
+         * was falling-edge or rising-edge.
97
+         */
98
+        static void ackEdgeDetected (void *ctx);
99
+
107 100
         double timing();
108 101
         mraa_gpio_context   m_triggerPinCtx;
109 102
         mraa_gpio_context   m_echoPinCtx;

+ 2
- 6
src/hcsr04/javaupm_hcsr04.i View File

@@ -1,11 +1,6 @@
1 1
 %module(directors="1") javaupm_hcsr04
2 2
 %include "../upm.i"
3 3
 
4
-%feature("director") IsrCallback;
5
-
6
-%ignore generic_callback_isr;
7
-%include "../IsrCallback.h"
8
-
9 4
 %{
10 5
     #include "hcsr04.h"
11 6
 %}
@@ -21,4 +16,5 @@
21 16
             System.exit(1);
22 17
         }
23 18
     }
24
-%}
19
+%}
20
+