CodexPad Arduino 库 2.1.7
载入中...
搜索中...
未找到
CodexPad类 参考

CodexPad主类 更多...

#include <codex_pad.h>

Public 类型

enum class  TxPower : int8_t {
  kMinus16dBm = -16 , kMinus12dBm = -12 , kMinus8dBm = -8 , kMinus5dBm = -5 ,
  kMinus3dBm = -3 , kMinus1dBm = -1 , k0dBm = 0 , k1dBm = 1 ,
  k2dBm = 2 , k3dBm = 3 , k4dBm = 4 , k5dBm = 5 ,
  k6dBm = 6
}
 
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 成员函数

 CodexPad ()
 构造函数
 
 ~CodexPad ()
 析构函数
 
void Init ()
 初始化
 
bool Connect (const std::string &bluetooth_device_address, const uint32_t timeout_ms=5000)
 连接
 
bool ScanAndConnect (const uint32_t button_mask)
 扫描附近的 CodexPad 设备,并自动连接到一个按键状态与指定掩码匹配的设备。
 
void Disconnect ()
 断开连接
 
void Update ()
 更新,需要在Loop中不断调用
 
bool is_connected () const
 是否连接
 
bool set_remote_tx_power (const TxPower power)
 设置发射功率,连接状态下调用,立即生效于当前连接,下次连接生效
 
const std::string & remote_device_name () const
 获取CodexPad的型号
 
const std::string & remote_model_number () const
 获取CodexPad的型号
 
const std::array< uint8_t, 3 > remote_firmware_version () const
 获取CodexPad的固件版本
 
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
 获取轴值
 
std::array< uint8_t, kAxisValueNumaxis_values () const
 获取所有模拟轴的当前值
 
bool HasAxisValueChanged (const Axis axis, const uint8_t threshold) const
 查询轴值是否发生变化
 
NimBLEClient * ble_client () const
 获取 BLE 客户端对象
 

静态 Public 成员函数

static constexpr uint32_t ButtonMask ()
 
template<typename FirstButton, typename... RestButtons>
static constexpr uint32_t ButtonMask (FirstButton first, RestButtons... rest)
 将多个按键标识符组合成一个32位的按钮掩码。
 

静态 Public 属性

static constexpr size_t kAxisValueNum = 4
 轴值数量
 
static constexpr uint8_t kAxisCenter = 0x80
 轴中心值
 

详细描述

CodexPad主类

示例
basic_polling.ino, inputs_detection.ino , 以及 scan_and_connect.ino.

在文件 codex_pad.h46 行定义.

成员枚举类型说明

◆ Axis

enum class CodexPad::Axis : size_t
strong
枚举值
kLeftStickX 

左摇杆X轴

kLeftStickY 

左摇杆Y轴

kRightStickX 

右摇杆X轴

kRightStickY 

右摇杆Y轴

在文件 codex_pad.h402 行定义.

◆ Button

enum class CodexPad::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.h220 行定义.

◆ TxPower

enum class CodexPad::TxPower : int8_t
strong
枚举值
kMinus16dBm -16 

-16 dBm

kMinus12dBm -12 

-12 dBm

kMinus8dBm -8 

-8 dBm

kMinus5dBm -5 

-5 dBm

kMinus3dBm -3 

-3 dBm

kMinus1dBm -1 

-1 dBm

k0dBm 

0 dBm

k1dBm 

1 dBm

k2dBm 

2 dBm

k3dBm 

3 dBm

k4dBm 

4 dBm

k5dBm 

5 dBm

k6dBm 

6 dBm

在文件 codex_pad.h78 行定义.

构造及析构函数说明

◆ CodexPad()

CodexPad::CodexPad ( )

构造函数

在文件 codex_pad.cpp30 行定义.

◆ ~CodexPad()

CodexPad::~CodexPad ( )

析构函数

在文件 codex_pad.cpp32 行定义.

成员函数说明

◆ axis_value()

uint8_t CodexPad::axis_value ( const Axis axis) const

获取轴值

参数
[in]axis
返回
轴值,范围 0~255

在文件 codex_pad.cpp165 行定义.

◆ axis_values()

std::array< uint8_t, CodexPad::kAxisValueNum > CodexPad::axis_values ( ) const

获取所有模拟轴的当前值

返回
长度为 kAxisValueNum (4个元素) 的轴值数组,每个元素代表特定轴的位置,范围 0-255。数组索引与 Axis 枚举对应关系:

典型中心位置值为 128 (0x80)。

示例:

const auto axes = codex_pad.axis_values();
const uint8_t left_stick_x = axes[static_cast<size_t>(CodexPad::Axis::kLeftStickX)]; // 获取左摇杆X轴值
@ kLeftStickX
左摇杆X轴

在文件 codex_pad.cpp167 行定义.

◆ ble_client()

NimBLEClient * CodexPad::ble_client ( ) const
inline

获取 BLE 客户端对象

此函数返回内部 BLE 客户端对象的指针。调用者不应尝试释放/删除它。

返回
BLE 客户端对象
示例
basic_polling.ino, inputs_detection.ino , 以及 scan_and_connect.ino.

在文件 codex_pad.h903 行定义.

◆ button_state()

bool CodexPad::button_state ( const Button button) const

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

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

在文件 codex_pad.cpp161 行定义.

◆ button_states()

uint32_t CodexPad::button_states ( ) const

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

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

在文件 codex_pad.cpp163 行定义.

◆ ButtonMask() [1/2]

static constexpr uint32_t CodexPad::ButtonMask ( )
inlinestaticconstexpr

在文件 codex_pad.h445 行定义.

◆ ButtonMask() [2/2]

template<typename FirstButton, typename... RestButtons>
static constexpr uint32_t CodexPad::ButtonMask ( FirstButton first,
RestButtons... rest )
inlinestaticconstexpr

将多个按键标识符组合成一个32位的按钮掩码。

这是一个工具函数,用于创建一个表示特定按键组合(例如 Start + A)的位掩码。 生成的掩码可作为参数用于 ScanAndConnect 等方法,或用于与 button_states 返回的组合状态进行比较。

参数
[in]button一个或多个来自 Button 枚举的按键标识符。
返回
一个32位无符号整数,其中与输入的 Button 值对应的位被设为1。
注解
这是一个 constexpr 函数,允许掩码在编译时计算。 示例 - 为 Start 和 Cross/A 按键创建掩码:
// 创建一个表示 Start 和 Cross/A 按键被同时按下的掩码。
constexpr auto kStartAMask = CodexPad::ButtonMask(CodexPad::Button::kStart, CodexPad::Button::kCrossA);
// 使用该掩码来扫描并连接到正按住这些按键的设备。
codex_pad.ScanAndConnect(kStartAMask);
// 或者,用该掩码检查当前的组合按键状态。
if ((codex_pad.button_states() & kStartAMask) == kStartAMask) {
// Start 和 Cross/A 按键当前均被按下。
}

在文件 codex_pad.h493 行定义.

◆ Connect()

bool CodexPad::Connect ( const std::string & bluetooth_device_address,
const uint32_t timeout_ms = 5000 )

连接

参数
[in]bluetooth_device_addressCodexPad的蓝牙设备地址(BD_ADDR),格式为"XX:XX:XX:XX:XX:XX",X为数字或者大写字母, 半角冒号分隔
[in]timeout_ms超时时间,单位毫秒
返回值
true连接成功
false连接失败
示例
basic_polling.ino , 以及 inputs_detection.ino.

在文件 codex_pad.cpp40 行定义.

◆ Disconnect()

void CodexPad::Disconnect ( )
inline

断开连接

在文件 codex_pad.h658 行定义.

◆ HasAxisValueChanged()

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

查询轴值是否发生变化

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

在文件 codex_pad.cpp175 行定义.

◆ holding()

bool CodexPad::holding ( const Button button) const

查询按键是否被持续按下

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

在文件 codex_pad.cpp157 行定义.

◆ Init()

