6 错误码介绍
6.1 概述
ag_driver 在内部发生某些事件时,会通过回调函数通知调用者。
这些事件定义在 ag_driver 工程文件 common/error_code.hpp 中。
这些事件有三个级别:通知、警告和错误。每个事件有一个错误码,这里介绍错误码的含义。
6.2 错误码
ERRCODE_SUCCESS 正常状态。
ag_driver不会通知这个事件。ERRCODE_PCAPEXIT 播放 PCAP 文件时,
ag_driver在每次解析到文件结束时,通知调用者。 通过选项AGInputParam.pcap_repeat,可以指定是否循环播放文件。如果是循环播放,ag_driver报告事件 ERRCODE_PCAPREPEAT;如果不是,则报告事件 ERRCODE_PCAPEXIT。ERRCODE_PCAPREPEAT 请参考 ERRCODE_PCAPEXIT 的说明。
ERRCODE_MSOPTIMEOUT
ag_driver持续等待和接收 MSOP Packet,如果在 1 秒内没有收到 MSOP Packet,ag_driver报告事件 ERRCODE_MSOPTIMEOUT。ERRCODE_NODIFOPRECV 收到 MSOP Packet 时,会检查这些参数是否可用。如果在 1 秒内不可用,
ag_driver报告事件 ERRCODE_NODIFOPRECV。 对于 MEMS 雷达,标定工作在雷达内部已经完成,DIFOP Packet 不是必要的,所以ag_driver不会报告这个事件。ERRCODE_WRONGMSOPLEN 每一种雷达的 MSOP Packet 的包长是确定的,且包头开始位置包括若干标志字节。
ag_driver接收到 MSOP Packet 后,先检查包长是否匹配,如果不匹配,则报告错误 ERRCODE_WRONGMSOPLEN,然后再检查标志字节,如果不匹配,则报告错误 ERRCODE_MSOPID。ERRCODE_WRONGMSOPID 请参考 ERRCODE_WRONGMSOPLEN 的说明。
ERRCODE_WRONGDIFOPLEN 每一种雷达的 DIFOP Packet 的包长是确定的,且包头的开始位置包括若干标志字节。
ag_driver接收到 DIFOP Packet 后,会先检查包长是否匹配,如果不匹配,则报告错误 ERRCODE_WRONGDIFOPLEN,然后再检查标志字节,如果不匹配,则报告错误 ERRCODE_DIFOPID。ERRCODE_WRONGDIFOPID 请参考 ERRCODE_WRONGDIFOPLEN 的说明。
ERRCODE_ZEROPOINTS
ag_driver构建好点云后,通过回调函数返还给调用者。返还前,它检查点云是否为空(即一个点都没有),如果为空,则报告错误 ERRCODE_ZEROPOINTS。ERRCODE_PKTBUFOVERFLOW
ag_driver有两个线程:接收线程和处理线程。为了让接收线程尽快接收,防止丢包,两个线程之间有一个 MSOP/DIFOP Packet 队列,接收线程将 Packet 放入队列,处理线程从队列中取出 Packet。 如果处理线程太忙,来不及读出 Packet,则这个队列的长度会超过指定的阈值,这时ag_driver会清空队列,并报告错误 ERRCODE_PKTBUFOVERFLOW。ERRCODE_CLOUDOVERFLOW
ag_driver从 MSOP Packet 解析点,并将它们分割成点云帧。 对于 MEMS 雷达,根据 Packet 的序列号分帧。 如果 Packet 中的数据有问题,不能触发分帧,则ag_driver将在当前点云实例中持续累积点,并持续消耗内存。为了避免这个问题,ag_driver在收到解析 MSOP Packet 时,检查当前点云实例中点的数量,如果超过了指定的阈值,则报告错误 ERRCODE_CLOUDOVERFLOW。ERRCODE_STARTBEFOREINIT 使用
ag_driver包括三个步骤:创建实例、初始化 Init() 和启动 Start()。使用者调用 Start() 之前必须先调用 Init(),如果没有遵循这个次序,则ag_driver报告错误 ERRCODE_STARTBEFOREINIT。ERRCODE_PCAPWRONGPATH 解析 PCAP 文件时,
ag_driver从读取 AGInputParam.pcap_path 指定的文件路径读取 PCAP 数据。如果这个文件打开失败,则 ag_driver 报告错误 ERRCODE_PCAPWRONGPATH。ERRCODE_POINTCLOUDNULL
ag_driver不负责分配点云实例,它通过回调函数从调用者获得空闲的点云实例,填充它,然后通过回调函数返还给调用者。 如果从调用者获得的点云实例无效,则ag_driver报告错误 ERRCODE_POINTCLOUDNULL。