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@6:ac7c0ccf9b5d, 2017-10-24 (annotated)
- 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?
| User | Revision | Line number | New 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 |
