Alexandre Lemay / Mbed 2 deprecated APP4_FunTimes

Dependencies:   mbed mbed-rtos

Committer:
ThierryLeonard
Date:
Tue Oct 24 02:33:50 2017 +0000
Revision:
6:ac7c0ccf9b5d
Parent:
4:a3c4a43f94f8
Child:
7:332766fb3114
working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ThierryLeonard 6:ac7c0ccf9b5d 1 #ifndef RECEIVER_H
ThierryLeonard 6:ac7c0ccf9b5d 2 #define RECEIVER_H
ThierryLeonard 4:a3c4a43f94f8 3
ThierryLeonard 4:a3c4a43f94f8 4 #include "mbed.h"
ThierryLeonard 4:a3c4a43f94f8 5 #include "rtos.h"
ThierryLeonard 6:ac7c0ccf9b5d 6
ThierryLeonard 4:a3c4a43f94f8 7 #include <vector>
ThierryLeonard 4:a3c4a43f94f8 8
ThierryLeonard 4:a3c4a43f94f8 9
ThierryLeonard 6:ac7c0ccf9b5d 10 #include "defines.h"
ThierryLeonard 6:ac7c0ccf9b5d 11
ThierryLeonard 6:ac7c0ccf9b5d 12 enum Edge
ThierryLeonard 6:ac7c0ccf9b5d 13 {
ThierryLeonard 6:ac7c0ccf9b5d 14 rising,
ThierryLeonard 6:ac7c0ccf9b5d 15 falling
ThierryLeonard 6:ac7c0ccf9b5d 16 };
ThierryLeonard 4:a3c4a43f94f8 17
ThierryLeonard 6:ac7c0ccf9b5d 18 class Receiver
ThierryLeonard 6:ac7c0ccf9b5d 19 {
ThierryLeonard 6:ac7c0ccf9b5d 20
ThierryLeonard 6:ac7c0ccf9b5d 21 public:
ThierryLeonard 6:ac7c0ccf9b5d 22
ThierryLeonard 6:ac7c0ccf9b5d 23 struct EdgeData {
ThierryLeonard 6:ac7c0ccf9b5d 24 EdgeData(){}
ThierryLeonard 6:ac7c0ccf9b5d 25 EdgeData(int us,Edge value):us_timeStamp(us),value(value) {}
ThierryLeonard 6:ac7c0ccf9b5d 26
ThierryLeonard 6:ac7c0ccf9b5d 27 int us_timeStamp;
ThierryLeonard 6:ac7c0ccf9b5d 28 Edge value;
ThierryLeonard 6:ac7c0ccf9b5d 29 };
ThierryLeonard 4:a3c4a43f94f8 30
ThierryLeonard 6:ac7c0ccf9b5d 31 Receiver();
ThierryLeonard 6:ac7c0ccf9b5d 32 void resetTimer(){time.reset();}
ThierryLeonard 6:ac7c0ccf9b5d 33 EdgeData getNext();
ThierryLeonard 6:ac7c0ccf9b5d 34
ThierryLeonard 6:ac7c0ccf9b5d 35
ThierryLeonard 6:ac7c0ccf9b5d 36
ThierryLeonard 6:ac7c0ccf9b5d 37 private:
ThierryLeonard 6:ac7c0ccf9b5d 38 void pushState(Edge edge);
ThierryLeonard 6:ac7c0ccf9b5d 39 void rise();
ThierryLeonard 6:ac7c0ccf9b5d 40 void fall();
ThierryLeonard 4:a3c4a43f94f8 41
ThierryLeonard 6:ac7c0ccf9b5d 42 private:
ThierryLeonard 6:ac7c0ccf9b5d 43 static const int size = 150;
ThierryLeonard 6:ac7c0ccf9b5d 44
ThierryLeonard 6:ac7c0ccf9b5d 45 Timer time;
ThierryLeonard 6:ac7c0ccf9b5d 46 Semaphore dataReady;
ThierryLeonard 6:ac7c0ccf9b5d 47 EdgeData data[size];
ThierryLeonard 6:ac7c0ccf9b5d 48 public:
ThierryLeonard 6:ac7c0ccf9b5d 49 int currentData;
ThierryLeonard 6:ac7c0ccf9b5d 50 int endData;
ThierryLeonard 6:ac7c0ccf9b5d 51 };
ThierryLeonard 6:ac7c0ccf9b5d 52
ThierryLeonard 6:ac7c0ccf9b5d 53 typedef Receiver::EdgeData EdgeData;
ThierryLeonard 6:ac7c0ccf9b5d 54
ThierryLeonard 6:ac7c0ccf9b5d 55 class ManchesterReceiver
ThierryLeonard 4:a3c4a43f94f8 56 {
ThierryLeonard 4:a3c4a43f94f8 57 public:
ThierryLeonard 6:ac7c0ccf9b5d 58 void getMessages();
ThierryLeonard 4:a3c4a43f94f8 59
ThierryLeonard 6:ac7c0ccf9b5d 60 private:
ThierryLeonard 6:ac7c0ccf9b5d 61 void getState(Edge &edge, int &timeStamp);
ThierryLeonard 6:ac7c0ccf9b5d 62
ThierryLeonard 6:ac7c0ccf9b5d 63 unsigned char getFirstByte(int &lastTime);
ThierryLeonard 4:a3c4a43f94f8 64
ThierryLeonard 6:ac7c0ccf9b5d 65 bool getByte(int& lastTime, unsigned char &val);
ThierryLeonard 4:a3c4a43f94f8 66
ThierryLeonard 6:ac7c0ccf9b5d 67 bool getMessage(int lastTime, vector<unsigned char> &message);
ThierryLeonard 4:a3c4a43f94f8 68
ThierryLeonard 6:ac7c0ccf9b5d 69 private:
ThierryLeonard 6:ac7c0ccf9b5d 70 Receiver r;
ThierryLeonard 4:a3c4a43f94f8 71
ThierryLeonard 6:ac7c0ccf9b5d 72 bool possiblePreamble;
ThierryLeonard 4:a3c4a43f94f8 73 };
ThierryLeonard 4:a3c4a43f94f8 74
ThierryLeonard 4:a3c4a43f94f8 75
ThierryLeonard 4:a3c4a43f94f8 76
ThierryLeonard 4:a3c4a43f94f8 77
ThierryLeonard 6:ac7c0ccf9b5d 78 #endif