Alex Allen / UM12

Dependents:   Balloon

UM12.cpp

Committer:
AlexAllen
Date:
2011-07-22
Revision:
2:f2cf3a42e690
Parent:
1:84430ccc5662
Child:
4:c947442469dd

File content as of revision 2:f2cf3a42e690:

#include "UM12.h"
#include "mbed.h"

UM12::UM12( PinName tx, PinName rx, PinName slp, PinName rst) : Serial::Serial(tx, rx)
{
    if(slp != LED1) sleepPin = new DigitalOut(slp);
    else sleepPin = 0;
    if(rst != LED2) resetPin = new DigitalOut(rst);
    else resetPin = 0;
    baud(1200);
    format(8, Serial::Even, 1);
}

UM12::~UM12()
{
    if(sleepPin) delete sleepPin;
    if(resetPin) delete resetPin;
}
        
void UM12::sleep()
{
    if(sleepPin) *sleepPin = 1;
}

void UM12::wake()
{
    if(sleepPin) *sleepPin = 0;
}

void UM12::reset()
{
    if(resetPin)
    {
        *resetPin = 0;
        wait(0.15);
        *resetPin = 1;
    }
}

void UM12::send(char msg)
{
    putc(msg);
}

void UM12::send(bool msg)
{
    putc((int) msg);
}

void UM12::send(int msg)
{
        char *ch;
        ch = (char*) &msg;
        for (int i=0; i<sizeof(float);i++) putc(ch[i]);
}

void UM12::send(float msg)
{
        char *ch;
        ch = (char*) &msg;
        for (int i=0; i<sizeof(float);i++) putc(ch[i]);
}

char UM12::receive(char &msg)
{
    msg = getc();
    return msg;
}

bool UM12::receive(bool &msg)
{
    msg = getc();
    return msg;
}

int UM12::receive(int &msg)
{
    int i, intsize = sizeof(int);
    char bytes[intsize];

    for(i=0; i<intsize; i++) bytes[i] = getc();

    int *rec;
    rec = (int*) bytes;
    msg = *rec;
    
    return msg;
}


float UM12::receive(float &msg)
{
    int i, flsize = sizeof(float);
    char bytes[flsize];

    for(i=0; i<flsize; i++) bytes[i] = getc();

    float *rec;
    rec = (float*) bytes;
    msg = *rec;
    
    return msg;
}