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

Dependencies:   DevInterfaces I2Cinterfaces MCP4725 mbed

Writer.cpp

Committer:
katrijnverhasselt
Date:
2016-05-18
Revision:
1:8ba039abd9b8
Parent:
0:b40341017545

File content as of revision 1:8ba039abd9b8:

#include "Writer.h"

bool Writer::Send(const Translator::MessageInfo message, int dacValue) {
    // Copy msg to adapt it
    Translator::MessageInfo msg = message;
    
    // Check Read/Write/Option
    switch (msg.CommandType) {
    case Translator::MessageInfo::READ:
    case Translator::MessageInfo::WRITE:
        // Copy dacValue in msg
        msg.DacValue = dacValue;
        // Translate to raw message
        int8_t* rawMsg;
        int rawMsgSize;
        if (!Translator::Translate(msg, &rawMsg, &rawMsgSize))
            return false;
        // <Zie Translator.h voor de eerste uitleg. Dit is het andere voorbeeld.
        //  Hier wordt rawMsg gegeven zonder een grootte. De functie printf zal nu
        //  simpelweg alle karakters uitlezen en stoppen wanneer het '\0' tegenkomt.
        //  Het werkt dus ook naar behoren omdat Translator::Translate dit karakter
        //  erbij zet.>
        // Send it
        printf("%s", rawMsg);
        break;
    
    case Translator::MessageInfo::OPTION:
        // Not yet implemented
        SendError(msg);
        break;
        
    default:
        return false;
    }
    return true;
}

bool Writer::SendError(const Translator::MessageInfo message) {
    // Copy msg to adapt it
    Translator::MessageInfo msg = message;
    msg.CommandType = Translator::MessageInfo::ERROR;
    // Translate to raw message
    int rawMsgSize;
    int8_t* rawMsg;
    if (!Translator::Translate(msg, &rawMsg, &rawMsgSize))
        return false;
    // Send it
    printf("%s", rawMsg);
    return true;
}