Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
