TI中文支持网
TI专业的中文技术问题搜集分享网站

CC1310: collector sensor 创建新的Message IDs 并通过 sendMsg 进行通讯问题。

Part Number:CC1310

各位专家:

我在collector 端定义了一个新的Message IDs (Smsgs_cmdIds_SensorDataConfigReq) 并通过 sendMsg 函数发送信息到SENSOR ,SENSOR 端接收到信息后返回应答: Sensor_sendMsg(Smsgs_cmdIds_SensorDataConfigRsp,&pDataInd->srcAddr, true,4,cmdBytes); 此消息主要是通知SENSOR 修改SCS采集频率。并根据新的频率发送采集数据

collector 端 接收到Smsgs_cmdIds_SensorDataConfigRsp 消息确认处理。

Smsgs_cmdIds_SensorDataConfigReq = 16,
Smsgs_cmdIds_SensorDataConfigRsp = 17

现在的问题是:在发送一次消息后并成功接收到应答。SENSOR 会根据修改后的频率向COLLECTOR发送传感器采集数据,COLLECTOR 在一段时间内可以收到传感器数据,但运行一段时间后,发送SENSOR 发送POLL 时

返回状态 SATATUS=E9 ApiMac_status_noAck  从而使SENSOR 变成孤儿状态并进行与COLLECT 重新连接。

我查看了COLLECT SENSOR 之间的通讯源码

COLLECTOR 端应用:sendMsg  在该函数中我看到一条语句dataReq.msduHandle = getMsduHandle(type); 发现对msduHandle 根据Smsgs_cmdIds_t 类型进行相应赋值。

/* Add the App specific bit */
msduHandle |= APP_MARKER_MSDU_HANDLE;

/* Add the message type bit */
if(msgType == Smsgs_cmdIds_configReq)
{
msduHandle |= APP_CONFIG_MSDU_HANDLE;
}
else if(msgType == Smgs_cmdIds_broadcastCtrlMsg)
{
msduHandle |= APP_BROADCAST_MSDU_HANDLE;
}

我定义的Smsgs_cmdIds_SensorDataConfigReq 在这里没进行相应处理,我不清楚msduHandle 这个参数作用,请帮我分析下,是否这个因素造成了上述现象。需要怎样修改。

Shuyang Zhong:

您的分析是对的,接收端需要根据msduHandle来判断数据是否合法,因此您需要在getMsduHandle中加入对Smsgs_cmdIds_SensorDataConfigReq和Smsgs_cmdIds_SensorDataConfigRsp的判断。

msduHandle的定义请参考getMsduHandle函数上面的注释,bit 7表示app message,bit 6表示config message,bit 0-5是一个message counter:

/*!* @briefGet the next MSDU Handle*<BR>*The MSDU handle has 3 parts:<BR>*- The MSBit(7), when set means the the application sent the*message*- Bit 6, when set means that the app message is a config request*- Bits 0-5, used as a message counter that rolls over.** @parammsgType - message command id needed** @returnmsdu Handle*/

Best regards,

Shuyang

赞(0)
未经允许不得转载:TI中文支持网 » CC1310: collector sensor 创建新的Message IDs 并通过 sendMsg 进行通讯问题。
分享到: 更多 (0)