Thanks for your reply,I've write the transmission function like this:
PRIVATE void vTXDataPacket( uint8 u8Len, uint16 u16DestAdr)
{
MAC_McpsReqRsp_s sMcpsReqRsp;
MAC_McpsSyncCfm_s sMcpsSyncCfm;
uint8 *pu8Payload, i = 0;
/* Create frame transmission request */
sMcpsReqRsp.u8Type = MAC_MCPS_REQ_DATA;
sMcpsReqRsp.u8ParamLength = sizeof(MAC_McpsReqData_s);
/* Set handle so we can match confirmation to request */
sMcpsReqRsp.uParam.sReqData.u8Handle = 1;
/* Use short address for source */
sMcpsReqRsp.uParam.sReqData.sFrame.sSrcAddr.u8AddrMode = 2;
sMcpsReqRsp.uParam.sReqData.sFrame.sSrcAddr.u16PanId = PAN_ID;
sMcpsReqRsp.uParam.sReqData.sFrame.sSrcAddr.uAddr.u16Short = COORDINATOR_ADR;
/* Use short address for destination */
sMcpsReqRsp.uParam.sReqData.sFrame.sDstAddr.u8AddrMode = 2;
sMcpsReqRsp.uParam.sReqData.sFrame.sDstAddr.u16PanId = PAN_ID;
sMcpsReqRsp.uParam.sReqData.sFrame.sDstAddr.uAddr.u16Short = u16DestAdr;
/* Frame requires ack but not security, indirect transmit or GTS */
sMcpsReqRsp.uParam.sReqData.sFrame.u8TxOptions = MAC_TX_OPTION_ACK;
pu8Payload = sMcpsReqRsp.uParam.sReqData.sFrame.au8Sdu;
pu8Payload[0] = sCoordinatorData.u8TxPacketSeqNb++;
for (i = 1; i < (u8Len + 1); i++)
{
//pu8Payload[i] = *pu8Data++;
pu8Payload[i] = 0x00;
}
/* Set frame length */
sMcpsReqRsp.uParam.sReqData.sFrame.u8SduLength = i;
/* Request transmit */
vAppApiMcpsRequest(&sMcpsReqRsp, &sMcpsSyncCfm);
vPutStrs((uint8*)"Request transmit\n");
}
Now,i am confused with where to call the function, vProcessIncomingMlme(MAC_MlmeDcfmInd_s *psMlmeInd),or PRIVATE void vProcessIncomingMcps(MAC_McpsDcfmInd_s *psMcpsInd).
I've tried to print whether the transmission is successful on the serial port.When i transmit the data from ED to Coordinator ,it shows the "Data transmission successful",but when i tried to transmit data from Coordinator ,it always shows "Data transmission failed".
PRIVATE void vHandleMcpsDataDcfm(MAC_McpsDcfmInd_s *psMcpsInd)
{
if (psMcpsInd->uParam.sDcfmData.u8Status == MAC_ENUM_SUCCESS)
{
vPutStrs((uint8*)"Data transmission successful \n");
}
else
{
vPutStrs((uint8*)"Data transmission failed\n");
}
}