⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mac_tx_engine.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        FUNCTION mlmePollConfirm,0202H
        ARGFRAME XSTACK, 17, STACK
        EXTERN mtimSetCallback
        FUNCTION mtimSetCallback,0202H
        ARGFRAME XSTACK, 21, STACK
        EXTERN miqSetRequested
        FUNCTION miqSetRequested,0202H
        ARGFRAME XSTACK, 17, STACK
        EXTERN mschRemoveTask
        FUNCTION mschRemoveTask,0202H
        ARGFRAME XSTACK, 17, STACK
        EXTERN mschAddTask
        FUNCTION mschAddTask,0202H
        ARGFRAME XSTACK, 20, STACK
        EXTERN mtxpReleasePacket
        FUNCTION mtxpReleasePacket,0202H
        ARGFRAME XSTACK, 17, STACK
        EXTERN T2_GET_OVERFLOW_COUNTER
        FUNCTION T2_GET_OVERFLOW_COUNTER,0202H
        ARGFRAME XSTACK, 16, STACK
        EXTERN msupCalcCapDuration
        FUNCTION msupCalcCapDuration,0202H
        ARGFRAME XSTACK, 16, STACK
        EXTERN mbcnGetBeaconMargin
        FUNCTION mbcnGetBeaconMargin,0202H
        ARGFRAME XSTACK, 16, STACK
        EXTERN mrxResetRxEngine
        FUNCTION mrxResetRxEngine,0202H
        ARGFRAME ISTACK, 2, STACK
        EXTERN mrxAutoIncrOnCounter
        FUNCTION mrxAutoIncrOnCounter,0202H
        ARGFRAME ISTACK, 2, STACK
        EXTERN halWriteTxFifo
        FUNCTION halWriteTxFifo,0202H
        ARGFRAME XSTACK, 14, STACK
        EXTERN msupSetTransmitPower
        FUNCTION msupSetTransmitPower,0202H
        ARGFRAME XSTACK, 14, STACK
        EXTERN mschReserveTask
        FUNCTION mschReserveTask,0202H
        ARGFRAME ISTACK, 1, STACK
        ARGFRAME XSTACK, 14, STACK
        EXTERN mrxDecrOnCounter
        FUNCTION mrxDecrOnCounter,0202H
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 14, STACK
        EXTERN FetchTxFrame
        FUNCTION FetchTxFrame,0202H
        ARGFRAME XSTACK, 17, STACK
        EXTERN DmaMemcpy
        FUNCTION DmaMemcpy,0202H
        ARGFRAME XSTACK, 17, STACK
        EXTERN DmaWriteFrameToTxFifo
        FUNCTION DmaWriteFrameToTxFifo,0202H
        ARGFRAME XSTACK, 17, STACK
        EXTERN mtimCancelCallback
        FUNCTION mtimCancelCallback,0202H
        ARGFRAME ISTACK, 2, STACK
        EXTERN msupCalcBeaconInterval
        FUNCTION msupCalcBeaconInterval,0202H
        ARGFRAME XSTACK, 14, STACK
        EXTERN mschRescheduleTask
        FUNCTION mschRescheduleTask,0202H
        ARGFRAME XSTACK, 14, STACK
        EXTERN msupGetRandomByte
        FUNCTION msupGetRandomByte,0202H
        ARGFRAME XSTACK, 14, STACK
        EXTERN mrxIncrOnCounter
        FUNCTION mrxIncrOnCounter,0202H
        ARGFRAME XSTACK, 14, STACK
        EXTERN macInfo
        EXTERN mbcnInfo
        EXTERN mbcnTxPeriodicalBeacon
        FUNCTION mbcnTxPeriodicalBeacon,0602H
        EXTERN miqRemoveIndirectPacket
        FUNCTION miqRemoveIndirectPacket,0602H
        EXTERN mpib
        EXTERN mscChannelTimeout
        FUNCTION mscChannelTimeout,0602H
        EXTERN mscInfo

