GKD.RoboCtrl
RoboMaster Linux 电控:异步 IO、设备驱动与机器人控制
载入中...
搜索中...
未找到
roboctrl::io::can类 参考

CAN 设备对象,支持根据 ID 分发回调。 更多...

详细描述

CAN 设备对象,支持根据 ID 分发回调。

在文件 can.h 第 28 行定义.

#include <can.h>

类 roboctrl::io::can 继承关系图:
roboctrl::io::can 的协作图:

类

struct  info_type
 CAN 初始化参数。 更多...
 

Public 类型

using key_type = std::uint32_t
 

Public 成员函数

 can (const info_type &info)
 打开 CAN 设备。
 
void start ()
 启动接收协程;重复调用不会重复启动。
 
awaitable< void > send (can_id_type id, byte_span data)
 发送带 CAN ID 的帧。
 
awaitable< void > task ()
 接收循环任务。
 
std::string desc () const
 返回包含逻辑名称和 Linux 接口名的可读描述。
 
- Public 成员函数 继承自 roboctrl::io::keyed_io_base< std::uint32_t >
void on_data (const std::uint32_t &key, callback_fn< byte_span > auto fn, size_t size=0)
 注册指定 key 的回调。
 
void on_data (const std::uint32_t &key, Fn &&fn)
 注册平凡类型包的回调。
 
- Public 成员函数 继承自 roboctrl::utils::immovable_base
 immovable_base (immovable_base &&)=delete
 
immovable_base & operator= (immovable_base &&)=delete
 
- Public 成员函数 继承自 roboctrl::utils::not_copyable_base
 not_copyable_base (const not_copyable_base &)=delete
 
not_copyable_base & operator= (const not_copyable_base &)=delete
 

额外继承的成员函数

- Protected 成员函数 继承自 roboctrl::io::keyed_io_base< std::uint32_t >
void dispatch (const std::uint32_t &key, byte_span data)
 将数据派发给对应 key 的回调。
 
std::optional< size_t > package_size (const std::uint32_t &key) const
 
- Protected 成员函数 继承自 roboctrl::log::logable< can >
void log (log_level level, std::format_string< Args... > fmt, Args &&...args) const
 输出日志
 
void log_debug (std::format_string< Args... > fmt, Args &&...args) const
 输出debug日志
 
void log_info (std::format_string< Args... > fmt, Args &&...args) const
 输出info日志
 
void log_warn (std::format_string< Args... > fmt, Args &&...args) const
 输出warn日志
 
void log_error (std::format_string< Args... > fmt, Args &&...args) const
 输出error日志
 

成员类型定义说明

◆ key_type

using roboctrl::io::can::key_type = std::uint32_t

在文件 can.h 第 45 行定义.

构造及析构函数说明

◆ can()

can::can ( const info_type &  info)

打开 CAN 设备。

在文件 can.cpp 第 41 行定义.

引用了 roboctrl::async::io_context().

成员函数说明

◆ desc()

std::string roboctrl::io::can::desc ( ) const
inline

返回包含逻辑名称和 Linux 接口名的可读描述。

在文件 can.h 第 69 行定义.

引用了 roboctrl::io::can::info_type::interface_name , 以及 roboctrl::io::can::info_type::name.

◆ send()

roboctrl::awaitable< void > can::send ( can_id_type  id,
byte_span  data 
)

发送带 CAN ID 的帧。

同一 ID 和 DLC 尚未写出的帧只保留最新值;正在写出的帧无法撤回。

在文件 can.cpp 第 110 行定义.

引用了 roboctrl::log::logable< can >::log_debug() , 以及 roboctrl::io::write_queue::send_latest().

◆ start()

void can::start ( )

启动接收协程;重复调用不会重复启动。

在文件 can.cpp 第 79 行定义.

引用了 roboctrl::async::spawn() , 以及 task().

◆ task()

roboctrl::awaitable< void > can::task ( )

接收循环任务。

在文件 can.cpp 第 87 行定义.

引用了 roboctrl::io::keyed_io_base< std::uint32_t >::dispatch() , 以及 roboctrl::log::logable< can >::log_warn().

被这些函数引用 start().


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