Interface layer for the mbed boards ready for the JAVA library

Dependencies:   C12832 LM75B MMA7660 mbed FXOS8700Q

Fork of frdm_serial by Michael Berry

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers comms.cpp Source File

comms.cpp

00001 #include "comms.h"
00002 
00003 DataSerial::DataSerial(PinName tx, PinName rx) : Serial(tx,rx,NULL) {}
00004 
00005 DataSerial::~DataSerial() {}
00006 
00007 void DataSerial::sendFloat(float &f) {
00008     sendData(&f,sizeof(float));
00009 }
00010 
00011 void DataSerial::sendInt16(uint16_t &i) {
00012     sendData(&i,sizeof(uint16_t));
00013 }
00014 
00015 void DataSerial::sendChar(char c) {
00016     putc(1); putc(c);
00017 }
00018 
00019 void DataSerial::sendBool(bool b) {
00020     putc(1); putc(b ? 't' : 'f');
00021 }
00022 
00023 float DataSerial::readFloat() {
00024     float f;
00025     readData(&f,sizeof(float));
00026     return f;
00027 }
00028 
00029 uint16_t DataSerial::readInt16() {
00030     uint16_t i;
00031     readData(&i,sizeof(uint16_t));
00032     return i;
00033 }
00034 
00035 char DataSerial::readChar() {
00036     if(getc()!=1) readFailureMode();
00037     return getc();
00038 }
00039 
00040 void DataSerial::sendData(void* data, uint8_t len) {
00041     putc(len);
00042     for(char* c = (char*)data;len--;)
00043         putc(*(c++));
00044 }
00045 
00046 uint8_t DataSerial::readString(char * s) {
00047     char l = getc();
00048     uint8_t len = (uint8_t)l;
00049     while(l>0) {
00050         *s = getc();
00051         s++;
00052         l--;
00053     }
00054     return len;
00055 }
00056 
00057 void DataSerial::readData(void* data, uint8_t len) {
00058     char readLen = getc();
00059     if(readLen!=len) readFailureMode();
00060     char* c = (char*)data;
00061     while(len>0) {
00062         *c = getc();
00063         c++;
00064         len--;
00065     }
00066 }
00067 
00068 void DataSerial::sendSpecialCommand(char char1, char char2) {
00069     putc(0); putc(char1); putc(char2);
00070 }
00071 
00072 void DataSerial::readFailureMode() {
00073     DigitalOut lr(PTB22), lg(PTE26), lb(PTB21);
00074     lr=lg=1; lb=0;
00075     for(;;) {
00076         wait_ms(1000);
00077         lb=!lb;
00078     }
00079     
00080 }