前面准备的:
在头文件加
//add
int responseAck(GlinkMessage_t *msg,int timeAck);
void recvTimeSyncFuncAyn(GlinkMessage_t *msg);
void recvTimeSyncFunc(GlinkMessage_t *msg);//
//add
struct timezone set_tz; //时区
1.先完成自己的接口函数 【GduNest.cpp】
void GduNest::recvTimeSyncFunc(GlinkMessage_t *msg)
2.
2.
在上面加一个异步的接口函数在里面起一个线程 ;
void GduNest::recvTimeSyncFuncAyn(GlinkMessage_t *msg)
{
GlinkMessage_t* msg_copy = Glink_createEmptyMsg(GLINK_MAX_PAYLOAD_LEN);
if (NULL == msg_copy) {
dzlog_error("------recvTimeSyncFuncAyn Glink_createEmptyMsg failed!");
return;
}
memcpy(msg_copy, msg, msg->len + sizeof(GlinkMessage_t));
std:thread(&GduNest::recvTimeSyncFunc,this,msg_copy);
}
【注意 : 是为了避免 在童工的 那边回调 耗时太长, 如果 他那边卡住了,就不好处理;
在那边的回调少打印, 在自己的接口里面可以多打印】
3. 在注册glink 信息的地方
void GduNest::registerGlinkMsg(){
加自己的注册
this->myHandler->registerMsgCallback(7,0x09,0x13,0,
std::bind(&GduNest::recvTimeSyncFuncAyn,this,std::placeholders::_1));
后面第三个参数 是 预留一个参数位。