ps3 with sbdbt

Dependents:   omuni

PS3.cpp

Committer:
sgrsn
Date:
2016-09-26
Revision:
2:fe29007fb56c
Parent:
1:feb844c4721e
Child:
3:5640aae53391

File content as of revision 2:fe29007fb56c:

#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;
    addflag = 0;
    baud(2400);
    Serial::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();
        }
    }
    if(addflag)
    (*fpFunc)();
}
void PS3::myattach()
{
    Serial::attach(this, &PS3::getdata, Serial::RxIrq);
}

void PS3::addattach(void (*Func)())
{
    fpFunc = Func;
    addflag = 1;
}

void PS3::nothingFunc()
{
}

bool PS3::getButtonState(int button)
{
    return (*(PS3Data+(button>>4)) >> (button & 0x0f)) & 1;
}
int PS3::getRightJoystickXaxis()
{
    return (int)PS3Data[5]-64;
}
int PS3::getRightJoystickYaxis()
{
    return (int)PS3Data[6]*-1+64;
}
int PS3::getLeftJoystickXaxis()
{
    return (int)PS3Data[3]-64;
}
int PS3::getLeftJoystickYaxis()
{
    return (int)PS3Data[4]*-1+64;
}
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);
}