First Release
Diff: Out_PS3USB/Out_PS3USB.cpp
- Revision:
- 0:e1265f6b3565
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Out_PS3USB/Out_PS3USB.cpp Sat Jul 27 14:05:47 2013 +0000 @@ -0,0 +1,170 @@ +#include "NiseKabuto.h" + +// +// Constructor +// +Out_PS3USB::Out_PS3USB(InputStatus *inputStatus) +{ +// wait(1); + _InputStatus = inputStatus; + _MyJS = new USBJoystick(); + Initialize(); +} + +// +// Initialize +// +void Out_PS3USB::Initialize() +{ + + // Pin Setting + + // Class Variable Setting + + // Interrupt Setting + _USBUpdateTicker.attach_us(this, &Out_PS3USB::USBUpdate, USBUPDATEINTERVAL__MSEC*1000); +} + + +// +// USB Joystick Update Method +// +void Out_PS3USB::USBUpdate() +{ + int16_t x; + int16_t y; + int16_t z; + int16_t rz; + uint32_t buttons; + uint8_t button_hat; + + int in_Buttons; + + in_Buttons = _InputStatus->Buttons; + + // Dボタンが押されている/押されていないで送る情報を変える + + if( (in_Buttons & 0x0010) ) + { + // Dボタン押されてない + + x = (int)(0x80 + _InputStatus->Ch1)& 0xff; // x + y = (int)(0x80 + _InputStatus->Ch0)& 0xff; // y + z = (int)(0x80 + 0x80) & 0xff; // z + rz = (int)(0x80 + _InputStatus->Ch2)& 0xff; // rz + + buttons = + ((in_Buttons & 0x0020)? 0: 0x0001) | // button □ + ((in_Buttons & 0x0100)? 0: 0x0002) | // × + ((in_Buttons & 0x0200)? 0: 0x0004) | // ○ + 0 | // △ + ((in_Buttons & 0x0008)? 0: 0x0010) | // L1 + ((in_Buttons & 0x0004)? 0: 0x0020) | // R1 + 0 | // L2 + 0 | // R2 + ((in_Buttons & 0x0001)? 0: 0x0100) | // SELECT + ((in_Buttons & 0x0002)? 0: 0x0200) | // START + 0 | // L3 + 0 | // R3 + 0 ; // PS button + + button_hat = 0; + + } + else + { + // Dボタン押されてる + + x = (int)(0x80 + 0x80)& 0xff; // x + y = (int)(0x80 + 0x80)& 0xff; // y + z = (int)(0x80 + _InputStatus->Ch2) & 0xff; // z + rz = (int)(0x80 + 0x80)& 0xff; // rz + + buttons = + 0 | // button □ + 0 | // × + 0 | // ○ + ((in_Buttons & 0x0100)? 0: 0x0008) | // △ + 0 | // L1 + 0 | // R1 + ((in_Buttons & 0x0008)? 0: 0x0040) | // L2 + ((in_Buttons & 0x0004)? 0: 0x0080) | // R2 + 0 | // SELECT + 0 | // START + ((in_Buttons & 0x0200)? 0: 0x0400) | // L3 + ((in_Buttons & 0x0020)? 0: 0x0800) | // R3 + ((in_Buttons & 0x0002)? 0: 0x1000) ; // PS button + + button_hat = + (( (_InputStatus->Ch0<0x20) )? 0x01: 0) | // hat up + (( (_InputStatus->Ch0>0xe0) )? 0x02: 0) | // down + (( (_InputStatus->Ch1<0x10) )? 0x04: 0) | // left + (( (_InputStatus->Ch1>0xe0) )? 0x08: 0) ; // right + } + + _MyJS->update(x, y, z, rz, buttons, button_hat); + + /* + _MyJS->update( //int16_t x, int16_t y, int16_t z, int16_t rz, uint32_t buttons, uint8_t button_hat + (int)(0x80 + _InputStatus->Ch1)& 0xff, // x + (int)(0x80 + _InputStatus->Ch0)& 0xff, // y + (int)(0x80 + 0x80) & 0xff, // z + (int)(0x80 + _InputStatus->Ch2)& 0xff, // rz + + ((_InputStatus->Buttons & 0x0020)? 0: 0x0001) | // button □ + ((_InputStatus->Buttons & 0x0100)? 0: 0x0002) | // × + ((_InputStatus->Buttons & 0x0200)? 0: 0x0004) | // ○ + ((!(_InputStatus->Buttons & 0x0010) && !(_InputStatus->Buttons & 0x0100))? 0x0008: 0) | // △ + ((_InputStatus->Buttons & 0x0008)? 0: 0x0010) | // L1 + ((_InputStatus->Buttons & 0x0004)? 0: 0x0020) | // R2 + ((!(_InputStatus->Buttons & 0x0010) && !(_InputStatus->Buttons & 0x0008))? 0x0040: 0) | // L2 + ((!(_InputStatus->Buttons & 0x0010) && !(_InputStatus->Buttons & 0x0004))? 0x0080: 0) | // R2 + ((_InputStatus->Buttons & 0x0001)? 0: 0x0100) | // SELECT + ((_InputStatus->Buttons & 0x0002)? 0: 0x0200) | // START + ((!(_InputStatus->Buttons & 0x0010) && (_InputStatus->Ch2<0x20))? 0x0400: 0) | // L3? + ((!(_InputStatus->Buttons & 0x0010) && (_InputStatus->Ch2>0xe0))? 0x0800: 0) | // R3? + ((!(_InputStatus->Buttons & 0x0010) && !(_InputStatus->Buttons & 0x0002))? 0x1000: 0), // PS button + + ((!(_InputStatus->Buttons & 0x0010) && (_InputStatus->Ch0<0x20))? 0x01: 0) | // hat up + ((!(_InputStatus->Buttons & 0x0010) && (_InputStatus->Ch0>0xe0))? 0x02: 0) | // down + ((!(_InputStatus->Buttons & 0x0010) && (_InputStatus->Ch1<0x10))? 0x04: 0) | // left + ((!(_InputStatus->Buttons & 0x0010) && (_InputStatus->Ch1>0xe0))? 0x08: 0) // right + ); + */ +} + + + + + +void Out_PS3USB::SetupInputControll(void (*startInputFunction)(void), void (*stopInputFunction)(void)) +{ + StartInputFunction = startInputFunction; + StopInputFunction = stopInputFunction; +} + +void Out_PS3USB::EnableInput(void) +{ + if(_InputInstance && StartInputMethod) + { + (_InputInstance->*StartInputMethod)(); + } + else if(StartInputFunction) + { + StartInputFunction(); + } +} + +void Out_PS3USB::DisableInput(void) +{ + if(_InputInstance && StopInputMethod) + { + (_InputInstance->*StopInputMethod)(); + } + else if(StopInputFunction) + { + StopInputFunction(); + } +} + +