Gets messages form the pc and translates it to I2C and back.

Dependencies:   DevInterfaces I2Cinterfaces MCP4725 mbed

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?

UserRevisionLine numberNew 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 }