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

📄 mac_rx.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
    102           *  The radio replaces the actual FCS with different information.  This proprietary FCS is
    103           *  the same length as the original and includes:
    104           *    1) the RSSI value
    105           *    2) the average correlation value (used for LQI)
    106           *    3) a CRC passed bit
    107           *
    108           *  These macros decode the proprietary FCS.  The macro parameter is a pointer to the two byte FCS.
    109           */
    110          #define PROPRIETARY_FCS_RSSI(p)                 ((int8)((p)[0]))
    111          #define PROPRIETARY_FCS_CRC_OK(p)               ((p)[1] & PROPRIETARY_FCS_CRC_OK_BIT)
    112          #define PROPRIETARY_FCS_CORRELATION_VALUE(p)    ((p)[1] & ~PROPRIETARY_FCS_CRC_OK_BIT)
    113          
    114          
    115          /* ------------------------------------------------------------------------------------------------
    116           *                                       Global Variables
    117           * ------------------------------------------------------------------------------------------------
    118           */

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    119          uint8 macRxActive;
   \                     macRxActive:
   \   000000                DS 1

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    120          uint8 macRxFilter;
   \                     macRxFilter:
   \   000000                DS 1

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    121          uint8 macRxOutgoingAckFlag;
   \                     macRxOutgoingAckFlag:
   \   000000                DS 1
    122          
    123          
    124          /* ------------------------------------------------------------------------------------------------
    125           *                                       Local Constants
    126           * ------------------------------------------------------------------------------------------------
    127           */

   \                                 In segment CODE_C, align 1
    128          static const uint8 CODE macRxAddrLen[] =
   \                     ??macRxAddrLen:
   \   000000   00BE040A     DB 0, 190, 4, 10
    129          {
    130            0,                                                /* no address */
    131            DUMMY_LEN,                                        /* reserved */
    132            MAC_PAN_ID_FIELD_LEN + MAC_SHORT_ADDR_FIELD_LEN,  /* short address + pan id */
    133            MAC_PAN_ID_FIELD_LEN + MAC_EXT_ADDR_FIELD_LEN     /* extended address + pan id */
    134          };
    135          
    136          
    137          /* ------------------------------------------------------------------------------------------------
    138           *                                       Local Prototypes
    139           * ------------------------------------------------------------------------------------------------
    140           */
    141          static void rxHaltCleanupFinalStep(void);
    142          
    143          static void rxStartIsr(void);
    144          static void rxAddrIsr(void);
    145          static void rxPayloadIsr(void);
    146          static void rxDiscardIsr(void);
    147          static void rxFcsIsr(void);
    148          
    149          static void rxPrepPayload(void);
    150          static void rxDiscardFrame(void);
    151          static void rxDone(void);
    152          static void rxPostRxUpdates(void);
    153          
    154          
    155          /* ------------------------------------------------------------------------------------------------
    156           *                                         Local Variables
    157           * ------------------------------------------------------------------------------------------------
    158           */

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    159          static void    (* pFuncRxState)(void);
   \                     ??pFuncRxState:
   \   000000                DS 3

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    160          static macRx_t  * pRxBuf;
   \                     ??pRxBuf:
   \   000000                DS 2
    161          

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    162          static uint8  rxBuf[MAC_PHY_PHR_LEN + MAC_FCF_FIELD_LEN + MAC_SEQ_NUM_FIELD_LEN];
   \                     ??rxBuf:
   \   000000                DS 4

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    163          static uint8  rxUnreadLen;
   \                     ??rxUnreadLen:
   \   000000                DS 1

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    164          static uint8  rxNextLen;
   \                     ??rxNextLen:
   \   000000                DS 1

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    165          static uint8  rxPayloadLen;
   \                     ??rxPayloadLen:
   \   000000                DS 1

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    166          static uint8  rxFilter;
   \                     ??rxFilter:
   \   000000                DS 1

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    167          static uint8  rxPromiscuousMode;
   \                     ??rxPromiscuousMode:
   \   000000                DS 1

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    168          static uint8  rxIsrActiveFlag;
   \                     ??rxIsrActiveFlag:
   \   000000                DS 1

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    169          static uint8  rxResetFlag;
   \                     ??rxResetFlag:
   \   000000                DS 1
    170          
    171          
    172          /**************************************************************************************************
    173           * @fn          macRxInit
    174           *
    175           * @brief       Initialize receive variable states.
    176           *
    177           * @param       none
    178           *
    179           * @return      none
    180           **************************************************************************************************
    181           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    182          void macRxInit(void)
   \                     macRxInit:
    183          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    184            macRxFilter          = RX_FILTER_OFF;
   \   000004   E4           CLR     A
   \   000005   90....       MOV     DPTR,#macRxFilter
   \   000008   F0           MOVX    @DPTR,A
    185            rxPromiscuousMode    = PROMISCUOUS_MODE_OFF;
   \   000009   90....       MOV     DPTR,#??rxPromiscuousMode
   \   00000C   F0           MOVX    @DPTR,A
    186            pRxBuf               = NULL; /* required for macRxReset() to function correctly */
   \   00000D   90....       MOV     DPTR,#??pRxBuf
   \   000010   F0           MOVX    @DPTR,A
   \   000011   A3           INC     DPTR
   \   000012   F0           MOVX    @DPTR,A
    187            macRxActive          = MAC_RX_ACTIVE_NO_ACTIVITY;
   \   000013   90....       MOV     DPTR,#macRxActive
   \   000016   12....       LCALL   ?Subroutine1 & 0xFFFF
    188            pFuncRxState         = &rxStartIsr;
    189            macRxOutgoingAckFlag = 0;
   \                     ??CrossCallReturnLabel_2:
   \   000019   E4           CLR     A
   \   00001A   90....       MOV     DPTR,#macRxOutgoingAckFlag
   \   00001D   F0           MOVX    @DPTR,A
    190            rxIsrActiveFlag      = 0;
   \   00001E   90....       MOV     DPTR,#??rxIsrActiveFlag
   \   000021   F0           MOVX    @DPTR,A
    191            rxResetFlag          = 0;
   \   000022   90....       MOV     DPTR,#??rxResetFlag
   \   000025   F0           MOVX    @DPTR,A
    192          }
   \   000026   02....       LJMP    ??Subroutine20_0 & 0xFFFF

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine20:
   \   000000   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \                     ??Subroutine20_0:
   \   000003   D083         POP     DPH
   \   000005   D082         POP     DPL
   \   000007   02....       LJMP    ?BRET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   12....       LCALL   ?Subroutine16 & 0xFFFF
   \                     ??CrossCallReturnLabel_36:
   \   000003   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine16:
   \   000000   F0           MOVX    @DPTR,A
   \   000001   90....       MOV     DPTR,#??pFuncRxState
   \   000004   74..         MOV     A,#(??rxStartIsr & 0xff)
   \   000006   F0           MOVX    @DPTR,A
   \   000007   A3           INC     DPTR
   \   000008   74..         MOV     A,#((??rxStartIsr >> 8) & 0xff)
   \   00000A   F0           MOVX    @DPTR,A
   \   00000B   A3           INC     DPTR
   \   00000C   74..         MOV     A,#((??rxStartIsr >> 16) & 0xff)
   \   00000E   F0           MOVX    @DPTR,A
   \   00000F   22           RET
    193          
    194          
    195          /**************************************************************************************************
    196           * @fn          macRxRadioPowerUpInit
    197           *
    198           * @brief       Initialization for after radio first powers up.
    199           *
    200           * @param       none
    201           *
    202           * @return      none
    203           **************************************************************************************************
    204           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    205          void macRxRadioPowerUpInit(void)
   \                     macRxRadioPowerUpInit:
    206          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0

⌨️ 快捷键说明

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