// E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\lib\mac\CC2430\mac_tx_engine.c
//    1 /*******************************************************************************************************
//    2 *                                                                                                      *
//    3 *        **********                                                                                    *
//    4 *       ************                                                                                   *
//    5 *      ***        ***                                                                                  *
//    6 *      ***   +++   ***                                                                                 *
//    7 *      ***   + +   ***                                                                                 *
//    8 *      ***   +                         CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY                  *
//    9 *      ***   + +   ***                                   TX Engine                                     *
//   10 *      ***   +++   ***                                                                                 *
//   11 *      ***        ***                                                                                  *
//   12 *       ************                                                                                   *
//   13 *        **********                                                                                    *
//   14 *                                                                                                      *
//   15 ********************************************************************************************************
//   16 * CONFIDENTIAL                                                                                         *
//   17 * The use of this file is restricted by the signed MAC software license agreement.                     *
//   18 *                                                                                                      *
//   19 * Copyright Chipcon AS, 2005                                                                           *
//   20 ********************************************************************************************************
//   21 * This module contains the MAC TX engine, which is used to transmit all RF packets.                    *
//   22 *******************************************************************************************************/
//   23 #include "mac_headers.h"

        ASEGN SFR_AN:DATA:NOROOT,09cH
// unsigned char volatile __sfr T2PEROF0
T2PEROF0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,09dH
// unsigned char volatile __sfr T2PEROF1
T2PEROF1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,09eH
// unsigned char volatile __sfr T2PEROF2
T2PEROF2:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0a1H
// unsigned char volatile __sfr T2OF0
T2OF0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0a2H
// unsigned char volatile __sfr T2OF1
T2OF1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0a3H
// unsigned char volatile __sfr T2OF2
T2OF2:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0c3H
// unsigned char volatile __sfr T2CNF
T2CNF:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0e1H
// unsigned char volatile __sfr RFST
RFST:
        DS 1
//   24 
//   25 //-------------------------------------------------------------------------------------------------------
//   26 // Transmission related variables

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   27 MAC_TX_INFO mtxInfo;
mtxInfo:
        DS 13
//   28 //-------------------------------------------------------------------------------------------------------
//   29 
//   30 
//   31 //-------------------------------------------------------------------------------------------------------
//   32 //
//   33 //   Prototypes
//   34 //
//   35 //-------------------------------------------------------------------------------------------------------
//   36 static ROOT void HandleOutgoingClearText (MAC_TX_PACKET    *macTxPacket,
//   37                                           FRAME            *frame);
//   38 static ROOT void HandleOutgoingFrame (MAC_TX_PACKET        *macTxPacket,
//   39                                       FRAME                *frame,
//   40                                       SECURITY_STATUS      *securityStatus);
//   41 static ROOT void HandleOutgoingSecurity (MAC_TX_PACKET     *macTxPacket,
//   42                                          FRAME             *frame,
//   43                                          SECURITY_STATUS   *securityStatus);
//   44 static ROOT void LoadAndStartStrobe (BYTE txMode,
//   45                                      BOOL slotted,
//   46                                      BYTE be,
//   47                                      BYTE nb,
//   48                                      BYTE randomBackoff,
//   49                                      BYTE noOfBackoffsLeft);
//   50 static ROOT void ReadCsmaParams (BYTE   *be,
//   51                                  BYTE   *nb,
//   52                                  BYTE   *randomBackoff);
//   53 ROOT void WriteCsmaParams (BYTE be,
//   54                            BYTE nb,
//   55                            BYTE randomBackoff,
//   56                            BYTE noOfBackoffsLeft);
//   57 ROOT void PrepareFrameAndWriteToRf (MAC_TX_PACKET     *macTxPacket,
//   58                                     SECURITY_STATUS   *securityStatus);
//   59 
//   60 //-------------------------------------------------------------------------------------------------------
//   61 //  void mtxCommStatusIndication(MAC_TX_PACKET *pPacket, BYTE status)
//   62 //
//   63 //  DESCRIPTION:
//   64 //      This function generates comm-status indications for transmitted packets, by parsing the
//   65 //      packet header.
//   66 //
//   67 //  ARGUMENTS:
//   68 //      MAC_TX_PACKET *pPacket
//   69 //          A pointer to the transmitted packet (which the address information will be extracted from)
//   70 //      BYTE status
//   71 //          The status to be passed in mlmeCommStatusIndication
//   72 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//   73 ROOT void mtxCommStatusIndication(MAC_TX_PACKET   *pPacket, BYTE status) {
mtxCommStatusIndication:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function mtxCommStatusIndication
        FUNCALL mtxCommStatusIndication, mlmeCommStatusIndication
        LOCFRAME XSTACK, 15, STACK
        ARGFRAME XSTACK, 15, STACK
        MOV	A,#-0xb
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        ; Saved register size: 11
        ; Auto size: 0
        MOV	A,R2
        MOV	R4,A
        MOV	A,R3
        MOV	R5,A
        MOV	?V0 + 2,R1
