3495 lines
163 KiB
Plaintext
3495 lines
163 KiB
Plaintext
###############################################################################
|
||
#
|
||
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:13:01
|
||
# Copyright 2004-2018 IAR Systems AB.
|
||
# PC-locked license - IAR Embedded Workbench for 8051
|
||
#
|
||
# Core = plain
|
||
# Code model = banked
|
||
# Data model = large
|
||
# Calling convention = xdata reentrant
|
||
# Constant location = data_rom
|
||
# Dptr setup = 1,16
|
||
#
|
||
# Source file =
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\af\AF.c
|
||
# Command line =
|
||
# -f C:\Users\VULCAN\AppData\Local\Temp\EWBF5F.tmp
|
||
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\af\AF.c
|
||
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
|
||
# LCD_SUPPORTED=DEBUG -D SAPP_ZSTACK -lC
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List
|
||
# -lA
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List
|
||
# --diag_suppress Pe001,Pa010 -o
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\Obj
|
||
# -e --debug --core=plain --dptr=16,1 --data_model=large
|
||
# --code_model=banked --calling_convention=xdata_reentrant
|
||
# --place_constants=data_rom --nr_virtual_regs 8 -f
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wRouter.cfg
|
||
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
|
||
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
|
||
# -DRTR_NWK) -f
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
|
||
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
|
||
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
|
||
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
|
||
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
|
||
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
|
||
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
|
||
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
|
||
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
|
||
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
|
||
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
|
||
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
|
||
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
|
||
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
|
||
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
|
||
# -DREJOIN_POLL_RATE=440) -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
|
||
# -Ohz --require_prototypes --no_code_motion)
|
||
# Locale = Chinese (Simplified)_CHN.936
|
||
# List file =
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List\AF.lst
|
||
# Object file =
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\Obj\AF.r51
|
||
#
|
||
###############################################################################
|
||
|
||
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\af\AF.c
|
||
1 /**************************************************************************************************
|
||
2 Filename: AF.c
|
||
3 Revised: $Date: 2011-05-31 10:03:43 -0700 (Tue, 31 May 2011) $
|
||
4 Revision: $Revision: 26156 $
|
||
5
|
||
6 Description: Application Framework - Device Description helper functions
|
||
7
|
||
8
|
||
9 Copyright 2004-2011 Texas Instruments Incorporated. All rights reserved.
|
||
10
|
||
11 IMPORTANT: Your use of this Software is limited to those specific rights
|
||
12 granted under the terms of a software license agreement between the user
|
||
13 who downloaded the software, his/her employer (which must be your employer)
|
||
14 and Texas Instruments Incorporated (the "License"). You may not use this
|
||
15 Software unless you agree to abide by the terms of the License. The License
|
||
16 limits your use, and you acknowledge, that the Software may not be modified,
|
||
17 copied or distributed unless embedded on a Texas Instruments microcontroller
|
||
18 or used solely and exclusively in conjunction with a Texas Instruments radio
|
||
19 frequency transceiver, which is integrated into your product. Other than for
|
||
20 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
|
||
21 works of, modify, distribute, perform, display or sell this Software and/or
|
||
22 its documentation for any purpose.
|
||
23
|
||
24 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
|
||
25 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||
26 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
|
||
27 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
|
||
28 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
|
||
29 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
|
||
30 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
|
||
31 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
|
||
32 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
|
||
33 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
|
||
34 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
|
||
35
|
||
36 Should you have any questions regarding your right to use this Software,
|
||
37 contact Texas Instruments Incorporated at www.TI.com.
|
||
38 **************************************************************************************************/
|
||
39
|
||
40 /*********************************************************************
|
||
41 * INCLUDES
|
||
42 */
|
||
43
|
||
44 #include "OSAL.h"
|
||
45 #include "AF.h"
|
||
46 #include "nwk_globals.h"
|
||
47 #include "nwk_util.h"
|
||
48 #include "aps_groups.h"
|
||
49 #include "ZDProfile.h"
|
||
50 #include "aps_frag.h"
|
||
51 #include "rtg.h"
|
||
52
|
||
53 #if defined ( MT_AF_CB_FUNC )
|
||
54 #include "MT_AF.h"
|
||
55 #endif
|
||
56
|
||
57 #if defined ( INTER_PAN )
|
||
58 #include "stub_aps.h"
|
||
59 #endif
|
||
60
|
||
61 /*********************************************************************
|
||
62 * MACROS
|
||
63 */
|
||
64
|
||
65 /*********************************************************************
|
||
66 * @fn afSend
|
||
67 *
|
||
68 * @brief Helper macro for V1 API to invoke V2 API.
|
||
69 *
|
||
70 * input parameters
|
||
71 *
|
||
72 * @param *dstAddr - Full ZB destination address: Nwk Addr + End Point.
|
||
73 * @param srcEP - Origination (i.e. respond to or ack to) End Point.
|
||
74 * @param cID - A valid cluster ID as specified by the Profile.
|
||
75 * @param len - Number of bytes of data pointed to by next param.
|
||
76 * @param *buf - A pointer to the data bytes to send.
|
||
77 * @param options - Valid bit mask of AF Tx Options as defined in AF.h.
|
||
78 * @param *transID - A pointer to a byte which can be modified and which will
|
||
79 * be used as the transaction sequence number of the msg.
|
||
80 *
|
||
81 * output parameters
|
||
82 *
|
||
83 * @param *transID - Incremented by one if the return value is success.
|
||
84 *
|
||
85 * @return afStatus_t - See previous definition of afStatus_... types.
|
||
86 */
|
||
87 #define afSend( dstAddr, srcEP, cID, len, buf, transID, options, radius ) \
|
||
88 AF_DataRequest( (dstAddr), afFindEndPointDesc( (srcEP) ), \
|
||
89 (cID), (len), (buf), (transID), (options), (radius) )
|
||
90
|
||
91 /*********************************************************************
|
||
92 * GLOBAL VARIABLES
|
||
93 */
|
||
94
|
||
|
||
\ In segment XDATA_Z, align 1, keep-with-next
|
||
95 epList_t *epList;
|
||
\ epList:
|
||
\ 000000 DS 2
|
||
\ 000002 REQUIRE __INIT_XDATA_Z
|
||
96
|
||
97 /*********************************************************************
|
||
98 * LOCAL FUNCTIONS
|
||
99 */
|
||
100
|
||
101 static void afBuildMSGIncoming( aps_FrameFormat_t *aff, endPointDesc_t *epDesc,
|
||
102 zAddrType_t *SrcAddress, uint16 SrcPanId, NLDE_Signal_t *sig,
|
||
103 uint8 nwkSeqNum, uint8 SecurityUse, uint32 timestamp );
|
||
104
|
||
105 static epList_t *afFindEndPointDescList( uint8 EndPoint );
|
||
106
|
||
107 static pDescCB afGetDescCB( endPointDesc_t *epDesc );
|
||
108
|
||
109 /*********************************************************************
|
||
110 * PUBLIC FUNCTIONS
|
||
111 */
|
||
112
|
||
113 /*********************************************************************
|
||
114 * @fn afInit
|
||
115 *
|
||
116 * @brief Initialization function for the AF.
|
||
117 *
|
||
118 * @param none
|
||
119 *
|
||
120 * @return none
|
||
121 void afInit( void )
|
||
122 {
|
||
123 }
|
||
124 */
|
||
125
|
||
126 /*********************************************************************
|
||
127 * @fn afRegisterExtended
|
||
128 *
|
||
129 * @brief Register an Application's EndPoint description.
|
||
130 *
|
||
131 * @param epDesc - pointer to the Application's endpoint descriptor.
|
||
132 * @param descFn - pointer to descriptor callback function
|
||
133 *
|
||
134 * NOTE: The memory that epDesc is pointing to must exist after this call.
|
||
135 *
|
||
136 * @return Pointer to epList_t on success, NULL otherwise.
|
||
137 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
138 epList_t *afRegisterExtended( endPointDesc_t *epDesc, pDescCB descFn )
|
||
\ afRegisterExtended:
|
||
139 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V3
|
||
\ 000000 74F4 MOV A,#-0xc
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 12
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 8A.. MOV ?V0,R2
|
||
\ 000007 8B.. MOV ?V1,R3
|
||
\ 000009 EC MOV A,R4
|
||
\ 00000A FE MOV R6,A
|
||
\ 00000B ED MOV A,R5
|
||
\ 00000C FF MOV R7,A
|
||
140 epList_t *ep = osal_mem_alloc(sizeof(epList_t));
|
||
\ 00000D ; Setup parameters for call to function osal_mem_alloc
|
||
\ 00000D 7A09 MOV R2,#0x9
|
||
\ 00000F 7B00 MOV R3,#0x0
|
||
\ 000011 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
||
141
|
||
142 if (ep != NULL)
|
||
\ 000014 EA MOV A,R2
|
||
\ 000015 4B ORL A,R3
|
||
\ 000016 6030 JZ ??afRegisterExtended_0
|
||
143 {
|
||
144 ep->nextDesc = epList;
|
||
\ 000018 90.... MOV DPTR,#epList
|
||
\ 00001B 12.... LCALL ?Subroutine9 & 0xFFFF
|
||
145 epList = ep;
|
||
\ ??CrossCallReturnLabel_2:
|
||
\ 00001E 90.... MOV DPTR,#epList
|
||
\ 000021 12.... LCALL ?Subroutine26 & 0xFFFF
|
||
146 ep->epDesc = epDesc;
|
||
\ ??CrossCallReturnLabel_31:
|
||
\ 000024 8A82 MOV DPL,R2
|
||
\ 000026 8B83 MOV DPH,R3
|
||
\ 000028 A3 INC DPTR
|
||
\ 000029 A3 INC DPTR
|
||
\ 00002A E5.. MOV A,?V0
|
||
\ 00002C F0 MOVX @DPTR,A
|
||
\ 00002D A3 INC DPTR
|
||
\ 00002E E5.. MOV A,?V1
|
||
\ 000030 12.... LCALL ?Subroutine25 & 0xFFFF
|
||
147 ep->pfnDescCB = descFn;
|
||
148 ep->apsfCfg.frameDelay = APSF_DEFAULT_INTERFRAME_DELAY;
|
||
149 ep->apsfCfg.windowSize = APSF_DEFAULT_WINDOW_SIZE;
|
||
150 ep->flags = eEP_AllowMatch; // Default to allow Match Descriptor.
|
||
151 }
|
||
\ ??CrossCallReturnLabel_29:
|
||
\ 000033 EE MOV A,R6
|
||
\ 000034 F0 MOVX @DPTR,A
|
||
\ 000035 A3 INC DPTR
|
||
\ 000036 EF MOV A,R7
|
||
\ 000037 12.... LCALL ?Subroutine25 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_30:
|
||
\ 00003A A3 INC DPTR
|
||
\ 00003B A3 INC DPTR
|
||
\ 00003C 7432 MOV A,#0x32
|
||
\ 00003E 12.... LCALL ?Subroutine23 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_24:
|
||
\ 000041 7401 MOV A,#0x1
|
||
\ 000043 12.... LCALL ?Subroutine23 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_25:
|
||
\ 000046 A3 INC DPTR
|
||
\ 000047 F0 MOVX @DPTR,A
|
||
152
|
||
153 return ep;
|
||
\ ??afRegisterExtended_0:
|
||
\ 000048 02.... LJMP ?Subroutine0 & 0xFFFF
|
||
154 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine25:
|
||
\ 000000 12.... LCALL ?Subroutine33 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_50:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine33:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 8A82 MOV DPL,R2
|
||
\ 000003 8B83 MOV DPH,R3
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 A3 INC DPTR
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine23:
|
||
\ 000000 12.... LCALL ?Subroutine33 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_51:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine26:
|
||
\ 000000 EA MOV A,R2
|
||
\ 000001 F0 MOVX @DPTR,A
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 EB MOV A,R3
|
||
\ 000004 F0 MOVX @DPTR,A
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine34:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 F8 MOV R0,A
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 REQUIRE ??Subroutine43_0
|
||
\ 000003 ; // Fall through to label ??Subroutine43_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine43_0:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 F9 MOV R1,A
|
||
\ 000002 8A82 MOV DPL,R2
|
||
\ 000004 8B83 MOV DPH,R3
|
||
\ 000006 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine0:
|
||
\ 000000 7F04 MOV R7,#0x4
|
||
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine9:
|
||
\ 000000 12.... LCALL ?Subroutine34 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_88:
|
||
\ 000003 E8 MOV A,R0
|
||
\ 000004 F0 MOVX @DPTR,A
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 E9 MOV A,R1
|
||
\ 000007 F0 MOVX @DPTR,A
|
||
\ 000008 22 RET
|
||
155
|
||
156 /*********************************************************************
|
||
157 * @fn afRegister
|
||
158 *
|
||
159 * @brief Register an Application's EndPoint description.
|
||
160 *
|
||
161 * @param epDesc - pointer to the Application's endpoint descriptor.
|
||
162 *
|
||
163 * NOTE: The memory that epDesc is pointing to must exist after this call.
|
||
164 *
|
||
165 * @return afStatus_SUCCESS - Registered
|
||
166 * afStatus_MEM_FAIL - not enough memory to add descriptor
|
||
167 * afStatus_INVALID_PARAMETER - duplicate endpoint
|
||
168 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
169 afStatus_t afRegister( endPointDesc_t *epDesc )
|
||
\ afRegister:
|
||
170 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 74F6 MOV A,#-0xa
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 10
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 FE MOV R6,A
|
||
\ 000007 EB MOV A,R3
|
||
\ 000008 FF MOV R7,A
|
||
171 if (afFindEndPointDescList(epDesc->endPoint)) // Look for duplicate endpoint.
|
||
\ 000009 ; Setup parameters for call to function afFindEndPointDescList
|
||
\ 000009 8A82 MOV DPL,R2
|
||
\ 00000B F583 MOV DPH,A
|
||
\ 00000D 12.... LCALL ?Subroutine20 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_19:
|
||
\ 000010 EA MOV A,R2
|
||
\ 000011 4B ORL A,R3
|
||
\ 000012 6004 JZ ??afRegister_0
|
||
172 {
|
||
173 return afStatus_INVALID_PARAMETER;
|
||
\ 000014 7902 MOV R1,#0x2
|
||
\ 000016 8015 SJMP ??afRegister_1
|
||
174 }
|
||
175
|
||
176 return ((NULL == afRegisterExtended(epDesc, NULL)) ? afStatus_MEM_FAIL : afStatus_SUCCESS);
|
||
\ ??afRegister_0:
|
||
\ 000018 ; Setup parameters for call to function afRegisterExtended
|
||
\ 000018 7C00 MOV R4,#0x0
|
||
\ 00001A 7D00 MOV R5,#0x0
|
||
\ 00001C EE MOV A,R6
|
||
\ 00001D FA MOV R2,A
|
||
\ 00001E EF MOV A,R7
|
||
\ 00001F FB MOV R3,A
|
||
\ 000020 12.... LCALL `??afRegisterExtended::?relay`; Banked call to: afRegisterExtended
|
||
\ 000023 EA MOV A,R2
|
||
\ 000024 4B ORL A,R3
|
||
\ 000025 7004 JNZ ??afRegister_2
|
||
\ 000027 7910 MOV R1,#0x10
|
||
\ 000029 8002 SJMP ??afRegister_1
|
||
\ ??afRegister_2:
|
||
\ 00002B 7900 MOV R1,#0x0
|
||
\ ??afRegister_1:
|
||
\ 00002D 02.... LJMP ?Subroutine1 & 0xFFFF
|
||
177 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine20:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 F9 MOV R1,A
|
||
\ 000002 12.... LCALL `??afFindEndPointDescList::?relay`; Banked call to: afFindEndPointDescList
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine1:
|
||
\ 000000 7F02 MOV R7,#0x2
|
||
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
178
|
||
179 /*********************************************************************
|
||
180 * @fn afDataConfirm
|
||
181 *
|
||
182 * @brief This function will generate the Data Confirm back to
|
||
183 * the application.
|
||
184 *
|
||
185 * @param endPoint - confirm end point
|
||
186 * @param transID - transaction ID from APSDE_DATA_REQUEST
|
||
187 * @param status - status of APSDE_DATA_REQUEST
|
||
188 *
|
||
189 * @return none
|
||
190 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
191 void afDataConfirm( uint8 endPoint, uint8 transID, ZStatus_t status )
|
||
\ afDataConfirm:
|
||
192 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V3
|
||
\ 000000 REQUIRE ?V4
|
||
\ 000000 REQUIRE ?V5
|
||
\ 000000 74F2 MOV A,#-0xe
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 14
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 E9 MOV A,R1
|
||
\ 000006 FE MOV R6,A
|
||
\ 000007 EA MOV A,R2
|
||
\ 000008 FF MOV R7,A
|
||
\ 000009 8B.. MOV ?V0,R3
|
||
193 endPointDesc_t *epDesc;
|
||
194 afDataConfirm_t *msgPtr;
|
||
195
|
||
196 // Find the endpoint description
|
||
197 epDesc = afFindEndPointDesc( endPoint );
|
||
\ 00000B ; Setup parameters for call to function afFindEndPointDesc
|
||
\ 00000B 12.... LCALL `??afFindEndPointDesc::?relay`; Banked call to: afFindEndPointDesc
|
||
\ 00000E 8A.. MOV ?V4,R2
|
||
\ 000010 8B.. MOV ?V5,R3
|
||
198 if ( epDesc == NULL )
|
||
\ 000012 EA MOV A,R2
|
||
\ 000013 4B ORL A,R3
|
||
\ 000014 602A JZ ??CrossCallReturnLabel_4
|
||
199 return;
|
||
200
|
||
201 // Determine the incoming command type
|
||
202 msgPtr = (afDataConfirm_t *)osal_msg_allocate( sizeof(afDataConfirm_t) );
|
||
\ 000016 ; Setup parameters for call to function osal_msg_allocate
|
||
\ 000016 7A04 MOV R2,#0x4
|
||
\ 000018 7B00 MOV R3,#0x0
|
||
\ 00001A 12.... LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
|
||
203 if ( msgPtr )
|
||
\ 00001D EA MOV A,R2
|
||
\ 00001E 4B ORL A,R3
|
||
\ 00001F 601F JZ ??CrossCallReturnLabel_4
|
||
204 {
|
||
205 // Build the Data Confirm message
|
||
206 msgPtr->hdr.event = AF_DATA_CONFIRM_CMD;
|
||
\ 000021 8A82 MOV DPL,R2
|
||
\ 000023 8B83 MOV DPH,R3
|
||
\ 000025 74FD MOV A,#-0x3
|
||
\ 000027 F0 MOVX @DPTR,A
|
||
207 msgPtr->hdr.status = status;
|
||
\ 000028 A3 INC DPTR
|
||
\ 000029 E5.. MOV A,?V0
|
||
\ 00002B F0 MOVX @DPTR,A
|
||
208 msgPtr->endpoint = endPoint;
|
||
\ 00002C EE MOV A,R6
|
||
\ 00002D 8A82 MOV DPL,R2
|
||
\ 00002F 8B83 MOV DPH,R3
|
||
\ 000031 A3 INC DPTR
|
||
\ 000032 A3 INC DPTR
|
||
\ 000033 F0 MOVX @DPTR,A
|
||
209 msgPtr->transID = transID;
|
||
\ 000034 EF MOV A,R7
|
||
\ 000035 8A82 MOV DPL,R2
|
||
\ 000037 8B83 MOV DPH,R3
|
||
\ 000039 A3 INC DPTR
|
||
\ 00003A A3 INC DPTR
|
||
\ 00003B A3 INC DPTR
|
||
\ 00003C F0 MOVX @DPTR,A
|
||
210
|
||
211 #if defined ( MT_AF_CB_FUNC )
|
||
212 /* If MT has subscribed for this callback, don't send as a message. */
|
||
213 if ( AFCB_CHECK(CB_ID_AF_DATA_CNF,*(epDesc->task_id)) )
|
||
214 {
|
||
215 /* Send callback if it's subscribed */
|
||
216 MT_AfDataConfirm ((void *)msgPtr);
|
||
217 /* Release the memory. */
|
||
218 osal_msg_deallocate( (void *)msgPtr );
|
||
219 }
|
||
220 else
|
||
221 #endif
|
||
222 {
|
||
223 /* send message through task message */
|
||
224 osal_msg_send( *(epDesc->task_id), (uint8 *)msgPtr );
|
||
\ 00003D ; Setup parameters for call to function osal_msg_send
|
||
\ 00003D 12.... LCALL ?Subroutine10 & 0xFFFF
|
||
225 }
|
||
226 }
|
||
227 }
|
||
\ ??CrossCallReturnLabel_4:
|
||
\ 000040 7F06 MOV R7,#0x6
|
||
\ 000042 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine10:
|
||
\ 000000 85..82 MOV DPL,?V4
|
||
\ 000003 85..83 MOV DPH,?V5
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 12.... LCALL ?Subroutine35 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_52:
|
||
\ 00000A F9 MOV R1,A
|
||
\ 00000B 12.... LCALL `??osal_msg_send::?relay`; Banked call to: osal_msg_send
|
||
\ 00000E 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine35:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 F8 MOV R0,A
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 E0 MOVX A,@DPTR
|
||
\ 000004 F583 MOV DPH,A
|
||
\ 000006 8882 MOV DPL,R0
|
||
\ 000008 E0 MOVX A,@DPTR
|
||
\ 000009 22 RET
|
||
228
|
||
229 /*********************************************************************
|
||
230 * @fn afIncomingData
|
||
231 *
|
||
232 * @brief Transfer a data PDU (ASDU) from the APS sub-layer to the AF.
|
||
233 *
|
||
234 * @param aff - pointer to APS frame format
|
||
235 * @param SrcAddress - Source address
|
||
236 * @param SrcPanId - Source PAN ID
|
||
237 * @param sig - incoming message's link quality
|
||
238 * @param nwkSeqNum - incoming network sequence number (from nwk header frame)
|
||
239 * @param SecurityUse - Security enable/disable
|
||
240 * @param timestamp - the MAC Timer2 timestamp at Rx.
|
||
241 *
|
||
242 * @return none
|
||
243 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
244 void afIncomingData( aps_FrameFormat_t *aff, zAddrType_t *SrcAddress, uint16 SrcPanId,
|
||
\ afIncomingData:
|
||
245 NLDE_Signal_t *sig, uint8 nwkSeqNum, uint8 SecurityUse, uint32 timestamp )
|
||
246 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V3
|
||
\ 000000 REQUIRE ?V4
|
||
\ 000000 REQUIRE ?V5
|
||
\ 000000 REQUIRE ?V6
|
||
\ 000000 REQUIRE ?V7
|
||
\ 000000 74F0 MOV A,#-0x10
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 16
|
||
\ 000005 ; Auto size: 9
|
||
\ 000005 74F7 MOV A,#-0x9
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A 7401 MOV A,#0x1
|
||
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00000F 12.... LCALL ?Subroutine26 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_32:
|
||
\ 000012 7407 MOV A,#0x7
|
||
\ 000014 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000017 EC MOV A,R4
|
||
\ 000018 F0 MOVX @DPTR,A
|
||
\ 000019 A3 INC DPTR
|
||
\ 00001A ED MOV A,R5
|
||
\ 00001B F0 MOVX @DPTR,A
|
||
\ 00001C 7406 MOV A,#0x6
|
||
\ 00001E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000021 E9 MOV A,R1
|
||
\ 000022 F0 MOVX @DPTR,A
|
||
247 endPointDesc_t *epDesc = NULL;
|
||
248 epList_t *pList = epList;
|
||
\ 000023 90.... MOV DPTR,#epList
|
||
\ 000026 12.... LCALL ??Subroutine42_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_76:
|
||
\ 000029 7403 MOV A,#0x3
|
||
\ 00002B 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00002E 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
249 #if !defined ( APS_NO_GROUPS )
|
||
250 uint8 grpEp = APS_GROUPS_EP_NOT_FOUND;
|
||
\ ??CrossCallReturnLabel_64:
|
||
\ 000031 85..82 MOV DPL,?XSP + 0
|
||
\ 000034 85..83 MOV DPH,?XSP + 1
|
||
\ 000037 74FE MOV A,#-0x2
|
||
\ 000039 F0 MOVX @DPTR,A
|
||
251 #endif
|
||
252
|
||
253 if ( ((aff->FrmCtrl & APS_DELIVERYMODE_MASK) == APS_FC_DM_GROUP) )
|
||
\ 00003A 7401 MOV A,#0x1
|
||
\ 00003C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00003F 12.... LCALL ?Subroutine11 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_6:
|
||
\ 000042 7021 JNZ ??afIncomingData_0
|
||
254 {
|
||
255 #if !defined ( APS_NO_GROUPS )
|
||
256 // Find the first endpoint for this group
|
||
257 grpEp = aps_FindGroupForEndpoint( aff->GroupID, APS_GROUPS_FIND_FIRST );
|
||
\ 000044 ; Setup parameters for call to function aps_FindGroupForEndpoint
|
||
\ 000044 79FE MOV R1,#-0x2
|
||
\ 000046 7401 MOV A,#0x1
|
||
\ 000048 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00004B 12.... LCALL ?Subroutine7 & 0xFFFF
|
||
258 if ( grpEp == APS_GROUPS_EP_NOT_FOUND )
|
||
\ ??CrossCallReturnLabel_0:
|
||
\ 00004E 7003 JNZ $+5
|
||
\ 000050 02.... LJMP ??afIncomingData_1 & 0xFFFF
|
||
259 return; // No endpoint found
|
||
260
|
||
261 epDesc = afFindEndPointDesc( grpEp );
|
||
\ 000053 ; Setup parameters for call to function afFindEndPointDesc
|
||
\ 000053 12.... LCALL `??afFindEndPointDesc::?relay`; Banked call to: afFindEndPointDesc
|
||
\ 000056 8A.. MOV ?V0,R2
|
||
\ 000058 8B.. MOV ?V1,R3
|
||
\ 00005A AE.. MOV R6,?V0
|
||
\ 00005C AF.. MOV R7,?V1
|
||
262 if ( epDesc == NULL )
|
||
\ 00005E EA MOV A,R2
|
||
\ 00005F 4F ORL A,R7
|
||
\ 000060 7048 JNZ ??afIncomingData_2
|
||
263 return; // Endpoint descriptor not found
|
||
\ 000062 02.... LJMP ??afIncomingData_1 & 0xFFFF
|
||
264
|
||
265 pList = afFindEndPointDescList( epDesc->endPoint );
|
||
266 #else
|
||
267 return; // Not supported
|
||
268 #endif
|
||
269 }
|
||
270 else if ( aff->DstEndPoint == AF_BROADCAST_ENDPOINT )
|
||
\ ??afIncomingData_0:
|
||
\ 000065 7401 MOV A,#0x1
|
||
\ 000067 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00006A 12.... LCALL ?Subroutine17 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_17:
|
||
\ 00006D 7021 JNZ ??afIncomingData_3
|
||
271 {
|
||
272 // Set the list
|
||
273 if ( pList != NULL )
|
||
\ 00006F 7403 MOV A,#0x3
|
||
\ 000071 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000074 12.... LCALL ??Subroutine44_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_92:
|
||
\ 000077 7003 JNZ $+5
|
||
\ 000079 02.... LJMP ??afIncomingData_1 & 0xFFFF
|
||
274 {
|
||
275 epDesc = pList->epDesc;
|
||
\ 00007C 7403 MOV A,#0x3
|
||
\ 00007E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000081 12.... LCALL ?Subroutine13 & 0xFFFF
|
||
276 }
|
||
277 }
|
||
\ ??CrossCallReturnLabel_10:
|
||
\ 000084 741E MOV A,#0x1e
|
||
\ 000086 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000089 78.. MOV R0,#?V0
|
||
\ 00008B 12.... LCALL ?L_MOV_X
|
||
\ 00008E 802E SJMP ??CrossCallReturnLabel_11
|
||
278 else if ( (epDesc = afFindEndPointDesc( aff->DstEndPoint )) )
|
||
\ ??afIncomingData_3:
|
||
\ 000090 ; Setup parameters for call to function afFindEndPointDesc
|
||
\ 000090 7401 MOV A,#0x1
|
||
\ 000092 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000095 12.... LCALL ??Subroutine39_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_56:
|
||
\ 000098 A3 INC DPTR
|
||
\ 000099 E0 MOVX A,@DPTR
|
||
\ 00009A F9 MOV R1,A
|
||
\ 00009B 12.... LCALL `??afFindEndPointDesc::?relay`; Banked call to: afFindEndPointDesc
|
||
\ 00009E 8B.. MOV ?V1,R3
|
||
\ 0000A0 A9.. MOV R1,?V1
|
||
\ 0000A2 EA MOV A,R2
|
||
\ 0000A3 FE MOV R6,A
|
||
\ 0000A4 EB MOV A,R3
|
||
\ 0000A5 FF MOV R7,A
|
||
\ 0000A6 EA MOV A,R2
|
||
\ 0000A7 49 ORL A,R1
|
||
\ 0000A8 60DA JZ ??CrossCallReturnLabel_10
|
||
279 {
|
||
280 pList = afFindEndPointDescList( epDesc->endPoint );
|
||
\ ??afIncomingData_2:
|
||
\ 0000AA ; Setup parameters for call to function afFindEndPointDescList
|
||
\ 0000AA 8E82 MOV DPL,R6
|
||
\ 0000AC 8F83 MOV DPH,R7
|
||
\ 0000AE 12.... LCALL ?Subroutine20 & 0xFFFF
|
||
281 }
|
||
\ ??CrossCallReturnLabel_20:
|
||
\ 0000B1 7403 MOV A,#0x3
|
||
\ 0000B3 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000B6 12.... LCALL ?Subroutine26 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_33:
|
||
\ 0000B9 80C9 SJMP ??CrossCallReturnLabel_10
|
||
282
|
||
283 while ( epDesc )
|
||
284 {
|
||
285 uint16 epProfileID = 0xFFFF; // Invalid Profile ID
|
||
286
|
||
287 if ( pList->pfnDescCB )
|
||
288 {
|
||
289 uint16 *pID = (uint16 *)(pList->pfnDescCB(
|
||
290 AF_DESCRIPTOR_PROFILE_ID, epDesc->endPoint ));
|
||
291 if ( pID )
|
||
292 {
|
||
293 epProfileID = *pID;
|
||
294 osal_mem_free( pID );
|
||
295 }
|
||
296 }
|
||
297 else if ( epDesc->simpleDesc )
|
||
298 {
|
||
299 epProfileID = epDesc->simpleDesc->AppProfId;
|
||
300 }
|
||
301
|
||
302 if ( (aff->ProfileID == epProfileID) ||
|
||
303 ((epDesc->endPoint == ZDO_EP) && (aff->ProfileID == ZDO_PROFILE_ID)) )
|
||
304 {
|
||
305 {
|
||
306 // Save original endpoint
|
||
307 uint8 endpoint = aff->DstEndPoint;
|
||
308
|
||
309 // overwrite with descriptor's endpoint
|
||
310 aff->DstEndPoint = epDesc->endPoint;
|
||
311
|
||
312 afBuildMSGIncoming( aff, epDesc, SrcAddress, SrcPanId, sig,
|
||
313 nwkSeqNum, SecurityUse, timestamp );
|
||
314
|
||
315 // Restore with original endpoint
|
||
316 aff->DstEndPoint = endpoint;
|
||
317 }
|
||
318 }
|
||
319
|
||
320 if ( ((aff->FrmCtrl & APS_DELIVERYMODE_MASK) == APS_FC_DM_GROUP) )
|
||
321 {
|
||
322 #if !defined ( APS_NO_GROUPS )
|
||
323 // Find the next endpoint for this group
|
||
324 grpEp = aps_FindGroupForEndpoint( aff->GroupID, grpEp );
|
||
325 if ( grpEp == APS_GROUPS_EP_NOT_FOUND )
|
||
326 return; // No endpoint found
|
||
327
|
||
328 epDesc = afFindEndPointDesc( grpEp );
|
||
329 if ( epDesc == NULL )
|
||
330 return; // Endpoint descriptor not found
|
||
331
|
||
332 pList = afFindEndPointDescList( epDesc->endPoint );
|
||
333 #else
|
||
334 return;
|
||
335 #endif
|
||
336 }
|
||
337 else if ( aff->DstEndPoint == AF_BROADCAST_ENDPOINT )
|
||
338 {
|
||
339 pList = pList->nextDesc;
|
||
340 if ( pList )
|
||
341 epDesc = pList->epDesc;
|
||
\ ??afIncomingData_4:
|
||
\ 0000BB 12.... LCALL ?Subroutine13 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_11:
|
||
\ 0000BE EE MOV A,R6
|
||
\ 0000BF 4F ORL A,R7
|
||
\ 0000C0 7003 JNZ $+5
|
||
\ 0000C2 02.... LJMP ??afIncomingData_1 & 0xFFFF
|
||
\ 0000C5 800F SJMP ??CrossCallReturnLabel_34
|
||
\ ??afIncomingData_5:
|
||
\ 0000C7 ; Setup parameters for call to function afFindEndPointDescList
|
||
\ 0000C7 8A82 MOV DPL,R2
|
||
\ 0000C9 8B83 MOV DPH,R3
|
||
\ 0000CB 12.... LCALL ?Subroutine20 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_21:
|
||
\ 0000CE 7403 MOV A,#0x3
|
||
\ 0000D0 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000D3 12.... LCALL ?Subroutine26 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_34:
|
||
\ 0000D6 75..FF MOV ?V6,#-0x1
|
||
\ 0000D9 75..FF MOV ?V7,#-0x1
|
||
\ 0000DC 7403 MOV A,#0x3
|
||
\ 0000DE 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000E1 12.... LCALL ?Subroutine18 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_58:
|
||
\ 0000E4 12.... LCALL ?Subroutine6 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_95:
|
||
\ 0000E7 8E82 MOV DPL,R6
|
||
\ 0000E9 8F83 MOV DPH,R7
|
||
\ 0000EB 6022 JZ ??afIncomingData_6
|
||
\ 0000ED ; Setup parameters for indirect call
|
||
\ 0000ED E0 MOVX A,@DPTR
|
||
\ 0000EE FA MOV R2,A
|
||
\ 0000EF 7902 MOV R1,#0x2
|
||
\ 0000F1 7403 MOV A,#0x3
|
||
\ 0000F3 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000F6 12.... LCALL ?Subroutine18 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_59:
|
||
\ 0000F9 12.... LCALL ?Subroutine19 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_101:
|
||
\ 0000FC 12.... LCALL ?CALL_IND
|
||
\ 0000FF EA MOV A,R2
|
||
\ 000100 4B ORL A,R3
|
||
\ 000101 601E JZ ??CrossCallReturnLabel_15
|
||
\ 000103 8A82 MOV DPL,R2
|
||
\ 000105 8B83 MOV DPH,R3
|
||
\ 000107 12.... LCALL ?Subroutine16 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_14:
|
||
\ 00010A ; Setup parameters for call to function osal_mem_free
|
||
\ 00010A 12.... LCALL `??osal_mem_free::?relay`; Banked call to: osal_mem_free
|
||
\ 00010D 8012 SJMP ??CrossCallReturnLabel_15
|
||
\ ??afIncomingData_6:
|
||
\ 00010F 12.... LCALL ?Subroutine6 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_96:
|
||
\ 000112 600D JZ ??CrossCallReturnLabel_15
|
||
\ 000114 8E82 MOV DPL,R6
|
||
\ 000116 8F83 MOV DPH,R7
|
||
\ 000118 A3 INC DPTR
|
||
\ 000119 A3 INC DPTR
|
||
\ 00011A A3 INC DPTR
|
||
\ 00011B 12.... LCALL ??Subroutine39_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_57:
|
||
\ 00011E 12.... LCALL ?Subroutine16 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_15:
|
||
\ 000121 7401 MOV A,#0x1
|
||
\ 000123 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000126 12.... LCALL ?Subroutine12 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_8:
|
||
\ 000129 E0 MOVX A,@DPTR
|
||
\ 00012A 65.. XRL A,?V6
|
||
\ 00012C 7004 JNZ ??afIncomingData_7
|
||
\ 00012E A3 INC DPTR
|
||
\ 00012F E0 MOVX A,@DPTR
|
||
\ 000130 65.. XRL A,?V7
|
||
\ ??afIncomingData_7:
|
||
\ 000132 6017 JZ ??afIncomingData_8
|
||
\ 000134 8E82 MOV DPL,R6
|
||
\ 000136 8F83 MOV DPH,R7
|
||
\ 000138 E0 MOVX A,@DPTR
|
||
\ 000139 6003 JZ $+5
|
||
\ 00013B 02.... LJMP ??CrossCallReturnLabel_23 & 0xFFFF
|
||
\ 00013E 7401 MOV A,#0x1
|
||
\ 000140 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000143 12.... LCALL ?Subroutine12 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_9:
|
||
\ 000146 12.... LCALL ??Subroutine44_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_93:
|
||
\ 000149 7074 JNZ ??CrossCallReturnLabel_23
|
||
\ ??afIncomingData_8:
|
||
\ 00014B 7401 MOV A,#0x1
|
||
\ 00014D 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000150 E0 MOVX A,@DPTR
|
||
\ 000151 2402 ADD A,#0x2
|
||
\ 000153 F5.. MOV ?V6,A
|
||
\ 000155 A3 INC DPTR
|
||
\ 000156 E0 MOVX A,@DPTR
|
||
\ 000157 3400 ADDC A,#0x0
|
||
\ 000159 F5.. MOV ?V7,A
|
||
\ 00015B 85..82 MOV DPL,?V6
|
||
\ 00015E F583 MOV DPH,A
|
||
\ 000160 E0 MOVX A,@DPTR
|
||
\ 000161 C0E0 PUSH A
|
||
\ 000163 7405 MOV A,#0x5
|
||
\ 000165 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000168 D0E0 POP A
|
||
\ 00016A F0 MOVX @DPTR,A
|
||
\ 00016B 8E82 MOV DPL,R6
|
||
\ 00016D 8F83 MOV DPH,R7
|
||
\ 00016F 12.... LCALL ?Subroutine21 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_22:
|
||
\ 000172 ; Setup parameters for call to function afBuildMSGIncoming
|
||
\ 000172 78.. MOV R0,#?V0
|
||
\ 000174 12.... LCALL ?PUSH_XSTACK_I_FOUR
|
||
\ 000177 7421 MOV A,#0x21
|
||
\ 000179 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00017C E0 MOVX A,@DPTR
|
||
\ 00017D F5.. MOV ?V4,A
|
||
\ 00017F 78.. MOV R0,#?V4
|
||
\ 000181 12.... LCALL ?PUSH_XSTACK_I_ONE
|
||
\ 000184 7420 MOV A,#0x20
|
||
\ 000186 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000189 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 00018C 7420 MOV A,#0x20
|
||
\ 00018E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000191 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 000194 7410 MOV A,#0x10
|
||
\ 000196 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000199 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 00019C 7411 MOV A,#0x11
|
||
\ 00019E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001A1 E0 MOVX A,@DPTR
|
||
\ 0001A2 F9 MOV R1,A
|
||
\ 0001A3 EE MOV A,R6
|
||
\ 0001A4 FC MOV R4,A
|
||
\ 0001A5 EF MOV A,R7
|
||
\ 0001A6 FD MOV R5,A
|
||
\ 0001A7 740C MOV A,#0xc
|
||
\ 0001A9 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001AC 12.... LCALL ??Subroutine48_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_109:
|
||
\ 0001AF 12.... LCALL `??afBuildMSGIncoming::?relay`; Banked call to: afBuildMSGIncoming
|
||
\ 0001B2 740B MOV A,#0xb
|
||
\ 0001B4 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 0001B7 7405 MOV A,#0x5
|
||
\ 0001B9 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001BC 12.... LCALL ?Subroutine21 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_23:
|
||
\ 0001BF 7401 MOV A,#0x1
|
||
\ 0001C1 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001C4 12.... LCALL ?Subroutine11 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_7:
|
||
\ 0001C7 7026 JNZ ??afIncomingData_9
|
||
\ 0001C9 ; Setup parameters for call to function aps_FindGroupForEndpoint
|
||
\ 0001C9 85..82 MOV DPL,?XSP + 0
|
||
\ 0001CC 85..83 MOV DPH,?XSP + 1
|
||
\ 0001CF E0 MOVX A,@DPTR
|
||
\ 0001D0 F9 MOV R1,A
|
||
\ 0001D1 7401 MOV A,#0x1
|
||
\ 0001D3 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001D6 12.... LCALL ?Subroutine7 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_1:
|
||
\ 0001D9 603E JZ ??afIncomingData_1
|
||
\ 0001DB ; Setup parameters for call to function afFindEndPointDesc
|
||
\ 0001DB 12.... LCALL `??afFindEndPointDesc::?relay`; Banked call to: afFindEndPointDesc
|
||
\ 0001DE 8A.. MOV ?V4,R2
|
||
\ 0001E0 8B.. MOV ?V5,R3
|
||
\ 0001E2 AE.. MOV R6,?V4
|
||
\ 0001E4 AF.. MOV R7,?V5
|
||
\ 0001E6 EA MOV A,R2
|
||
\ 0001E7 4F ORL A,R7
|
||
\ 0001E8 6003 JZ $+5
|
||
\ 0001EA 02.... LJMP ??afIncomingData_5 & 0xFFFF
|
||
\ 0001ED 802A SJMP ??afIncomingData_1
|
||
\ ??afIncomingData_9:
|
||
\ 0001EF 7401 MOV A,#0x1
|
||
\ 0001F1 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001F4 12.... LCALL ?Subroutine17 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_18:
|
||
\ 0001F7 7020 JNZ ??afIncomingData_1
|
||
\ 0001F9 7403 MOV A,#0x3
|
||
\ 0001FB 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001FE 12.... LCALL ??Subroutine46_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_98:
|
||
\ 000201 12.... LCALL ??Subroutine42_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_77:
|
||
\ 000204 7403 MOV A,#0x3
|
||
\ 000206 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000209 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_65:
|
||
\ 00020C 7403 MOV A,#0x3
|
||
\ 00020E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000211 E0 MOVX A,@DPTR
|
||
\ 000212 F8 MOV R0,A
|
||
\ 000213 49 ORL A,R1
|
||
\ 000214 6003 JZ $+5
|
||
\ 000216 02.... LJMP ??afIncomingData_4 & 0xFFFF
|
||
342 else
|
||
343 epDesc = NULL;
|
||
344 }
|
||
345 else
|
||
346 epDesc = NULL;
|
||
347 }
|
||
348 }
|
||
\ ??afIncomingData_1:
|
||
\ 000219 7409 MOV A,#0x9
|
||
\ 00021B REQUIRE ?Subroutine2
|
||
\ 00021B ; // Fall through to label ?Subroutine2
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine2:
|
||
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000003 7F08 MOV R7,#0x8
|
||
\ 000005 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine21:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 85..82 MOV DPL,?V6
|
||
\ 000004 85..83 MOV DPH,?V7
|
||
\ 000007 F0 MOVX @DPTR,A
|
||
\ 000008 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine18:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 F8 MOV R0,A
|
||
\ 000002 REQUIRE ??Subroutine39_0
|
||
\ 000002 ; // Fall through to label ??Subroutine39_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine39_0:
|
||
\ 000000 12.... LCALL ?Subroutine38 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_63:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine38:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 REQUIRE ??Subroutine40_0
|
||
\ 000001 ; // Fall through to label ??Subroutine40_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine40_0:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 F583 MOV DPH,A
|
||
\ 000003 8882 MOV DPL,R0
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine17:
|
||
\ 000000 12.... LCALL ?Subroutine37 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_55:
|
||
\ 000003 F4 CPL A
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine13:
|
||
\ 000000 12.... LCALL ?Subroutine37 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_54:
|
||
\ 000003 FE MOV R6,A
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 E0 MOVX A,@DPTR
|
||
\ 000006 FF MOV R7,A
|
||
\ 000007 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine37:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 E0 MOVX A,@DPTR
|
||
\ 000002 F583 MOV DPH,A
|
||
\ 000004 8882 MOV DPL,R0
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 E0 MOVX A,@DPTR
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine12:
|
||
\ 000000 12.... LCALL ?Subroutine36 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_105:
|
||
\ 000003 C8 XCH A,R0
|
||
\ 000004 2408 ADD A,#0x8
|
||
\ 000006 F582 MOV DPL,A
|
||
\ 000008 E4 CLR A
|
||
\ 000009 38 ADDC A,R0
|
||
\ 00000A F583 MOV DPH,A
|
||
\ 00000C 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine11:
|
||
\ 000000 12.... LCALL ?Subroutine35 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_53:
|
||
\ 000003 540C ANL A,#0xc
|
||
\ 000005 640C XRL A,#0xc
|
||
\ 000007 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine7:
|
||
\ 000000 12.... LCALL ?Subroutine38 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_62:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 E0 MOVX A,@DPTR
|
||
\ 000008 FA MOV R2,A
|
||
\ 000009 A3 INC DPTR
|
||
\ 00000A E0 MOVX A,@DPTR
|
||
\ 00000B FB MOV R3,A
|
||
\ 00000C 12.... LCALL `??aps_FindGroupForEndpoint::?relay`; Banked call to: aps_FindGroupForEndpoint
|
||
\ 00000F E9 MOV A,R1
|
||
\ 000010 85..82 MOV DPL,?XSP + 0
|
||
\ 000013 85..83 MOV DPH,?XSP + 1
|
||
\ 000016 F0 MOVX @DPTR,A
|
||
\ 000017 64FE XRL A,#0xfe
|
||
\ 000019 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine41_0:
|
||
\ 000000 E8 MOV A,R0
|
||
\ 000001 F0 MOVX @DPTR,A
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 E9 MOV A,R1
|
||
\ 000004 F0 MOVX @DPTR,A
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine42_0:
|
||
\ 000000 12.... LCALL ?Subroutine36 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_106:
|
||
\ 000003 F9 MOV R1,A
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine16:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 F5.. MOV ?V6,A
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 E0 MOVX A,@DPTR
|
||
\ 000005 F5.. MOV ?V7,A
|
||
\ 000007 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine6:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 REQUIRE ??Subroutine44_0
|
||
\ 000003 ; // Fall through to label ??Subroutine44_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine44_0:
|
||
\ 000000 12.... LCALL ?Subroutine36 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_107:
|
||
\ 000003 F9 MOV R1,A
|
||
\ 000004 E8 MOV A,R0
|
||
\ 000005 49 ORL A,R1
|
||
\ 000006 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine36:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 F8 MOV R0,A
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 E0 MOVX A,@DPTR
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine19:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 REQUIRE ??Subroutine45_0
|
||
\ 000001 ; // Fall through to label ??Subroutine45_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine45_0:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 REQUIRE ??Subroutine46_0
|
||
\ 000002 ; // Fall through to label ??Subroutine46_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine46_0:
|
||
\ 000000 12.... LCALL ?Subroutine36 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_108:
|
||
\ 000003 F583 MOV DPH,A
|
||
\ 000005 8882 MOV DPL,R0
|
||
\ 000007 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine48_0:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 FA MOV R2,A
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 E0 MOVX A,@DPTR
|
||
\ 000004 FB MOV R3,A
|
||
\ 000005 22 RET
|
||
349
|
||
350 /*********************************************************************
|
||
351 * @fn afBuildMSGIncoming
|
||
352 *
|
||
353 * @brief Build the message for the app
|
||
354 *
|
||
355 * @param
|
||
356 *
|
||
357 * @return pointer to next in data buffer
|
||
358 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
359 static void afBuildMSGIncoming( aps_FrameFormat_t *aff, endPointDesc_t *epDesc,
|
||
\ afBuildMSGIncoming:
|
||
360 zAddrType_t *SrcAddress, uint16 SrcPanId, NLDE_Signal_t *sig,
|
||
361 uint8 nwkSeqNum, uint8 SecurityUse, uint32 timestamp )
|
||
362 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V3
|
||
\ 000000 REQUIRE ?V4
|
||
\ 000000 REQUIRE ?V5
|
||
\ 000000 REQUIRE ?V6
|
||
\ 000000 74F1 MOV A,#-0xf
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 15
|
||
\ 000005 ; Auto size: 2
|
||
\ 000005 74FE MOV A,#-0x2
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A 8A.. MOV ?V0,R2
|
||
\ 00000C 8B.. MOV ?V1,R3
|
||
\ 00000E 8C.. MOV ?V4,R4
|
||
\ 000010 8D.. MOV ?V5,R5
|
||
\ 000012 89.. MOV ?V6,R1
|
||
363 afIncomingMSGPacket_t *MSGpkt;
|
||
364 const uint8 len = sizeof( afIncomingMSGPacket_t ) + aff->asduLength;
|
||
365 uint8 *asdu = aff->asdu;
|
||
\ 000014 EA MOV A,R2
|
||
\ 000015 240E ADD A,#0xe
|
||
\ 000017 F582 MOV DPL,A
|
||
\ 000019 E4 CLR A
|
||
\ 00001A 35.. ADDC A,?V1
|
||
\ 00001C F583 MOV DPH,A
|
||
\ 00001E 12.... LCALL ??Subroutine42_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_78:
|
||
\ 000021 85..82 MOV DPL,?XSP + 0
|
||
\ 000024 85..83 MOV DPH,?XSP + 1
|
||
\ 000027 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
366 MSGpkt = (afIncomingMSGPacket_t *)osal_msg_allocate( len );
|
||
\ ??CrossCallReturnLabel_66:
|
||
\ 00002A ; Setup parameters for call to function osal_msg_allocate
|
||
\ 00002A EA MOV A,R2
|
||
\ 00002B 12.... LCALL ?Subroutine30 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_44:
|
||
\ 00002E 2424 ADD A,#0x24
|
||
\ 000030 FA MOV R2,A
|
||
\ 000031 7B00 MOV R3,#0x0
|
||
\ 000033 12.... LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
|
||
\ 000036 8A.. MOV ?V2,R2
|
||
\ 000038 8B.. MOV ?V3,R3
|
||
\ 00003A AE.. MOV R6,?V2
|
||
\ 00003C AF.. MOV R7,?V3
|
||
367
|
||
368 if ( MSGpkt == NULL )
|
||
\ 00003E EA MOV A,R2
|
||
\ 00003F 4F ORL A,R7
|
||
\ 000040 7003 JNZ $+5
|
||
\ 000042 02.... LJMP ??CrossCallReturnLabel_5 & 0xFFFF
|
||
369 {
|
||
370 return;
|
||
371 }
|
||
372
|
||
373 MSGpkt->hdr.event = AF_INCOMING_MSG_CMD;
|
||
\ 000045 8A82 MOV DPL,R2
|
||
\ 000047 8B83 MOV DPH,R3
|
||
\ 000049 741A MOV A,#0x1a
|
||
\ 00004B 12.... LCALL ?Subroutine24 & 0xFFFF
|
||
374 MSGpkt->groupId = aff->GroupID;
|
||
\ ??CrossCallReturnLabel_26:
|
||
\ 00004E 12.... LCALL ?Subroutine14 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_12:
|
||
\ 000051 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
375 MSGpkt->clusterId = aff->ClusterID;
|
||
\ ??CrossCallReturnLabel_67:
|
||
\ 000054 85..82 MOV DPL,?V0
|
||
\ 000057 85..83 MOV DPH,?V1
|
||
\ 00005A A3 INC DPTR
|
||
\ 00005B A3 INC DPTR
|
||
\ 00005C 12.... LCALL ?Subroutine14 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_13:
|
||
\ 00005F A3 INC DPTR
|
||
\ 000060 A3 INC DPTR
|
||
\ 000061 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
376 afCopyAddress( &MSGpkt->srcAddr, SrcAddress );
|
||
\ ??CrossCallReturnLabel_68:
|
||
\ 000064 ; Setup parameters for call to function afCopyAddress
|
||
\ 000064 7411 MOV A,#0x11
|
||
\ 000066 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000069 E0 MOVX A,@DPTR
|
||
\ 00006A FC MOV R4,A
|
||
\ 00006B A3 INC DPTR
|
||
\ 00006C E0 MOVX A,@DPTR
|
||
\ 00006D FD MOV R5,A
|
||
\ 00006E EA MOV A,R2
|
||
\ 00006F 2406 ADD A,#0x6
|
||
\ 000071 FA MOV R2,A
|
||
\ 000072 E4 CLR A
|
||
\ 000073 3F ADDC A,R7
|
||
\ 000074 FB MOV R3,A
|
||
\ 000075 12.... LCALL `??afCopyAddress::?relay`; Banked call to: afCopyAddress
|
||
377 MSGpkt->srcAddr.endPoint = aff->SrcEndPoint;
|
||
\ 000078 85..82 MOV DPL,?V0
|
||
\ 00007B 85..83 MOV DPH,?V1
|
||
\ 00007E A3 INC DPTR
|
||
\ 00007F A3 INC DPTR
|
||
\ 000080 A3 INC DPTR
|
||
\ 000081 E0 MOVX A,@DPTR
|
||
\ 000082 C0E0 PUSH A
|
||
\ 000084 EE MOV A,R6
|
||
\ 000085 240F ADD A,#0xf
|
||
\ 000087 F582 MOV DPL,A
|
||
\ 000089 E4 CLR A
|
||
\ 00008A 3F ADDC A,R7
|
||
\ 00008B F583 MOV DPH,A
|
||
\ 00008D D0E0 POP A
|
||
\ 00008F F0 MOVX @DPTR,A
|
||
378 MSGpkt->endPoint = epDesc->endPoint;
|
||
\ 000090 85..82 MOV DPL,?V4
|
||
\ 000093 85..83 MOV DPH,?V5
|
||
\ 000096 E0 MOVX A,@DPTR
|
||
\ 000097 C0E0 PUSH A
|
||
\ 000099 EE MOV A,R6
|
||
\ 00009A 2414 ADD A,#0x14
|
||
\ 00009C F582 MOV DPL,A
|
||
\ 00009E E4 CLR A
|
||
\ 00009F 3F ADDC A,R7
|
||
\ 0000A0 F583 MOV DPH,A
|
||
\ 0000A2 D0E0 POP A
|
||
\ 0000A4 F0 MOVX @DPTR,A
|
||
379 MSGpkt->wasBroadcast = aff->wasBroadcast;
|
||
\ 0000A5 E5.. MOV A,?V0
|
||
\ 0000A7 240C ADD A,#0xc
|
||
\ 0000A9 F582 MOV DPL,A
|
||
\ 0000AB E4 CLR A
|
||
\ 0000AC 35.. ADDC A,?V1
|
||
\ 0000AE F583 MOV DPH,A
|
||
\ 0000B0 E0 MOVX A,@DPTR
|
||
\ 0000B1 C0E0 PUSH A
|
||
\ 0000B3 EE MOV A,R6
|
||
\ 0000B4 2415 ADD A,#0x15
|
||
\ 0000B6 F582 MOV DPL,A
|
||
\ 0000B8 E4 CLR A
|
||
\ 0000B9 3F ADDC A,R7
|
||
\ 0000BA F583 MOV DPH,A
|
||
\ 0000BC D0E0 POP A
|
||
\ 0000BE F0 MOVX @DPTR,A
|
||
\ 0000BF 7415 MOV A,#0x15
|
||
\ 0000C1 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000C4 12.... LCALL ??Subroutine42_0 & 0xFFFF
|
||
380 MSGpkt->LinkQuality = sig->LinkQuality;
|
||
\ ??CrossCallReturnLabel_79:
|
||
\ 0000C7 8882 MOV DPL,R0
|
||
\ 0000C9 F583 MOV DPH,A
|
||
\ 0000CB E0 MOVX A,@DPTR
|
||
\ 0000CC C0E0 PUSH A
|
||
\ 0000CE EE MOV A,R6
|
||
\ 0000CF 2416 ADD A,#0x16
|
||
\ 0000D1 F582 MOV DPL,A
|
||
\ 0000D3 E4 CLR A
|
||
\ 0000D4 3F ADDC A,R7
|
||
\ 0000D5 F583 MOV DPH,A
|
||
\ 0000D7 D0E0 POP A
|
||
\ 0000D9 F0 MOVX @DPTR,A
|
||
381 MSGpkt->correlation = sig->correlation;
|
||
\ 0000DA 8882 MOV DPL,R0
|
||
\ 0000DC 8983 MOV DPH,R1
|
||
\ 0000DE A3 INC DPTR
|
||
\ 0000DF E0 MOVX A,@DPTR
|
||
\ 0000E0 C0E0 PUSH A
|
||
\ 0000E2 EE MOV A,R6
|
||
\ 0000E3 2417 ADD A,#0x17
|
||
\ 0000E5 F582 MOV DPL,A
|
||
\ 0000E7 E4 CLR A
|
||
\ 0000E8 3F ADDC A,R7
|
||
\ 0000E9 F583 MOV DPH,A
|
||
\ 0000EB D0E0 POP A
|
||
\ 0000ED F0 MOVX @DPTR,A
|
||
382 MSGpkt->rssi = sig->rssi;
|
||
\ 0000EE 8882 MOV DPL,R0
|
||
\ 0000F0 8983 MOV DPH,R1
|
||
\ 0000F2 A3 INC DPTR
|
||
\ 0000F3 A3 INC DPTR
|
||
\ 0000F4 E0 MOVX A,@DPTR
|
||
\ 0000F5 C0E0 PUSH A
|
||
\ 0000F7 EE MOV A,R6
|
||
\ 0000F8 2418 ADD A,#0x18
|
||
\ 0000FA F582 MOV DPL,A
|
||
\ 0000FC E4 CLR A
|
||
\ 0000FD 3F ADDC A,R7
|
||
\ 0000FE F583 MOV DPH,A
|
||
\ 000100 D0E0 POP A
|
||
\ 000102 F0 MOVX @DPTR,A
|
||
383 MSGpkt->SecurityUse = SecurityUse;
|
||
\ 000103 7417 MOV A,#0x17
|
||
\ 000105 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000108 E0 MOVX A,@DPTR
|
||
\ 000109 C0E0 PUSH A
|
||
\ 00010B EE MOV A,R6
|
||
\ 00010C 2419 ADD A,#0x19
|
||
\ 00010E F582 MOV DPL,A
|
||
\ 000110 E4 CLR A
|
||
\ 000111 3F ADDC A,R7
|
||
\ 000112 F583 MOV DPH,A
|
||
\ 000114 D0E0 POP A
|
||
\ 000116 F0 MOVX @DPTR,A
|
||
384 MSGpkt->timestamp = timestamp;
|
||
\ 000117 7418 MOV A,#0x18
|
||
\ 000119 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00011C 12.... LCALL ?XLOAD_R0123
|
||
\ 00011F EE MOV A,R6
|
||
\ 000120 241A ADD A,#0x1a
|
||
\ 000122 F582 MOV DPL,A
|
||
\ 000124 E4 CLR A
|
||
\ 000125 3F ADDC A,R7
|
||
\ 000126 F583 MOV DPH,A
|
||
\ 000128 12.... LCALL ?XSTORE_R0123
|
||
385 MSGpkt->nwkSeqNum = nwkSeqNum;
|
||
\ 00012B EE MOV A,R6
|
||
\ 00012C 241E ADD A,#0x1e
|
||
\ 00012E F582 MOV DPL,A
|
||
\ 000130 E4 CLR A
|
||
\ 000131 3F ADDC A,R7
|
||
\ 000132 F583 MOV DPH,A
|
||
\ 000134 E5.. MOV A,?V6
|
||
\ 000136 12.... LCALL ?Subroutine24 & 0xFFFF
|
||
386 MSGpkt->macDestAddr = aff->macDestAddr;
|
||
\ ??CrossCallReturnLabel_27:
|
||
\ 000139 A3 INC DPTR
|
||
\ 00013A A3 INC DPTR
|
||
\ 00013B A3 INC DPTR
|
||
\ 00013C A3 INC DPTR
|
||
\ 00013D A3 INC DPTR
|
||
\ 00013E A3 INC DPTR
|
||
\ 00013F A3 INC DPTR
|
||
\ 000140 A3 INC DPTR
|
||
\ 000141 A3 INC DPTR
|
||
\ 000142 12.... LCALL ?Subroutine15 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_85:
|
||
\ 000145 EE MOV A,R6
|
||
\ 000146 2412 ADD A,#0x12
|
||
\ 000148 12.... LCALL ?Subroutine22 & 0xFFFF
|
||
387 MSGpkt->srcAddr.panId = SrcPanId;
|
||
\ ??CrossCallReturnLabel_74:
|
||
\ 00014B 7413 MOV A,#0x13
|
||
\ 00014D 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000150 12.... LCALL ??Subroutine42_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_80:
|
||
\ 000153 EE MOV A,R6
|
||
\ 000154 2410 ADD A,#0x10
|
||
\ 000156 12.... LCALL ?Subroutine22 & 0xFFFF
|
||
388 MSGpkt->cmd.TransSeqNumber = 0;
|
||
\ ??CrossCallReturnLabel_75:
|
||
\ 000159 EE MOV A,R6
|
||
\ 00015A 241F ADD A,#0x1f
|
||
\ 00015C F582 MOV DPL,A
|
||
\ 00015E E4 CLR A
|
||
\ 00015F 3F ADDC A,R7
|
||
\ 000160 F583 MOV DPH,A
|
||
\ 000162 E4 CLR A
|
||
\ 000163 F0 MOVX @DPTR,A
|
||
\ 000164 E5.. MOV A,?V0
|
||
\ 000166 12.... LCALL ?Subroutine30 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_45:
|
||
\ 000169 F8 MOV R0,A
|
||
\ 00016A 12.... LCALL ?Subroutine31 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_46:
|
||
\ 00016D E8 MOV A,R0
|
||
\ 00016E F0 MOVX @DPTR,A
|
||
\ 00016F A3 INC DPTR
|
||
\ 000170 E4 CLR A
|
||
\ 000171 F0 MOVX @DPTR,A
|
||
389 MSGpkt->cmd.DataLength = aff->asduLength;
|
||
390
|
||
391 if ( MSGpkt->cmd.DataLength )
|
||
\ 000172 E8 MOV A,R0
|
||
\ 000173 6034 JZ ??afBuildMSGIncoming_0
|
||
392 {
|
||
393 MSGpkt->cmd.Data = (uint8 *)(MSGpkt + 1);
|
||
\ 000175 EE MOV A,R6
|
||
\ 000176 2424 ADD A,#0x24
|
||
\ 000178 FA MOV R2,A
|
||
\ 000179 E4 CLR A
|
||
\ 00017A 3F ADDC A,R7
|
||
\ 00017B FB MOV R3,A
|
||
\ 00017C 12.... LCALL ?Subroutine32 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_48:
|
||
\ 00017F 12.... LCALL ?Subroutine26 & 0xFFFF
|
||
394 osal_memcpy( MSGpkt->cmd.Data, asdu, MSGpkt->cmd.DataLength );
|
||
\ ??CrossCallReturnLabel_35:
|
||
\ 000182 ; Setup parameters for call to function osal_memcpy
|
||
\ 000182 85..82 MOV DPL,?XSP + 0
|
||
\ 000185 85..83 MOV DPH,?XSP + 1
|
||
\ 000188 E0 MOVX A,@DPTR
|
||
\ 000189 F5.. MOV ?V0,A
|
||
\ 00018B A3 INC DPTR
|
||
\ 00018C E0 MOVX A,@DPTR
|
||
\ 00018D F5.. MOV ?V1,A
|
||
\ 00018F 75..00 MOV ?V2,#0x0
|
||
\ 000192 78.. MOV R0,#?V0
|
||
\ 000194 12.... LCALL ?PUSH_XSTACK_I_THREE
|
||
\ 000197 12.... LCALL ?Subroutine31 & 0xFFFF
|
||
395 }
|
||
\ ??CrossCallReturnLabel_47:
|
||
\ 00019A E0 MOVX A,@DPTR
|
||
\ 00019B FC MOV R4,A
|
||
\ 00019C A3 INC DPTR
|
||
\ 00019D E0 MOVX A,@DPTR
|
||
\ 00019E FD MOV R5,A
|
||
\ 00019F 12.... LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
|
||
\ 0001A2 7403 MOV A,#0x3
|
||
\ 0001A4 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 0001A7 8007 SJMP ??afBuildMSGIncoming_1
|
||
396 else
|
||
397 {
|
||
398 MSGpkt->cmd.Data = NULL;
|
||
\ ??afBuildMSGIncoming_0:
|
||
\ 0001A9 12.... LCALL ?Subroutine32 & 0xFFFF
|
||
399 }
|
||
\ ??CrossCallReturnLabel_49:
|
||
\ 0001AC E4 CLR A
|
||
\ 0001AD F0 MOVX @DPTR,A
|
||
\ 0001AE A3 INC DPTR
|
||
\ 0001AF F0 MOVX @DPTR,A
|
||
400
|
||
401 #if defined ( MT_AF_CB_FUNC )
|
||
402 // If ZDO or SAPI have registered for this endpoint, dont intercept it here
|
||
403 if (AFCB_CHECK(CB_ID_AF_DATA_IND, *(epDesc->task_id)))
|
||
404 {
|
||
405 MT_AfIncomingMsg( (void *)MSGpkt );
|
||
406 // Release the memory.
|
||
407 osal_msg_deallocate( (void *)MSGpkt );
|
||
408 }
|
||
409 else
|
||
410 #endif
|
||
411 {
|
||
412 // Send message through task message.
|
||
413 osal_msg_send( *(epDesc->task_id), (uint8 *)MSGpkt );
|
||
\ ??afBuildMSGIncoming_1:
|
||
\ 0001B0 ; Setup parameters for call to function osal_msg_send
|
||
\ 0001B0 EE MOV A,R6
|
||
\ 0001B1 FA MOV R2,A
|
||
\ 0001B2 EF MOV A,R7
|
||
\ 0001B3 FB MOV R3,A
|
||
\ 0001B4 12.... LCALL ?Subroutine10 & 0xFFFF
|
||
414 }
|
||
415 }
|
||
\ ??CrossCallReturnLabel_5:
|
||
\ 0001B7 7402 MOV A,#0x2
|
||
\ 0001B9 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 0001BC REQUIRE ?Subroutine3
|
||
\ 0001BC ; // Fall through to label ?Subroutine3
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine3:
|
||
\ 000000 7F07 MOV R7,#0x7
|
||
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine32:
|
||
\ 000000 EE MOV A,R6
|
||
\ 000001 2422 ADD A,#0x22
|
||
\ 000003 F582 MOV DPL,A
|
||
\ 000005 E4 CLR A
|
||
\ 000006 3F ADDC A,R7
|
||
\ 000007 F583 MOV DPH,A
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine31:
|
||
\ 000000 EE MOV A,R6
|
||
\ 000001 2420 ADD A,#0x20
|
||
\ 000003 F582 MOV DPL,A
|
||
\ 000005 E4 CLR A
|
||
\ 000006 3F ADDC A,R7
|
||
\ 000007 F583 MOV DPH,A
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine30:
|
||
\ 000000 2410 ADD A,#0x10
|
||
\ 000002 F582 MOV DPL,A
|
||
\ 000004 E4 CLR A
|
||
\ 000005 35.. ADDC A,?V1
|
||
\ 000007 F583 MOV DPH,A
|
||
\ 000009 E0 MOVX A,@DPTR
|
||
\ 00000A 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine22:
|
||
\ 000000 F582 MOV DPL,A
|
||
\ 000002 E4 CLR A
|
||
\ 000003 3F ADDC A,R7
|
||
\ 000004 F583 MOV DPH,A
|
||
\ 000006 REQUIRE ??Subroutine41_0
|
||
\ 000006 ; // Fall through to label ??Subroutine41_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine15:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 REQUIRE ??Subroutine42_0
|
||
\ 000001 ; // Fall through to label ??Subroutine42_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine14:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 12.... LCALL ?Subroutine34 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_89:
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 A3 INC DPTR
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine24:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 85..82 MOV DPL,?V0
|
||
\ 000004 85..83 MOV DPH,?V1
|
||
\ 000007 22 RET
|
||
416
|
||
417 /*********************************************************************
|
||
418 * @fn AF_DataRequest
|
||
419 *
|
||
420 * @brief Common functionality for invoking APSDE_DataReq() for both
|
||
421 * SendMulti and MSG-Send.
|
||
422 *
|
||
423 * input parameters
|
||
424 *
|
||
425 * @param *dstAddr - Full ZB destination address: Nwk Addr + End Point.
|
||
426 * @param *srcEP - Origination (i.e. respond to or ack to) End Point Descr.
|
||
427 * @param cID - A valid cluster ID as specified by the Profile.
|
||
428 * @param len - Number of bytes of data pointed to by next param.
|
||
429 * @param *buf - A pointer to the data bytes to send.
|
||
430 * @param *transID - A pointer to a byte which can be modified and which will
|
||
431 * be used as the transaction sequence number of the msg.
|
||
432 * @param options - Valid bit mask of Tx options.
|
||
433 * @param radius - Normally set to AF_DEFAULT_RADIUS.
|
||
434 *
|
||
435 * output parameters
|
||
436 *
|
||
437 * @param *transID - Incremented by one if the return value is success.
|
||
438 *
|
||
439 * @return afStatus_t - See previous definition of afStatus_... types.
|
||
440 */
|
||
|
||
\ In segment XDATA_I, align 1, keep-with-next
|
||
441 uint8 AF_DataRequestDiscoverRoute = TRUE;
|
||
\ AF_DataRequestDiscoverRoute:
|
||
\ 000000 DS 1
|
||
\ 000001 REQUIRE `?<Initializer for AF_DataRequestDiscoverRoute>`
|
||
\ 000001 REQUIRE __INIT_XDATA_I
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
442 afStatus_t AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,
|
||
\ AF_DataRequest:
|
||
443 uint16 cID, uint16 len, uint8 *buf, uint8 *transID,
|
||
444 uint8 options, uint8 radius )
|
||
445 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V4
|
||
\ 000000 REQUIRE ?V5
|
||
\ 000000 REQUIRE ?V6
|
||
\ 000000 REQUIRE ?V7
|
||
\ 000000 74F0 MOV A,#-0x10
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 16
|
||
\ 000005 ; Auto size: 30
|
||
\ 000005 74E2 MOV A,#-0x1e
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A EA MOV A,R2
|
||
\ 00000B FE MOV R6,A
|
||
\ 00000C EB MOV A,R3
|
||
\ 00000D FF MOV R7,A
|
||
\ 00000E 8C.. MOV ?V0,R4
|
||
\ 000010 8D.. MOV ?V1,R5
|
||
\ 000012 89.. MOV ?V2,R1
|
||
446 pDescCB pfnDescCB;
|
||
447 ZStatus_t stat;
|
||
448 APSDE_DataReq_t req;
|
||
449 afDataReqMTU_t mtu;
|
||
450
|
||
451 // Verify source end point
|
||
452 if ( srcEP == NULL )
|
||
\ 000014 EC MOV A,R4
|
||
\ 000015 4D ORL A,R5
|
||
\ 000016 7003 JNZ $+5
|
||
\ 000018 02.... LJMP ??AF_DataRequest_0 & 0xFFFF
|
||
453 {
|
||
454 return afStatus_INVALID_PARAMETER;
|
||
455 }
|
||
456
|
||
457 #if !defined( REFLECTOR )
|
||
458 if ( dstAddr->addrMode == afAddrNotPresent )
|
||
459 {
|
||
460 return afStatus_INVALID_PARAMETER;
|
||
461 }
|
||
462 #endif
|
||
463
|
||
464 // Check if route is available before sending data
|
||
465 if ( options & AF_LIMIT_CONCENTRATOR )
|
||
\ 00001B E9 MOV A,R1
|
||
\ 00001C A2E3 MOV C,0xE0 /* A */.3
|
||
\ 00001E 503A JNC ??AF_DataRequest_1
|
||
466 {
|
||
467 if ( dstAddr->addrMode != afAddr16Bit )
|
||
\ 000020 8A82 MOV DPL,R2
|
||
\ 000022 8B83 MOV DPH,R3
|
||
\ 000024 A3 INC DPTR
|
||
\ 000025 A3 INC DPTR
|
||
\ 000026 A3 INC DPTR
|
||
\ 000027 A3 INC DPTR
|
||
\ 000028 A3 INC DPTR
|
||
\ 000029 A3 INC DPTR
|
||
\ 00002A A3 INC DPTR
|
||
\ 00002B A3 INC DPTR
|
||
\ 00002C E0 MOVX A,@DPTR
|
||
\ 00002D 6402 XRL A,#0x2
|
||
\ 00002F 6003 JZ $+5
|
||
\ 000031 02.... LJMP ??AF_DataRequest_0 & 0xFFFF
|
||
468 {
|
||
469 return ( afStatus_INVALID_PARAMETER );
|
||
470 }
|
||
471
|
||
472 // First, make sure the destination is not its self, then check for an existing route.
|
||
473 if ( (dstAddr->addr.shortAddr != NLME_GetShortAddr())
|
||
474 && (RTG_CheckRtStatus( dstAddr->addr.shortAddr, RT_ACTIVE, (MTO_ROUTE | NO_ROUTE_CACHE) ) != RTG_SUCCESS) )
|
||
\ 000034 ; Setup parameters for call to function NLME_GetShortAddr
|
||
\ 000034 12.... LCALL ?Subroutine29 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_42:
|
||
\ 000037 8E82 MOV DPL,R6
|
||
\ 000039 8F83 MOV DPH,R7
|
||
\ 00003B E0 MOVX A,@DPTR
|
||
\ 00003C 68 XRL A,R0
|
||
\ 00003D 7003 JNZ ??AF_DataRequest_2
|
||
\ 00003F A3 INC DPTR
|
||
\ 000040 E0 MOVX A,@DPTR
|
||
\ 000041 69 XRL A,R1
|
||
\ ??AF_DataRequest_2:
|
||
\ 000042 6016 JZ ??AF_DataRequest_1
|
||
\ 000044 ; Setup parameters for call to function RTG_CheckRtStatus
|
||
\ 000044 7C03 MOV R4,#0x3
|
||
\ 000046 7901 MOV R1,#0x1
|
||
\ 000048 8E82 MOV DPL,R6
|
||
\ 00004A 8F83 MOV DPH,R7
|
||
\ 00004C 12.... LCALL ??Subroutine48_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_110:
|
||
\ 00004F 12.... LCALL `??RTG_CheckRtStatus::?relay`; Banked call to: RTG_CheckRtStatus
|
||
\ 000052 E9 MOV A,R1
|
||
\ 000053 6005 JZ ??AF_DataRequest_1
|
||
475 {
|
||
476 // A valid route to a concentrator wasn't found
|
||
477 return ( afStatus_NO_ROUTE );
|
||
\ 000055 79CD MOV R1,#-0x33
|
||
\ 000057 02.... LJMP ??AF_DataRequest_3 & 0xFFFF
|
||
478 }
|
||
479 }
|
||
480
|
||
481 // Validate broadcasting
|
||
482 if ( ( dstAddr->addrMode == afAddr16Bit ) ||
|
||
483 ( dstAddr->addrMode == afAddrBroadcast ) )
|
||
\ ??AF_DataRequest_1:
|
||
\ 00005A 8E82 MOV DPL,R6
|
||
\ 00005C 8F83 MOV DPH,R7
|
||
\ 00005E A3 INC DPTR
|
||
\ 00005F A3 INC DPTR
|
||
\ 000060 A3 INC DPTR
|
||
\ 000061 A3 INC DPTR
|
||
\ 000062 A3 INC DPTR
|
||
\ 000063 A3 INC DPTR
|
||
\ 000064 A3 INC DPTR
|
||
\ 000065 A3 INC DPTR
|
||
\ 000066 E0 MOVX A,@DPTR
|
||
\ 000067 6402 XRL A,#0x2
|
||
\ 000069 6011 JZ ??AF_DataRequest_4
|
||
\ 00006B 8E82 MOV DPL,R6
|
||
\ 00006D 8F83 MOV DPH,R7
|
||
\ 00006F A3 INC DPTR
|
||
\ 000070 A3 INC DPTR
|
||
\ 000071 A3 INC DPTR
|
||
\ 000072 A3 INC DPTR
|
||
\ 000073 A3 INC DPTR
|
||
\ 000074 A3 INC DPTR
|
||
\ 000075 A3 INC DPTR
|
||
\ 000076 A3 INC DPTR
|
||
\ 000077 E0 MOVX A,@DPTR
|
||
\ 000078 640F XRL A,#0xf
|
||
\ 00007A 704B JNZ ??AF_DataRequest_5
|
||
484 {
|
||
485 // Check for valid broadcast values
|
||
486 if( ADDR_NOT_BCAST != NLME_IsAddressBroadcast( dstAddr->addr.shortAddr ) )
|
||
\ ??AF_DataRequest_4:
|
||
\ 00007C ; Setup parameters for call to function NLME_IsAddressBroadcast
|
||
\ 00007C 8E82 MOV DPL,R6
|
||
\ 00007E 8F83 MOV DPH,R7
|
||
\ 000080 12.... LCALL ??Subroutine48_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_111:
|
||
\ 000083 12.... LCALL `??NLME_IsAddressBroadcast::?relay`; Banked call to: NLME_IsAddressBroadcast
|
||
\ 000086 E9 MOV A,R1
|
||
\ 000087 8E82 MOV DPL,R6
|
||
\ 000089 8F83 MOV DPH,R7
|
||
\ 00008B A3 INC DPTR
|
||
\ 00008C A3 INC DPTR
|
||
\ 00008D A3 INC DPTR
|
||
\ 00008E A3 INC DPTR
|
||
\ 00008F A3 INC DPTR
|
||
\ 000090 A3 INC DPTR
|
||
\ 000091 A3 INC DPTR
|
||
\ 000092 A3 INC DPTR
|
||
\ 000093 602B JZ ??AF_DataRequest_6
|
||
487 {
|
||
488 // Force mode to broadcast
|
||
489 dstAddr->addrMode = afAddrBroadcast;
|
||
\ 000095 740F MOV A,#0xf
|
||
\ 000097 F0 MOVX @DPTR,A
|
||
490 }
|
||
491 else
|
||
492 {
|
||
493 // Address is not a valid broadcast type
|
||
494 if ( dstAddr->addrMode == afAddrBroadcast )
|
||
495 {
|
||
496 return afStatus_INVALID_PARAMETER;
|
||
497 }
|
||
498 }
|
||
499 }
|
||
500 else if ( dstAddr->addrMode != afAddr64Bit &&
|
||
501 dstAddr->addrMode != afAddrGroup &&
|
||
502 dstAddr->addrMode != afAddrNotPresent )
|
||
503 {
|
||
504 return afStatus_INVALID_PARAMETER;
|
||
505 }
|
||
506
|
||
507 // Set destination address
|
||
508 req.dstAddr.addrMode = dstAddr->addrMode;
|
||
\ ??AF_DataRequest_7:
|
||
\ 000098 EE MOV A,R6
|
||
\ 000099 2408 ADD A,#0x8
|
||
\ 00009B F8 MOV R0,A
|
||
\ 00009C E4 CLR A
|
||
\ 00009D 3F ADDC A,R7
|
||
\ 00009E F9 MOV R1,A
|
||
\ 00009F 8882 MOV DPL,R0
|
||
\ 0000A1 F583 MOV DPH,A
|
||
\ 0000A3 E0 MOVX A,@DPTR
|
||
\ 0000A4 C0E0 PUSH A
|
||
\ 0000A6 740A MOV A,#0xa
|
||
\ 0000A8 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000AB D0E0 POP A
|
||
\ 0000AD 12.... LCALL ?Subroutine27 & 0xFFFF
|
||
509 if ( dstAddr->addrMode == afAddr64Bit )
|
||
\ ??CrossCallReturnLabel_37:
|
||
\ 0000B0 704B JNZ ??AF_DataRequest_8
|
||
510 osal_cpyExtAddr( req.dstAddr.addr.extAddr, dstAddr->addr.extAddr );
|
||
\ 0000B2 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 0000B2 EE MOV A,R6
|
||
\ 0000B3 FC MOV R4,A
|
||
\ 0000B4 EF MOV A,R7
|
||
\ 0000B5 FD MOV R5,A
|
||
\ 0000B6 7402 MOV A,#0x2
|
||
\ 0000B8 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 0000BB 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
\ 0000BE 804C SJMP ??CrossCallReturnLabel_69
|
||
\ ??AF_DataRequest_6:
|
||
\ 0000C0 E0 MOVX A,@DPTR
|
||
\ 0000C1 640F XRL A,#0xf
|
||
\ 0000C3 70D3 JNZ ??AF_DataRequest_7
|
||
\ 0000C5 8031 SJMP ??AF_DataRequest_0
|
||
\ ??AF_DataRequest_5:
|
||
\ 0000C7 8E82 MOV DPL,R6
|
||
\ 0000C9 8F83 MOV DPH,R7
|
||
\ 0000CB A3 INC DPTR
|
||
\ 0000CC A3 INC DPTR
|
||
\ 0000CD A3 INC DPTR
|
||
\ 0000CE A3 INC DPTR
|
||
\ 0000CF A3 INC DPTR
|
||
\ 0000D0 A3 INC DPTR
|
||
\ 0000D1 A3 INC DPTR
|
||
\ 0000D2 A3 INC DPTR
|
||
\ 0000D3 E0 MOVX A,@DPTR
|
||
\ 0000D4 6403 XRL A,#0x3
|
||
\ 0000D6 60C0 JZ ??AF_DataRequest_7
|
||
\ 0000D8 8E82 MOV DPL,R6
|
||
\ 0000DA 8F83 MOV DPH,R7
|
||
\ 0000DC A3 INC DPTR
|
||
\ 0000DD A3 INC DPTR
|
||
\ 0000DE A3 INC DPTR
|
||
\ 0000DF A3 INC DPTR
|
||
\ 0000E0 A3 INC DPTR
|
||
\ 0000E1 A3 INC DPTR
|
||
\ 0000E2 A3 INC DPTR
|
||
\ 0000E3 A3 INC DPTR
|
||
\ 0000E4 E0 MOVX A,@DPTR
|
||
\ 0000E5 6401 XRL A,#0x1
|
||
\ 0000E7 60AF JZ ??AF_DataRequest_7
|
||
\ 0000E9 8E82 MOV DPL,R6
|
||
\ 0000EB 8F83 MOV DPH,R7
|
||
\ 0000ED A3 INC DPTR
|
||
\ 0000EE A3 INC DPTR
|
||
\ 0000EF A3 INC DPTR
|
||
\ 0000F0 A3 INC DPTR
|
||
\ 0000F1 A3 INC DPTR
|
||
\ 0000F2 A3 INC DPTR
|
||
\ 0000F3 A3 INC DPTR
|
||
\ 0000F4 A3 INC DPTR
|
||
\ 0000F5 E0 MOVX A,@DPTR
|
||
\ 0000F6 60A0 JZ ??AF_DataRequest_7
|
||
\ ??AF_DataRequest_0:
|
||
\ 0000F8 7902 MOV R1,#0x2
|
||
\ 0000FA 02.... LJMP ??AF_DataRequest_3 & 0xFFFF
|
||
511 else
|
||
512 req.dstAddr.addr.shortAddr = dstAddr->addr.shortAddr;
|
||
\ ??AF_DataRequest_8:
|
||
\ 0000FD 8E82 MOV DPL,R6
|
||
\ 0000FF 8F83 MOV DPH,R7
|
||
\ 000101 12.... LCALL ??Subroutine42_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_81:
|
||
\ 000104 7402 MOV A,#0x2
|
||
\ 000106 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000109 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
513
|
||
514 req.profileID = ZDO_PROFILE_ID;
|
||
\ ??CrossCallReturnLabel_69:
|
||
\ 00010C 7411 MOV A,#0x11
|
||
\ 00010E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000111 E4 CLR A
|
||
\ 000112 F0 MOVX @DPTR,A
|
||
\ 000113 A3 INC DPTR
|
||
\ 000114 F0 MOVX @DPTR,A
|
||
515
|
||
516 if ( (pfnDescCB = afGetDescCB( srcEP )) )
|
||
\ 000115 90.... MOV DPTR,#epList
|
||
\ ??AF_DataRequest_9:
|
||
\ 000118 12.... LCALL ??Subroutine44_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_90:
|
||
\ 00011B 604A JZ ??AF_DataRequest_10
|
||
\ 00011D 8882 MOV DPL,R0
|
||
\ 00011F 8983 MOV DPH,R1
|
||
\ 000121 12.... LCALL ??Subroutine47_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_114:
|
||
\ 000124 E5.. MOV A,?V0
|
||
\ 000126 6A XRL A,R2
|
||
\ 000127 7003 JNZ ??AF_DataRequest_11
|
||
\ 000129 E5.. MOV A,?V1
|
||
\ 00012B 6B XRL A,R3
|
||
\ ??AF_DataRequest_11:
|
||
\ 00012C 8882 MOV DPL,R0
|
||
\ 00012E 8983 MOV DPH,R1
|
||
\ 000130 70E6 JNZ ??AF_DataRequest_9
|
||
\ 000132 A3 INC DPTR
|
||
\ 000133 A3 INC DPTR
|
||
\ 000134 A3 INC DPTR
|
||
\ 000135 A3 INC DPTR
|
||
\ 000136 12.... LCALL ?Subroutine36 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_103:
|
||
\ 000139 FD MOV R5,A
|
||
\ 00013A E8 MOV A,R0
|
||
\ 00013B 4D ORL A,R5
|
||
\ 00013C 6029 JZ ??AF_DataRequest_10
|
||
517 {
|
||
518 uint16 *pID = (uint16 *)(pfnDescCB(
|
||
519 AF_DESCRIPTOR_PROFILE_ID, srcEP->endPoint ));
|
||
\ 00013E ; Setup parameters for indirect call
|
||
\ 00013E 85..82 MOV DPL,?V0
|
||
\ 000141 85..83 MOV DPH,?V1
|
||
\ 000144 E0 MOVX A,@DPTR
|
||
\ 000145 FA MOV R2,A
|
||
\ 000146 7902 MOV R1,#0x2
|
||
\ 000148 8882 MOV DPL,R0
|
||
\ 00014A 8D83 MOV DPH,R5
|
||
\ 00014C 12.... LCALL ?CALL_IND
|
||
520 if ( pID )
|
||
\ 00014F EA MOV A,R2
|
||
\ 000150 4B ORL A,R3
|
||
\ 000151 6036 JZ ??CrossCallReturnLabel_71
|
||
521 {
|
||
522 req.profileID = *pID;
|
||
\ 000153 8A82 MOV DPL,R2
|
||
\ 000155 8B83 MOV DPH,R3
|
||
\ 000157 12.... LCALL ??Subroutine42_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_82:
|
||
\ 00015A 7411 MOV A,#0x11
|
||
\ 00015C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00015F 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
523 osal_mem_free( pID );
|
||
\ ??CrossCallReturnLabel_70:
|
||
\ 000162 ; Setup parameters for call to function osal_mem_free
|
||
\ 000162 12.... LCALL `??osal_mem_free::?relay`; Banked call to: osal_mem_free
|
||
\ 000165 8022 SJMP ??CrossCallReturnLabel_71
|
||
524 }
|
||
525 }
|
||
526 else if ( srcEP->simpleDesc )
|
||
\ ??AF_DataRequest_10:
|
||
\ 000167 85..82 MOV DPL,?V0
|
||
\ 00016A 85..83 MOV DPH,?V1
|
||
\ 00016D 12.... LCALL ?Subroutine6 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_97:
|
||
\ 000170 6017 JZ ??CrossCallReturnLabel_71
|
||
527 {
|
||
528 req.profileID = srcEP->simpleDesc->AppProfId;
|
||
\ 000172 85..82 MOV DPL,?V0
|
||
\ 000175 85..83 MOV DPH,?V1
|
||
\ 000178 A3 INC DPTR
|
||
\ 000179 A3 INC DPTR
|
||
\ 00017A A3 INC DPTR
|
||
\ 00017B 12.... LCALL ?Subroutine38 & 0xFFFF
|
||
529 }
|
||
\ ??CrossCallReturnLabel_61:
|
||
\ 00017E 12.... LCALL ?Subroutine15 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_86:
|
||
\ 000181 7411 MOV A,#0x11
|
||
\ 000183 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000186 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
530
|
||
531 req.txOptions = 0;
|
||
\ ??CrossCallReturnLabel_71:
|
||
\ 000189 7417 MOV A,#0x17
|
||
\ 00018B 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00018E E4 CLR A
|
||
\ 00018F F0 MOVX @DPTR,A
|
||
\ 000190 A3 INC DPTR
|
||
\ 000191 F0 MOVX @DPTR,A
|
||
532
|
||
533 if ( ( options & AF_ACK_REQUEST ) &&
|
||
534 ( req.dstAddr.addrMode != AddrBroadcast ) &&
|
||
535 ( req.dstAddr.addrMode != AddrGroup ) )
|
||
\ 000192 E5.. MOV A,?V2
|
||
\ 000194 A2E4 MOV C,0xE0 /* A */.4
|
||
\ 000196 501A JNC ??AF_DataRequest_12
|
||
\ 000198 740A MOV A,#0xa
|
||
\ 00019A 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00019D E0 MOVX A,@DPTR
|
||
\ 00019E 640F XRL A,#0xf
|
||
\ 0001A0 6010 JZ ??AF_DataRequest_12
|
||
\ 0001A2 E0 MOVX A,@DPTR
|
||
\ 0001A3 6401 XRL A,#0x1
|
||
\ 0001A5 600B JZ ??AF_DataRequest_12
|
||
536 {
|
||
537 req.txOptions |= APS_TX_OPTIONS_ACK;
|
||
\ 0001A7 7417 MOV A,#0x17
|
||
\ 0001A9 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001AC 7404 MOV A,#0x4
|
||
\ 0001AE F0 MOVX @DPTR,A
|
||
\ 0001AF A3 INC DPTR
|
||
\ 0001B0 E4 CLR A
|
||
\ 0001B1 F0 MOVX @DPTR,A
|
||
538 }
|
||
539
|
||
540 if ( options & AF_SKIP_ROUTING )
|
||
\ ??AF_DataRequest_12:
|
||
\ 0001B2 E5.. MOV A,?V2
|
||
\ 0001B4 A2E7 MOV C,0xE0 /* A */.7
|
||
\ 0001B6 5009 JNC ??AF_DataRequest_13
|
||
541 {
|
||
542 req.txOptions |= APS_TX_OPTIONS_SKIP_ROUTING;
|
||
\ 0001B8 7417 MOV A,#0x17
|
||
\ 0001BA 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001BD E0 MOVX A,@DPTR
|
||
\ 0001BE 4410 ORL A,#0x10
|
||
\ 0001C0 F0 MOVX @DPTR,A
|
||
543 }
|
||
544
|
||
545 if ( options & AF_EN_SECURITY )
|
||
\ ??AF_DataRequest_13:
|
||
\ 0001C1 E5.. MOV A,?V2
|
||
\ 0001C3 A2E6 MOV C,0xE0 /* A */.6
|
||
\ 0001C5 5012 JNC ??AF_DataRequest_14
|
||
546 {
|
||
547 req.txOptions |= APS_TX_OPTIONS_SECURITY_ENABLE;
|
||
\ 0001C7 7417 MOV A,#0x17
|
||
\ 0001C9 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001CC E0 MOVX A,@DPTR
|
||
\ 0001CD 4401 ORL A,#0x1
|
||
\ 0001CF F0 MOVX @DPTR,A
|
||
548 mtu.aps.secure = TRUE;
|
||
\ 0001D0 7401 MOV A,#0x1
|
||
\ 0001D2 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001D5 7401 MOV A,#0x1
|
||
\ 0001D7 8006 SJMP ??AF_DataRequest_15
|
||
549 }
|
||
550 else
|
||
551 {
|
||
552 mtu.aps.secure = FALSE;
|
||
\ ??AF_DataRequest_14:
|
||
\ 0001D9 7401 MOV A,#0x1
|
||
\ 0001DB 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001DE E4 CLR A
|
||
\ ??AF_DataRequest_15:
|
||
\ 0001DF F0 MOVX @DPTR,A
|
||
553 }
|
||
554
|
||
555 if ( options & AF_PREPROCESS )
|
||
\ 0001E0 E5.. MOV A,?V2
|
||
\ 0001E2 A2E2 MOV C,0xE0 /* A */.2
|
||
\ 0001E4 5009 JNC ??AF_DataRequest_16
|
||
556 {
|
||
557 req.txOptions |= APS_TX_OPTIONS_PREPROCESS;
|
||
\ 0001E6 7417 MOV A,#0x17
|
||
\ 0001E8 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001EB E0 MOVX A,@DPTR
|
||
\ 0001EC 4440 ORL A,#0x40
|
||
\ 0001EE F0 MOVX @DPTR,A
|
||
558 }
|
||
559
|
||
560 mtu.kvp = FALSE;
|
||
\ ??AF_DataRequest_16:
|
||
\ 0001EF 85..82 MOV DPL,?XSP + 0
|
||
\ 0001F2 85..83 MOV DPH,?XSP + 1
|
||
\ 0001F5 E4 CLR A
|
||
\ 0001F6 F0 MOVX @DPTR,A
|
||
\ 0001F7 7434 MOV A,#0x34
|
||
\ 0001F9 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0001FC 12.... LCALL ?Subroutine16 & 0xFFFF
|
||
561
|
||
562 req.transID = *transID;
|
||
\ ??CrossCallReturnLabel_16:
|
||
\ 0001FF 85..82 MOV DPL,?V6
|
||
\ 000202 F583 MOV DPH,A
|
||
\ 000204 E0 MOVX A,@DPTR
|
||
\ 000205 C0E0 PUSH A
|
||
\ 000207 7419 MOV A,#0x19
|
||
\ 000209 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00020C D0E0 POP A
|
||
\ 00020E 12.... LCALL ?Subroutine24 & 0xFFFF
|
||
563 req.srcEP = srcEP->endPoint;
|
||
\ ??CrossCallReturnLabel_28:
|
||
\ 000211 E0 MOVX A,@DPTR
|
||
\ 000212 C0E0 PUSH A
|
||
\ 000214 740B MOV A,#0xb
|
||
\ 000216 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000219 D0E0 POP A
|
||
\ 00021B F0 MOVX @DPTR,A
|
||
564 req.dstEP = dstAddr->endPoint;
|
||
\ 00021C 8E82 MOV DPL,R6
|
||
\ 00021E 8F83 MOV DPH,R7
|
||
\ 000220 A3 INC DPTR
|
||
\ 000221 A3 INC DPTR
|
||
\ 000222 A3 INC DPTR
|
||
\ 000223 A3 INC DPTR
|
||
\ 000224 A3 INC DPTR
|
||
\ 000225 A3 INC DPTR
|
||
\ 000226 A3 INC DPTR
|
||
\ 000227 A3 INC DPTR
|
||
\ 000228 A3 INC DPTR
|
||
\ 000229 E0 MOVX A,@DPTR
|
||
\ 00022A C0E0 PUSH A
|
||
\ 00022C 740C MOV A,#0xc
|
||
\ 00022E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000231 D0E0 POP A
|
||
\ 000233 F0 MOVX @DPTR,A
|
||
565 req.clusterID = cID;
|
||
\ 000234 742E MOV A,#0x2e
|
||
\ 000236 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000239 12.... LCALL ??Subroutine42_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_83:
|
||
\ 00023C 740F MOV A,#0xf
|
||
\ 00023E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000241 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_72:
|
||
\ 000244 7430 MOV A,#0x30
|
||
\ 000246 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000249 E0 MOVX A,@DPTR
|
||
\ 00024A FE MOV R6,A
|
||
\ 00024B A3 INC DPTR
|
||
\ 00024C E0 MOVX A,@DPTR
|
||
\ 00024D FF MOV R7,A
|
||
566 req.asduLen = len;
|
||
\ 00024E 7413 MOV A,#0x13
|
||
\ 000250 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000253 EE MOV A,R6
|
||
\ 000254 F0 MOVX @DPTR,A
|
||
\ 000255 A3 INC DPTR
|
||
\ 000256 EF MOV A,R7
|
||
\ 000257 F0 MOVX @DPTR,A
|
||
567 req.asdu = buf;
|
||
\ 000258 7432 MOV A,#0x32
|
||
\ 00025A 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00025D 12.... LCALL ??Subroutine42_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_84:
|
||
\ 000260 7415 MOV A,#0x15
|
||
\ 000262 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000265 12.... LCALL ??Subroutine41_0 & 0xFFFF
|
||
568 req.discoverRoute = AF_DataRequestDiscoverRoute;//(uint8)((options & AF_DISCV_ROUTE) ? 1 : 0);
|
||
\ ??CrossCallReturnLabel_73:
|
||
\ 000268 90.... MOV DPTR,#AF_DataRequestDiscoverRoute
|
||
\ 00026B E0 MOVX A,@DPTR
|
||
\ 00026C C0E0 PUSH A
|
||
\ 00026E 741A MOV A,#0x1a
|
||
\ 000270 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000273 D0E0 POP A
|
||
\ 000275 F0 MOVX @DPTR,A
|
||
569 req.radiusCounter = radius;
|
||
\ 000276 7436 MOV A,#0x36
|
||
\ 000278 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00027B E0 MOVX A,@DPTR
|
||
\ 00027C C0E0 PUSH A
|
||
\ 00027E 741B MOV A,#0x1b
|
||
\ 000280 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000283 D0E0 POP A
|
||
\ 000285 F0 MOVX @DPTR,A
|
||
570 #if defined ( INTER_PAN )
|
||
571 req.dstPanId = dstAddr->panId;
|
||
572
|
||
573 if ( StubAPS_InterPan( dstAddr->panId, dstAddr->endPoint ) )
|
||
574 {
|
||
575 if ( len > INTERP_DataReqMTU() )
|
||
576 {
|
||
577 stat = afStatus_INVALID_PARAMETER;
|
||
578 }
|
||
579 else
|
||
580 {
|
||
581 stat = INTERP_DataReq( &req );
|
||
582 }
|
||
583 }
|
||
584 else
|
||
585 #endif // INTER_PAN
|
||
586 {
|
||
587 if (len > afDataReqMTU( &mtu ) )
|
||
\ 000286 ; Setup parameters for call to function afDataReqMTU
|
||
\ 000286 AA.. MOV R2,?XSP + 0
|
||
\ 000288 AB.. MOV R3,?XSP + 1
|
||
\ 00028A 12.... LCALL `??afDataReqMTU::?relay`; Banked call to: afDataReqMTU
|
||
\ 00028D E9 MOV A,R1
|
||
\ 00028E C3 CLR C
|
||
\ 00028F 9E SUBB A,R6
|
||
\ 000290 E4 CLR A
|
||
\ 000291 9F SUBB A,R7
|
||
\ 000292 5019 JNC ??AF_DataRequest_17
|
||
588 {
|
||
589 if (apsfSendFragmented)
|
||
\ 000294 90.... MOV DPTR,#apsfSendFragmented
|
||
\ 000297 12.... LCALL ??Subroutine44_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_94:
|
||
\ 00029A 600D JZ ??AF_DataRequest_18
|
||
590 {
|
||
591 stat = (*apsfSendFragmented)( &req );
|
||
\ 00029C ; Setup parameters for indirect call
|
||
\ 00029C 7402 MOV A,#0x2
|
||
\ 00029E 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 0002A1 12.... LCALL ??Subroutine40_0 & 0xFFFF
|
||
592 }
|
||
\ ??CrossCallReturnLabel_60:
|
||
\ 0002A4 12.... LCALL ?CALL_IND
|
||
\ 0002A7 800C SJMP ??AF_DataRequest_19
|
||
593 else
|
||
594 {
|
||
595 stat = afStatus_INVALID_PARAMETER;
|
||
\ ??AF_DataRequest_18:
|
||
\ 0002A9 7E02 MOV R6,#0x2
|
||
\ 0002AB 800A SJMP ??AF_DataRequest_20
|
||
596 }
|
||
597 }
|
||
598 else
|
||
599 {
|
||
600 stat = APSDE_DataReq( &req );
|
||
\ ??AF_DataRequest_17:
|
||
\ 0002AD ; Setup parameters for call to function APSDE_DataReq
|
||
\ 0002AD 7402 MOV A,#0x2
|
||
\ 0002AF 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 0002B2 12.... LCALL `??APSDE_DataReq::?relay`; Banked call to: APSDE_DataReq
|
||
\ ??AF_DataRequest_19:
|
||
\ 0002B5 E9 MOV A,R1
|
||
\ 0002B6 FE MOV R6,A
|
||
601 }
|
||
602 }
|
||
603
|
||
604 /*
|
||
605 * If this is an EndPoint-to-EndPoint message on the same device, it will not
|
||
606 * get added to the NWK databufs. So it will not go OTA and it will not get
|
||
607 * a MACCB_DATA_CONFIRM_CMD callback. Thus it is necessary to generate the
|
||
608 * AF_DATA_CONFIRM_CMD here. Note that APSDE_DataConfirm() only generates one
|
||
609 * message with the first in line TransSeqNumber, even on a multi message.
|
||
610 * Also note that a reflected msg will not have its confirmation generated
|
||
611 * here.
|
||
612 */
|
||
613 if ( (req.dstAddr.addrMode == Addr16Bit) &&
|
||
614 (req.dstAddr.addr.shortAddr == NLME_GetShortAddr()) )
|
||
\ ??AF_DataRequest_20:
|
||
\ 0002B7 740A MOV A,#0xa
|
||
\ 0002B9 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0002BC E0 MOVX A,@DPTR
|
||
\ 0002BD 6402 XRL A,#0x2
|
||
\ 0002BF 7026 JNZ ??AF_DataRequest_21
|
||
\ 0002C1 ; Setup parameters for call to function NLME_GetShortAddr
|
||
\ 0002C1 12.... LCALL ?Subroutine29 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_43:
|
||
\ 0002C4 7402 MOV A,#0x2
|
||
\ 0002C6 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0002C9 E0 MOVX A,@DPTR
|
||
\ 0002CA 68 XRL A,R0
|
||
\ 0002CB 7003 JNZ ??AF_DataRequest_22
|
||
\ 0002CD A3 INC DPTR
|
||
\ 0002CE E0 MOVX A,@DPTR
|
||
\ 0002CF 69 XRL A,R1
|
||
\ ??AF_DataRequest_22:
|
||
\ 0002D0 7015 JNZ ??AF_DataRequest_21
|
||
615 {
|
||
616 afDataConfirm( srcEP->endPoint, *transID, stat );
|
||
\ 0002D2 ; Setup parameters for call to function afDataConfirm
|
||
\ 0002D2 EE MOV A,R6
|
||
\ 0002D3 FB MOV R3,A
|
||
\ 0002D4 85..82 MOV DPL,?V6
|
||
\ 0002D7 85..83 MOV DPH,?V7
|
||
\ 0002DA E0 MOVX A,@DPTR
|
||
\ 0002DB FA MOV R2,A
|
||
\ 0002DC 85..82 MOV DPL,?V0
|
||
\ 0002DF 85..83 MOV DPH,?V1
|
||
\ 0002E2 E0 MOVX A,@DPTR
|
||
\ 0002E3 F9 MOV R1,A
|
||
\ 0002E4 12.... LCALL `??afDataConfirm::?relay`; Banked call to: afDataConfirm
|
||
617 }
|
||
618
|
||
619 if ( stat == afStatus_SUCCESS )
|
||
\ ??AF_DataRequest_21:
|
||
\ 0002E7 EE MOV A,R6
|
||
\ 0002E8 7009 JNZ ??AF_DataRequest_23
|
||
620 {
|
||
621 (*transID)++;
|
||
\ 0002EA 85..82 MOV DPL,?V6
|
||
\ 0002ED 85..83 MOV DPH,?V7
|
||
\ 0002F0 E0 MOVX A,@DPTR
|
||
\ 0002F1 04 INC A
|
||
\ 0002F2 F0 MOVX @DPTR,A
|
||
622 }
|
||
623
|
||
624 return (afStatus_t)stat;
|
||
\ ??AF_DataRequest_23:
|
||
\ 0002F3 EE MOV A,R6
|
||
\ 0002F4 F9 MOV R1,A
|
||
\ ??AF_DataRequest_3:
|
||
\ 0002F5 741E MOV A,#0x1e
|
||
\ 0002F7 02.... LJMP ?Subroutine2 & 0xFFFF
|
||
625 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine29:
|
||
\ 000000 12.... LCALL `??NLME_GetShortAddr::?relay`; Banked call to: NLME_GetShortAddr
|
||
\ 000003 8A.. MOV ?V4,R2
|
||
\ 000005 8B.. MOV ?V5,R3
|
||
\ 000007 A8.. MOV R0,?V4
|
||
\ 000009 A9.. MOV R1,?V5
|
||
\ 00000B 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine27:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 8882 MOV DPL,R0
|
||
\ 000003 8983 MOV DPH,R1
|
||
\ 000005 E0 MOVX A,@DPTR
|
||
\ 000006 6403 XRL A,#0x3
|
||
\ 000008 22 RET
|
||
626
|
||
627 #if defined ( ZIGBEE_SOURCE_ROUTING )
|
||
628 /*********************************************************************
|
||
629 * @fn AF_DataRequestSrcRtg
|
||
630 *
|
||
631 * @brief Common functionality for invoking APSDE_DataReq() for both
|
||
632 * SendMulti and MSG-Send.
|
||
633 *
|
||
634 * input parameters
|
||
635 *
|
||
636 * @param *dstAddr - Full ZB destination address: Nwk Addr + End Point.
|
||
637 * @param *srcEP - Origination (i.e. respond to or ack to) End Point Descr.
|
||
638 * @param cID - A valid cluster ID as specified by the Profile.
|
||
639 * @param len - Number of bytes of data pointed to by next param.
|
||
640 * @param *buf - A pointer to the data bytes to send.
|
||
641 * @param *transID - A pointer to a byte which can be modified and which will
|
||
642 * be used as the transaction sequence number of the msg.
|
||
643 * @param options - Valid bit mask of Tx options.
|
||
644 * @param radius - Normally set to AF_DEFAULT_RADIUS.
|
||
645 * @param relayCnt - Number of devices in the relay list
|
||
646 * @param pRelayList - Pointer to the relay list
|
||
647 *
|
||
648 * output parameters
|
||
649 *
|
||
650 * @param *transID - Incremented by one if the return value is success.
|
||
651 *
|
||
652 * @return afStatus_t - See previous definition of afStatus_... types.
|
||
653 */
|
||
654
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
655 afStatus_t AF_DataRequestSrcRtg( afAddrType_t *dstAddr, endPointDesc_t *srcEP,
|
||
\ AF_DataRequestSrcRtg:
|
||
656 uint16 cID, uint16 len, uint8 *buf, uint8 *transID,
|
||
657 uint8 options, uint8 radius, uint8 relayCnt, uint16* pRelayList )
|
||
658 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V3
|
||
\ 000000 74F4 MOV A,#-0xc
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 12
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 FE MOV R6,A
|
||
\ 000007 EB MOV A,R3
|
||
\ 000008 FF MOV R7,A
|
||
\ 000009 8C.. MOV ?V2,R4
|
||
\ 00000B 8D.. MOV ?V3,R5
|
||
\ 00000D 89.. MOV ?V0,R1
|
||
659 uint8 status;
|
||
660
|
||
661 /* Add the source route to the source routing table */
|
||
662 status = RTG_AddSrcRtgEntry_Guaranteed( dstAddr->addr.shortAddr, relayCnt,
|
||
663 pRelayList );
|
||
\ 00000F ; Setup parameters for call to function RTG_AddSrcRtgEntry_Guaranteed
|
||
\ 00000F 7416 MOV A,#0x16
|
||
\ 000011 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000014 E0 MOVX A,@DPTR
|
||
\ 000015 FC MOV R4,A
|
||
\ 000016 A3 INC DPTR
|
||
\ 000017 E0 MOVX A,@DPTR
|
||
\ 000018 FD MOV R5,A
|
||
\ 000019 7415 MOV A,#0x15
|
||
\ 00001B 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00001E 12.... LCALL ??Subroutine43_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_87:
|
||
\ 000021 12.... LCALL ??Subroutine48_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_112:
|
||
\ 000024 12.... LCALL `??RTG_AddSrcRtgEntry_Guaranteed::?relay`; Banked call to: RTG_AddSrcRtgEntry_Guaranteed
|
||
\ 000027 E9 MOV A,R1
|
||
\ 000028 F9 MOV R1,A
|
||
664
|
||
665 if( status == RTG_SUCCESS)
|
||
\ 000029 7043 JNZ ??AF_DataRequestSrcRtg_0
|
||
666 {
|
||
667 /* Call AF_DataRequest to send the data */
|
||
668 status = AF_DataRequest( dstAddr, srcEP, cID, len, buf, transID, options, radius );
|
||
\ 00002B ; Setup parameters for call to function AF_DataRequest
|
||
\ 00002B 7414 MOV A,#0x14
|
||
\ 00002D 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000030 E0 MOVX A,@DPTR
|
||
\ 000031 F5.. MOV ?V1,A
|
||
\ 000033 78.. MOV R0,#?V1
|
||
\ 000035 12.... LCALL ?PUSH_XSTACK_I_ONE
|
||
\ 000038 7413 MOV A,#0x13
|
||
\ 00003A 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00003D 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 000040 7413 MOV A,#0x13
|
||
\ 000042 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000045 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 000048 7413 MOV A,#0x13
|
||
\ 00004A 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00004D 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 000050 7413 MOV A,#0x13
|
||
\ 000052 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000055 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 000058 A9.. MOV R1,?V0
|
||
\ 00005A AC.. MOV R4,?V2
|
||
\ 00005C AD.. MOV R5,?V3
|
||
\ 00005E EE MOV A,R6
|
||
\ 00005F FA MOV R2,A
|
||
\ 000060 EF MOV A,R7
|
||
\ 000061 FB MOV R3,A
|
||
\ 000062 12.... LCALL `??AF_DataRequest::?relay`; Banked call to: AF_DataRequest
|
||
\ 000065 7409 MOV A,#0x9
|
||
\ 000067 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 00006A E9 MOV A,R1
|
||
\ 00006B F9 MOV R1,A
|
||
\ 00006C 800B SJMP ??AF_DataRequestSrcRtg_1
|
||
669 }
|
||
670 else if( status == RTG_INVALID_PATH )
|
||
\ ??AF_DataRequestSrcRtg_0:
|
||
\ 00006E 7405 MOV A,#0x5
|
||
\ 000070 69 XRL A,R1
|
||
\ 000071 7004 JNZ ??AF_DataRequestSrcRtg_2
|
||
671 {
|
||
672 /* The source route relay count is exceeding the network limit */
|
||
673 status = afStatus_INVALID_PARAMETER;
|
||
\ 000073 7902 MOV R1,#0x2
|
||
\ 000075 8002 SJMP ??AF_DataRequestSrcRtg_1
|
||
674 }
|
||
675 else
|
||
676 {
|
||
677 /* The guaranteed adding entry fails due to memory failure */
|
||
678 status = afStatus_MEM_FAIL;
|
||
\ ??AF_DataRequestSrcRtg_2:
|
||
\ 000077 7910 MOV R1,#0x10
|
||
679 }
|
||
680 return status;
|
||
\ ??AF_DataRequestSrcRtg_1:
|
||
\ 000079 02.... LJMP ?Subroutine0 & 0xFFFF
|
||
681 }
|
||
682
|
||
683 #endif
|
||
684
|
||
685 /*********************************************************************
|
||
686 * @fn afFindEndPointDescList
|
||
687 *
|
||
688 * @brief Find the endpoint description entry from the endpoint
|
||
689 * number.
|
||
690 *
|
||
691 * @param EndPoint - Application Endpoint to look for
|
||
692 *
|
||
693 * @return the address to the endpoint/interface description entry
|
||
694 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
695 static epList_t *afFindEndPointDescList( uint8 EndPoint )
|
||
\ afFindEndPointDescList:
|
||
696 {
|
||
\ 000000 C082 PUSH DPL
|
||
\ 000002 C083 PUSH DPH
|
||
\ 000004 ; Saved register size: 2
|
||
\ 000004 ; Auto size: 0
|
||
697 epList_t *epSearch;
|
||
698
|
||
699 for (epSearch = epList; epSearch != NULL; epSearch = epSearch->nextDesc)
|
||
\ 000004 90.... MOV DPTR,#epList
|
||
\ 000007 8004 SJMP ??afFindEndPointDescList_0
|
||
\ ??afFindEndPointDescList_1:
|
||
\ 000009 8A82 MOV DPL,R2
|
||
\ 00000B 8B83 MOV DPH,R3
|
||
\ ??afFindEndPointDescList_0:
|
||
\ 00000D 12.... LCALL ??Subroutine48_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_113:
|
||
\ 000010 EA MOV A,R2
|
||
\ 000011 4B ORL A,R3
|
||
\ 000012 600B JZ ??afFindEndPointDescList_2
|
||
700 {
|
||
701 if (epSearch->epDesc->endPoint == EndPoint)
|
||
\ 000014 8A82 MOV DPL,R2
|
||
\ 000016 8B83 MOV DPH,R3
|
||
\ 000018 12.... LCALL ??Subroutine45_0 & 0xFFFF
|
||
702 {
|
||
703 break;
|
||
704 }
|
||
705 }
|
||
\ ??CrossCallReturnLabel_99:
|
||
\ 00001B E0 MOVX A,@DPTR
|
||
\ 00001C 69 XRL A,R1
|
||
\ 00001D 70EA JNZ ??afFindEndPointDescList_1
|
||
706
|
||
707 return epSearch;
|
||
\ ??afFindEndPointDescList_2:
|
||
\ 00001F REQUIRE ?Subroutine4
|
||
\ 00001F ; // Fall through to label ?Subroutine4
|
||
708 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine4:
|
||
\ 000000 D083 POP DPH
|
||
\ 000002 D082 POP DPL
|
||
\ 000004 02.... LJMP ?BRET
|
||
709
|
||
710 /*********************************************************************
|
||
711 * @fn afFindEndPointDesc
|
||
712 *
|
||
713 * @brief Find the endpoint description entry from the endpoint
|
||
714 * number.
|
||
715 *
|
||
716 * @param EndPoint - Application Endpoint to look for
|
||
717 *
|
||
718 * @return the address to the endpoint/interface description entry
|
||
719 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine47_0:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 REQUIRE ??Subroutine48_0
|
||
\ 000002 ; // Fall through to label ??Subroutine48_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
720 endPointDesc_t *afFindEndPointDesc( uint8 EndPoint )
|
||
\ afFindEndPointDesc:
|
||
721 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 74F6 MOV A,#-0xa
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 10
|
||
\ 000005 ; Auto size: 0
|
||
722 epList_t *epSearch;
|
||
723
|
||
724 // Look for the endpoint
|
||
725 epSearch = afFindEndPointDescList( EndPoint );
|
||
\ 000005 ; Setup parameters for call to function afFindEndPointDescList
|
||
\ 000005 12.... LCALL ?Subroutine28 & 0xFFFF
|
||
726
|
||
727 if ( epSearch )
|
||
\ ??CrossCallReturnLabel_39:
|
||
\ 000008 6005 JZ ??afFindEndPointDesc_0
|
||
728 return ( epSearch->epDesc );
|
||
\ 00000A 12.... LCALL ??Subroutine47_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_115:
|
||
\ 00000D 8004 SJMP ??afFindEndPointDesc_1
|
||
729 else
|
||
730 return ( (endPointDesc_t *)NULL );
|
||
\ ??afFindEndPointDesc_0:
|
||
\ 00000F 7A00 MOV R2,#0x0
|
||
\ 000011 7B00 MOV R3,#0x0
|
||
\ ??afFindEndPointDesc_1:
|
||
\ 000013 02.... LJMP ?Subroutine1 & 0xFFFF
|
||
731 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine28:
|
||
\ 000000 12.... LCALL `??afFindEndPointDescList::?relay`; Banked call to: afFindEndPointDescList
|
||
\ 000003 8A82 MOV DPL,R2
|
||
\ 000005 8B83 MOV DPH,R3
|
||
\ 000007 E582 MOV A,DPL
|
||
\ 000009 4583 ORL A,DPH
|
||
\ 00000B 22 RET
|
||
732
|
||
733 /*********************************************************************
|
||
734 * @fn afFindSimpleDesc
|
||
735 *
|
||
736 * @brief Find the Simple Descriptor from the endpoint number.
|
||
737 *
|
||
738 * @param EP - Application Endpoint to look for.
|
||
739 *
|
||
740 * @return Non-zero to indicate that the descriptor memory must be freed.
|
||
741 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine8:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 REQUIRE ??Subroutine47_0
|
||
\ 000001 ; // Fall through to label ??Subroutine47_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
742 uint8 afFindSimpleDesc( SimpleDescriptionFormat_t **ppDesc, uint8 EP )
|
||
\ afFindSimpleDesc:
|
||
743 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V3
|
||
\ 000000 74F4 MOV A,#-0xc
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 12
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 FE MOV R6,A
|
||
\ 000007 EB MOV A,R3
|
||
\ 000008 FF MOV R7,A
|
||
\ 000009 89.. MOV ?V0,R1
|
||
744 epList_t *epItem = afFindEndPointDescList( EP );
|
||
\ 00000B ; Setup parameters for call to function afFindEndPointDescList
|
||
\ 00000B 12.... LCALL `??afFindEndPointDescList::?relay`; Banked call to: afFindEndPointDescList
|
||
\ 00000E 8A.. MOV ?V2,R2
|
||
\ 000010 8B.. MOV ?V3,R3
|
||
\ 000012 AC.. MOV R4,?V2
|
||
\ 000014 AD.. MOV R5,?V3
|
||
745 uint8 rtrn = FALSE;
|
||
\ 000016 7900 MOV R1,#0x0
|
||
746
|
||
747 if ( epItem )
|
||
\ 000018 EA MOV A,R2
|
||
\ 000019 4D ORL A,R5
|
||
\ 00001A 6039 JZ ??afFindSimpleDesc_0
|
||
748 {
|
||
749 if ( epItem->pfnDescCB )
|
||
\ 00001C 8A82 MOV DPL,R2
|
||
\ 00001E 8B83 MOV DPH,R3
|
||
\ 000020 A3 INC DPTR
|
||
\ 000021 12.... LCALL ?Subroutine8 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_116:
|
||
\ 000024 EA MOV A,R2
|
||
\ 000025 4B ORL A,R3
|
||
\ 000026 6019 JZ ??afFindSimpleDesc_1
|
||
750 {
|
||
751 *ppDesc = epItem->pfnDescCB( AF_DESCRIPTOR_SIMPLE, EP );
|
||
\ 000028 ; Setup parameters for indirect call
|
||
\ 000028 AA.. MOV R2,?V0
|
||
\ 00002A 09 INC R1
|
||
\ 00002B 8C82 MOV DPL,R4
|
||
\ 00002D 8D83 MOV DPH,R5
|
||
\ 00002F A3 INC DPTR
|
||
\ 000030 12.... LCALL ?Subroutine19 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_102:
|
||
\ 000033 12.... LCALL ?CALL_IND
|
||
\ 000036 8E82 MOV DPL,R6
|
||
\ 000038 8F83 MOV DPH,R7
|
||
\ 00003A 12.... LCALL ?Subroutine26 & 0xFFFF
|
||
752 rtrn = TRUE;
|
||
\ ??CrossCallReturnLabel_36:
|
||
\ 00003D 7901 MOV R1,#0x1
|
||
\ 00003F 801C SJMP ??afFindSimpleDesc_2
|
||
753 }
|
||
754 else
|
||
755 {
|
||
756 *ppDesc = epItem->epDesc->simpleDesc;
|
||
\ ??afFindSimpleDesc_1:
|
||
\ 000041 8C82 MOV DPL,R4
|
||
\ 000043 8D83 MOV DPH,R5
|
||
\ 000045 12.... LCALL ??Subroutine45_0 & 0xFFFF
|
||
757 }
|
||
758 }
|
||
\ ??CrossCallReturnLabel_100:
|
||
\ 000048 12.... LCALL ?Subroutine8 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_117:
|
||
\ 00004B 8E82 MOV DPL,R6
|
||
\ 00004D 8F83 MOV DPH,R7
|
||
\ 00004F EA MOV A,R2
|
||
\ 000050 F0 MOVX @DPTR,A
|
||
\ 000051 A3 INC DPTR
|
||
\ 000052 EB MOV A,R3
|
||
\ 000053 8007 SJMP ??afFindSimpleDesc_3
|
||
759 else
|
||
760 {
|
||
761 *ppDesc = NULL;
|
||
\ ??afFindSimpleDesc_0:
|
||
\ 000055 8E82 MOV DPL,R6
|
||
\ 000057 8F83 MOV DPH,R7
|
||
\ 000059 E4 CLR A
|
||
\ 00005A F0 MOVX @DPTR,A
|
||
\ 00005B A3 INC DPTR
|
||
\ ??afFindSimpleDesc_3:
|
||
\ 00005C F0 MOVX @DPTR,A
|
||
762 }
|
||
763
|
||
764 return rtrn;
|
||
\ ??afFindSimpleDesc_2:
|
||
\ 00005D REQUIRE ?Subroutine0
|
||
\ 00005D ; // Fall through to label ?Subroutine0
|
||
765 }
|
||
766
|
||
767 /*********************************************************************
|
||
768 * @fn afGetDescCB
|
||
769 *
|
||
770 * @brief Get the Descriptor callback function.
|
||
771 *
|
||
772 * @param epDesc - pointer to the endpoint descriptor
|
||
773 *
|
||
774 * @return function pointer or NULL
|
||
775 */
|
||
776 static pDescCB afGetDescCB( endPointDesc_t *epDesc )
|
||
777 {
|
||
778 epList_t *epSearch;
|
||
779
|
||
780 // Start at the beginning
|
||
781 epSearch = epList;
|
||
782
|
||
783 // Look through the list until the end
|
||
784 while ( epSearch )
|
||
785 {
|
||
786 // Is there a match?
|
||
787 if ( epSearch->epDesc == epDesc )
|
||
788 {
|
||
789 return ( epSearch->pfnDescCB );
|
||
790 }
|
||
791 else
|
||
792 epSearch = epSearch->nextDesc; // Next entry
|
||
793 }
|
||
794
|
||
795 return ( (pDescCB)NULL );
|
||
796 }
|
||
797
|
||
798 /*********************************************************************
|
||
799 * @fn afDataReqMTU
|
||
800 *
|
||
801 * @brief Get the Data Request MTU(Max Transport Unit).
|
||
802 *
|
||
803 * @param fields - afDataReqMTU_t
|
||
804 *
|
||
805 * @return uint8(MTU)
|
||
806 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
807 uint8 afDataReqMTU( afDataReqMTU_t* fields )
|
||
\ afDataReqMTU:
|
||
808 {
|
||
\ 000000 74F7 MOV A,#-0x9
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 9
|
||
\ 000005 ; Auto size: 0
|
||
809 uint8 len;
|
||
810 uint8 hdr;
|
||
811
|
||
812 if ( fields->kvp == TRUE )
|
||
\ 000005 8A82 MOV DPL,R2
|
||
\ 000007 8B83 MOV DPH,R3
|
||
\ 000009 E0 MOVX A,@DPTR
|
||
\ 00000A 6401 XRL A,#0x1
|
||
\ 00000C 7004 JNZ ??afDataReqMTU_0
|
||
813 {
|
||
814 hdr = AF_HDR_KVP_MAX_LEN;
|
||
\ 00000E 7E08 MOV R6,#0x8
|
||
\ 000010 8002 SJMP ??afDataReqMTU_1
|
||
815 }
|
||
816 else
|
||
817 {
|
||
818 hdr = AF_HDR_V1_1_MAX_LEN;
|
||
\ ??afDataReqMTU_0:
|
||
\ 000012 7E00 MOV R6,#0x0
|
||
819 }
|
||
820
|
||
821 len = (uint8)(APSDE_DataReqMTU(&fields->aps) - hdr);
|
||
822
|
||
823 return len;
|
||
\ ??afDataReqMTU_1:
|
||
\ 000014 ; Setup parameters for call to function APSDE_DataReqMTU
|
||
\ 000014 A3 INC DPTR
|
||
\ 000015 AA82 MOV R2,DPL
|
||
\ 000017 AB83 MOV R3,DPH
|
||
\ 000019 12.... LCALL `??APSDE_DataReqMTU::?relay`; Banked call to: APSDE_DataReqMTU
|
||
\ 00001C E9 MOV A,R1
|
||
\ 00001D C3 CLR C
|
||
\ 00001E 9E SUBB A,R6
|
||
\ 00001F F9 MOV R1,A
|
||
\ 000020 REQUIRE ?Subroutine5
|
||
\ 000020 ; // Fall through to label ?Subroutine5
|
||
824 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine5:
|
||
\ 000000 7F01 MOV R7,#0x1
|
||
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
825
|
||
826 /*********************************************************************
|
||
827 * @fn afGetMatch
|
||
828 *
|
||
829 * @brief Set the allow response flag.
|
||
830 *
|
||
831 * @param ep - Application Endpoint to look for
|
||
832 * @param action - true - allow response, false - no response
|
||
833 *
|
||
834 * @return TRUE allow responses, FALSE no response
|
||
835 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
836 uint8 afGetMatch( uint8 ep )
|
||
\ afGetMatch:
|
||
837 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 74F6 MOV A,#-0xa
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 10
|
||
\ 000005 ; Auto size: 0
|
||
838 epList_t *epSearch;
|
||
839
|
||
840 // Look for the endpoint
|
||
841 epSearch = afFindEndPointDescList( ep );
|
||
\ 000005 ; Setup parameters for call to function afFindEndPointDescList
|
||
\ 000005 12.... LCALL ?Subroutine28 & 0xFFFF
|
||
842
|
||
843 if ( epSearch )
|
||
\ ??CrossCallReturnLabel_40:
|
||
\ 000008 6011 JZ ??afGetMatch_0
|
||
844 {
|
||
845 if ( epSearch->flags & eEP_AllowMatch )
|
||
\ 00000A A3 INC DPTR
|
||
\ 00000B A3 INC DPTR
|
||
\ 00000C A3 INC DPTR
|
||
\ 00000D A3 INC DPTR
|
||
\ 00000E A3 INC DPTR
|
||
\ 00000F A3 INC DPTR
|
||
\ 000010 A3 INC DPTR
|
||
\ 000011 A3 INC DPTR
|
||
\ 000012 E0 MOVX A,@DPTR
|
||
\ 000013 A2E0 MOV C,0xE0 /* A */.0
|
||
\ 000015 5004 JNC ??afGetMatch_0
|
||
846 return ( TRUE );
|
||
\ 000017 7901 MOV R1,#0x1
|
||
\ 000019 8002 SJMP ??afGetMatch_1
|
||
847 else
|
||
848 return ( FALSE );
|
||
849 }
|
||
850 else
|
||
851 return ( FALSE );
|
||
\ ??afGetMatch_0:
|
||
\ 00001B 7900 MOV R1,#0x0
|
||
\ ??afGetMatch_1:
|
||
\ 00001D REQUIRE ?Subroutine1
|
||
\ 00001D ; // Fall through to label ?Subroutine1
|
||
852 }
|
||
853
|
||
854 /*********************************************************************
|
||
855 * @fn afSetMatch
|
||
856 *
|
||
857 * @brief Set the allow response flag.
|
||
858 *
|
||
859 * @param ep - Application Endpoint to look for
|
||
860 * @param action - true - allow response, false - no response
|
||
861 *
|
||
862 * @return TRUE if success, FALSE if endpoint not found
|
||
863 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
864 uint8 afSetMatch( uint8 ep, uint8 action )
|
||
\ afSetMatch:
|
||
865 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 74F6 MOV A,#-0xa
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 10
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 FF MOV R7,A
|
||
866 epList_t *epSearch;
|
||
867
|
||
868 // Look for the endpoint
|
||
869 epSearch = afFindEndPointDescList( ep );
|
||
\ 000007 ; Setup parameters for call to function afFindEndPointDescList
|
||
\ 000007 12.... LCALL ?Subroutine28 & 0xFFFF
|
||
870
|
||
871 if ( epSearch )
|
||
\ ??CrossCallReturnLabel_41:
|
||
\ 00000A 6018 JZ ??afSetMatch_0
|
||
872 {
|
||
873 if ( action )
|
||
\ 00000C EF MOV A,R7
|
||
\ 00000D A3 INC DPTR
|
||
\ 00000E A3 INC DPTR
|
||
\ 00000F A3 INC DPTR
|
||
\ 000010 A3 INC DPTR
|
||
\ 000011 A3 INC DPTR
|
||
\ 000012 A3 INC DPTR
|
||
\ 000013 A3 INC DPTR
|
||
\ 000014 A3 INC DPTR
|
||
\ 000015 6005 JZ ??afSetMatch_1
|
||
874 {
|
||
875 epSearch->flags |= eEP_AllowMatch;
|
||
\ 000017 E0 MOVX A,@DPTR
|
||
\ 000018 D2E0 SETB 0xE0 /* A */.0
|
||
\ 00001A 8003 SJMP ??afSetMatch_2
|
||
876 }
|
||
877 else
|
||
878 {
|
||
879 epSearch->flags &= (eEP_AllowMatch ^ 0xFFFF);
|
||
\ ??afSetMatch_1:
|
||
\ 00001C E0 MOVX A,@DPTR
|
||
\ 00001D C2E0 CLR 0xE0 /* A */.0
|
||
\ ??afSetMatch_2:
|
||
\ 00001F F0 MOVX @DPTR,A
|
||
880 }
|
||
881 return ( TRUE );
|
||
\ 000020 7901 MOV R1,#0x1
|
||
\ 000022 8002 SJMP ??afSetMatch_3
|
||
882 }
|
||
883 else
|
||
884 return ( FALSE );
|
||
\ ??afSetMatch_0:
|
||
\ 000024 7900 MOV R1,#0x0
|
||
\ ??afSetMatch_3:
|
||
\ 000026 80.. SJMP ?Subroutine1
|
||
885 }
|
||
886
|
||
887 /*********************************************************************
|
||
888 * @fn afNumEndPoints
|
||
889 *
|
||
890 * @brief Returns the number of endpoints defined (including 0)
|
||
891 *
|
||
892 * @param none
|
||
893 *
|
||
894 * @return number of endpoints
|
||
895 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
896 uint8 afNumEndPoints( void )
|
||
\ afNumEndPoints:
|
||
897 {
|
||
\ 000000 C082 PUSH DPL
|
||
\ 000002 C083 PUSH DPH
|
||
\ 000004 ; Saved register size: 2
|
||
\ 000004 ; Auto size: 0
|
||
898 epList_t *epSearch;
|
||
899 uint8 endpoints;
|
||
900
|
||
901 // Start at the beginning
|
||
902 epSearch = epList;
|
||
\ 000004 90.... MOV DPTR,#epList
|
||
\ 000007 12.... LCALL ?Subroutine36 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_104:
|
||
\ 00000A 8882 MOV DPL,R0
|
||
\ 00000C F583 MOV DPH,A
|
||
903 endpoints = 0;
|
||
\ 00000E 7900 MOV R1,#0x0
|
||
\ 000010 8009 SJMP ??afNumEndPoints_0
|
||
904
|
||
905 while ( epSearch )
|
||
906 {
|
||
907 endpoints++;
|
||
\ ??afNumEndPoints_1:
|
||
\ 000012 09 INC R1
|
||
908 epSearch = epSearch->nextDesc;
|
||
\ 000013 E0 MOVX A,@DPTR
|
||
\ 000014 FA MOV R2,A
|
||
\ 000015 A3 INC DPTR
|
||
\ 000016 E0 MOVX A,@DPTR
|
||
\ 000017 8A82 MOV DPL,R2
|
||
\ 000019 F583 MOV DPH,A
|
||
909 }
|
||
\ ??afNumEndPoints_0:
|
||
\ 00001B E582 MOV A,DPL
|
||
\ 00001D 4583 ORL A,DPH
|
||
\ 00001F 70F1 JNZ ??afNumEndPoints_1
|
||
910
|
||
911 return ( endpoints );
|
||
\ 000021 02.... LJMP ?Subroutine4 & 0xFFFF
|
||
912 }
|
||
913
|
||
914 /*********************************************************************
|
||
915 * @fn afEndPoints
|
||
916 *
|
||
917 * @brief Fills in the passed in buffer with the endpoint (numbers).
|
||
918 * Use afNumEndPoints to find out how big a buffer to supply.
|
||
919 *
|
||
920 * @param epBuf - pointer to mem used
|
||
921 *
|
||
922 * @return void
|
||
923 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
924 void afEndPoints( uint8 *epBuf, uint8 skipZDO )
|
||
\ afEndPoints:
|
||
925 {
|
||
\ 000000 C082 PUSH DPL
|
||
\ 000002 C083 PUSH DPH
|
||
\ 000004 ; Saved register size: 2
|
||
\ 000004 ; Auto size: 0
|
||
\ 000004 E9 MOV A,R1
|
||
\ 000005 FC MOV R4,A
|
||
926 epList_t *epSearch;
|
||
927 uint8 endPoint;
|
||
928
|
||
929 // Start at the beginning
|
||
930 epSearch = epList;
|
||
\ 000006 90.... MOV DPTR,#epList
|
||
\ 000009 8025 SJMP ??afEndPoints_0
|
||
931
|
||
932 while ( epSearch )
|
||
933 {
|
||
934 endPoint = epSearch->epDesc->endPoint;
|
||
\ ??afEndPoints_1:
|
||
\ 00000B 8882 MOV DPL,R0
|
||
\ 00000D 8983 MOV DPH,R1
|
||
\ 00000F A3 INC DPTR
|
||
\ 000010 A3 INC DPTR
|
||
\ 000011 E0 MOVX A,@DPTR
|
||
\ 000012 FD MOV R5,A
|
||
\ 000013 A3 INC DPTR
|
||
\ 000014 E0 MOVX A,@DPTR
|
||
\ 000015 F583 MOV DPH,A
|
||
\ 000017 8D82 MOV DPL,R5
|
||
\ 000019 E0 MOVX A,@DPTR
|
||
\ 00001A FD MOV R5,A
|
||
935
|
||
936 if ( !skipZDO || endPoint != 0 )
|
||
\ 00001B EC MOV A,R4
|
||
\ 00001C 6003 JZ ??afEndPoints_2
|
||
\ 00001E ED MOV A,R5
|
||
\ 00001F 600B JZ ??afEndPoints_3
|
||
937 *epBuf++ = endPoint;
|
||
\ ??afEndPoints_2:
|
||
\ 000021 ED MOV A,R5
|
||
\ 000022 8A82 MOV DPL,R2
|
||
\ 000024 8B83 MOV DPH,R3
|
||
\ 000026 F0 MOVX @DPTR,A
|
||
\ 000027 A3 INC DPTR
|
||
\ 000028 AA82 MOV R2,DPL
|
||
\ 00002A AB83 MOV R3,DPH
|
||
938
|
||
939 epSearch = epSearch->nextDesc;
|
||
\ ??afEndPoints_3:
|
||
\ 00002C 8882 MOV DPL,R0
|
||
\ 00002E 8983 MOV DPH,R1
|
||
940 }
|
||
\ ??afEndPoints_0:
|
||
\ 000030 12.... LCALL ??Subroutine44_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_91:
|
||
\ 000033 70D6 JNZ ??afEndPoints_1
|
||
941 }
|
||
\ 000035 02.... LJMP ?Subroutine4 & 0xFFFF
|
||
942
|
||
943 /*********************************************************************
|
||
944 * @fn afCopyAddress
|
||
945 *
|
||
946 * @brief Fills in the passed in afAddrType_t parameter with the corresponding information
|
||
947 * from the zAddrType_t parameter.
|
||
948 *
|
||
949 * @param epBuf - pointer to mem used
|
||
950 *
|
||
951 * @return void
|
||
952 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
953 void afCopyAddress( afAddrType_t *afAddr, zAddrType_t *zAddr )
|
||
\ afCopyAddress:
|
||
954 {
|
||
\ 000000 74F7 MOV A,#-0x9
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 9
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 FE MOV R6,A
|
||
\ 000007 EB MOV A,R3
|
||
\ 000008 FF MOV R7,A
|
||
955 afAddr->addrMode = (afAddrMode_t)zAddr->addrMode;
|
||
\ 000009 EC MOV A,R4
|
||
\ 00000A 2408 ADD A,#0x8
|
||
\ 00000C F8 MOV R0,A
|
||
\ 00000D E4 CLR A
|
||
\ 00000E 3D ADDC A,R5
|
||
\ 00000F F9 MOV R1,A
|
||
\ 000010 8882 MOV DPL,R0
|
||
\ 000012 F583 MOV DPH,A
|
||
\ 000014 E0 MOVX A,@DPTR
|
||
\ 000015 8A82 MOV DPL,R2
|
||
\ 000017 8B83 MOV DPH,R3
|
||
\ 000019 A3 INC DPTR
|
||
\ 00001A A3 INC DPTR
|
||
\ 00001B A3 INC DPTR
|
||
\ 00001C A3 INC DPTR
|
||
\ 00001D A3 INC DPTR
|
||
\ 00001E A3 INC DPTR
|
||
\ 00001F A3 INC DPTR
|
||
\ 000020 A3 INC DPTR
|
||
\ 000021 12.... LCALL ?Subroutine27 & 0xFFFF
|
||
956 if ( zAddr->addrMode == Addr64Bit )
|
||
\ ??CrossCallReturnLabel_38:
|
||
\ 000024 7005 JNZ ??afCopyAddress_0
|
||
957 {
|
||
958 (void)osal_cpyExtAddr( afAddr->addr.extAddr, zAddr->addr.extAddr );
|
||
\ 000026 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 000026 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
\ 000029 8007 SJMP ??CrossCallReturnLabel_3
|
||
959 }
|
||
960 else
|
||
961 {
|
||
962 afAddr->addr.shortAddr = zAddr->addr.shortAddr;
|
||
\ ??afCopyAddress_0:
|
||
\ 00002B 8C82 MOV DPL,R4
|
||
\ 00002D 8D83 MOV DPH,R5
|
||
\ 00002F 12.... LCALL ?Subroutine9 & 0xFFFF
|
||
963 }
|
||
964
|
||
965 // Since zAddrType_t has no INTER-PAN information, set the panId member to zero.
|
||
966 afAddr->panId = 0;
|
||
\ ??CrossCallReturnLabel_3:
|
||
\ 000032 8E82 MOV DPL,R6
|
||
\ 000034 8F83 MOV DPH,R7
|
||
\ 000036 A3 INC DPTR
|
||
\ 000037 A3 INC DPTR
|
||
\ 000038 A3 INC DPTR
|
||
\ 000039 A3 INC DPTR
|
||
\ 00003A A3 INC DPTR
|
||
\ 00003B A3 INC DPTR
|
||
\ 00003C A3 INC DPTR
|
||
\ 00003D A3 INC DPTR
|
||
\ 00003E A3 INC DPTR
|
||
\ 00003F A3 INC DPTR
|
||
\ 000040 E4 CLR A
|
||
\ 000041 F0 MOVX @DPTR,A
|
||
\ 000042 A3 INC DPTR
|
||
\ 000043 F0 MOVX @DPTR,A
|
||
967 }
|
||
\ 000044 02.... LJMP ?Subroutine5 & 0xFFFF
|
||
968
|
||
969 /**************************************************************************************************
|
||
970 * @fn afAPSF_ConfigGet
|
||
971 *
|
||
972 * @brief This function ascertains the fragmentation configuration that corresponds to
|
||
973 * the specified EndPoint.
|
||
974 *
|
||
975 * input parameters
|
||
976 *
|
||
977 * @param endPoint - The source EP of a Tx or destination EP of a Rx fragmented message.
|
||
978 *
|
||
979 * output parameters
|
||
980 *
|
||
981 * @param pCfg - A pointer to an APSF configuration structure to fill with values.
|
||
982 *
|
||
983 * @return None.
|
||
984 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
985 void afAPSF_ConfigGet(uint8 endPoint, afAPSF_Config_t *pCfg)
|
||
\ afAPSF_ConfigGet:
|
||
986 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V3
|
||
\ 000000 74F4 MOV A,#-0xc
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 12
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 FE MOV R6,A
|
||
\ 000007 EB MOV A,R3
|
||
\ 000008 FF MOV R7,A
|
||
987 epList_t *pList = afFindEndPointDescList(endPoint);
|
||
\ 000009 ; Setup parameters for call to function afFindEndPointDescList
|
||
\ 000009 12.... LCALL `??afFindEndPointDescList::?relay`; Banked call to: afFindEndPointDescList
|
||
\ 00000C 8B.. MOV ?V1,R3
|
||
\ 00000E A9.. MOV R1,?V1
|
||
988
|
||
989 if (pList == NULL)
|
||
\ 000010 EA MOV A,R2
|
||
\ 000011 49 ORL A,R1
|
||
\ 000012 700D JNZ ??afAPSF_ConfigGet_0
|
||
990 {
|
||
991 pCfg->frameDelay = APSF_DEFAULT_INTERFRAME_DELAY;
|
||
\ 000014 8E82 MOV DPL,R6
|
||
\ 000016 8F83 MOV DPH,R7
|
||
\ 000018 7432 MOV A,#0x32
|
||
\ 00001A F0 MOVX @DPTR,A
|
||
992 pCfg->windowSize = APSF_DEFAULT_WINDOW_SIZE;
|
||
\ 00001B A3 INC DPTR
|
||
\ 00001C 7401 MOV A,#0x1
|
||
\ 00001E F0 MOVX @DPTR,A
|
||
\ 00001F 8021 SJMP ??afAPSF_ConfigGet_1
|
||
993 }
|
||
994 else
|
||
995 {
|
||
996 (void)osal_memcpy(pCfg, &pList->apsfCfg, sizeof(afAPSF_Config_t));
|
||
\ ??afAPSF_ConfigGet_0:
|
||
\ 000021 ; Setup parameters for call to function osal_memcpy
|
||
\ 000021 EA MOV A,R2
|
||
\ 000022 2406 ADD A,#0x6
|
||
\ 000024 F5.. MOV ?V0,A
|
||
\ 000026 E4 CLR A
|
||
\ 000027 39 ADDC A,R1
|
||
\ 000028 F5.. MOV ?V1,A
|
||
\ 00002A 75..00 MOV ?V2,#0x0
|
||
\ 00002D 78.. MOV R0,#?V0
|
||
\ 00002F 12.... LCALL ?PUSH_XSTACK_I_THREE
|
||
\ 000032 7C02 MOV R4,#0x2
|
||
\ 000034 7D00 MOV R5,#0x0
|
||
\ 000036 EE MOV A,R6
|
||
\ 000037 FA MOV R2,A
|
||
\ 000038 EF MOV A,R7
|
||
\ 000039 FB MOV R3,A
|
||
\ 00003A 12.... LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
|
||
\ 00003D 7403 MOV A,#0x3
|
||
\ 00003F 12.... LCALL ?DEALLOC_XSTACK8
|
||
997 }
|
||
998 }
|
||
\ ??afAPSF_ConfigGet_1:
|
||
\ 000042 02.... LJMP ?Subroutine0 & 0xFFFF
|
||
999
|
||
1000 /**************************************************************************************************
|
||
1001 * @fn afAPSF_ConfigSet
|
||
1002 *
|
||
1003 * @brief This function attempts to set the fragmentation configuration that corresponds to
|
||
1004 * the specified EndPoint.
|
||
1005 *
|
||
1006 * input parameters
|
||
1007 *
|
||
1008 * @param endPoint - The specific EndPoint for which to set the fragmentation configuration.
|
||
1009 * @param pCfg - A pointer to an APSF configuration structure to fill with values.
|
||
1010 *
|
||
1011 * output parameters
|
||
1012 *
|
||
1013 * None.
|
||
1014 *
|
||
1015 * @return afStatus_SUCCESS for success.
|
||
1016 * afStatus_INVALID_PARAMETER if the specified EndPoint is not registered.
|
||
1017 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1018 afStatus_t afAPSF_ConfigSet(uint8 endPoint, afAPSF_Config_t *pCfg)
|
||
\ afAPSF_ConfigSet:
|
||
1019 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V3
|
||
\ 000000 REQUIRE ?V4
|
||
\ 000000 REQUIRE ?V5
|
||
\ 000000 REQUIRE ?V6
|
||
\ 000000 74F1 MOV A,#-0xf
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 15
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 FE MOV R6,A
|
||
\ 000007 EB MOV A,R3
|
||
\ 000008 FF MOV R7,A
|
||
1020 epList_t *pList = afFindEndPointDescList(endPoint);
|
||
\ 000009 ; Setup parameters for call to function afFindEndPointDescList
|
||
\ 000009 12.... LCALL `??afFindEndPointDescList::?relay`; Banked call to: afFindEndPointDescList
|
||
1021
|
||
1022 if (pList == NULL)
|
||
\ 00000C EA MOV A,R2
|
||
\ 00000D 4B ORL A,R3
|
||
\ 00000E 7004 JNZ ??afAPSF_ConfigSet_0
|
||
1023 {
|
||
1024 return afStatus_INVALID_PARAMETER;
|
||
\ 000010 7902 MOV R1,#0x2
|
||
\ 000012 8021 SJMP ??afAPSF_ConfigSet_1
|
||
1025 }
|
||
1026
|
||
1027 (void)osal_memcpy(&pList->apsfCfg, pCfg, sizeof(afAPSF_Config_t));
|
||
\ ??afAPSF_ConfigSet_0:
|
||
\ 000014 ; Setup parameters for call to function osal_memcpy
|
||
\ 000014 8E.. MOV ?V4,R6
|
||
\ 000016 8F.. MOV ?V5,R7
|
||
\ 000018 75..00 MOV ?V6,#0x0
|
||
\ 00001B 78.. MOV R0,#?V4
|
||
\ 00001D 12.... LCALL ?PUSH_XSTACK_I_THREE
|
||
\ 000020 7C02 MOV R4,#0x2
|
||
\ 000022 7D00 MOV R5,#0x0
|
||
\ 000024 EA MOV A,R2
|
||
\ 000025 2406 ADD A,#0x6
|
||
\ 000027 FA MOV R2,A
|
||
\ 000028 5001 JNC ??afAPSF_ConfigSet_2
|
||
\ 00002A 0B INC R3
|
||
\ ??afAPSF_ConfigSet_2:
|
||
\ 00002B 12.... LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
|
||
\ 00002E 7403 MOV A,#0x3
|
||
\ 000030 12.... LCALL ?DEALLOC_XSTACK8
|
||
1028 return afStatus_SUCCESS;
|
||
\ 000033 7900 MOV R1,#0x0
|
||
\ ??afAPSF_ConfigSet_1:
|
||
\ 000035 02.... LJMP ?Subroutine3 & 0xFFFF
|
||
1029 }
|
||
|
||
\ In segment XDATA_ID, align 1, keep-with-next
|
||
\ `?<Initializer for AF_DataRequestDiscoverRoute>`:
|
||
\ 000000 01 DB 1
|
||
1030
|
||
1031 /**************************************************************************************************
|
||
1032 */
|
||
|
||
Maximum stack usage in bytes:
|
||
|
||
ISTACK XSTACK Function
|
||
------ ------ --------
|
||
1 67 AF_DataRequest
|
||
0 46 -> APSDE_DataReq
|
||
0 46 -> NLME_GetShortAddr
|
||
0 46 -> NLME_IsAddressBroadcast
|
||
0 46 -> RTG_CheckRtStatus
|
||
0 46 -> afDataConfirm
|
||
0 46 -> afDataReqMTU
|
||
0 46 -> osal_mem_free
|
||
0 46 -> sAddrExtCpy
|
||
0 33 AF_DataRequestSrcRtg
|
||
0 21 -> AF_DataRequest
|
||
0 12 -> RTG_AddSrcRtgEntry_Guaranteed
|
||
0 15 afAPSF_ConfigGet
|
||
0 12 -> afFindEndPointDescList
|
||
0 15 -> osal_memcpy
|
||
0 18 afAPSF_ConfigSet
|
||
0 15 -> afFindEndPointDescList
|
||
0 18 -> osal_memcpy
|
||
1 56 afBuildMSGIncoming
|
||
0 17 -> afCopyAddress
|
||
0 20 -> osal_memcpy
|
||
0 17 -> osal_msg_allocate
|
||
0 17 -> osal_msg_send
|
||
1 26 afCopyAddress
|
||
0 9 -> sAddrExtCpy
|
||
1 60 afDataConfirm
|
||
0 14 -> afFindEndPointDesc
|
||
0 14 -> osal_msg_allocate
|
||
0 14 -> osal_msg_send
|
||
0 55 afDataReqMTU
|
||
0 9 -> APSDE_DataReqMTU
|
||
3 0 afEndPoints
|
||
0 35 afFindEndPointDesc
|
||
0 10 -> afFindEndPointDescList
|
||
2 25 afFindEndPointDescList
|
||
0 12 afFindSimpleDesc
|
||
0 12 -> afFindEndPointDescList
|
||
0 10 afGetMatch
|
||
0 10 -> afFindEndPointDescList
|
||
1 45 afIncomingData
|
||
0 36 -> afBuildMSGIncoming
|
||
0 25 -> afFindEndPointDesc
|
||
0 25 -> afFindEndPointDescList
|
||
0 25 -> aps_FindGroupForEndpoint
|
||
0 25 -> osal_mem_free
|
||
2 0 afNumEndPoints
|
||
0 10 afRegister
|
||
0 10 -> afFindEndPointDescList
|
||
0 10 -> afRegisterExtended
|
||
0 22 afRegisterExtended
|
||
0 12 -> osal_mem_alloc
|
||
0 10 afSetMatch
|
||
0 10 -> afFindEndPointDescList
|
||
|
||
|
||
Segment part sizes:
|
||
|
||
Bytes Function/Label
|
||
----- --------------
|
||
1 ?<Initializer for AF_DataRequestDiscoverRoute>
|
||
5 ??Subroutine39_0
|
||
6 ??Subroutine40_0
|
||
6 ??Subroutine41_0
|
||
5 ??Subroutine42_0
|
||
7 ??Subroutine43_0
|
||
7 ??Subroutine44_0
|
||
2 ??Subroutine45_0
|
||
8 ??Subroutine46_0
|
||
2 ??Subroutine47_0
|
||
6 ??Subroutine48_0
|
||
5 ?Subroutine0
|
||
5 ?Subroutine1
|
||
15 ?Subroutine10
|
||
8 ?Subroutine11
|
||
13 ?Subroutine12
|
||
8 ?Subroutine13
|
||
10 ?Subroutine14
|
||
1 ?Subroutine15
|
||
8 ?Subroutine16
|
||
5 ?Subroutine17
|
||
2 ?Subroutine18
|
||
1 ?Subroutine19
|
||
8 ?Subroutine2
|
||
6 ?Subroutine20
|
||
9 ?Subroutine21
|
||
6 ?Subroutine22
|
||
7 ?Subroutine23
|
||
8 ?Subroutine24
|
||
4 ?Subroutine25
|
||
6 ?Subroutine26
|
||
9 ?Subroutine27
|
||
12 ?Subroutine28
|
||
12 ?Subroutine29
|
||
5 ?Subroutine3
|
||
11 ?Subroutine30
|
||
10 ?Subroutine31
|
||
10 ?Subroutine32
|
||
10 ?Subroutine33
|
||
3 ?Subroutine34
|
||
10 ?Subroutine35
|
||
5 ?Subroutine36
|
||
10 ?Subroutine37
|
||
1 ?Subroutine38
|
||
7 ?Subroutine4
|
||
5 ?Subroutine5
|
||
3 ?Subroutine6
|
||
26 ?Subroutine7
|
||
1 ?Subroutine8
|
||
9 ?Subroutine9
|
||
762 AF_DataRequest
|
||
1 AF_DataRequestDiscoverRoute
|
||
124 AF_DataRequestSrcRtg
|
||
69 afAPSF_ConfigGet
|
||
56 afAPSF_ConfigSet
|
||
444 afBuildMSGIncoming
|
||
71 afCopyAddress
|
||
69 afDataConfirm
|
||
32 afDataReqMTU
|
||
56 afEndPoints
|
||
22 afFindEndPointDesc
|
||
31 afFindEndPointDescList
|
||
93 afFindSimpleDesc
|
||
29 afGetMatch
|
||
539 afIncomingData
|
||
36 afNumEndPoints
|
||
48 afRegister
|
||
75 afRegisterExtended
|
||
40 afSetMatch
|
||
2 epList
|
||
108 -- Other
|
||
|
||
|
||
2 944 bytes in segment BANKED_CODE
|
||
108 bytes in segment BANK_RELAYS
|
||
1 byte in segment XDATA_I
|
||
1 byte in segment XDATA_ID
|
||
2 bytes in segment XDATA_Z
|
||
|
||
109 bytes of CODE memory
|
||
2 944 bytes of HUGECODE memory
|
||
3 bytes of XDATA memory
|
||
|
||
Errors: none
|
||
Warnings: none
|