CodexPadFrameDecoder Arduino 库 1.0.0

载入中...
搜索中...
未找到
Public 类型 | Public 成员函数 | 静态 Public 属性 | 所有成员列表
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 校验，成功接收完整的有效载荷后，输出按键状态和摇杆轴值。

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

在文件 codex_pad_frame_decoder.h 第 29 行定义.

## 成员枚举类型说明

## ◆ Axis

enum class CodexPadFrameDecoder::Axis : size_t
| strong

摇杆轴索引枚举。

枚举值
kLeftStickX | 左摇杆X轴。
kLeftStickY | 左摇杆Y轴。
kRightStickX | 右摇杆X轴。
kRightStickY | 右摇杆Y轴。

在文件 codex_pad_frame_decoder.h 第 253 行定义.

## ◆ 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.h 第 71 行定义.

## 构造及析构函数说明

## ◆ CodexPadFrameDecoder()

CodexPadFrameDecoder::CodexPadFrameDecoder | ( | Stream & | stream | ) |

构造函数。

参数

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

在文件 codex_pad_frame_decoder.cpp 第 9 行定义.

## 成员函数说明

## ◆ axis_value()

uint8_t CodexPadFrameDecoder::axis_value | ( | const Axis | axis | ) | const

获取指定摇杆轴的原始值（0~255）。

参数

  [in] | axis | 要读取的轴。

返回
  该轴的当前值，中心为 0x80。

在文件 codex_pad_frame_decoder.cpp 第 52 行定义.

## ◆ axis_values()

const uint8_t * CodexPadFrameDecoder::axis_values | ( |  | ) | const

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

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

- 索引 0：左摇杆 X 轴 (Axis::kLeftStickX)
- 索引 1：左摇杆 Y 轴 (Axis::kLeftStickY)
- 索引 2：右摇杆 X 轴 (Axis::kRightStickX)
- 索引 3：右摇杆 Y 轴 (Axis::kRightStickY) 每个值的范围 0~255，中心位置为 128 (0x80)。
  返回
    const uint8_t* 指向 4 字节轴值数组的只读指针。
  注解
    返回的指针在 CodexPadFrameDecoder 对象生命周期内有效，下次调用 Update() 后内容会更新。
  示例：
  const uint8_t *axes = g_codex_pad_frame_decoder.axis_values();
  uint8_t left_stick_x = axes[static_cast<size_t>(CodexPadFrameDecoder::Axis::kLeftStickX)];
  uint8_t left_stick_y = axes[static_cast<size_t>(CodexPadFrameDecoder::Axis::kLeftStickY)];
  CodexPadFrameDecoder::Axis::kLeftStickX
  @ kLeftStickX
  左摇杆X轴。
  定义 codex_pad_frame_decoder.h:262
  CodexPadFrameDecoder::Axis::kLeftStickY
  @ kLeftStickY
  左摇杆Y轴。
  定义 codex_pad_frame_decoder.h:272

在文件 codex_pad_frame_decoder.cpp 第 56 行定义.

## ◆ button_state()

bool CodexPadFrameDecoder::button_state | ( | const Button | button | ) | const

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

返回值

  true | 按键被按下或持续按下。
  false | 按键没有被按下或持续按下。

在文件 codex_pad_frame_decoder.cpp 第 44 行定义.

## ◆ 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();
  if ((button_states & CodexPadFrameDecoder::Button::kUp)) != 0) {
  // 方向上按键被按下
  }
  CodexPadFrameDecoder::button_states
  uint32_t button_states() const
  以位掩码形式获取所有按键的当前状态。
  定义 codex_pad_frame_decoder.cpp:48
  CodexPadFrameDecoder::Button::kUp
  @ kUp
  上。
  定义 codex_pad_frame_decoder.h:80

在文件 codex_pad_frame_decoder.cpp 第 48 行定义.

## ◆ HasAxisValueChanged()

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

查询轴值是否发生变化。

参数

  [in] | axis | 轴。
  [in] | threshold | 阈值。

返回值

  true | 轴值发生变化。
  false | 轴值未发生变化。

在文件 codex_pad_frame_decoder.cpp 第 60 行定义.

## ◆ holding()

bool CodexPadFrameDecoder::holding | ( | const Button | button | ) | const

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

返回值

  true | 按键被持续按下。
  false | 按键没有被持续按下。

在文件 codex_pad_frame_decoder.cpp 第 40 行定义.

## ◆ pressed()

bool CodexPadFrameDecoder::pressed | ( | const Button | button | ) | const

查询按键是否被按下。

返回值

  true | 按键被按下。
  false | 按键没有被按下。

在文件 codex_pad_frame_decoder.cpp 第 32 行定义.

## ◆ released()

bool CodexPadFrameDecoder::released | ( | const Button | button | ) | const

查询按键是否被释放。

返回值

  true | 按键被释放。
  false | 按键没有被释放。

在文件 codex_pad_frame_decoder.cpp 第 36 行定义.

## ◆ Update()

void CodexPadFrameDecoder::Update | ( |  | ) |

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

在文件 codex_pad_frame_decoder.cpp 第 24 行定义.

## 类成员变量说明

## ◆ kAxisCenter

uint8_t CodexPadFrameDecoder::kAxisCenter = 0x80
| static constexpr

摇杆轴的中心值（静止时的典型值）。

在文件 codex_pad_frame_decoder.h 第 49 行定义.

## ◆ kAxisValueNum

size_t CodexPadFrameDecoder::kAxisValueNum = 4
| static constexpr

摇杆轴值的数量。

在文件 codex_pad_frame_decoder.h 第 39 行定义.

## ◆ kPayloadType

uint8_t CodexPadFrameDecoder::kPayloadType = 0x01
| static constexpr

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

在文件 codex_pad_frame_decoder.h 第 59 行定义.

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

- src/codex_pad_frame_decoder.h
- src/codex_pad_frame_decoder.cpp