void CodexPad::Init ( )

初始化

在文件 codex_pad.cpp34 行定义.

◆ is_connected()

bool CodexPad::is_connected ( ) const

是否连接

返回值
true已连接
false未连接

在文件 codex_pad.cpp125 行定义.

◆ pressed()

bool CodexPad::pressed ( const Button button) const

查询按键是否被按下

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

在文件 codex_pad.cpp149 行定义.

◆ released()

bool CodexPad::released ( const Button button) const

查询按键是否被释放

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

在文件 codex_pad.cpp153 行定义.

◆ remote_device_name()

const std::string & CodexPad::remote_device_name ( ) const
inline

获取CodexPad的型号

返回
CodexPad的型号
示例
basic_polling.ino, inputs_detection.ino , 以及 scan_and_connect.ino.

在文件 codex_pad.h710 行定义.

◆ remote_firmware_version()

const std::array< uint8_t, 3 > CodexPad::remote_firmware_version ( ) const
inline

获取CodexPad的固件版本

返回
CodexPad的固件版本
示例
basic_polling.ino, inputs_detection.ino , 以及 scan_and_connect.ino.

在文件 codex_pad.h734 行定义.

◆ remote_model_number()

const std::string & CodexPad::remote_model_number ( ) const
inline

获取CodexPad的型号

返回
CodexPad的型号
示例
basic_polling.ino, inputs_detection.ino , 以及 scan_and_connect.ino.

在文件 codex_pad.h722 行定义.

◆ ScanAndConnect()

bool CodexPad::ScanAndConnect ( const uint32_t button_mask)

扫描附近的 CodexPad 设备,并自动连接到一个按键状态与指定掩码匹配的设备。

此方法会主动扫描蓝牙设备。当发现一个或多个 CodexPad 设备,其当前按键状态与提供的 button_mask 完全匹配时,它将尝试建立连接。 如果附近有多个设备都符合按键掩码,则会选择信号最强(RSSI 值最大)的设备进行连接。

参数
[in]button_mask用于匹配目标设备按键状态的32位按钮掩码。 使用 ButtonMask() 函数来组合多个 Button 枚举值。
返回值
true连接成功(找到了符合按键掩码的设备并成功连接)。
false连接失败(未找到匹配设备或连接尝试失败)。
注解
这是一个阻塞式调用。它会持续扫描,直到找到匹配的设备、连接建立或达到内部超时时间。
警告
**请勿**在按钮掩码中包含 Button::kHome。按住 Home 键会触发设备重启,这将中断连接过程。 示例:
pad.Init();
// 持续尝试连接到 Start 和 Cross/A 按键被同时按下的设备。
// 可选:在尝试之间添加短暂延时或其他操作。
delay(100);
}
// 循环退出,意味着连接成功。
Serial.println("CodexPad 连接成功!");
bool ScanAndConnect(const uint32_t button_mask)
扫描附近的 CodexPad 设备,并自动连接到一个按键状态与指定掩码匹配的设备。
CodexPad()
构造函数
void Init()
初始化
示例
scan_and_connect.ino.

在文件 codex_pad.cpp51 行定义.

◆ set_remote_tx_power()

bool CodexPad::set_remote_tx_power ( const TxPower power)

设置发射功率,连接状态下调用,立即生效于当前连接,下次连接生效

参数
[in]power发射功率
返回值
true成功
false失败
示例
basic_polling.ino, inputs_detection.ino , 以及 scan_and_connect.ino.

在文件 codex_pad.cpp127 行定义.

◆ Update()

void CodexPad::Update ( )

更新,需要在Loop中不断调用

在文件 codex_pad.cpp104 行定义.

类成员变量说明

◆ kAxisCenter

uint8_t CodexPad::kAxisCenter = 0x80
staticconstexpr

轴中心值

在文件 codex_pad.h66 行定义.

◆ kAxisValueNum

size_t CodexPad::kAxisValueNum = 4
staticconstexpr

轴值数量

在文件 codex_pad.h56 行定义.


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