GamepadCodec Arduino 库
1.0.1
载入中...
搜索中...
未找到
gamepad_codec_decoder.cpp
浏览该文件的文档.
1
#include "
gamepad_codec_decoder.h
"
2
3
#include <string.h>
4
5
#include "
gamepad_codec_data_type.h
"
6
7
/**
8
* @file gamepad_codec_decoder.cpp
9
*/
10
11
namespace
gamepad::codec {
12
Decoder::Decoder
(Stream &stream) noexcept : stream_(stream), parser_(kGamepadInputStatePayloadSize) {}
13
14
const
gamepad::input::Tracker &
Decoder::Update
() noexcept {
15
input_tracker_.Tick();
16
17
while
(stream_.available() > 0) {
18
parser_.Process(stream_.read());
19
20
if
(parser_.is_complete()) {
21
OnFrame(parser_.data(), parser_.data_length());
22
}
23
}
24
25
return
input_tracker_;
26
}
27
28
void
Decoder::OnFrame(
const
uint8_t *data,
const
size_t
data_length) {
29
if
(data !=
nullptr
&& data[0] ==
static_cast<
uint8_t
>
(
DataType::kGamepadInputState
) &&
30
data_length == kGamepadInputStatePayloadSize) {
31
input_tracker_.Update(gamepad::input::State::FromBytes(data + 1));
32
}
33
}
34
}
// namespace gamepad::codec
gamepad::codec::Decoder::Decoder
Decoder(Stream &stream) noexcept
构造函数。
定义
gamepad_codec_decoder.cpp:12
gamepad::codec::Decoder::Update
const gamepad::input::Tracker & Update() noexcept
更新,需要在Loop中不断调用
定义
gamepad_codec_decoder.cpp:14
gamepad_codec_data_type.h
gamepad::codec::DataType::kGamepadInputState
@ kGamepadInputState
手柄输入状态(按钮 + 摇杆)。
定义
gamepad_codec_data_type.h:53
gamepad_codec_decoder.h
src
gamepad_codec_decoder.cpp
制作者
1.13.0