MultiTech / MTS-Cellular

Dependents:   mtsas mtsas mtsas mtsas

Utils/MTSSerialRadioInterface.cpp

Committer:
Mike Fiore
Date:
2014-05-19
Revision:
1:f155d94d6f3a

File content as of revision 1:f155d94d6f3a:

#include "MTSSerialRadioInterface.h"
#include "MTSLog.h"

using namespace mts;

MTSSerialRadioInterface::MTSSerialRadioInterface(PinName TXD, PinName RXD, PinName RTS, PinName CTS, int txBufSize, int rxBufSize) {
    if (RTS == NC && CTS == NC) {
        io = new MTSSerial(TXD, RXD, txBufSize, rxBufSize);
    } else {
        io = new MTSSerialFlowControl(TXD, RXD, RTS, CTS, txBufSize, rxBufSize);
    }
}

MTSSerialRadioInterface::~MTSSerialRadioInterface() {
    delete io;
}

void MTSSerialRadioInterface::baud(unsigned int baud) {
    io->baud(baud);
}

void MTSSerialRadioInterface::format(int bits, Parity parity, int stop_bits) {
    io->format(bits, parity, stop_bits);
}

bool MTSSerialRadioInterface::putc(char data, unsigned int timeoutMillis) {
    if (timeoutMillis) {
        return io->write(data, timeoutMillis) ? true : false;
    } else {
        return io->write(data) ? true : false;
    }
}

int MTSSerialRadioInterface::write(char* data, int size, unsigned int timeoutMillis) {
    if (size < 0) {
        log_err("cannot write fewer than 0 bytes");
        return -1;
    }

    if (timeoutMillis) {
        return io->write(data, size, timeoutMillis);
    } else {
        return io->write(data, size);
    }
}

bool MTSSerialRadioInterface::writeable() {
    return io->writeable() ? true : false;
}

bool MTSSerialRadioInterface::getc(char& data, unsigned int timeoutMillis) {
    if (timeoutMillis) {
        return io->read(data, timeoutMillis) ? true : false;
    } else {
        return io->read(data) ? true : false;
    }
}

int MTSSerialRadioInterface::read(char* data, int size, unsigned int timeoutMillis) {
    if (size < 0) {
        log_err("cannot read fewer than 0 bytes");
        return -1;
    } else if (size == 0) {
        return 0;
    }

    if (timeoutMillis) {
        return io->read(data, size, timeoutMillis);
    } else {
        return io->read(data, size);
    }
}

bool MTSSerialRadioInterface::readable() {
    return io->readable() ? true : false;
}