![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Gets messages form the pc and translates it to I2C and back.
Dependencies: DevInterfaces I2Cinterfaces MCP4725 mbed
Writer.cpp@1:8ba039abd9b8, 2016-05-18 (annotated)
- Committer:
- katrijnverhasselt
- Date:
- Wed May 18 11:35:45 2016 +0000
- Revision:
- 1:8ba039abd9b8
- Parent:
- 0:b40341017545
Fixed it!
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
katrijnverhasselt | 0:b40341017545 | 1 | #include "Writer.h" |
katrijnverhasselt | 0:b40341017545 | 2 | |
katrijnverhasselt | 0:b40341017545 | 3 | bool Writer::Send(const Translator::MessageInfo message, int dacValue) { |
katrijnverhasselt | 0:b40341017545 | 4 | // Copy msg to adapt it |
katrijnverhasselt | 0:b40341017545 | 5 | Translator::MessageInfo msg = message; |
katrijnverhasselt | 0:b40341017545 | 6 | |
katrijnverhasselt | 0:b40341017545 | 7 | // Check Read/Write/Option |
katrijnverhasselt | 0:b40341017545 | 8 | switch (msg.CommandType) { |
katrijnverhasselt | 0:b40341017545 | 9 | case Translator::MessageInfo::READ: |
katrijnverhasselt | 0:b40341017545 | 10 | case Translator::MessageInfo::WRITE: |
katrijnverhasselt | 0:b40341017545 | 11 | // Copy dacValue in msg |
katrijnverhasselt | 0:b40341017545 | 12 | msg.DacValue = dacValue; |
katrijnverhasselt | 0:b40341017545 | 13 | // Translate to raw message |
katrijnverhasselt | 0:b40341017545 | 14 | int8_t* rawMsg; |
katrijnverhasselt | 0:b40341017545 | 15 | int rawMsgSize; |
katrijnverhasselt | 0:b40341017545 | 16 | if (!Translator::Translate(msg, &rawMsg, &rawMsgSize)) |
katrijnverhasselt | 0:b40341017545 | 17 | return false; |
katrijnverhasselt | 0:b40341017545 | 18 | // <Zie Translator.h voor de eerste uitleg. Dit is het andere voorbeeld. |
katrijnverhasselt | 0:b40341017545 | 19 | // Hier wordt rawMsg gegeven zonder een grootte. De functie printf zal nu |
katrijnverhasselt | 0:b40341017545 | 20 | // simpelweg alle karakters uitlezen en stoppen wanneer het '\0' tegenkomt. |
katrijnverhasselt | 0:b40341017545 | 21 | // Het werkt dus ook naar behoren omdat Translator::Translate dit karakter |
katrijnverhasselt | 0:b40341017545 | 22 | // erbij zet.> |
katrijnverhasselt | 0:b40341017545 | 23 | // Send it |
katrijnverhasselt | 0:b40341017545 | 24 | printf("%s", rawMsg); |
katrijnverhasselt | 0:b40341017545 | 25 | break; |
katrijnverhasselt | 0:b40341017545 | 26 | |
katrijnverhasselt | 0:b40341017545 | 27 | case Translator::MessageInfo::OPTION: |
katrijnverhasselt | 0:b40341017545 | 28 | // Not yet implemented |
katrijnverhasselt | 0:b40341017545 | 29 | SendError(msg); |
katrijnverhasselt | 0:b40341017545 | 30 | break; |
katrijnverhasselt | 0:b40341017545 | 31 | |
katrijnverhasselt | 0:b40341017545 | 32 | default: |
katrijnverhasselt | 0:b40341017545 | 33 | return false; |
katrijnverhasselt | 0:b40341017545 | 34 | } |
katrijnverhasselt | 0:b40341017545 | 35 | return true; |
katrijnverhasselt | 0:b40341017545 | 36 | } |
katrijnverhasselt | 0:b40341017545 | 37 | |
katrijnverhasselt | 0:b40341017545 | 38 | bool Writer::SendError(const Translator::MessageInfo message) { |
katrijnverhasselt | 0:b40341017545 | 39 | // Copy msg to adapt it |
katrijnverhasselt | 0:b40341017545 | 40 | Translator::MessageInfo msg = message; |
katrijnverhasselt | 0:b40341017545 | 41 | msg.CommandType = Translator::MessageInfo::ERROR; |
katrijnverhasselt | 0:b40341017545 | 42 | // Translate to raw message |
katrijnverhasselt | 0:b40341017545 | 43 | int rawMsgSize; |
katrijnverhasselt | 0:b40341017545 | 44 | int8_t* rawMsg; |
katrijnverhasselt | 0:b40341017545 | 45 | if (!Translator::Translate(msg, &rawMsg, &rawMsgSize)) |
katrijnverhasselt | 0:b40341017545 | 46 | return false; |
katrijnverhasselt | 0:b40341017545 | 47 | // Send it |
katrijnverhasselt | 0:b40341017545 | 48 | printf("%s", rawMsg); |
katrijnverhasselt | 0:b40341017545 | 49 | return true; |
katrijnverhasselt | 0:b40341017545 | 50 | } |