CodexPadFrameDecoder Arduino 库 1.0.3
载入中...
搜索中...
未找到
CodexPadFrameDecoder类 参考

CodexPad 手柄数据帧解码主类。 更多...

#include <codex_pad_frame_decoder.h>

Public 类型

enum class  Button : uint32_t {
  kUp = uint32_t{1} << 0 , kDown = uint32_t{1} << 1 , kLeft = uint32_t{1} << 2 , kRight = uint32_t{1} << 3 ,
  kSquareX = uint32_t{1} << 4 , kTriangleY = uint32_t{1} << 5 , kCrossA = uint32_t{1} << 6 , kCircleB = uint32_t{1} << 7 ,
  kL1 = uint32_t{1} << 8 , kL2 = uint32_t{1} << 9 , kL3 = uint32_t{1} << 10 , kR1 = uint32_t{1} << 11 ,
  kR2 = uint32_t{1} << 12 , kR3 = uint32_t{1} << 13 , kSelect = uint32_t{1} << 14 , kStart = uint32_t{1} << 15 ,
  kHome = uint32_t{1} << 16
}
 手柄按键掩码枚举。 更多...
 
enum class  Axis : size_t { kLeftStickX , kLeftStickY , kRightStickX , kRightStickY }
 摇杆轴索引枚举。 更多...
 

Public 成员函数

 CodexPadFrameDecoder (Stream &stream)
 构造函数。
 
void Update ()
 更新解码器状态。需要在主循环中不断调用此函数,以喂入并解析字节流。
 
bool pressed (const Button button) const
 查询按键是否被按下。
 
bool released (const Button button) const
 查询按键是否被释放。
 
bool holding (const Button button) const
 查询按键是否被持续按下。
 
bool button_state (const Button button) const
 查询按键是否被按下或持续按下。
 
uint32_t button_states () const
 以位掩码形式获取所有按键的当前状态。
 
uint8_t axis_value (const Axis axis) const
 获取指定摇杆轴的原始值(0~255)。
 
const uint8_t * axis_values () const
 获取所有模拟轴的当前值(返回只读数组指针)。
 
bool HasAxisValueChanged (const Axis axis, const uint8_t threshold) const
 查询轴值是否发生变化。
 

静态 Public 属性

static constexpr size_t kAxisValueNum = 4
 摇杆轴值的数量。
 
static constexpr uint8_t kAxisCenter = 0x80
 摇杆轴的中心值(静止时的典型值)。
 
static constexpr uint8_t kPayloadType = 0x01
 手柄输入报告的类型标识(有效载荷的第一个字节)。
 

详细描述

CodexPad 手柄数据帧解码主类。

通过外部传入的 Stream 对象获取原始字节流,内部使用 robust_frame 协议解析器完成帧同步、转义还原和 CRC 校验,成功接收完整的有效载荷后,输出按键状态和摇杆轴值。

示例
ble_uno_or_nl_16_module/basic_polling/basic_polling.ino , 以及 ble_uno_or_nl_16_module/inputs_detection/inputs_detection.ino.

在文件 codex_pad_frame_decoder.h29 行定义.

成员枚举类型说明

◆ Axis

enum class CodexPadFrameDecoder::Axis : size_t
strong

摇杆轴索引枚举。

枚举值
kLeftStickX 

左摇杆X轴。

kLeftStickY 

左摇杆Y轴。

kRightStickX 

右摇杆X轴。

kRightStickY 

右摇杆Y轴。

在文件 codex_pad_frame_decoder.h253 行定义.

◆ Button

enum class CodexPadFrameDecoder::Button : uint32_t
strong

手柄按键掩码枚举。

枚举值
kUp uint32_t{1} << 0 

上。

kDown uint32_t{1} << 1 

下。

kLeft uint32_t{1} << 2 

左。

kRight uint32_t{1} << 3 

右。

kSquareX uint32_t{1} << 4 

方形 或者 X。

kTriangleY uint32_t{1} << 5 

三角形 或者 Y。

kCrossA uint32_t{1} << 6 

叉形 或者 A。

kCircleB uint32_t{1} << 7 

圆形 或者 B。

kL1 uint32_t{1} << 8 

L1。

kL2 uint32_t{1} << 9 

L2。

kL3 uint32_t{1} << 10 

L3。

kR1 uint32_t{1} << 11 

R1。

