Interface layer for the mbed boards ready for the JAVA library

Dependencies:   C12832 LM75B MMA7660 mbed FXOS8700Q

Fork of frdm_serial by Michael Berry

comms.cpp

Committer:
Condo2k4
Date:
2017-01-06
Revision:
8:d70e3e3690fd
Parent:
6:adf2837c1e7f

File content as of revision 8:d70e3e3690fd:

#include "comms.h"

DataSerial::DataSerial(PinName tx, PinName rx) : Serial(tx,rx,NULL) {}

DataSerial::~DataSerial() {}

void DataSerial::sendFloat(float &f) {
    sendData(&f,sizeof(float));
}

void DataSerial::sendInt16(uint16_t &i) {
    sendData(&i,sizeof(uint16_t));
}

void DataSerial::sendChar(char c) {
    putc(1); putc(c);
}

void DataSerial::sendBool(bool b) {
    putc(1); putc(b ? 't' : 'f');
}

float DataSerial::readFloat() {
    float f;
    readData(&f,sizeof(float));
    return f;
}

uint16_t DataSerial::readInt16() {
    uint16_t i;
    readData(&i,sizeof(uint16_t));
    return i;
}

char DataSerial::readChar() {
    if(getc()!=1) readFailureMode();
    return getc();
}

void DataSerial::sendData(void* data, uint8_t len) {
    putc(len);
    for(char* c = (char*)data;len--;)
        putc(*(c++));
}

uint8_t DataSerial::readString(char * s) {
    char l = getc();
    uint8_t len = (uint8_t)l;
    while(l>0) {
        *s = getc();
        s++;
        l--;
    }
    return len;
}

void DataSerial::readData(void* data, uint8_t len) {
    char readLen = getc();
    if(readLen!=len) readFailureMode();
    char* c = (char*)data;
    while(len>0) {
        *c = getc();
        c++;
        len--;
    }
}

void DataSerial::sendSpecialCommand(char char1, char char2) {
    putc(0); putc(char1); putc(char2);
}

void DataSerial::readFailureMode() {
    DigitalOut lr(PTB22), lg(PTE26), lb(PTB21);
    lr=lg=1; lb=0;
    for(;;) {
        wait_ms(1000);
        lb=!lb;
    }
    
}