mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-03-01 07:15:32 +01:00
115 lines
2.7 KiB
C++
115 lines
2.7 KiB
C++
// Copyright 2010 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <array>
|
|
#include <atomic>
|
|
|
|
#include "Common/Common.h"
|
|
#include "Common/CommonTypes.h"
|
|
|
|
class InputConfig;
|
|
class PointerWrap;
|
|
|
|
namespace ControllerEmu
|
|
{
|
|
class ControlGroup;
|
|
}
|
|
|
|
namespace WiimoteEmu
|
|
{
|
|
enum class WiimoteGroup;
|
|
enum class NunchukGroup;
|
|
enum class ClassicGroup;
|
|
enum class GuitarGroup;
|
|
enum class DrumsGroup;
|
|
enum class TurntableGroup;
|
|
enum class UDrawTabletGroup;
|
|
enum class DrawsomeTabletGroup;
|
|
enum class TaTaConGroup;
|
|
} // namespace WiimoteEmu
|
|
|
|
enum
|
|
{
|
|
WIIMOTE_CHAN_0 = 0,
|
|
WIIMOTE_CHAN_1,
|
|
WIIMOTE_CHAN_2,
|
|
WIIMOTE_CHAN_3,
|
|
WIIMOTE_BALANCE_BOARD,
|
|
MAX_WIIMOTES = WIIMOTE_BALANCE_BOARD,
|
|
MAX_BBMOTES = 5,
|
|
};
|
|
|
|
#define WIIMOTE_INI_NAME "WiimoteNew"
|
|
|
|
enum class WiimoteSource
|
|
{
|
|
None = 0,
|
|
Emulated = 1,
|
|
Real = 2,
|
|
};
|
|
|
|
namespace WiimoteCommon
|
|
{
|
|
class HIDWiimote;
|
|
|
|
WiimoteSource GetSource(unsigned int index);
|
|
void SetSource(unsigned int index, WiimoteSource source);
|
|
|
|
// Used to reconnect WiimoteDevice instance to HID source.
|
|
// Must be run from CPU thread.
|
|
void UpdateSource(unsigned int index);
|
|
|
|
HIDWiimote* GetHIDWiimoteSource(unsigned int index);
|
|
|
|
} // namespace WiimoteCommon
|
|
|
|
namespace Wiimote
|
|
{
|
|
enum class InitializeMode
|
|
{
|
|
DO_WAIT_FOR_WIIMOTES,
|
|
DO_NOT_WAIT_FOR_WIIMOTES,
|
|
};
|
|
|
|
// The Real Wii Remote sends report every ~5ms (200 Hz).
|
|
constexpr int UPDATE_FREQ = 200;
|
|
|
|
void Shutdown();
|
|
void Initialize(InitializeMode init_mode);
|
|
void ResetAllWiimotes();
|
|
void LoadConfig();
|
|
void Resume();
|
|
void Pause();
|
|
|
|
void DoState(PointerWrap& p);
|
|
InputConfig* GetConfig();
|
|
ControllerEmu::ControlGroup* GetWiimoteGroup(int number, WiimoteEmu::WiimoteGroup group);
|
|
ControllerEmu::ControlGroup* GetNunchukGroup(int number, WiimoteEmu::NunchukGroup group);
|
|
ControllerEmu::ControlGroup* GetClassicGroup(int number, WiimoteEmu::ClassicGroup group);
|
|
ControllerEmu::ControlGroup* GetGuitarGroup(int number, WiimoteEmu::GuitarGroup group);
|
|
ControllerEmu::ControlGroup* GetDrumsGroup(int number, WiimoteEmu::DrumsGroup group);
|
|
ControllerEmu::ControlGroup* GetTurntableGroup(int number, WiimoteEmu::TurntableGroup group);
|
|
ControllerEmu::ControlGroup* GetUDrawTabletGroup(int number, WiimoteEmu::UDrawTabletGroup group);
|
|
ControllerEmu::ControlGroup* GetDrawsomeTabletGroup(int number,
|
|
WiimoteEmu::DrawsomeTabletGroup group);
|
|
ControllerEmu::ControlGroup* GetTaTaConGroup(int number, WiimoteEmu::TaTaConGroup group);
|
|
|
|
bool NetPlay_GetButtonPress(int wiimote, bool pressed);
|
|
} // namespace Wiimote
|
|
|
|
namespace WiimoteReal
|
|
{
|
|
void Initialize(::Wiimote::InitializeMode init_mode);
|
|
void Stop();
|
|
void Shutdown();
|
|
void Resume();
|
|
void Pause();
|
|
void Refresh();
|
|
|
|
void LoadSettings();
|
|
|
|
} // namespace WiimoteReal
|