Gets messages form the pc and translates it to I2C and back.
Dependencies: DevInterfaces I2Cinterfaces MCP4725 mbed
Reader.h@2:2330ad8b1baa, 2016-06-15 (annotated)
- Committer:
- katrijnverhasselt
- Date:
- Wed Jun 15 10:53:32 2016 +0000
- Revision:
- 2:2330ad8b1baa
- Parent:
- 0:b40341017545
Finished programming. This program now simply extract only the info it needs and sends all of it immediately through its I2C port.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
katrijnverhasselt | 0:b40341017545 | 1 | #pragma once |
katrijnverhasselt | 0:b40341017545 | 2 | |
katrijnverhasselt | 0:b40341017545 | 3 | #include <string> |
katrijnverhasselt | 0:b40341017545 | 4 | #include "mbed.h" |
katrijnverhasselt | 0:b40341017545 | 5 | #include "Translator.h" |
katrijnverhasselt | 0:b40341017545 | 6 | |
katrijnverhasselt | 0:b40341017545 | 7 | // Reads the input buffer and notifies when a new message is ready |
katrijnverhasselt | 0:b40341017545 | 8 | class Reader { |
katrijnverhasselt | 0:b40341017545 | 9 | |
katrijnverhasselt | 0:b40341017545 | 10 | private: |
katrijnverhasselt | 0:b40341017545 | 11 | // PC interaction object |
katrijnverhasselt | 0:b40341017545 | 12 | Serial pc; |
katrijnverhasselt | 0:b40341017545 | 13 | |
katrijnverhasselt | 2:2330ad8b1baa | 14 | static const int _maxSize = 256; // Limitation of MCP4725, NOT as described according to protocol |
katrijnverhasselt | 2:2330ad8b1baa | 15 | bool _isNewMessageReceived; // True if a complete message was read |
katrijnverhasselt | 2:2330ad8b1baa | 16 | Translator::MessageInfo _lastMessageInfo; // Contains formatted message info |
katrijnverhasselt | 2:2330ad8b1baa | 17 | char _lastMessage[_maxSize];// last complete message received |
katrijnverhasselt | 0:b40341017545 | 18 | int _lastMessageSize; // size of last complete message received |
katrijnverhasselt | 2:2330ad8b1baa | 19 | char _buffer[_maxSize]; // temporary storage while reading a message |
katrijnverhasselt | 2:2330ad8b1baa | 20 | int _bufferSize; // size of the buffer |
katrijnverhasselt | 0:b40341017545 | 21 | |
katrijnverhasselt | 2:2330ad8b1baa | 22 | char _lastChar; // last byte read |
katrijnverhasselt | 0:b40341017545 | 23 | int _index; // current number of characters read |
katrijnverhasselt | 0:b40341017545 | 24 | |
katrijnverhasselt | 0:b40341017545 | 25 | public: |
katrijnverhasselt | 0:b40341017545 | 26 | // Default constructor, attaches a callback to pc |
katrijnverhasselt | 0:b40341017545 | 27 | Reader(); |
katrijnverhasselt | 0:b40341017545 | 28 | |
katrijnverhasselt | 2:2330ad8b1baa | 29 | // Returns true only once when a complete message was read |
katrijnverhasselt | 0:b40341017545 | 30 | bool IsNewMessageReceived(); |
katrijnverhasselt | 0:b40341017545 | 31 | Translator::MessageInfo GetLastMessageInfo() const; |
katrijnverhasselt | 0:b40341017545 | 32 | // Returns the last message (without header) |
katrijnverhasselt | 2:2330ad8b1baa | 33 | const char* GetLastMessage() const; |
katrijnverhasselt | 0:b40341017545 | 34 | // Returns the size of the last message |
katrijnverhasselt | 0:b40341017545 | 35 | int GetLastMessageSize() const; |
katrijnverhasselt | 0:b40341017545 | 36 | |
katrijnverhasselt | 0:b40341017545 | 37 | private: |
katrijnverhasselt | 0:b40341017545 | 38 | // Function to be attached to pc |
katrijnverhasselt | 0:b40341017545 | 39 | void pcCallback(); |
katrijnverhasselt | 2:2330ad8b1baa | 40 | // Resets the buffer |
katrijnverhasselt | 2:2330ad8b1baa | 41 | void Reset(); |
katrijnverhasselt | 0:b40341017545 | 42 | }; |