ps3 with sbdbt

Dependents:   omuni

PS3.cpp

Committer:
sgrsn
Date:
2016-08-15
Revision:
1:feb844c4721e
Parent:
0:87f83956cb4c
Child:
2:fe29007fb56c

File content as of revision 1:feb844c4721e:

#include "PS3.h"

PS3::PS3(PinName TX, PinName RX) : Serial(TX, RX)
{
    PS3Data[0] = 128;
    PS3Data[1] = 0;
    PS3Data[2] = 0;
    PS3Data[3] = 64;
    PS3Data[4] = 64;
    PS3Data[5] = 64;
    PS3Data[6] = 64;
    PS3Data[7] = 0;
    baud(2400);
    attach(this, &PS3::getdata, Serial::RxIrq);
}
void PS3::getdata()
{
    if(Serial::readable())
    {
        while(Serial::getc() != 128)
        {
        }
        for(int i = 1;i < 8;i++)
        {
            *(PS3Data+i) = Serial::getc();
        }
    }
}
bool PS3::getButtonState(int button)
{
    return (*(PS3Data+(button>>4)) >> (button & 0x0f)) & 1;
}
double PS3::getRightJoystickAngle()
{
    return atan2(double(PS3Data[6]*-1+64), double(PS3Data[5]-64))*double(180/PI);
}
double PS3::getLeftJoystickAngle()
{
    return atan2(double(PS3Data[4]*-1+64), double(PS3Data[3]-64))*double(180/PI);
}