1
0
mirror of https://github.com/cathery/sys-con.git synced 2024-07-05 10:48:46 +00:00

Make some variables constexpr where possible

This commit is contained in:
cathery 2019-11-22 01:49:51 +03:00
parent 6f2f9349c4
commit e33b5c06ab
8 changed files with 39 additions and 19 deletions

View File

@ -152,7 +152,7 @@ public:
Result SendInitBytes();
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);

View File

@ -25,6 +25,7 @@ public:
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, const void *buffer) = 0;
virtual IUSBEndpoint *GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index) = 0;
virtual InterfaceDescriptor *GetDescriptor() = 0;

View File

@ -48,7 +48,7 @@ Result Dualshock3Controller::OpenInterfaces()
continue;
//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));
if (R_FAILED(rc))
return 60;
@ -209,14 +209,14 @@ Result Dualshock3Controller::SetRumble(uint8_t strong_magnitude, uint8_t weak_ma
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);
}
Result Dualshock3Controller::SetLED(Dualshock3LEDValue value)
{
uint8_t ledPacket[]{
const uint8_t ledPacket[]{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
static_cast<uint8_t>(value << 1),
LED_PERMANENT,

View File

@ -2,10 +2,10 @@
#include <cmath>
static ControllerConfig _xbox360WControllerConfig{};
static const 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 const 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 reconnectPacket[]{0x08, 0x00, 0x0F, 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 constexpr uint8_t initDriverPacket[]{0x00, 0x00, 0x02, 0x80, 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)
: IController(std::move(interface))

View File

@ -206,7 +206,7 @@ Result XboxOneAdapter::ControlWrite(IUSBInterface *interface, uint16_t address,
Result rc;
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
{

View File

@ -10,33 +10,33 @@ static ControllerConfig _xboxoneControllerConfig{};
// and https://github.com/360Controller/360Controller/blob/master/360Controller/_60Controller.cpp
//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};
//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,
0x00, 0x00, 0x00, 0x98, 0x00};
//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};
static const uint8_t xboxone_hori_init[] = {
static constexpr uint8_t xboxone_hori_init[] = {
0x01, 0x20, 0x00, 0x09, 0x00, 0x04, 0x20, 0x3a,
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};
static const uint8_t xboxone_pdp_init2[] = {
static constexpr uint8_t xboxone_pdp_init2[] = {
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,
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,
0x00, 0x00, 0x00, 0x00, 0x00};
@ -48,7 +48,7 @@ struct VendorProductPacket
uint8_t Length;
};
static VendorProductPacket init_packets[]{
static constexpr VendorProductPacket init_packets[]{
{0x0e6f, 0x0165, 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)
{
uint8_t rumble_data[]{
const uint8_t rumble_data[]{
0x09, 0x00, 0x00,
0x09, 0x00, 0x0f, 0x00, 0x00,
strong_magnitude,

View File

@ -23,6 +23,7 @@ public:
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, 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
virtual IUSBEndpoint *GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index) override;

View File

@ -91,6 +91,24 @@ Result SwitchUSBInterface::ControlTransfer(u8 bmRequestType, u8 bmRequest, u16 w
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)
{
if (direction == IUSBEndpoint::USB_ENDPOINT_IN)