2020-06-02 21:24:40 +00:00
|
|
|
#pragma once
|
|
|
|
#include "bluetoothcontroller.hpp"
|
|
|
|
|
2020-07-11 11:43:21 +00:00
|
|
|
namespace ams::controller {
|
2020-06-02 21:24:40 +00:00
|
|
|
|
|
|
|
enum WiiControllerLEDs {
|
|
|
|
WiiControllerLEDs_P1 = 0x10,
|
|
|
|
WiiControllerLEDs_P2 = 0x20,
|
|
|
|
WiiControllerLEDs_P3 = 0x40,
|
|
|
|
WiiControllerLEDs_P4 = 0x80,
|
|
|
|
};
|
|
|
|
|
2020-06-09 20:39:30 +00:00
|
|
|
struct WiiButtonData {
|
|
|
|
uint8_t dpad_left : 1;
|
|
|
|
uint8_t dpad_right : 1;
|
|
|
|
uint8_t dpad_down : 1;
|
|
|
|
uint8_t dpad_up : 1;
|
|
|
|
uint8_t plus : 1;
|
|
|
|
uint8_t : 0;
|
|
|
|
|
|
|
|
uint8_t two : 1;
|
|
|
|
uint8_t one : 1;
|
|
|
|
uint8_t B : 1;
|
|
|
|
uint8_t A : 1;
|
|
|
|
uint8_t minus : 1;
|
|
|
|
uint8_t : 2;
|
|
|
|
uint8_t home : 1;
|
2020-07-11 11:43:21 +00:00
|
|
|
} __attribute__ ((__packed__));
|
2020-06-09 20:39:30 +00:00
|
|
|
|
2020-07-09 22:46:11 +00:00
|
|
|
struct WiiAccelerometerData {
|
|
|
|
uint8_t xyz[3];
|
2020-07-11 11:43:21 +00:00
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReport0x30 {
|
|
|
|
WiiButtonData buttons;
|
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReport0x31 {
|
|
|
|
WiiButtonData buttons;
|
|
|
|
WiiAccelerometerData accel;
|
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReport0x32 {
|
|
|
|
WiiButtonData buttons;
|
|
|
|
uint8_t extension[8];
|
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReport0x33 {
|
|
|
|
WiiButtonData buttons;
|
|
|
|
WiiAccelerometerData accel;
|
|
|
|
uint8_t ir[12];
|
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReport0x34 {
|
|
|
|
WiiButtonData buttons;
|
|
|
|
uint8_t extension[19];
|
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReport0x35 {
|
|
|
|
WiiButtonData buttons;
|
|
|
|
WiiAccelerometerData accel;
|
|
|
|
uint8_t extension[16];
|
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReport0x36 {
|
|
|
|
WiiButtonData buttons;
|
|
|
|
uint8_t ir[10];
|
|
|
|
uint8_t extension[9];
|
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReport0x37 {
|
|
|
|
WiiButtonData buttons;
|
|
|
|
WiiAccelerometerData accel;
|
|
|
|
uint8_t ir[10];
|
|
|
|
uint8_t extension[6];
|
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReport0x3d {
|
|
|
|
uint8_t extension[21];
|
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
|
|
struct WiiReportData {
|
|
|
|
uint8_t id;
|
|
|
|
union {
|
|
|
|
WiiReport0x30 report0x30;
|
|
|
|
WiiReport0x31 report0x31;
|
|
|
|
WiiReport0x32 report0x32;
|
|
|
|
WiiReport0x33 report0x33;
|
|
|
|
WiiReport0x34 report0x34;
|
|
|
|
WiiReport0x35 report0x35;
|
|
|
|
WiiReport0x36 report0x36;
|
|
|
|
WiiReport0x37 report0x37;
|
|
|
|
WiiReport0x3d report0x3d;
|
|
|
|
};
|
|
|
|
} __attribute__ ((__packed__));
|
2020-07-09 22:46:11 +00:00
|
|
|
|
2020-06-02 21:24:40 +00:00
|
|
|
class WiiController : public BluetoothController {
|
|
|
|
|
|
|
|
public:
|
|
|
|
Result initialize(void);
|
|
|
|
|
|
|
|
protected:
|
2020-07-11 11:43:21 +00:00
|
|
|
WiiController(ControllerType type, const bluetooth::Address *address) : BluetoothController(type, address) {};
|
2020-06-02 21:24:40 +00:00
|
|
|
|
2020-07-11 11:43:21 +00:00
|
|
|
Result writeMemory(const bluetooth::Address *address, uint32_t writeaddr, const uint8_t *data, uint8_t length);
|
|
|
|
Result setReportMode(const bluetooth::Address *address, uint8_t mode);
|
|
|
|
Result setPlayerLeds(const bluetooth::Address *address, uint8_t mask);
|
2020-06-02 21:24:40 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
//void mapStickValues(JoystickPosition *dst, const Dualshock4StickData *src);
|
|
|
|
//void handleInputReport0x01(const Dualshock4ReportData *data);
|
|
|
|
//void handleInputReport0x11(const Dualshock4ReportData *data);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
}
|