跳到主要内容

Application 框架

Application 框架是 LibXR 中的核心中间件之一,负责管理设备注册与应用模块调度,是 XRobot 系统集成与运行控制的基础。

模块组成

  • HardwareContainer:硬件容器类,支持设备对象的注册、查找、别名管理。
  • Application:应用模块抽象基类,需实现 OnMonitor() 方法。
  • ApplicationManager:模块调度器,用于统一管理多个 Application 实例并执行周期性任务。

HardwareContainer:硬件设备注册与查找

template <typename T>
struct Entry {
T& object;
std::initializer_list<const char*> aliases;
};

HardwareContainer container({
Entry<UART>{uart1, {"uart1", "console"}},
Entry<Motor>{gpio1, {"gpio1", "LED"}}
});

支持:

  • 多别名注册:同一个对象可注册多个别名。
  • 类型安全查找:支持模板化查找 Find<T>("alias")
  • 查找失败断言:FindOrExit<T>({...}) 可在未找到时报错退出。

Application / ApplicationManager:统一应用模块管理

class MyApp : public Application {
public:
void OnMonitor() override {
// 用户定义的周期任务逻辑
}
};

MyApp app;
manager.Register(app);
manager.MonitorAll(); // 周期调用所有模块的 OnMonitor()

支持:

  • 注册任意数量的模块;
  • 使用 LockFreeList 无锁结构存储模块;
  • 可用于实现定时任务调度、模块状态轮询等。

与 XRobot 的集成意义

XRobot 系统的自动生成工具会为每个模块自动生成注册代码,统一调用 HardwareContainerApplicationManager,完成设备注册与主循环调度的构建。

这使得所有模块可插拔化接入,支持快速扩展与平台无关运行。


更多示例与使用方式,请参考 xrobot_main.cpp 或模板生成代码。