serial to processing

serial.cpp

Committer:
sgrsn
Date:
2016-11-05
Revision:
0:d392bb39c8b8

File content as of revision 0:d392bb39c8b8:

#include "serial.h"

    serial::serial(PinName tx, PinName rx, char *_Registar) : Serial(tx, rx)
    {
        Registar = _Registar;
        DATA = 0;
        count = 0;
        for(int i = 0; i < 4; i++)arrayDATA[i] = 0;
        baud(115200);
        attach(this, &serial::getdata, Serial::RxIrq);
    }
    void serial::getdata()
    {
        if(readable())
        {
            count = getc();
            if(count <= 3 && count >= 0)
            {
                putc(arrayDATA[count]);
            }
            else
            {
                //if(readable())    //No
                *( Registar + (count-4) ) = getc();
            }
        }
    }

    int serial::getdata(int reg, int size)
    {
        int data = 0;
        for(int i = 0; i < size; i++)
        {
            data  |= *(Registar + + reg + i) << (i*8);
        }
        return data;
    }
    void serial::putpc(const int data)
    {
        DATA = data;
        for(int i = 0; i < 4; i++)
        {
            arrayDATA[i] = ( DATA >> (i*8) ) & 0x0ff;
        }
    }
    
    int serial::operator[](int reg)
    {
        return getdata(reg, 4);
    }
    void serial::operator=(const int data)
    {
        putpc(data);
    }