mac_radio.s51
来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,614 行 · 第 1/5 页
S51
1,614 行
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon0
EXTERN macMcuRandomByte
FUNCTION macMcuRandomByte,0202H
ARGFRAME ISTACK, 2, STACK
EXTERN macMemWriteRam
FUNCTION macMemWriteRam,0202H
ARGFRAME ISTACK, 2, STACK
EXTERN halAssertHandler
FUNCTION halAssertHandler,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 9, STACK
EXTERN macRxOff
FUNCTION macRxOff,0202H
ARGFRAME ISTACK, 2, STACK
EXTERN macRxOnRequest
FUNCTION macRxOnRequest,0202H
ARGFRAME ISTACK, 2, STACK
EXTERN macMcuRecordMaxRssiStart
FUNCTION macMcuRecordMaxRssiStart,0202H
ARGFRAME ISTACK, 2, STACK
EXTERN macMcuRecordMaxRssiStop
FUNCTION macMcuRecordMaxRssiStop,0202H
ARGFRAME ISTACK, 2, STACK
EXTERN macPib
EXTERN macRadioDefsTxPowerTable
EXTERN macRxFilter
EXTERN macRxOutgoingAckFlag
EXTERN macSleepState
EXTERN macTxActive
// C:\Texas Instruments\ZStack-1.4.2\Components\mac\low_level\srf03\mac_radio.c
// 1 /**************************************************************************************************
// 2 Filename:
// 3 Revised: $Date: 2007-03-26 16:18:09 -0700 (Mon, 26 Mar 2007) $
// 4 Revision: $Revision: 13860 $
// 5
// 6 Description:
// 7
// 8 Describe the purpose and contents of the file.
// 9
// 10 Copyright (c) 2006 by Texas Instruments, Inc.
// 11 All Rights Reserved. Permission to use, reproduce, copy, prepare
// 12 derivative works, modify, distribute, perform, display or sell this
// 13 software and/or its documentation for any purpose is prohibited
// 14 without the express written consent of Texas Instruments, Inc.
// 15 **************************************************************************************************/
// 16
// 17
// 18 /* ------------------------------------------------------------------------------------------------
// 19 * Includes
// 20 * ------------------------------------------------------------------------------------------------
// 21 */
// 22
// 23 /* hal */
// 24 #include "hal_types.h"
// 25
// 26 /* high-level */
// 27 #include "mac_pib.h"
// 28
// 29 /* exported low-level */
// 30 #include "mac_low_level.h"
// 31
// 32 /* low-level specific */
// 33 #include "mac_radio.h"
// 34 #include "mac_tx.h"
// 35 #include "mac_rx.h"
// 36 #include "mac_rx_onoff.h"
// 37 #include "mac_sleep.h"
// 38 #include "mac_backoff_timer.h"
// 39
// 40 /* target specific */
// 41 #include "mac_radio_defs.h"
// 42
// 43 /* debug */
// 44 #include "mac_assert.h"
// 45
// 46
// 47 /* ------------------------------------------------------------------------------------------------
// 48 * Includes
// 49 * ------------------------------------------------------------------------------------------------
// 50 */
// 51 #define ED_RF_POWER_MIN_DBM (MAC_RADIO_RECEIVER_SENSITIVITY_DBM + MAC_SPEC_ED_MIN_DBM_ABOVE_RECEIVER_SENSITIVITY)
// 52 #define ED_RF_POWER_MAX_DBM MAC_RADIO_RECEIVER_SATURATION_DBM
// 53
// 54
// 55 /* ------------------------------------------------------------------------------------------------
// 56 * Global Variables
// 57 * ------------------------------------------------------------------------------------------------
// 58 */
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 59 uint8 macPhyTxPower;
macPhyTxPower:
DS 1
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 60 uint8 macPhyChannel;
macPhyChannel:
DS 1
// 61
// 62
// 63 /* ------------------------------------------------------------------------------------------------
// 64 * Local Variables
// 65 * ------------------------------------------------------------------------------------------------
// 66 */
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 67 static uint8 reqChannel;
??reqChannel:
DS 1
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 68 static uint8 reqTxPower;
??reqTxPower:
DS 1
// 69
// 70
// 71 /* ------------------------------------------------------------------------------------------------
// 72 * Local Functions
// 73 * ------------------------------------------------------------------------------------------------
// 74 */
// 75 static uint8 radioComputeED(int8 rssiDbm);
// 76
// 77
// 78 /**************************************************************************************************
// 79 * @fn macRadioInit
// 80 *
// 81 * @brief Initialize radio software.
// 82 *
// 83 * @param none
// 84 *
// 85 * @return none
// 86 **************************************************************************************************
// 87 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 88 void macRadioInit(void)
macRadioInit:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function macRadioInit
// 89 {
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
// 90 /* variable initialization for this module */
// 91 reqChannel = MAC_RADIO_CHANNEL_DEFAULT;
MOV A,#0xb
MOV DPTR,#??reqChannel
MOVX @DPTR,A
// 92 macPhyChannel = MAC_RADIO_CHANNEL_DEFAULT;
MOV DPTR,#macPhyChannel
MOVX @DPTR,A
// 93 reqTxPower = MAC_RADIO_TX_POWER_DEFAULT;
MOV A,#0x1f
MOV DPTR,#??reqTxPower
MOVX @DPTR,A
// 94 macPhyTxPower = MAC_RADIO_TX_POWER_DEFAULT;
MOV DPTR,#macPhyTxPower
SJMP ??Subroutine2_0
CFI EndBlock cfiBlock0
// 95 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
MOV DPTR,#-0x20b5
??Subroutine2_0:
MOVX @DPTR,A
SJMP ??Subroutine0_1
CFI EndBlock cfiBlock1
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock2 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
MOV DPTR,#(??radioComputeED & 0xffff)
MOV A,#((??radioComputeED >> 16) & 0xff)
??Subroutine0_0:
LCALL ?BCALL ; Banked call to: DPTR()
??Subroutine0_1:
POP DPH
CFI CFA_SP SP+-4
CFI DPH0 SameValue
POP DPL
CFI CFA_SP SP+-3
CFI DPL0 SameValue
LJMP ?BRET
CFI EndBlock cfiBlock2
// 96
// 97
// 98 /**************************************************************************************************
// 99 * @fn macRadioReset
// 100 *
// 101 * @brief Resets the radio module.
// 102 *
// 103 * @param none
// 104 *
// 105 * @return none
// 106 **************************************************************************************************
// 107 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 108 void macRadioReset(void)
macRadioReset:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function macRadioReset
// 109 {
FUNCALL macRadioReset, macRadioStopScan
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
FUNCALL macRadioReset, macRadioEnergyDetectStop
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
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
// 110 macRadioStopScan();
; Setup parameters for call to function macRadioStopScan
MOV DPTR,#(macRadioStopScan & 0xffff)
MOV A,#((macRadioStopScan >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 111 macRadioEnergyDetectStop();
; Setup parameters for call to function macRadioEnergyDetectStop
MOV DPTR,#(macRadioEnergyDetectStop & 0xffff)
MOV A,#((macRadioEnergyDetectStop >> 16) & 0xff)
SJMP ??Subroutine0_0
CFI EndBlock cfiBlock3
// 112 }
// 113
// 114
// 115 /**************************************************************************************************
// 116 * @fn macRadioRandomByte
// 117 *
// 118 * @brief Return a random byte derived from previously set random seed.
// 119 *
// 120 * @param none
// 121 *
// 122 * @return a random byte
// 123 **************************************************************************************************
// 124 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 125 uint8 macRadioRandomByte(void)
macRadioRandomByte:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function macRadioRandomByte
// 126 {
FUNCALL macRadioRandomByte, macMcuRandomByte
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
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
// 127 return(MAC_RADIO_RANDOM_BYTE());
; Setup parameters for call to function macMcuRandomByte
MOV DPTR,#(macMcuRandomByte & 0xffff)
MOV A,#((macMcuRandomByte >> 16) & 0xff)
SJMP ??Subroutine0_0
CFI EndBlock cfiBlock4
// 128 }
// 129
// 130
// 131 /**************************************************************************************************
// 132 * @fn macRadioSetPanCoordinator
// 133 *
// 134 * @brief Configure the pan coordinator status of the radio
// 135 *
// 136 * @param panCoordFlag - non-zero to configure radio to be pan coordinator
// 137 * zero to configure radio as NON pan coordinator
// 138 *
// 139 * @return none
// 140 **************************************************************************************************
// 141 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 142 void macRadioSetPanCoordinator(uint8 panCoordFlag)
macRadioSetPanCoordinator:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function macRadioSetPanCoordinator
// 143 {
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
// 144 /* abstracted radio configuration */
// 145 MAC_RADIO_SET_PAN_COORDINATOR(panCoordFlag);
MOV DPTR,#-0x20fe
MOVX A,@DPTR
MOV R2,A
MOV A,R1
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?