kR2 uint32_t{1} << 12 

R2。

kR3 uint32_t{1} << 13 

R3。

kSelect uint32_t{1} << 14 

选择。

kStart uint32_t{1} << 15 

开始。

kHome uint32_t{1} << 16 

首页。

在文件 codex_pad_frame_decoder.h71 行定义.

构造及析构函数说明

◆ CodexPadFrameDecoder()

CodexPadFrameDecoder::CodexPadFrameDecoder ( Stream & stream)

构造函数。

参数
[in]stream用于读取数据字节流的 Stream 对象引用。

在文件 codex_pad_frame_decoder.cpp9 行定义.

成员函数说明

◆ axis_value()

uint8_t CodexPadFrameDecoder::axis_value ( const Axis axis) const

获取指定摇杆轴的原始值(0~255)。

参数
[in]axis要读取的轴。
返回
该轴的当前值,中心为 0x80。

在文件 codex_pad_frame_decoder.cpp52 行定义.

◆ axis_values()

const uint8_t * CodexPadFrameDecoder::axis_values ( ) const

获取所有模拟轴的当前值(返回只读数组指针)。

返回指向内部 4 字节数组的 const 指针,索引与 Axis 枚举对应关系:

在文件 codex_pad_frame_decoder.cpp56 行定义.

◆ button_state()

bool CodexPadFrameDecoder::button_state ( const Button button) const

查询按键是否被按下或持续按下。

返回值
true按键被按下或持续按下。
false按键没有被按下或持续按下。

在文件 codex_pad_frame_decoder.cpp44 行定义.

◆ button_states()

uint32_t CodexPadFrameDecoder::button_states ( ) const

以位掩码形式获取所有按键的当前状态。

返回
一个32位无符号整数,每一位(bit)表示 Button 枚举中对应按键的状态(1为按下,0为未按下)。 位的分配从最低有效位(LSB,第0位)开始,依次对应 Button 中的各个值。 可使用位与操作 (&) 配合具体的 Button 枚举值来检查特定按键状态。 示例:
const uint32_t button_states = g_codex_pad_frame_decoder.button_states();
// 方向上按键被按下
}
uint32_t button_states() const
以位掩码形式获取所有按键的当前状态。

在文件 codex_pad_frame_decoder.cpp48 行定义.

◆ HasAxisValueChanged()

bool CodexPadFrameDecoder::HasAxisValueChanged ( const Axis axis,
const uint8_t threshold ) const

查询轴值是否发生变化。

参数
[in]axis轴。
[in]threshold阈值。
返回值
true轴值发生变化。
false轴值未发生变化。

在文件 codex_pad_frame_decoder.cpp60 行定义.

◆ holding()

bool CodexPadFrameDecoder::holding ( const Button button) const

查询按键是否被持续按下。

返回值
true按键被持续按下。
false按键没有被持续按下。

在文件 codex_pad_frame_decoder.cpp40 行定义.

◆ pressed()

bool CodexPadFrameDecoder::pressed ( const Button button) const

查询按键是否被按下。

返回值
true按键被按下。
false按键没有被按下。

在文件 codex_pad_frame_decoder.cpp32 行定义.

◆ released()

bool CodexPadFrameDecoder::released ( const Button button) const

查询按键是否被释放。

返回值
true按键被释放。
false按键没有被释放。

在文件 codex_pad_frame_decoder.cpp36 行定义.

◆ Update()

void CodexPadFrameDecoder::Update ( )

更新解码器状态。需要在主循环中不断调用此函数,以喂入并解析字节流。

在文件 codex_pad_frame_decoder.cpp24 行定义.

类成员变量说明

◆ kAxisCenter

uint8_t CodexPadFrameDecoder::kAxisCenter = 0x80
staticconstexpr

摇杆轴的中心值(静止时的典型值)。

在文件 codex_pad_frame_decoder.h49 行定义.

◆ kAxisValueNum

size_t CodexPadFrameDecoder::kAxisValueNum = 4
staticconstexpr

摇杆轴值的数量。

在文件 codex_pad_frame_decoder.h39 行定义.

◆ kPayloadType

uint8_t CodexPadFrameDecoder::kPayloadType = 0x01
staticconstexpr

手柄输入报告的类型标识(有效载荷的第一个字节)。

在文件 codex_pad_frame_decoder.h59 行定义.


该类的文档由以下文件生成: