App S5 / Mbed 2 deprecated S05APP2

Dependencies:   mbed mbed-rtos

main.cpp

Committer:
marc1119
Date:
2017-01-26
Revision:
2:94e2eebf1524
Parent:
1:d37b1a61bd0b
Child:
3:fa3112b2216c

File content as of revision 2:94e2eebf1524:

#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
        // lecture de l'étampe temporelle
        // lecture des échantillons analogiques
        // calcul de la nouvelle moyenne courante
        // 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() {
    /*
    // 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) {}
}