📄 mac_radio.s51
字号:
EXTERN macRadioDefsTxPowerTable
EXTERN macRxFilter
EXTERN macRxOutgoingAckFlag
EXTERN macSleepState
EXTERN macTxActive
// C:\Texas Instruments\ZStack-1.4.2-1.1.0\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
JZ ??macRadioSetPanCoordinator_0
SETB B.0
SJMP ??macRadioSetPanCoordinator_1
??macRadioSetPanCoordinator_0:
CLR B.0
??macRadioSetPanCoordinator_1:
MOV C,B.0
CLR A
MOV 0xE0 /* A */.0,C
SWAP A
PUSH A
CFI CFA_SP SP+-6
MOV A,#-0x11
ANL A,R2
MOV R2,A
POP A
CFI CFA_SP SP+-5
ORL A,R2
SJMP ??Subroutine2_0
CFI EndBlock cfiBlock5
// 146 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -