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

📄 zmac_cb.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 5 页
字号:
        ARGFRAME XSTACK, 21, STACK
        EXTERN osal_msg_send
        FUNCTION osal_msg_send,0202H
        ARGFRAME XSTACK, 21, STACK
        EXTERN nwkDB_ReturnIndirectHoldingCnt
        FUNCTION nwkDB_ReturnIndirectHoldingCnt,0202H
        ARGFRAME ISTACK, 2, STACK
        EXTERN NWK_TaskID
        EXTERN ZMac_ScanBuf

// C:\Texas Instruments\ZStack-1.4.2\Components\zmac\f8w\zmac_cb.c
//    1 /********************************************************************************************************
//    2   Filename:       zmac_cb.c
//    3   Revised:        $Date: 2007-02-22 16:28:22 -0800 (Thu, 22 Feb 2007) $
//    4   Revision:       $Revision: 13562 $
//    5 
//    6   Description:
//    7 
//    8   This file contains the NWK functions that the ZMAC calls
//    9 
//   10   Notes:
//   11 
//   12   Copyright (c) 2006 by Texas Instruments, Inc.
//   13   All Rights Reserved.  Permission to use, reproduce, copy, prepare
//   14   derivative works, modify, distribute, perform, display or sell this
//   15   software and/or its documentation for any purpose is prohibited
//   16   without the express written consent of Texas Instruments, Inc.
//   17 
//   18  ********************************************************************************************************/
//   19 
//   20 
//   21 /********************************************************************************************************
//   22  *                                               INCLUDES
//   23  ********************************************************************************************************/
//   24 #include "ZComDef.h"
//   25 #include "OSAL.h"
//   26 #include "ZMAC.h"
//   27 #include "MT_MAC.h"
//   28 
//   29 #if !defined NONWK
//   30 #include "nwk.h"
//   31 #include "nwk_bufs.h"
//   32 #endif
//   33 
//   34 #if defined( MACSIM )
//   35   #include "mac_sim.h"
//   36 #endif
//   37 
//   38 extern void *ZMac_ScanBuf;
//   39 
//   40 /********************************************************************************************************
//   41  *                                                 MACROS
//   42  ********************************************************************************************************/
//   43 
//   44 #define ZMAC_EVENT_ID           0x00
//   45 #define ZMAC_EVENT_STATUS       0x01
//   46 
//   47 /********************************************************************************************************
//   48  *                                               CONSTANTS
//   49  ********************************************************************************************************/
//   50 
//   51 #if !defined NONWK
//   52 
//   53 #define INVALID_SHORT_ADDR    0xFFFE
//   54 #define BROADCAST_ADDR        0xFFFF
//   55 
//   56 /* Lookup table for size of structures. Must match with the order of MAC callback events */

        RSEG CODE_C:CODE:REORDER:NOROOT(0)
//   57 const uint8 CODE zmacCBSizeTable [] = {
zmacCBSizeTable:
        DB 0, 22, 15, 22, 13, 11, 21, 11, 2, 17, 2, 34, 11, 48, 3, 0, 6
//   58   0,
//   59   sizeof (ZMacAssociateInd_t),
//   60   sizeof (ZMacAssociateCnf_t),
//   61   sizeof (ZMacDisassociateInd_t),
//   62   sizeof (ZMacDisassociateCnf_t),
//   63   sizeof (ZMacBeaconNotifyInd_t) ,
//   64   /*  0, // sizeof (ZMacGTSInd_t), */
//   65   /*  0, // sizeof (ZMacGTSCnf_t), */
//   66   sizeof (ZMacOrphanInd_t),
//   67   sizeof (ZMacScanCnf_t),
//   68   sizeof (ZMacStartCnf_t),
//   69   sizeof (ZMacSyncLossInd_t),
//   70   sizeof (ZMacPollCnf_t),
//   71   sizeof (ZMacCommStatusInd_t),
//   72   /*  0, // sizeof (ZMacRxEnableCnf_t), */
//   73   sizeof (ZMacDataCnf_t),
//   74   sizeof (ZMacDataInd_t),
//   75   sizeof (ZMacPurgeCnf_t),
//   76   0,
//   77   sizeof (ZMacPollInd_t)
//   78 };
//   79 
//   80 uint16 getZMacDynamicSize(uint8 event, macCbackEvent_t *pData);

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   81 uint16 getZMacDynamicSize(uint8 event, macCbackEvent_t *pData)
getZMacDynamicSize:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function getZMacDynamicSize
//   82 {
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//   83   switch(event)
        MOV	A,R1
        LCALL	?UC_SWITCH_DENSE
`?<Jumptable for getZMacDynamicSize>_0`:
        DB        5
        DB        2
        DW        ??getZMacDynamicSize_0
        DW        ??getZMacDynamicSize_1
        DW        ??getZMacDynamicSize_0
        DW        ??getZMacDynamicSize_2
//   84   {
//   85   case MAC_MLME_BEACON_NOTIFY_IND:
//   86     return sizeof(macPanDesc_t) + pData->beaconNotifyInd.sduLength;
??getZMacDynamicSize_1:
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R0,A
        MOV	A,#0x21
        ADD	A,R0
        MOV	R2,A
        CLR	A
        ADDC	A,#0x0
        MOV	R3,A
        SJMP	??getZMacDynamicSize_3
//   87   case MAC_MLME_SCAN_CNF:
//   88     if (pData->scanCnf.scanType == ZMAC_ED_SCAN)
??getZMacDynamicSize_2:
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        JNZ	??getZMacDynamicSize_4
//   89       return ZMAC_ED_SCAN_MAXCHANNELS;
        MOV	R2,#0x1b
        SJMP	??getZMacDynamicSize_5
//   90     else
//   91       return sizeof( ZMacPanDesc_t ) * pData->scanCnf.resultListSize;
??getZMacDynamicSize_4:
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	B,#0x21
        MUL	AB
        MOV	R2,A
        MOV	R3,B
        SJMP	??getZMacDynamicSize_3
//   92   }
//   93 
//   94   return 0;
??getZMacDynamicSize_0:
        MOV	R2,#0x0
??getZMacDynamicSize_5:
        MOV	R3,#0x0
        CFI EndBlock cfiBlock0
??getZMacDynamicSize_3:
        REQUIRE ?Subroutine8
        ; // Fall through to label ?Subroutine8
//   95 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine8:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        POP	DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP	DPL
        CFI CFA_SP SP+-3
        CFI DPL0 SameValue
        LJMP	?BRET
        CFI EndBlock cfiBlock1
//   96 

        RSEG CODE_C:CODE:REORDER:NOROOT(0)
//   97 const uint8 CODE zmacCBEventTable [] = {
zmacCBEventTable:
        DB 255, 34, 35, 36, 42, 38, 41, 37, 49, 50, 51, 55, 32, 33, 54, 255, 65
//   98   0xff,                         /* Unused */
//   99   MACCB_ASSOCIATE_IND_CMD,      /* MAC_MLME_ASSOCIATE_IND */
//  100   MACCB_ASSOCIATE_CNF_CMD,      /* MAC_MLME_ASSOCIATE_CNF */
//  101   MACCB_DISASSOCIATE_IND_CMD,   /* MAC_MLME_DISASSOCIATE_IND */
//  102   MACCB_DISASSOCIATE_CNF_CMD,   /* MAC_MLME_DISASSOCIATE_CNF */
//  103   MACCB_BEACON_NOTIFY_IND_CMD,  /* MAC_MLME_BEACON_NOTIFY_IND */
//  104   /*  0xff,  */                 /* MAC_MLME_GTS_IND */
//  105   /*  0xff,  */                 /* MAC_MLME_GTS_CNF */
//  106   MACCB_ORPHAN_IND_CMD,         /* MAC_MLME_ORPHAN_IND */
//  107   MACCB_SCAN_CNF_CMD,           /* MAC_MLME_SCAN_CNF */
//  108   MACCB_START_CNF_CMD,          /* MAC_MLME_START_CNF */
//  109   MACCB_SYNC_LOSS_IND_CMD,      /* MAC_MLME_SYNC_LOSS_IND */
//  110   MACCB_POLL_CNF_CMD,           /* MAC_MLME_POLL_CNF */
//  111   MACCB_COMM_STATUS_IND_CMD,    /* MAC_MLME_COMM_STATUS_IND */
//  112   /*  0xff,  */                 /* MAC_MLME_RX_ENABLE_CNF */
//  113   MACCB_DATA_CNF_CMD,           /* MAC_MCPS_DATA_CNF */
//  114   MACCB_DATA_IND_CMD,           /* MAC_MCPS_DATA_IND */
//  115   MACCB_PURGE_CNF_CMD,          /* MAC_MCPS_PURGE_CNF */
//  116   0xff,                         /* MAC_PWR_ON_CNF */
//  117   MACCB_POLL_IND_CMD            /* MAC_MLME_POLL_IND */
//  118 };
//  119 
//  120 #endif /* !defined NONWK */
//  121 
//  122 /********************************************************************************************************
//  123  *                                                TYPEDEFS
//  124  ********************************************************************************************************/
//  125 
//  126 /********************************************************************************************************
//  127  *                                               GLOBALS
//  128  ********************************************************************************************************/
//  129 /* Send Callbacks to MT */
//  130 void zmacSendMTCallback( macCbackEvent_t *pData );
//  131 
//  132 
//  133 /********************************************************************************************************
//  134  * @fn       MAC_CbackEvent()
//  135  *
//  136  * @brief    convert MAC data confirm and indication to ZMac and send to NWK
//  137  *
//  138  * @param    pData - pointer to macCbackEvent_t
//  139  *
//  140  * @return   none
//  141  ********************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  142 void  MAC_CbackEvent(macCbackEvent_t *pData)
MAC_CbackEvent:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function MAC_CbackEvent
//  143 {
        FUNCALL MAC_CbackEvent, getZMacDynamicSize
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL MAC_CbackEvent, osal_msg_deallocate
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL MAC_CbackEvent, osal_msg_allocate
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL MAC_CbackEvent, osal_memcpy
        LOCFRAME XSTACK, 24, STACK
        ARGFRAME XSTACK, 24, STACK
        FUNCALL MAC_CbackEvent, osal_memcpy
        LOCFRAME XSTACK, 24, STACK
        ARGFRAME XSTACK, 24, STACK
        FUNCALL MAC_CbackEvent, osal_memcpy
        LOCFRAME XSTACK, 24, STACK
        ARGFRAME XSTACK, 24, STACK
        FUNCALL MAC_CbackEvent, osal_memcpy
        LOCFRAME XSTACK, 24, STACK
        ARGFRAME XSTACK, 24, STACK
        FUNCALL MAC_CbackEvent, osal_memcpy
        LOCFRAME XSTACK, 24, STACK
        ARGFRAME XSTACK, 24, STACK
        FUNCALL MAC_CbackEvent, osal_mem_free
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL MAC_CbackEvent, MAC_MlmeGetReq
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL MAC_CbackEvent, osal_msg_deallocate
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL MAC_CbackEvent, osal_memcpy
        LOCFRAME XSTACK, 24, STACK
        ARGFRAME XSTACK, 24, STACK
        FUNCALL MAC_CbackEvent, osal_msg_send
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        MOV	A,#-0x10
        LCALL	?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        ; Saved register size: 16
        ; Auto size: 5
        MOV	A,#-0x5
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 21)

⌨️ 快捷键说明

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