ps3 with sbdbt
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); }