X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Flib%2Fmac%2Ftkn154%2FPollP.nc;h=3b5c83aa0f3b3037e99d83b4ea53607f2d6cc23f;hb=2d7854932f7589657e485cfca01a0a6863587967;hp=e44f7106b8eedc98d263d231825a2a51c95753e0;hpb=efdd675247b5f699e8acfc2ccac1d71d31fcd1be;p=tinyos-2.x.git diff --git a/tos/lib/mac/tkn154/PollP.nc b/tos/lib/mac/tkn154/PollP.nc index e44f7106..3b5c83aa 100644 --- a/tos/lib/mac/tkn154/PollP.nc +++ b/tos/lib/mac/tkn154/PollP.nc @@ -64,7 +64,7 @@ implementation }; int m_numPending; uint8_t m_dataRequestCmdID = CMD_FRAME_DATA_REQUEST; - void buildDataRequestFrame( uint8_t destAddrMode, uint16_t destPANId, + void assembleDataRequestFrame( uint8_t destAddrMode, uint16_t destPANId, uint8_t* DstAddr, uint8_t srcAddrMode, ieee154_txframe_t *txFrame); command error_t Init.init() @@ -105,7 +105,7 @@ implementation txFrame->handle = HANDLE_MLME_POLL_REQUEST; if (call MLME_GET.macShortAddress() >= 0xFFFE) srcAddrMode = 3; - buildDataRequestFrame(coordAddrMode, coordPANID, coordAddressLE, srcAddrMode, txFrame); + assembleDataRequestFrame(coordAddrMode, coordPANID, coordAddressLE, srcAddrMode, txFrame); if ((status = call PollTx.transmit(txFrame)) != IEEE154_SUCCESS) { call TxFramePool.put(txFrame); call TxControlPool.put(txControl); @@ -131,29 +131,29 @@ implementation signal DataRequest.pollDone[client](); return IEEE154_SUCCESS; } else if ((txFrame = call TxFramePool.get()) != NULL) { - if ((txControl = call TxControlPool.get()) != NULL) - call TxFramePool.put(txFrame); - else { + if ((txControl = call TxControlPool.get()) != NULL) { txFrame->header = &txControl->header; txFrame->metadata = &txControl->metadata; txFrame->handle = client; - buildDataRequestFrame(CoordAddrMode, CoordPANId, + assembleDataRequestFrame(CoordAddrMode, CoordPANId, CoordAddressLE, srcAddrMode, txFrame); if ((status = call PollTx.transmit(txFrame)) != IEEE154_SUCCESS) { call TxControlPool.put(txControl); call TxFramePool.put(txFrame); - dbg_serial("PollP", "Overflow\n"); + dbg_serial("PollP", "Tx Overflow\n"); } else m_numPending++; - } + } else { + call TxFramePool.put(txFrame); + } } + dbg_serial("PollP", "Status %lu, numPending: %lu\n", (uint32_t) status, (uint32_t) m_numPending); if (status != IEEE154_SUCCESS) signal DataRequest.pollDone[client](); - dbg_serial("PollP", "Status %lu, numPending: %lu\n", (uint32_t) status, (uint32_t) m_numPending); return status; } - void buildDataRequestFrame(uint8_t destAddrMode, uint16_t destPANId, + void assembleDataRequestFrame(uint8_t destAddrMode, uint16_t destPANId, uint8_t* destAddrPtrLE, uint8_t srcAddrMode, ieee154_txframe_t *txFrame) { // destAddrPtrLE points to an address in little-endian format !