194 void Init() noexcept;
214 bool Connect(const std::
string& bluetooth_device_address, uint32_t timeout_ms = 5000) noexcept;
287 const gamepad::input::Tracker&
Update() noexcept;
368 const gamepad::input::Tracker&
input_tracker() const noexcept {
return input_tracker_; }
383 NimBLEClient*
ble_client() const noexcept {
return ble_client_; }
386 static constexpr size_t kInputsQueueMax = 10;
387 bool onConnParamsUpdateRequest(NimBLEClient*,
const ble_gap_upd_params*)
override {
391 bool Connect(
const NimBLEAddress& address,
bool async_connect,
const uint32_t timeout_ms);
392 void OnNotify(
const NimBLERemoteCharacteristic* remote_characteristic,
const uint8_t* data,
const size_t length,
393 const bool is_notify);
396 mutable std::mutex mutex_;
397 NimBLEClient* ble_client_ =
nullptr;
398 std::string remote_device_name_;
399 std::string remote_model_number_;
400 std::array<uint8_t, 3> remote_firmware_version_ = {0, 0, 0};
401 std::queue<gamepad::input::State> inputs_queue_;
402 gamepad::input::Tracker input_tracker_;