App S5 / Mbed 2 deprecated S05APP2

Dependencies:   mbed mbed-rtos

Revision:
2:94e2eebf1524
Parent:
1:d37b1a61bd0b
Child:
3:fa3112b2216c
--- a/main.cpp	Thu Jan 26 03:43:56 2017 +0000
+++ b/main.cpp	Thu Jan 26 21:24:12 2017 +0000
@@ -1,11 +1,20 @@
 #include "mbed.h"
 #include "rtos.h"
+#include "RTC.h"
 
 DigitalIn en_1(p15);
 DigitalIn en_2(p16);
 AnalogIn ea_1(p19);
 AnalogIn ea_2(p20);
+DigitalOut led(LED1);
+DigitalOut led2(LED2);
 
+Thread *t1;
+Thread *t2;
+Thread *t3;
+
+bool isReadyToRead = false;
+bool isFirstData = true; //#Cheap Bool
 void lecture_analog(void const *args) {
     while (true) {
         // synchronisation sur la période d'échantillonnage
@@ -15,23 +24,77 @@
         // génération éventuelle d'un événement
     }
 }
+
 void lecture_num(void const *args) {
     while (true) {
+        //led = en_1;
+        //printf("1: %d\n", en_1.read());
+        //wait(0.25);
+        //led2 = en_2;
+        //printf("2: %d\n", en_2.read());
+        //wait(0.25);
+        
         // synchronisation sur la période d'échantillonnage
+        Thread::signal_wait(0x1);
+        
         // lecture de l'étampe temporelle
+        
         // lecture des échantillons numériques
+        uint8_t en1Read = en_1.read();
+        uint8_t en2Read = en_2.read();
+        Thread::yield();
         // prise en charge du phénomène de rebond
+        Thread::signal_wait(0x2);
+        //if changement valider si on a une valeur et si oui demander d'aller le lire dans 50 ms.
+        //Signal ISR que dans 50ms on veut qu'il nous rappel dans 50ms
         // génération éventuelle d'un événement
+        if(en1Read == en_1.read()) printf("C'est pareil");
+        if(en2Read == en_2.read()) printf("C'est pareil");
     }
 }
+
 void collection(void const *args) {
     while (true) {
         // attente et lecture d'un événement
         // écriture de l'événement en sortie (port série)
     }
 }
+
+void signalThread()
+{
+    //Compter jusqu'à 10
+    //Si modulo 2 num
+    //modulo 5 anal
+    //modulo 10 remettre 0
+
+    //if(flag)
+    if(isFirstData)
+    {
+        isFirstData = false;
+        return;
+    }
+    printf("test");
+    if(isReadyToRead) t1->signal_set(0x1);
+    else t1->signal_set(0x2);
+    //t2.signal_set(0x1);
+}
+
 int main() {
-    // initialisation du RTC
-    // démarrage des tâches
-    while(1) { }
+    /*
+    // Démarrage des tâches
+    Thread t_lectureNum(lecture_num);
+    Thread t_lectureAna(lecture_analog);
+    Thread t_collection(collection);
+    
+    t1 = &t_lectureNum;
+    t2 = &t_lectureAna;
+    t3 = &t_collection;
+    printf("test1");
+    // Initialisation du RTC
+    tm t = RTC::getDefaultTM();
+    t.tm_sec = 0.05;
+    RTC::alarm(&signalThread, t);
+    */
+     printf("test1");
+    //while(1) {}
 }
\ No newline at end of file