📄 mac_scan.lst
字号:
##############################################################################
# #
# IAR 8051 C/C++ Compiler V7.20H/W32 16/Jan/2007 15:30:49 #
# Copyright 2004-2006 IAR Systems. All rights reserved. #
# #
# Core = plain #
# Code model = banked #
# Data model = large #
# Calling convention = xdata reentrant #
# Constant location = data #
# Dptr setup = 1,16 #
# Source file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\lib\mac\CC2430\mac_scan.c #
# Command line = -I "C:\Program Files\IAR Systems\Embedded #
# Workbench 4.05 Evaluation version\8051\INC\" -I #
# "C:\Program Files\IAR Systems\Embedded Workbench #
# 4.05 Evaluation version\8051\SRC\LIB\" -I #
# "C:\Program Files\IAR Systems\Embedded Workbench #
# 4.05 Evaluation version\8051\INC\CLIB\" -I #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\..\..\..\include\ -I #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\..\..\..\include\mac\cc2430\ #
# -I E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_E #
# ngine\Test\mac\mac_loc\..\..\..\include\hal\cc243 #
# 0\ -I E:\公司产品资料\Zigbee\cc2431\cc2431定位\LO #
# C_Engine\Test\mac\mac_loc\..\..\..\apps\ -D #
# CC2430EB -D USE_LED -lCN #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\List\ -lA #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\List\ -o #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\Obj\ -e -s9 --debug #
# --core=plain --dptr=16,1 --data_model=large #
# --code_model=banked --calling_convention=xdata_re #
# entrant --place_constants=data --nr_virtual_regs #
# 8 E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_En #
# gine\lib\mac\CC2430\mac_scan.c #
# List file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\List\mac_scan.lst #
# Object file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\Obj\mac_scan.r51 #
# #
# #
##############################################################################
E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\lib\mac\CC2430\mac_scan.c
1 /*******************************************************************************************************
2 * *
3 * ********** *
4 * ************ *
5 * *** *** *
6 * *** +++ *** *
7 * *** + + *** *
8 * *** + CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY *
9 * *** + + *** Scan Functions *
10 * *** +++ *** *
11 * *** *** *
12 * ************ *
13 * ********** *
14 * *
15 *******************************************************************************************************
16 * CONFIDENTIAL *
17 * The use of this file is restricted by the signed MAC software license agreement. *
18 * *
19 * Copyright Chipcon AS, 2005 *
20 *******************************************************************************************************
21 * This module contains the scan state machine, and transmissin of scan-related packets. *
22 *******************************************************************************************************/
23 #include <mac_headers.h>
24
25
26 //-------------------------------------------------------------------------------------------------------
27 // Variables related to channel scanning (state machine and results)
\ In segment PM0_XDATA, align 1
28 __no_init MAC_SCAN_INFO mscInfo @ "PM0_XDATA";
\ mscInfo:
\ 000000 DS 12
29
30 //-------------------------------------------------------------------------------------------------------
31
32
33
34
35 /*******************************************************************************************************
36 *******************************************************************************************************
37 ************************** SCAN-RELATED PACKET TRANSMISSIONS **************************
38 *******************************************************************************************************
39 *******************************************************************************************************/
40
41
42
43
44 //-------------------------------------------------------------------------------------------------------
45 // BOOL mscTransmitBeacon(void)
46 //
47 // DESCRIPTION:
48 // Used by a coordinator in a non-beacon network to transmit a single beacon upon a beacon request.
49 // Unlike the beacon transmission in mac_beacon_handler.c, this beacon is transmitted as a regular
50 // packet, and does not involve timing adjustments, etc.
51 //
52 // RETURN VALUE:
53 // BOOL
54 // The transmission was initiated
55 //-------------------------------------------------------------------------------------------------------
56 #if MAC_OPT_FFD
\ In segment NEAR_CODE, align 1, keep-with-next
57 ROOT BOOL mscTransmitBeacon(void) {
\ mscTransmitBeacon:
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 0
58 MAC_TX_PACKET *pPacket;
59 UINT8 taskNumber;
60
61 // Try to reserve a packet
62 pPacket = mtxpReservePacket();
\ 000005 ; Setup parameters for call to function mtxpReservePacket
\ 000005 12.... LCALL mtxpReservePacket
\ 000008 8A.. MOV ?V0 + 0,R2
\ 00000A 8B.. MOV ?V0 + 1,R3
\ 00000C AE.. MOV R6,?V0 + 0
\ 00000E AF.. MOV R7,?V0 + 1
63 if (!pPacket) return FALSE;
\ 000010 EE MOV A,R6
\ 000011 7001 JNZ ??mscTransmitBeacon_0
\ 000013 EF MOV A,R7
\ ??mscTransmitBeacon_0:
\ 000014 7004 JNZ ??mscTransmitBeacon_1
\ ??mscTransmitBeacon_2:
\ 000016 7900 MOV R1,#0x0
\ 000018 804E SJMP ??mscTransmitBeacon_3
64
65 // Try to reserve a transmission task
66 taskNumber = mschReserveTask();
\ ??mscTransmitBeacon_1:
\ 00001A ; Setup parameters for call to function mschReserveTask
\ 00001A 12.... LCALL mschReserveTask
\ 00001D E9 MOV A,R1
\ 00001E F5.. MOV ?V0 + 3,A
67 if (taskNumber == NO_TASK) {
\ 000020 74FF MOV A,#-0x1
\ 000022 65.. XRL A,?V0 + 3
\ 000024 7009 JNZ ??mscTransmitBeacon_4
68 mtxpReleasePacket(pPacket);
\ 000026 ; Setup parameters for call to function mtxpReleasePacket
\ 000026 EE MOV A,R6
\ 000027 FA MOV R2,A
\ 000028 EF MOV A,R7
\ 000029 FB MOV R3,A
\ 00002A 12.... LCALL mtxpReleasePacket
69 return FALSE;
\ 00002D 80E7 SJMP ??mscTransmitBeacon_2
70 }
71
72 // Prepare the packet structure
73 mbcnPrepareBeacon(pPacket);
\ ??mscTransmitBeacon_4:
\ 00002F ; Setup parameters for call to function mbcnPrepareBeacon
\ 00002F EE MOV A,R6
\ 000030 FA MOV R2,A
\ 000031 EF MOV A,R7
\ 000032 FB MOV R3,A
\ 000033 90.... MOV DPTR,#(mbcnPrepareBeacon & 0xffff)
\ 000036 74.. MOV A,#((mbcnPrepareBeacon >> 16) & 0xff)
\ 000038 12.... LCALL ?BCALL ; Banked call to: DPTR()
74 pPacket->txMode = MTX_MODE_FORCE_UNSLOTTED_BM | MTX_MODE_USE_CSMACA_BM;
\ 00003B EE MOV A,R6
\ 00003C 2486 ADD A,#-0x7a
\ 00003E F582 MOV DPL,A
\ 000040 EF MOV A,R7
\ 000041 3400 ADDC A,#0x0
\ 000043 F583 MOV DPH,A
\ 000045 7403 MOV A,#0x3
\ 000047 F0 MOVX @DPTR,A
75
76 // Initiate the transmission
77 mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);
\ 000048 ; Setup parameters for call to function mschAddTask
\ 000048 75.... MOV ?V0 + 0,#(mtxScheduleTransmission & 0xff)
\ 00004B 75.... MOV ?V0 + 1,#((mtxScheduleTransmission >> 8) & 0xff)
\ 00004E 75.... MOV ?V0 + 2,#((mtxScheduleTransmission >> 16) & 0xff)
\ 000051 78.. MOV R0,#?V0 + 0
\ 000053 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 000056 EE MOV A,R6
\ 000057 FC MOV R4,A
\ 000058 EF MOV A,R7
\ 000059 FD MOV R5,A
\ 00005A 7A00 MOV R2,#0x0
\ 00005C A9.. MOV R1,?V0 + 3
\ 00005E 12.... LCALL mschAddTask
\ 000061 7403 MOV A,#0x3
\ 000063 12.... LCALL ?DEALLOC_XSTACK8
78 return TRUE;
\ 000066 7901 MOV R1,#0x1
\ ??mscTransmitBeacon_3:
\ 000068 80.. SJMP ??Subroutine0_0
79
80 } // mscTransmitBeacon
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 7402 MOV A,#0x2
\ 000002 12.... LCALL ?DEALLOC_XSTACK8
\ ??Subroutine0_0:
\ 000005 7F04 MOV R7,#0x4
\ 000007 02.... LJMP ?FUNC_LEAVE_XDATA
81 #endif
82
83
84
85
86 //-------------------------------------------------------------------------------------------------------
87 // BOOL mscTransmitBeaconRequest(void)
88 //
89 // DESCRIPTION:
90 // Transmits a beacon request during active scan.
91 //
92 // RETURN VALUE:
93 // BOOL
94 // The transmission was initiated
95 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
96 ROOT BOOL mscTransmitBeaconRequest(void) {
\ mscTransmitBeaconRequest:
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 2
\ 000005 74FE MOV A,#-0x2
\ 000007 12.... LCALL ?ALLOC_XSTACK8
97 MAC_TX_PACKET *pPacket;
98 UINT8 taskNumber;
99 WORD broadcast = 0xFFFF;
\ 00000A 85..82 MOV DPL,?XSP + 0
\ 00000D 85..83 MOV DPH,?XSP + 1
\ 000010 74FF MOV A,#-0x1
\ 000012 F0 MOVX @DPTR,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -