11namespace gamepad::codec {
12Decoder::Decoder(Stream &stream) noexcept : stream_(stream), parser_(kGamepadInputStatePayloadSize) {}
15 input_tracker_.Tick();
17 while (stream_.available() > 0) {
18 parser_.Process(stream_.read());
20 if (parser_.is_complete()) {
21 OnFrame(parser_.data(), parser_.data_length());
25 return input_tracker_;
28void Decoder::OnFrame(
const uint8_t *data,
const size_t data_length) {
30 data_length == kGamepadInputStatePayloadSize) {
31 input_tracker_.Update(gamepad::input::State::FromBytes(data + 1));
Decoder(Stream &stream) noexcept
Constructor.
const gamepad::input::Tracker & Update() noexcept
Update, need to be called in Loop.
@ kGamepadInputState
Gamepad input state (buttons + axes).