Alexandre Lemay / Mbed 2 deprecated APP4_FunTimes

Dependencies:   mbed mbed-rtos

Receiver.h

Committer:
ThierryLeonard
Date:
2017-10-24
Revision:
6:ac7c0ccf9b5d
Parent:
4:a3c4a43f94f8
Child:
7:332766fb3114

File content as of revision 6:ac7c0ccf9b5d:

#ifndef RECEIVER_H
#define RECEIVER_H

#include "mbed.h"
#include "rtos.h"

#include <vector>


#include "defines.h"

enum Edge
{
    rising,
    falling
};

class Receiver
{
    
public:

    struct EdgeData {
        EdgeData(){}
        EdgeData(int us,Edge value):us_timeStamp(us),value(value) {}
        
        int us_timeStamp;
        Edge value;
    };

    Receiver();
    void resetTimer(){time.reset();}
    EdgeData getNext();
    
    
    
private:
    void pushState(Edge edge);
    void rise();
    void fall();

private:
static const int size = 150;

    Timer time;
    Semaphore dataReady;
    EdgeData data[size];
public:    
    int currentData;
    int endData;
};

typedef Receiver::EdgeData EdgeData;

class ManchesterReceiver
{
public:
    void getMessages();
    
private:
    void getState(Edge &edge, int &timeStamp);
  
    unsigned char getFirstByte(int &lastTime);
    
    bool getByte(int& lastTime, unsigned char &val);
    
    bool getMessage(int lastTime, vector<unsigned char> &message);
    
private:  
    Receiver r;
    
    bool possiblePreamble;
};


    
    
#endif