mirror of
https://github.com/cathery/sys-con.git
synced 2025-04-11 00:44:26 +00:00
Make some variables constexpr where possible
This commit is contained in:
parent
6f2f9349c4
commit
e33b5c06ab
@ -152,7 +152,7 @@ public:
|
|||||||
Result SendInitBytes();
|
Result SendInitBytes();
|
||||||
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||||
|
|
||||||
static Result SendCommand(IUSBInterface *interface, Dualshock3FeatureValue feature, void *buffer, uint16_t size);
|
static Result SendCommand(IUSBInterface *interface, Dualshock3FeatureValue feature, const void *buffer, uint16_t size);
|
||||||
|
|
||||||
Result SetLED(Dualshock3LEDValue value);
|
Result SetLED(Dualshock3LEDValue value);
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ public:
|
|||||||
virtual void Close() = 0;
|
virtual void Close() = 0;
|
||||||
|
|
||||||
virtual Result ControlTransfer(uint8_t bmRequestType, uint8_t bmRequest, uint16_t wValue, uint16_t wIndex, uint16_t wLength, void *buffer) = 0;
|
virtual Result ControlTransfer(uint8_t bmRequestType, uint8_t bmRequest, uint16_t wValue, uint16_t wIndex, uint16_t wLength, void *buffer) = 0;
|
||||||
|
virtual Result ControlTransfer(uint8_t bmRequestType, uint8_t bmRequest, uint16_t wValue, uint16_t wIndex, uint16_t wLength, const void *buffer) = 0;
|
||||||
|
|
||||||
virtual IUSBEndpoint *GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index) = 0;
|
virtual IUSBEndpoint *GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index) = 0;
|
||||||
virtual InterfaceDescriptor *GetDescriptor() = 0;
|
virtual InterfaceDescriptor *GetDescriptor() = 0;
|
||||||
|
@ -48,7 +48,7 @@ Result Dualshock3Controller::OpenInterfaces()
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
//Send an initial control packet
|
//Send an initial control packet
|
||||||
uint8_t initBytes[] = {0x42, 0x0C, 0x00, 0x00};
|
constexpr uint8_t initBytes[] = {0x42, 0x0C, 0x00, 0x00};
|
||||||
rc = SendCommand(interface.get(), Ds3FeatureStartDevice, initBytes, sizeof(initBytes));
|
rc = SendCommand(interface.get(), Ds3FeatureStartDevice, initBytes, sizeof(initBytes));
|
||||||
if (R_FAILED(rc))
|
if (R_FAILED(rc))
|
||||||
return 60;
|
return 60;
|
||||||
@ -209,14 +209,14 @@ Result Dualshock3Controller::SetRumble(uint8_t strong_magnitude, uint8_t weak_ma
|
|||||||
return 9;
|
return 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result Dualshock3Controller::SendCommand(IUSBInterface *interface, Dualshock3FeatureValue feature, void *buffer, uint16_t size)
|
Result Dualshock3Controller::SendCommand(IUSBInterface *interface, Dualshock3FeatureValue feature, const void *buffer, uint16_t size)
|
||||||
{
|
{
|
||||||
return interface->ControlTransfer(0x21, 0x09, static_cast<uint16_t>(feature), 0, size, buffer);
|
return interface->ControlTransfer(0x21, 0x09, static_cast<uint16_t>(feature), 0, size, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result Dualshock3Controller::SetLED(Dualshock3LEDValue value)
|
Result Dualshock3Controller::SetLED(Dualshock3LEDValue value)
|
||||||
{
|
{
|
||||||
uint8_t ledPacket[]{
|
const uint8_t ledPacket[]{
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
static_cast<uint8_t>(value << 1),
|
static_cast<uint8_t>(value << 1),
|
||||||
LED_PERMANENT,
|
LED_PERMANENT,
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
static ControllerConfig _xbox360WControllerConfig{};
|
static ControllerConfig _xbox360WControllerConfig{};
|
||||||
static const uint8_t reconnectPacket[]{0x08, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
static constexpr uint8_t reconnectPacket[]{0x08, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
static const uint8_t poweroffPacket[]{0x00, 0x00, 0x08, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
static constexpr uint8_t poweroffPacket[]{0x00, 0x00, 0x08, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
static const uint8_t initDriverPacket[]{0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
static constexpr uint8_t initDriverPacket[]{0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
static const uint8_t ledPacketOn[]{0x00, 0x00, 0x08, 0x40 | XBOX360LED_TOPLEFT, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
static constexpr uint8_t ledPacketOn[]{0x00, 0x00, 0x08, 0x40 | XBOX360LED_TOPLEFT, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
|
|
||||||
Xbox360WirelessController::Xbox360WirelessController(std::unique_ptr<IUSBDevice> &&interface)
|
Xbox360WirelessController::Xbox360WirelessController(std::unique_ptr<IUSBDevice> &&interface)
|
||||||
: IController(std::move(interface))
|
: IController(std::move(interface))
|
||||||
|
@ -206,7 +206,7 @@ Result XboxOneAdapter::ControlWrite(IUSBInterface *interface, uint16_t address,
|
|||||||
Result rc;
|
Result rc;
|
||||||
if (request == MT_VEND_DEV_MODE)
|
if (request == MT_VEND_DEV_MODE)
|
||||||
{
|
{
|
||||||
rc = interface->ControlTransfer(0x40, request, address, 0, 0, nullptr);
|
rc = interface->ControlTransfer(0x40, request, address, 0, 0, static_cast<const void *>(nullptr));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -10,33 +10,33 @@ static ControllerConfig _xboxoneControllerConfig{};
|
|||||||
// and https://github.com/360Controller/360Controller/blob/master/360Controller/_60Controller.cpp
|
// and https://github.com/360Controller/360Controller/blob/master/360Controller/_60Controller.cpp
|
||||||
|
|
||||||
//Enables LED on the PowerA controller but disables input?
|
//Enables LED on the PowerA controller but disables input?
|
||||||
static const uint8_t xboxone_powerA_ledOn[] = {
|
static constexpr uint8_t xboxone_powerA_ledOn[] = {
|
||||||
0x04, 0x20, 0x01, 0x00};
|
0x04, 0x20, 0x01, 0x00};
|
||||||
|
|
||||||
//does something maybe
|
//does something maybe
|
||||||
static const uint8_t xboxone_test_init1[] = {
|
static constexpr uint8_t xboxone_test_init1[] = {
|
||||||
0x01, 0x20, 0x01, 0x09, 0x00, 0x04, 0x20, 0x3a,
|
0x01, 0x20, 0x01, 0x09, 0x00, 0x04, 0x20, 0x3a,
|
||||||
0x00, 0x00, 0x00, 0x98, 0x00};
|
0x00, 0x00, 0x00, 0x98, 0x00};
|
||||||
|
|
||||||
//required for all xbox one controllers
|
//required for all xbox one controllers
|
||||||
static const uint8_t xboxone_fw2015_init[] = {
|
static constexpr uint8_t xboxone_fw2015_init[] = {
|
||||||
0x05, 0x20, 0x00, 0x01, 0x00};
|
0x05, 0x20, 0x00, 0x01, 0x00};
|
||||||
|
|
||||||
static const uint8_t xboxone_hori_init[] = {
|
static constexpr uint8_t xboxone_hori_init[] = {
|
||||||
0x01, 0x20, 0x00, 0x09, 0x00, 0x04, 0x20, 0x3a,
|
0x01, 0x20, 0x00, 0x09, 0x00, 0x04, 0x20, 0x3a,
|
||||||
0x00, 0x00, 0x00, 0x80, 0x00};
|
0x00, 0x00, 0x00, 0x80, 0x00};
|
||||||
|
|
||||||
static const uint8_t xboxone_pdp_init1[] = {
|
static constexpr uint8_t xboxone_pdp_init1[] = {
|
||||||
0x0a, 0x20, 0x00, 0x03, 0x00, 0x01, 0x14};
|
0x0a, 0x20, 0x00, 0x03, 0x00, 0x01, 0x14};
|
||||||
|
|
||||||
static const uint8_t xboxone_pdp_init2[] = {
|
static constexpr uint8_t xboxone_pdp_init2[] = {
|
||||||
0x06, 0x20, 0x00, 0x02, 0x01, 0x00};
|
0x06, 0x20, 0x00, 0x02, 0x01, 0x00};
|
||||||
|
|
||||||
static const uint8_t xboxone_rumblebegin_init[] = {
|
static constexpr uint8_t xboxone_rumblebegin_init[] = {
|
||||||
0x09, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x00,
|
0x09, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x00,
|
||||||
0x1D, 0x1D, 0xFF, 0x00, 0x00};
|
0x1D, 0x1D, 0xFF, 0x00, 0x00};
|
||||||
|
|
||||||
static const uint8_t xboxone_rumbleend_init[] = {
|
static constexpr uint8_t xboxone_rumbleend_init[] = {
|
||||||
0x09, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x00,
|
0x09, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00};
|
0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ struct VendorProductPacket
|
|||||||
uint8_t Length;
|
uint8_t Length;
|
||||||
};
|
};
|
||||||
|
|
||||||
static VendorProductPacket init_packets[]{
|
static constexpr VendorProductPacket init_packets[]{
|
||||||
{0x0e6f, 0x0165, xboxone_hori_init, sizeof(xboxone_hori_init)},
|
{0x0e6f, 0x0165, xboxone_hori_init, sizeof(xboxone_hori_init)},
|
||||||
{0x0f0d, 0x0067, xboxone_hori_init, sizeof(xboxone_hori_init)},
|
{0x0f0d, 0x0067, xboxone_hori_init, sizeof(xboxone_hori_init)},
|
||||||
|
|
||||||
@ -309,7 +309,7 @@ Result XboxOneController::WriteAckGuideReport(uint8_t sequence)
|
|||||||
|
|
||||||
Result XboxOneController::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
Result XboxOneController::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||||
{
|
{
|
||||||
uint8_t rumble_data[]{
|
const uint8_t rumble_data[]{
|
||||||
0x09, 0x00, 0x00,
|
0x09, 0x00, 0x00,
|
||||||
0x09, 0x00, 0x0f, 0x00, 0x00,
|
0x09, 0x00, 0x0f, 0x00, 0x00,
|
||||||
strong_magnitude,
|
strong_magnitude,
|
||||||
|
@ -23,6 +23,7 @@ public:
|
|||||||
virtual void Close() override;
|
virtual void Close() override;
|
||||||
|
|
||||||
virtual Result ControlTransfer(u8 bmRequestType, u8 bmRequest, u16 wValue, u16 wIndex, u16 wLength, void *buffer) override;
|
virtual Result ControlTransfer(u8 bmRequestType, u8 bmRequest, u16 wValue, u16 wIndex, u16 wLength, void *buffer) override;
|
||||||
|
virtual Result ControlTransfer(u8 bmRequestType, u8 bmRequest, u16 wValue, u16 wIndex, u16 wLength, const void *buffer) override;
|
||||||
|
|
||||||
// There are a total of 15 endpoints on a switch interface for each direction, get them by passing the desired parameters
|
// There are a total of 15 endpoints on a switch interface for each direction, get them by passing the desired parameters
|
||||||
virtual IUSBEndpoint *GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index) override;
|
virtual IUSBEndpoint *GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index) override;
|
||||||
|
@ -91,6 +91,24 @@ Result SwitchUSBInterface::ControlTransfer(u8 bmRequestType, u8 bmRequest, u16 w
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result SwitchUSBInterface::ControlTransfer(u8 bmRequestType, u8 bmRequest, u16 wValue, u16 wIndex, u16 wLength, const void *buffer)
|
||||||
|
{
|
||||||
|
void *temp_buffer = memalign(0x1000, wLength);
|
||||||
|
if (temp_buffer == nullptr)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
u32 transferredSize;
|
||||||
|
|
||||||
|
for (u16 byte = 0; byte != wLength; ++byte)
|
||||||
|
{
|
||||||
|
static_cast<uint8_t *>(temp_buffer)[byte] = static_cast<const uint8_t *>(buffer)[byte];
|
||||||
|
}
|
||||||
|
|
||||||
|
Result rc = usbHsIfCtrlXfer(&m_session, bmRequestType, bmRequest, wValue, wIndex, wLength, temp_buffer, &transferredSize);
|
||||||
|
free(temp_buffer);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
IUSBEndpoint *SwitchUSBInterface::GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index)
|
IUSBEndpoint *SwitchUSBInterface::GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index)
|
||||||
{
|
{
|
||||||
if (direction == IUSBEndpoint::USB_ENDPOINT_IN)
|
if (direction == IUSBEndpoint::USB_ENDPOINT_IN)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user