📄 zmac_cb.s51
字号:
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 + -