]> www.average.org Git - pulsecounter.git/blobdiff - msp430/Pulsecounter-Prog.c
code for jitter counter complete but not tried
[pulsecounter.git] / msp430 / Pulsecounter-Prog.c
index e9280d7e100cb78c84d1d65615286c535be8036c..1d31b75fb8c333ec09ab5be18a466cad06dce681 100644 (file)
@@ -2,22 +2,34 @@
 #include "Hal.h"
 
 static void gpioHandler(uint8_t id);
-static void tickHandler(uint16_t clock);
+static void jitterHandler(uint8_t id, uint32_t count);
 static int32_t cold = 0;
 static int32_t hot  = 0;
+static int32_t coldJ = 0;
+static int32_t hotJ  = 0;
 static bool connected = false;
 
 void main() {
     Hal_init();
-    Hal_gpioEnable(gpioHandler);
+    Hal_gpioEnable(gpioHandler, jitterHandler);
     Pulsecounter_setDeviceName("PULS-CNTR");
     Pulsecounter_start();
     Hal_idleLoop();
 }
 
-static void gpioHandler(uint8_t id) {
+static void blink(uint8_t which, uint8_t count) {
     uint8_t i;
+    for (i = 0; i < count; i++) {
+        if (i) Hal_delay(10);
+        if (which & 1) Hal_greenLedOn();
+        if (which & 2) Hal_redLedOn();
+        Hal_delay(10);
+        if (which & 1) Hal_greenLedOff();
+        if (which & 2) Hal_redLedOff();
+    }
+}
 
+static void gpioHandler(uint8_t id) {
     switch (id) {
     case 0:
         /* Pulsecounter_accept(true); */
@@ -26,57 +38,45 @@ static void gpioHandler(uint8_t id) {
             Hal_delay(100);
             Pulsecounter_hotTick_indicate();
         }
-        Hal_greenLedOn();
-        Hal_redLedOn();
-        Hal_delay(10);
-        Hal_greenLedOff();
-        Hal_redLedOff();
-        Hal_tickStart(15000, tickHandler);
+        blink(3, 2);
         break;
     case 1:
         cold++;
         if (connected)
             Pulsecounter_coldTick_indicate();
-        Hal_greenLedOn();
-        Hal_delay(10);
-        Hal_greenLedOff();
+        blink(1, 2);
         break;
     case 2:
         hot++;
         if (connected)
             Pulsecounter_hotTick_indicate();
-        Hal_redLedOn();
-        Hal_delay(10);
-        Hal_redLedOff();
+        blink(2, 2);
         break;
     default:
-        for (i = 0; i < 5; i++) {
-            Hal_greenLedOn();
-            Hal_redLedOn();
-            Hal_delay(10);
-            Hal_greenLedOff();
-            Hal_redLedOff();
-            Hal_delay(10);
-        }
+        blink(3, 15);
     }
 }
 
-static void tickHandler(uint16_t clock) {
-    uint8_t i;
-
-    Hal_tickStop();
-    if (connected)
-        return;
-    for (i = 0; i < 3; i++) {
-        Hal_greenLedOn();
-        Hal_delay(50);
-        Hal_redLedOn();
-        Hal_delay(50);
-        Hal_redLedOff();
-        Hal_delay(50);
-        Hal_greenLedOff();
+static void jitterHandler(uint8_t id, uint32_t count) {
+    switch (id) {
+    case 0:
+        blink(3, count);
+        break;
+    case 1:
+        coldJ = count;
+        if (connected)
+            Pulsecounter_coldJitter_indicate();
+        blink(1, 1);
+        break;
+    case 2:
+        hotJ = count;
+        if (connected)
+            Pulsecounter_hotJitter_indicate();
+        blink(2, 1);
+        break;
+    default:
+        blink(3, 13);
     }
-    /* Pulsecounter_accept(false); */
 }
 
 /* -------- SCHEMA CALLBACKS -------- */
@@ -114,9 +114,9 @@ void Pulsecounter_hotTick_fetch(Pulsecounter_hotTick_t* const output) {
 }
 
 void Pulsecounter_coldJitter_fetch(Pulsecounter_coldJitter_t* output) {
-    *output = Hal_gpioCount(1);
+    *output = coldJ;
 }
 
 void Pulsecounter_hotJitter_fetch(Pulsecounter_hotJitter_t* output) {
-    *output = Hal_gpioCount(2);
+    *output = hotJ;
 }