HMS 管理
概述
HMS(健康管理系统)是对无人机各模块的运行健康状态的一个监控系统。在遥控器上已经提供了交互界面查看各模块的工作状态是否有异常。PSDK 则提供了基本接口来获取各模块异常的错误信息,便于 PSDK 程序获知无人机各模块的工作状态。
基本概念
HMS 错误信息
单条 HMS 的错误信息包括一个错误 ID,错误的 Index 和一个错误的等级,在订阅 HMS 信息后,这些错误信息将会打包发送给 PSDK。PSDK 根据这些错误信息的数据解析成字符串,并从终端打印出来。
使用 HMS 功能
1. 初始化 HMS 功能模块
在使用 HMS 功能的相关接口之前,需要先调用 UAV_HmsManager_Init
接口初始化 HMS 功能模块。
returnCode = UAV_HmsManager_Init();
if (returnCode != 0) {
USER_LOG_ERROR("Hms sample init error, error code:0x%08llX", returnCode);
goto out;
}
2. 注册 HMS 信息回调
开发者可通过调用 UAVHmsManager_RegHmsInfoCallback
接口注册 HMS 信息回调的方式获取到实时的 HMS 错误信息推送,当 HMS 错误发生时,用户可以在 UAVHmsManager_RegHmsInfoCallback
回调函数中获取到具体的 HMS 信息。
returnCode = UAV_HmsManager_RegHmsInfoCallback(UAVHmsManager_HmsInfoCallback);
if (returnCode != 0) {
USER_LOG_ERROR("Register callback function of push HMS information failed, error code:0x%08llX", returnCode);
goto out;
}
3. 解析 HMS 信息
当用户收到 HMS 信息的错误码之后,需要通过查表的方式获取,通过错误码以及区分无人机是否在空中,来获取到对应的错误字符串信息,结合对应的错误码可以采取相应的措施,保障无人机的飞行安全。
static void UAV_HmsManager_HmsInfoCallback(T_UAVHmsInfoTable hmsInfoTable)
{
for (int i = 0; i < hmsInfoTable.hmsInfoNum; i++)
{
UAV_LOG_INFO("index %d: errorCode %d, componentIndex %d, errorLevel %d", i,
hmsInfoTable.hmsInfo[i].errorCode, hmsInfoTable.hmsInfo[i].componentIndex, hmsInfoTable.hmsInfo[i].errorLevel);
}
}