//   74     BYTE dstAddrMode;
//   75     ADDRESS   *pDstAddr;
//   76     BYTE srcAddrMode;
//   77     ADDRESS   *pSrcAddr;
//   78     BYTE   *pTemp;
//   79 
//   80     // Point to the first byte of the frame control field
//   81     pTemp = pPacket->pHeader;
//   82 
//   83     // Move on to the high byte, which contains the address modes
//   84     pTemp += 1;
        MOV	A,R4
        ADD	A,#0x4
        MOV	R2,A
        MOV	A,R5
        ADDC	A,#0x0
        MOV	R3,A
//   85     dstAddrMode = (BYTE)((*pTemp & DEST_ADDR_BM) >> (DEST_ADDR_MODE_IDX - 8));
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	A,@DPTR
        MOV	R6,A
        MOV	A,#0xc
        ANL	A,R6
        CLR	C
        RRC	A
        RRC	A
        MOV	R7,A
//   86     srcAddrMode = (BYTE)((*pTemp & SRC_ADDR_BM) >> (SRC_ADDR_MODE_IDX - 8));
        MOV	A,R6
        SWAP	A
        RRC	A
        RRC	A
        ANL	A,#0x3
        MOV	R6,A
//   87 
//   88     // Move on to the PAN ID (skip the sequence number)
//   89     pTemp += 2;
        MOV	A,R2
        ADD	A,#0x2
        INC	R2
        INC	R2
        MOV	A,R3
        ADDC	A,#0x0
        MOV	R3,A
//   90 
//   91     // Get a pointer to each address, without modifying the pointer any further
//   92     pDstAddr = (ADDRESS   *) (pTemp + 2);
        MOV	A,R2
        ADD	A,#0x2
        MOV	R0,A
        MOV	A,R3
        ADDC	A,#0x0
        MOV	R1,A
        MOV	?V0 + 0,R0
        MOV	?V0 + 1,R1
//   93     pSrcAddr = (ADDRESS   *) ((BYTE   *) pDstAddr + ((dstAddrMode == DEST_ADDR_SHORT) ?
//   94                                   2 : 8) + ((*(pPacket->pHeader) & INTRA_PAN_BM) ? 0 : 2));
        MOV	A,#0x8
        XRL	A,R7
        JNZ	??mtxCommStatusIndication_0
        MOV	R0,#0x2
        SJMP	??mtxCommStatusIndication_1
??mtxCommStatusIndication_0:
        MOV	R0,#0x8
??mtxCommStatusIndication_1:
        MOV	DPL,R4
        MOV	DPH,R5
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	C,0xE0 /* A   */.6
        JNC	??mtxCommStatusIndication_2
        MOV	R4,#0x0
        SJMP	??mtxCommStatusIndication_3
??mtxCommStatusIndication_2:
        MOV	R4,#0x2
??mtxCommStatusIndication_3:
        MOV	A,?V0 + 0
        ADD	A,R0
        MOV	R0,A
        MOV	A,R1
        ADDC	A,#0x0
        MOV	R1,A
        MOV	A,R4
        ADD	A,R0
        MOV	R4,A
        CLR	A
        ADDC	A,R1
        MOV	R5,A
//   95 
//   96     // Make the call to the higher layer
//   97     mlmeCommStatusIndication(*((WORD   *) pTemp), srcAddrMode, pSrcAddr, dstAddrMode, pDstAddr, status);
        ; Setup parameters for call to function mlmeCommStatusIndication
        MOV	R0,#?V0 + 2
        LCALL	?PUSH_XSTACK_I_ONE
        CFI CFA_XSP16 add(XSP16, 12)
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 14)
        MOV	A,R7
        MOV	?V0 + 0,A
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_ONE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -