我正在为订阅主题实现回调。我已经搜索了一段时间,但找不到有关实现回叫和解码回叫的任何真正详细的说明。我很容易就能运行遥测示例,但是它没有实现回调,因为它只是在设置主题持续一定时间并手动提取主题数据后才循环。这种方法在生产中效果很好,因为每个主题的出现速度都不一样,因此需要回电。
我已经能够获得我认为正确的触发回调的信息,但是我找不到任何有关如何解码回调的文档。我正在寻找(1)确认我的方法是正确的,以及(2)有关如何正确解码回叫中的数据以获取我需要的值的任何信息,特别是对于TOPIC_QUATERNION。我的实施摘要如下。在此先感谢您的任何指导。
1)创建程序包
2)启动程序包
3)使用以下方法注册回调:registerUserPackageUnpackCallback-这是正确的吗?????
4)解码回调-我该怎么做??
//**********************create package 1st*****************
// Package 3: Subscribe to Quaternion at freq 200 Hz.
pkgIndex = 3;
freq = 200;
TopicName topicList200Hz[] = { TOPIC_QUATERNION, TOPIC_HARD_SYNC };
numTopic = sizeof(topicList200Hz) / sizeof(topicList200Hz[0]);
enableTimestamp = false;
pkgStatus = vehicle->subscribe->initPackageFromTopicList(
pkgIndex, numTopic, topicList200Hz, enableTimestamp, freq);
if (!(pkgStatus))
{
return pkgStatus;
}
//**********************START PACKAGE*****************
subscribeStatus = vehicle->subscribe->startPackage(pkgIndex, responseTimeout);
if (ACK::getError(subscribeStatus) != ACK::SUCCESS)
{
ACK::getErrorCodeMessage(subscribeStatus, __func__);
// Cleanup before return
vehicle->subscribe->removePackage(pkgIndex, responseTimeout);
return false;
}else {
//********************************* I assign the callback with the proper index**********
vehicle->subscribe->registerUserPackageUnpackCallback(pkgIndex, package3Callback);
//vehicle->subscribe.
}
void package3Callback(Vehicle *vehiclePtr, RecvContainer recvFrame, UserData userData){
std::cout << "package3Callback called.\n";
*********************** HOW DO I DECODE THIS???????????****************
}