Skip to content

Commit

Permalink
Update ProController.cpp: Add parameter which enable/disables IMU sen…
Browse files Browse the repository at this point in the history
…sors to constructor.
  • Loading branch information
ttsuki committed Nov 9, 2019
1 parent 7e4468a commit e9c017f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 11 deletions.
19 changes: 10 additions & 9 deletions ProControllerHid/ProController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ namespace ProControllerHid
using Clock = std::chrono::steady_clock;

HidIo::HidDeviceThreaded device_{};

std::string devicePath_{};
bool imuSensorsEnabled_{};

uint8_t nextPacketNumber_{};
Expand Down Expand Up @@ -87,7 +89,7 @@ namespace ProControllerHid
} calibrationParameters_{};

public:
ProControllerImpl(const char *pathToDevice, int index, InputStatusCallback statusCallback);
ProControllerImpl(const char *pathToDevice, int index, InputStatusCallback statusCallback, bool imuSensorEnabled);
~ProControllerImpl() override;

void StartStatusCallback() override;
Expand All @@ -103,7 +105,7 @@ namespace ProControllerHid
private:
SpiCalibrationParameters LoadCalibrationParametersFromSpiMemory();
void SendUsbCommand(uint8_t usbCommand, const Buffer &data, bool waitAck);
void SendSubCommand(uint8_t subCommand, const Buffer &data, bool waitAck, const PacketProc &callback = nullptr);
void SendSubCommand(uint8_t subCommand, const Buffer& data, bool waitAck, const PacketProc& callback = nullptr);
Buffer ReadSpiMemory(uint16_t address, uint8_t length);
void SendRumble();

Expand Down Expand Up @@ -151,10 +153,11 @@ namespace ProControllerHid
|| pending_.count(command) == 0;
}

ProControllerImpl::ProControllerImpl(const char *pathToDevice, int index, InputStatusCallback statusCallback)
ProControllerImpl::ProControllerImpl(const char *pathToDevice, int index, InputStatusCallback statusCallback, bool imuSensorEnabled = false)
: devicePath_(pathToDevice)
, imuSensorsEnabled_(imuSensorEnabled)
, statusCallback_(std::move(statusCallback))
{
imuSensorsEnabled_ = true;

SetRumbleBasic(0, 0, 0, 0, 0x80, 0x80, 0x80, 0x80);
SetPlayerLed((1 << index) - 1);

Expand All @@ -177,8 +180,6 @@ namespace ProControllerHid
SendSubCommand(0x38, {0x2F, 0x10, 0x11, 0x33, 0x33}, true); // Set HOME Light animation
SendSubCommand(0x30, {playerLedStatus_}, true); // Set Player LED Status

statusCallback_ = std::move(statusCallback);

controllerUpdaterThreadRunning_.test_and_set();
controllerUpdaterThread_ = std::thread([this, threadName = std::string(pathToDevice) + "-UpdaterThread"]
{
Expand Down Expand Up @@ -544,9 +545,9 @@ namespace ProControllerHid
}
}

std::unique_ptr<ProController> ProController::Connect(const char *pathToDevice, int index, InputStatusCallback statusCallback)
std::unique_ptr<ProController> ProController::Connect(const char *pathToDevice, int index, InputStatusCallback statusCallback, bool imuSensorEnabled)
{
return std::make_unique<ProControllerImpl>(pathToDevice, index, std::move(statusCallback));
return std::make_unique<ProControllerImpl>(pathToDevice, index, std::move(statusCallback), imuSensorEnabled);
}

std::vector<std::string> ProController::EnumerateProControllerDevicePaths()
Expand Down
2 changes: 1 addition & 1 deletion ProControllerHid/ProController.h
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ namespace ProControllerHid
virtual void SetPlayerLed(uint8_t playerLed) = 0;

using InputStatusCallback = std::function<void(const InputStatus &status)>;
static std::unique_ptr<ProController> Connect(const char *pathToDevice, int index, InputStatusCallback statusCallback);
static std::unique_ptr<ProController> Connect(const char *pathToDevice, int index, InputStatusCallback statusCallback, bool imuSensorEnabled = false);

static std::vector<std::string> EnumerateProControllerDevicePaths();
};
Expand Down
2 changes: 1 addition & 1 deletion ProconXInputTE/Tests/ProControllerTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ namespace ProconXInputTE
controller->SetPlayerLed(led);
};

controllers.emplace_back(ProController::Connect(devPath.c_str(), index + 1, callback));
controllers.emplace_back(ProController::Connect(devPath.c_str(), index + 1, callback, true));
index++;
}

Expand Down

0 comments on commit e9c017f

Please sign in to comment.