app4

Dependencies:   mbed-rtos mbed CRC16

Fork of S5info_APP2 by Éric Bisson

Revision:
3:3ecbcc05bc85
Parent:
2:c6465d4e82d2
Child:
4:87e9b434bb4d
diff -r c6465d4e82d2 -r 3ecbcc05bc85 main.cpp
--- a/main.cpp	Tue Jan 31 00:51:06 2017 +0000
+++ b/main.cpp	Tue Jan 31 19:05:27 2017 +0000
@@ -1,4 +1,4 @@
-#include "mbed.h"
+//#include "mbed.h"
 #include "rtos.h"
 
 #define UN_HUITIEME_SHORT 0x1FFF
@@ -20,13 +20,11 @@
 
 Thread* t1;
 Thread* t2;
-Thread* t3;
 
 DigitalIn* en_1;
 DigitalIn* en_2;
 AnalogIn* ea_1;
 AnalogIn* ea_2;
-Serial* pc;
 Mutex* mutex;
 Mail<message_t, 16>* Mailbox;
 
@@ -91,16 +89,12 @@
     mutex->lock();
     Mailbox->put(msg);
     mutex->unlock();
-    
-    // Signal the new message
-    t3->signal_set(1);
-    t1->yield();
-    t2->yield();
 }
 
 void lecture_analog() {
     while (true) {
         // synchronisation sur la période d'échantillonnage
+        t1->signal_clr(1);
         t1->signal_wait(1);
         
         // lecture de l'étampe temporelle
@@ -123,14 +117,12 @@
         
         u16Last_p19 = res_p19;
         u16Last_p20 = res_p20;
-        
-        t1->signal_clr(1);
-        t1->yield();
     }
 }
 void lecture_num() {
     while (true) {
         // synchronisation sur la période d'échantillonnage
+        t2->signal_clr(1);
         t2->signal_wait(1);
         
         // lecture de l'étampe temporelle
@@ -147,37 +139,16 @@
         if (en_1->read() == bP15 && bP15 != bLast_p15)
         {
             MailBox_put(curTime, 15, bP15);
+            bLast_p15 = bP15;
         }
         if (en_2->read() == bP16 && bP16 != bLast_p16)
         {
             MailBox_put(curTime, 16, bP16);
+            bLast_p16 = bP16;
         }
-        bLast_p15 = bP15;
-        bLast_p16 = bP16;
-        
-        t2->signal_clr(1);
-        t2->yield();
     }
 }
-void collection() {
-     while (true) {     
-        // attente et lecture d'un événement
-        t3->signal_wait(1);
-        mutex->lock();
-        while (Mailbox->get().status == osEventMail)
-        {
-            message_t* msg = (message_t*)Mailbox->get().value.p;
-            
-            // écriture de l'événement en sortie (port série)
-            pc->printf("[%s] Evenement de la pin %d avec valeur %d\n", ctime(&(msg->timestamp)), msg->pin_id, msg->value);
-            
-            Mailbox->free(msg);
-        }
-        mutex->unlock();
-        t3->signal_clr(1);
-        t3->yield();
-     }
-}
+
 int main() {
     // Initialization de tous les globals
     Mailbox = new Mail<message_t, 16>();
@@ -188,19 +159,16 @@
     ea_1 = new AnalogIn(p19);
     ea_2 = new AnalogIn(p20);
     mutex = new Mutex();
-    pc = new Serial(USBTX, USBRX);
     
     // set the time
-    set_time(1485887400);
+    set_time(1485887400 - 18000); // -18000 car GMT -5, hardcodé pour 31 janvier 13h30
     
     // démarrage des tâches
     t1 = new Thread();
     t2 = new Thread();
-    t3 = new Thread();
     
     t1->start(lecture_analog);
     t2->start(lecture_num);
-    t3->start(collection);
     
     Ticker tick1;
     Ticker tick2;
@@ -208,6 +176,17 @@
     tick1.attach(&signal_digital, 0.1);
     tick2.attach(&signal_analog, 0.25);
     
-    while(1) {
+    while(true) {
+        // attente et lecture d'un événement
+        osEvent Mail = Mailbox->get();
+        if (Mail.status == osEventMail)
+        {
+            message_t* msg = (message_t*)Mail.value.p;
+            
+            // écriture de l'événement en sortie (port série)
+            printf("%s  - Evenement de la pin %d avec valeur %d\n\n", ctime(&(msg->timestamp)), msg->pin_id, msg->value);
+ 
+            Mailbox->free(msg);
+        }
     }
 }
\ No newline at end of file