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 + -
显示快捷键?