📄 mac_indirect_polling.lst
字号:
##############################################################################
# #
# IAR 8051 C/C++ Compiler V7.20H/W32 16/Jan/2007 15:33:27 #
# 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_indirect_polling.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 #
# USE_LED -D SOC_BB -lCN "E:\公司产品资料\Zigbee\cc #
# 2431\cc2431定位\LOC_Engine\Test\mac\mac_loc\SOC_B #
# B, hex\List\" -lA "E:\公司产品资料\Zigbee\cc2431\ #
# cc2431定位\LOC_Engine\Test\mac\mac_loc\SOC_BB, #
# hex\List\" -o "E:\公司产品资料\Zigbee\cc2431\cc24 #
# 31定位\LOC_Engine\Test\mac\mac_loc\SOC_BB, #
# hex\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_indirect_polling.c #
# List file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\SOC_BB, #
# hex\List\mac_indirect_polling.lst #
# Object file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\SOC_BB, #
# hex\Obj\mac_indirect_polling.r51 #
# #
# #
##############################################################################
E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\lib\mac\CC2430\mac_indirect_polling.c
1 /*******************************************************************************************************
2 * *
3 * ********** *
4 * ************ *
5 * *** *** *
6 * *** +++ *** *
7 * *** + + *** *
8 * *** + CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY *
9 * *** + + *** Indirect Packet Polling + Related *
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 functions related to indirect packet polling, including packet formatting and *
22 * timeouts. *
23 *******************************************************************************************************/
24 #include <mac_headers.h>
25
26
27 /*******************************************************************************************************
28 *******************************************************************************************************
29 ************************** COMMON POLLING FUNCTIONS **************************
30 *******************************************************************************************************
31 *******************************************************************************************************/
32
33
34
35
36 //-------------------------------------------------------------------------------------------------------
37 // void mipTransmitAutoDataRequest(void)
38 //
39 // DESCRIPTION:
40 // Tranmits an automatic data request when the address of the device has appeared in the beacon
41 // pending list, and mpib.macAutoRequest has been set (the default value is TRUE). This kind of
42 // data request does not make any callbacks to the higher layer (mlmePollConfirm).
43 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
44 ROOT void mipTransmitAutoDataRequest(void) {
\ mipTransmitAutoDataRequest:
\ 000000 74F8 MOV A,#-0x8
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 8
\ 000005 ; Auto size: 0
45 MAC_ENUM result;
46 BOOL securityEnable = FALSE; // TBD...
47
48 // Switch to automatic polling mode
49 if (!macSetState(MAC_STATE_TX_AUTO_DATA_REQUEST)) return;
\ 000005 ; Setup parameters for call to function macSetState
\ 000005 7910 MOV R1,#0x10
\ 000007 12.... LCALL macSetState
\ 00000A E9 MOV A,R1
\ 00000B 6040 JZ ??mipTransmitAutoDataRequest_0
50
51 // Try to transmit the data request
52 if (mpib.macCoordShortAddress < 0xFFFE) {
\ 00000D 90.... MOV DPTR,#(mpib + 28)
\ 000010 E0 MOVX A,@DPTR
\ 000011 FA MOV R2,A
\ 000012 A3 INC DPTR
\ 000013 E0 MOVX A,@DPTR
\ 000014 FB MOV R3,A
\ 000015 90.... MOV DPTR,#(mpib + 22)
\ 000018 C3 CLR C
\ 000019 E0 MOVX A,@DPTR
\ 00001A 94FE SUBB A,#-0x2
\ 00001C A3 INC DPTR
\ 00001D E0 MOVX A,@DPTR
\ 00001E 94FF SUBB A,#-0x1
\ 000020 75..00 MOV ?V0 + 0,#0x0
\ 000023 78.. MOV R0,#?V0 + 0
\ 000025 500B JNC ??mipTransmitAutoDataRequest_1
53 result = mipTransmitDataRequest(AM_SHORT_16, mpib.macPANId, (ADDRESS *) &mpib.macCoordShortAddress, securityEnable);
\ 000027 ; Setup parameters for call to function mipTransmitDataRequest
\ 000027 12.... LCALL ?PUSH_XSTACK_I_ONE
\ 00002A 7C.. MOV R4,#((mpib + 22) & 0xff)
\ 00002C 7D.. MOV R5,#(((mpib + 22) >> 8) & 0xff)
\ 00002E 7902 MOV R1,#0x2
\ 000030 8009 SJMP ??mipTransmitAutoDataRequest_2
54 } else {
55 result = mipTransmitDataRequest(AM_EXTENDED_64, mpib.macPANId, (ADDRESS *) mpib.pMacCoordExtendedAddress, securityEnable);
\ ??mipTransmitAutoDataRequest_1:
\ 000032 ; Setup parameters for call to function mipTransmitDataRequest
\ 000032 12.... LCALL ?PUSH_XSTACK_I_ONE
\ 000035 7C.. MOV R4,#((mpib + 14) & 0xff)
\ 000037 7D.. MOV R5,#(((mpib + 14) >> 8) & 0xff)
\ 000039 7903 MOV R1,#0x3
\ ??mipTransmitAutoDataRequest_2:
\ 00003B 12.... LCALL mipTransmitDataRequest
\ 00003E 7401 MOV A,#0x1
\ 000040 12.... LCALL ?DEALLOC_XSTACK8
\ 000043 E9 MOV A,R1
\ 000044 FA MOV R2,A
56 }
57
58 // Clean up if it failed
59 if (result != SUCCESS) macSetState(MAC_STATE_DEFAULT);
\ 000045 EA MOV A,R2
\ 000046 6005 JZ ??mipTransmitAutoDataRequest_0
\ 000048 ; Setup parameters for call to function macSetState
\ 000048 7900 MOV R1,#0x0
\ 00004A 12.... LCALL macSetState
\ ??mipTransmitAutoDataRequest_0:
\ 00004D REQUIRE ?Subroutine0
\ 00004D ; // Fall through to label ?Subroutine0
60
61 } // mipTransmitAutoDataRequest
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 7F01 MOV R7,#0x1
\ 000002 02.... LJMP ?FUNC_LEAVE_XDATA
62
63
64
65
66 //-------------------------------------------------------------------------------------------------------
67 // MAC_ENUM mipTransmitDataRequest(BYTE coordAddrMode, WORD coordPANId, ADDRESS *pCoordAddress, BOOL ...)
68 //
69 // DESCRIPTION:
70 // Transmits a data request packet.
71 //
72 // ARGUMENTS:
73 // BYTE coordAddrMode
74 // The address mode used by the coordinator
75 // WORD coordPANId
76 // The PAN ID used by the coordinator
77 // ADDRESS *pCoordAddress
78 // A pointer to the coordinator address (taken from the MAC PIB, short or extended)
79 // BOOL securityEnable
80 // TBD...
81 //
82 // RETURN VALUE:
83 // MAC_ENUM
84 // SUCCESS No error (the transmission was initiated)
85 // RESOURCE_SHORTAGE TX packet or task not available
86 // UNAVAILABLE_KEY No key
87 // FAILED_SECURITY_CHECK Failed security check
88 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
89 ROOT MAC_ENUM mipTransmitDataRequest(BYTE coordAddrMode, WORD coordPANId, ADDRESS *pCoordAddress, BOOL securityEnable) {
\ mipTransmitDataRequest:
\ 000000 74F1 MOV A,#-0xf
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 15
\ 000005 ; Auto size: 0
\ 000005 89.. MOV ?V0 + 3,R1
\ 000007 EA MOV A,R2
\ 000008 FE MOV R6,A
\ 000009 EB MOV A,R3
\ 00000A FF MOV R7,A
\ 00000B 8C.. MOV ?V0 + 6,R4
\ 00000D 8D.. MOV ?V0 + 7,R5
90 MAC_TX_PACKET *pPacket;
91 UINT8 taskNumber;
92 BYTE txOptions;
93 UINT8 temp;
94 BYTE *pPayload;
95
96 // Try to reserve a packet
97 pPacket = mtxpReservePacket();
\ 00000F ; Setup parameters for call to function mtxpReservePacket
\ 00000F 12.... LCALL mtxpReservePacket
\ 000012 8A.. MOV ?V0 + 0,R2
\ 000014 8B.. MOV ?V0 + 1,R3
98 if (!pPacket) return RESOURCE_SHORTAGE;
\ 000016 EA MOV A,R2
\ 000017 7001 JNZ ??mipTransmitDataRequest_0
\ 000019 EB MOV A,R3
\ ??mipTransmitDataRequest_0:
\ 00001A 7005 JNZ ??mipTransmitDataRequest_1
\ ??mipTransmitDataRequest_2:
\ 00001C 7901 MOV R1,#0x1
\ 00001E 02.... LJMP ??mipTransmitDataRequest_3
99
100 // Try to reserve a transmission task
101 taskNumber = mschReserveTask();
\ ??mipTransmitDataRequest_1:
\ 000021 ; Setup parameters for call to function mschReserveTask
\ 000021 12.... LCALL mschReserveTask
\ 000024 E9 MOV A,R1
\ 000025 F5.. MOV ?V0 + 2,A
102 if (taskNumber == NO_TASK) {
\ 000027 74FF MOV A,#-0x1
\ 000029 65.. XRL A,?V0 + 2
\ 00002B 7009 JNZ ??mipTransmitDataRequest_4
103 mtxpReleasePacket(pPacket);
\ 00002D ; Setup parameters for call to function mtxpReleasePacket
\ 00002D AA.. MOV R2,?V0 + 0
\ 00002F AB.. MOV R3,?V0 + 1
\ 000031 12.... LCALL mtxpReleasePacket
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -