Added bluedot light drivers
This commit is contained in:
@@ -179,12 +179,14 @@ source_group("Arch Specific\\\\Loading Window"
|
|||||||
list(APPEND SMDATA_ARCH_LIGHTS_SRC "arch/Lights/LightsDriver.cpp"
|
list(APPEND SMDATA_ARCH_LIGHTS_SRC "arch/Lights/LightsDriver.cpp"
|
||||||
"arch/Lights/LightsDriver_Export.cpp"
|
"arch/Lights/LightsDriver_Export.cpp"
|
||||||
"arch/Lights/LightsDriver_SextetStream.cpp"
|
"arch/Lights/LightsDriver_SextetStream.cpp"
|
||||||
"arch/Lights/LightsDriver_SystemMessage.cpp")
|
"arch/Lights/LightsDriver_SystemMessage.cpp"
|
||||||
|
"arch/Lights/LightsDriver_HidBlueDot.cpp")
|
||||||
list(APPEND SMDATA_ARCH_LIGHTS_HPP "arch/Lights/LightsDriver.h"
|
list(APPEND SMDATA_ARCH_LIGHTS_HPP "arch/Lights/LightsDriver.h"
|
||||||
"arch/Lights/LightsDriver_Export.h"
|
"arch/Lights/LightsDriver_Export.h"
|
||||||
"arch/Lights/LightsDriver_SextetStream.h"
|
"arch/Lights/LightsDriver_SextetStream.h"
|
||||||
"arch/Lights/LightsDriver_SystemMessage.h"
|
"arch/Lights/LightsDriver_SystemMessage.h"
|
||||||
"arch/Lights/SextetUtils.h")
|
"arch/Lights/SextetUtils.h"
|
||||||
|
"arch/Lights/LightsDriver_HidBlueDot.h")
|
||||||
|
|
||||||
# TODO: Confirm if Apple can use the export.
|
# TODO: Confirm if Apple can use the export.
|
||||||
if(NOT APPLE)
|
if(NOT APPLE)
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
#include "LightsDriver_HidBlueDot.h"
|
||||||
|
|
||||||
|
REGISTER_LIGHTS_DRIVER_CLASS(HidBlueDot);
|
||||||
|
|
||||||
|
LightsDriver_HidBlueDot::LightsDriver_HidBlueDot()
|
||||||
|
{
|
||||||
|
memset(m_iCabData, 0x00, sizeof(m_iCabData));
|
||||||
|
memset(m_iPadData, 0x00, sizeof(m_iPadData));
|
||||||
|
|
||||||
|
m_iCabData[1] = 0x01;
|
||||||
|
m_iPadData[1] = 0x02;
|
||||||
|
|
||||||
|
// Open the device using the VID, PID,
|
||||||
|
// and optionally the Serial number.
|
||||||
|
handle = hid_open(VID, PID, NULL);
|
||||||
|
|
||||||
|
if (!handle) {
|
||||||
|
LOG->Warn("HID BlueDot device not found.");
|
||||||
|
hid_exit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LightsDriver_HidBlueDot::~LightsDriver_HidBlueDot()
|
||||||
|
{
|
||||||
|
// Close the device
|
||||||
|
hid_close(handle);
|
||||||
|
|
||||||
|
// Finalize the hidapi library
|
||||||
|
hid_exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LightsDriver_HidBlueDot::SetPadLight(PadLightIndex index, bool value)
|
||||||
|
{
|
||||||
|
m_iPadData[2] &= ~(1 << index);
|
||||||
|
m_iPadData[2] |= (1 << index);
|
||||||
|
};
|
||||||
|
|
||||||
|
void LightsDriver_HidBlueDot::SetCabinetLight(CabinetLightIndex index, bool value)
|
||||||
|
{
|
||||||
|
m_iCabData[2] &= ~(1 << index);
|
||||||
|
m_iCabData[2] |= (1 << index);
|
||||||
|
};
|
||||||
|
|
||||||
|
void LightsDriver_HidBlueDot::Set(const LightsState *ls)
|
||||||
|
{
|
||||||
|
if (!handle)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//! Set cabinet lights.
|
||||||
|
SetCabinetLight(m_Marquee_UpLeft, ls->m_bCabinetLights[LIGHT_MARQUEE_UP_LEFT]);
|
||||||
|
SetCabinetLight(m_Marquee_UpRight, ls->m_bCabinetLights[LIGHT_MARQUEE_UP_RIGHT]);
|
||||||
|
SetCabinetLight(m_Marquee_LwLeft, ls->m_bCabinetLights[LIGHT_MARQUEE_LR_LEFT]);
|
||||||
|
SetCabinetLight(m_Marquee_LwRight, ls->m_bCabinetLights[LIGHT_MARQUEE_LR_RIGHT]);
|
||||||
|
SetCabinetLight(m_Buttons_Left, ls->m_bGameButtonLights[PLAYER_1][GAME_BUTTON_START]);
|
||||||
|
SetCabinetLight(m_Buttons_Right, ls->m_bGameButtonLights[PLAYER_2][GAME_BUTTON_START]);
|
||||||
|
SetCabinetLight(m_Bass, ls->m_bCabinetLights[LIGHT_BASS_LEFT] || ls->m_bCabinetLights[LIGHT_BASS_RIGHT]);
|
||||||
|
|
||||||
|
hid_write(handle, (unsigned char *)&m_iCabData, 3);
|
||||||
|
|
||||||
|
//! Set pad lights.
|
||||||
|
SetPadLight(m_PadP1_Left, ls->m_bGameButtonLights[PLAYER_1][DANCE_BUTTON_LEFT]);
|
||||||
|
SetPadLight(m_PadP1_Right, ls->m_bGameButtonLights[PLAYER_1][DANCE_BUTTON_RIGHT]);
|
||||||
|
SetPadLight(m_PadP1_Up, ls->m_bGameButtonLights[PLAYER_1][DANCE_BUTTON_UP]);
|
||||||
|
SetPadLight(m_PadP1_Down, ls->m_bGameButtonLights[PLAYER_1][DANCE_BUTTON_DOWN]);
|
||||||
|
SetPadLight(m_PadP2_Left, ls->m_bGameButtonLights[PLAYER_2][DANCE_BUTTON_LEFT]);
|
||||||
|
SetPadLight(m_PadP2_Right, ls->m_bGameButtonLights[PLAYER_2][DANCE_BUTTON_RIGHT]);
|
||||||
|
SetPadLight(m_PadP2_Up, ls->m_bGameButtonLights[PLAYER_2][DANCE_BUTTON_UP]);
|
||||||
|
SetPadLight(m_PadP2_Down, ls->m_bGameButtonLights[PLAYER_2][DANCE_BUTTON_DOWN]);
|
||||||
|
|
||||||
|
hid_write(handle, (unsigned char *)&m_iPadData, 3);
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#ifndef LightsDriver_HidBlueDot_H
|
||||||
|
#define LightsDriver_HidBlueDot_H
|
||||||
|
|
||||||
|
#include "arch/Lights/LightsDriver.h"
|
||||||
|
#include "hidapi.h"
|
||||||
|
|
||||||
|
#define VID 0x04BD
|
||||||
|
#define PID 0xBD
|
||||||
|
|
||||||
|
class LightsDriver_HidBlueDot : public LightsDriver
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
enum CabinetLightIndex
|
||||||
|
{
|
||||||
|
m_Marquee_UpLeft = 0x01,
|
||||||
|
m_Marquee_UpRight = 0x02,
|
||||||
|
m_Marquee_LwLeft = 0x04,
|
||||||
|
m_Marquee_LwRight = 0x08,
|
||||||
|
m_Buttons_Left = 0x10,
|
||||||
|
m_Buttons_Right = 0x20,
|
||||||
|
m_Bass = 0x40,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum PadLightIndex
|
||||||
|
{
|
||||||
|
m_PadP1_Up = 0x01,
|
||||||
|
m_PadP1_Down = 0x02,
|
||||||
|
m_PadP1_Left = 0x04,
|
||||||
|
m_PadP1_Right = 0x08,
|
||||||
|
m_PadP2_Up = 0x10,
|
||||||
|
m_PadP2_Down = 0x20,
|
||||||
|
m_PadP2_Left = 0x40,
|
||||||
|
m_PadP2_Right = 0x80
|
||||||
|
};
|
||||||
|
|
||||||
|
uint8_t m_iCabData[3];
|
||||||
|
uint8_t m_iPadData[3];
|
||||||
|
hid_device* handle;
|
||||||
|
|
||||||
|
void SetPadLight(PadLightIndex index, bool value);
|
||||||
|
void SetCabinetLight(CabinetLightIndex index, bool value);
|
||||||
|
public:
|
||||||
|
LightsDriver_HidBlueDot();
|
||||||
|
virtual ~LightsDriver_HidBlueDot();
|
||||||
|
|
||||||
|
virtual void Set( const LightsState *ls );
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user