📄 mac_scan.lst
字号:
167 // TX mode
168 pPacket->txMode = MTX_MODE_USE_CSMACA_BM | MTX_MODE_FORCE_UNSLOTTED_BM | MTX_MODE_SCAN_RELATED_BM;
\ ??mscTransmitOrphanNotification_4:
\ 000040 EE MOV A,R6
\ 000041 2486 ADD A,#-0x7a
\ 000043 F582 MOV DPL,A
\ 000045 EF MOV A,R7
\ 000046 3400 ADDC A,#0x0
\ 000048 F583 MOV DPH,A
\ 00004A 740B MOV A,#0xb
\ 00004C F0 MOVX @DPTR,A
169 pPacket->retriesLeft = aMaxFrameRetries;
\ 00004D EE MOV A,R6
\ 00004E 2491 ADD A,#-0x6f
\ 000050 F582 MOV DPL,A
\ 000052 EF MOV A,R7
\ 000053 3400 ADDC A,#0x0
\ 000055 F583 MOV DPH,A
\ 000057 7403 MOV A,#0x3
\ 000059 F0 MOVX @DPTR,A
170
171 // Generate the packet header
172 msupPrepareHeader(pPacket, FT_MAC_COMMAND, DEST_ADDR_SHORT | SRC_ADDR_EXT, broadcast, (ADDRESS *) &aExtendedAddress, broadcast, (ADDRESS *) &broadcast, TX_OPT_NONE);
\ 00005A ; Setup parameters for call to function msupPrepareHeader
\ 00005A 85..82 MOV DPL,?XSP + 0
\ 00005D 85..83 MOV DPH,?XSP + 1
\ 000060 8582.. MOV ?V0 + 0,DPL
\ 000063 8583.. MOV ?V0 + 1,DPH
\ 000066 78.. MOV R0,#?V0 + 0
\ 000068 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00006B 7402 MOV A,#0x2
\ 00006D 12.... LCALL ?XSTACK_DISP0_8
\ 000070 12.... LCALL ?PUSH_XSTACK8_X_TWO
\ 000073 75.... MOV ?V0 + 0,#(aExtendedAddress & 0xff)
\ 000076 75.... MOV ?V0 + 1,#((aExtendedAddress >> 8) & 0xff)
\ 000079 78.. MOV R0,#?V0 + 0
\ 00007B 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00007E 7406 MOV A,#0x6
\ 000080 12.... LCALL ?XSTACK_DISP0_8
\ 000083 12.... LCALL ?PUSH_XSTACK8_X_TWO
\ 000086 7D00 MOV R5,#0x0
\ 000088 7CC8 MOV R4,#-0x38
\ 00008A 7903 MOV R1,#0x3
\ 00008C EE MOV A,R6
\ 00008D FA MOV R2,A
\ 00008E EF MOV A,R7
\ 00008F FB MOV R3,A
\ 000090 12.... LCALL msupPrepareHeader
\ 000093 7408 MOV A,#0x8
\ 000095 12.... LCALL ?DEALLOC_XSTACK8
173
174 // Generate the packet payload
175 pPacket->pPayload[0] = CMD_ORPHAN_NOTIFICATION;
\ 000098 EE MOV A,R6
\ 000099 241A ADD A,#0x1a
\ 00009B F582 MOV DPL,A
\ 00009D EF MOV A,R7
\ 00009E 3400 ADDC A,#0x0
\ 0000A0 F583 MOV DPH,A
\ 0000A2 7406 MOV A,#0x6
\ 0000A4 F0 MOVX @DPTR,A
176
177 // Store the command type
178 pPacket->commandType = CMD_ORPHAN_NOTIFICATION;
\ 0000A5 EE MOV A,R6
\ 0000A6 2483 ADD A,#-0x7d
\ 0000A8 F582 MOV DPL,A
\ 0000AA EF MOV A,R7
\ 0000AB 3400 ADDC A,#0x0
\ 0000AD F583 MOV DPH,A
\ 0000AF 7406 MOV A,#0x6
\ 0000B1 F0 MOVX @DPTR,A
179
180 // Calculate and set the total packet length
181 pPacket->length = pPacket->headerLength + CMD_ORPHAN_NOTIFICATION_PAYLOAD_LENGTH + MAC_FCS_LENGTH;
\ 0000B2 8E82 MOV DPL,R6
\ 0000B4 8F83 MOV DPH,R7
\ 0000B6 A3 INC DPTR
\ 0000B7 E0 MOVX A,@DPTR
\ 0000B8 2403 ADD A,#0x3
\ 0000BA F9 MOV R1,A
\ 0000BB 8E82 MOV DPL,R6
\ 0000BD 8F83 MOV DPH,R7
\ 0000BF A3 INC DPTR
\ 0000C0 A3 INC DPTR
\ 0000C1 F0 MOVX @DPTR,A
182
183 // Calculate the packet duration (including ack. and IFS)
184 pPacket->duration = msupCalcPacketDuration(pPacket->length, FALSE);
\ 0000C2 ; Setup parameters for call to function msupCalcPacketDuration
\ 0000C2 7A00 MOV R2,#0x0
\ 0000C4 12.... LCALL msupCalcPacketDuration
\ 0000C7 EE MOV A,R6
\ 0000C8 2485 ADD A,#-0x7b
\ 0000CA F582 MOV DPL,A
\ 0000CC EF MOV A,R7
\ 0000CD 3400 ADDC A,#0x0
\ 0000CF F583 MOV DPH,A
\ 0000D1 E9 MOV A,R1
\ 0000D2 F0 MOVX @DPTR,A
185
186 // Initiate the transmission
187 mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);
\ 0000D3 ; Setup parameters for call to function mschAddTask
\ 0000D3 75.... MOV ?V0 + 0,#(mtxScheduleTransmission & 0xff)
\ 0000D6 75.... MOV ?V0 + 1,#((mtxScheduleTransmission >> 8) & 0xff)
\ 0000D9 75.... MOV ?V0 + 2,#((mtxScheduleTransmission >> 16) & 0xff)
\ 0000DC 78.. MOV R0,#?V0 + 0
\ 0000DE 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 0000E1 EE MOV A,R6
\ 0000E2 FC MOV R4,A
\ 0000E3 EF MOV A,R7
\ 0000E4 FD MOV R5,A
\ 0000E5 7A00 MOV R2,#0x0
\ 0000E7 A9.. MOV R1,?V0 + 3
\ 0000E9 12.... LCALL mschAddTask
\ 0000EC 7403 MOV A,#0x3
\ 0000EE 12.... LCALL ?DEALLOC_XSTACK8
188
189 return TRUE;
\ 0000F1 7901 MOV R1,#0x1
\ ??mscTransmitOrphanNotification_3:
\ 0000F3 02.... LJMP ?Subroutine0
190
191 } // mscTransmitOrphanNotification
192
193
194
195
196 /*******************************************************************************************************
197 *******************************************************************************************************
198 ************************** CHANNEL SCANNING + SUPPORT FUNCTIONS **************************
199 *******************************************************************************************************
200 *******************************************************************************************************/
201
202
203
204
205 //-------------------------------------------------------------------------------------------------------
206 // BOOL mscPanDescriptorExists(PAN_DESCRIPTOR *pPanDescriptor)
207 //
208 // DESCRIPTION:
209 // Used by a scanning device (active or passive scan) to determine whether or not the PAN descriptor
210 // from a received beacon already exists in the scan result list. The function returns TRUE if
211 // there's a match on coordinator PAN ID + address, and the logical channel.
212 //
213 // ARGUMENTS:
214 // PAN_DESCRIPTOR *pPanDescriptor
215 // A pointer to the new PAN descriptor
216 //
217 // RETURN VALUE:
218 // BOOL
219 // The PAN descriptor pointed to by pPanDescriptor already exists in the result list.
220 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
221 ROOT BOOL mscPanDescriptorExists(PAN_DESCRIPTOR *pPanDescriptor) {
\ mscPanDescriptorExists:
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 0
\ 000005 EA MOV A,R2
\ 000006 FE MOV R6,A
\ 000007 EB MOV A,R3
\ 000008 FF MOV R7,A
222 UINT8 n;
223 PAN_DESCRIPTOR *pExistingPanDesc;
224 MAC_SCAN_RESULT *pScanResult = mscInfo.pScanResult;
\ 000009 90.... MOV DPTR,#(mscInfo + 6)
\ 00000C E0 MOVX A,@DPTR
\ 00000D F5.. MOV ?V0 + 2,A
\ 00000F A3 INC DPTR
\ 000010 E0 MOVX A,@DPTR
\ 000011 F5.. MOV ?V0 + 3,A
225
226 // Search for duplicates
227 for (n = 0; n < pScanResult->resultListSize; n++) {
\ 000013 75..00 MOV ?V0 + 0,#0x0
\ 000016 8017 SJMP ??mscPanDescriptorExists_0
228 pExistingPanDesc = &pScanResult->list.pPANDescriptorList[n];
229 if ((pPanDescriptor->coordAddrMode == pExistingPanDesc->coordAddrMode ) &&
230 (pPanDescriptor->coordPanId == pExistingPanDesc->coordPanId ) &&
231 (pPanDescriptor->logicalChannel == pExistingPanDesc->logicalChannel)) {
232
233 if (pPanDescriptor->coordAddrMode == AM_EXTENDED_64) {
234 if (msupCompareExtendedAddress(&pPanDescriptor->coordAddress, &pExistingPanDesc->coordAddress)) return TRUE;
235 } else {
236 if (pPanDescriptor->coordAddress.Short == pExistingPanDesc->coordAddress.Short) return TRUE;
\ ??mscPanDescriptorExists_1:
\ 000018 E0 MOVX A,@DPTR
\ 000019 F8 MOV R0,A
\ 00001A A3 INC DPTR
\ 00001B E0 MOVX A,@DPTR
\ 00001C F9 MOV R1,A
\ 00001D 8C82 MOV DPL,R4
\ 00001F 8D83 MOV DPH,R5
\ 000021 E0 MOVX A,@DPTR
\ 000022 68 XRL A,R0
\ 000023 7003 JNZ ??mscPanDescriptorExists_2
\ 000025 A3 INC DPTR
\ 000026 E0 MOVX A,@DPTR
\ 000027 69 XRL A,R1
\ ??mscPanDescriptorExists_2:
\ 000028 7003 JNZ $+5
\ 00002A 02.... LJMP ??mscPanDescriptorExists_3
237 }
\ ??mscPanDescriptorExists_4:
\ 00002D 05.. INC ?V0 + 0
\ ??mscPanDescriptorExists_0:
\ 00002F 85..82 MOV DPL,?V0 + 2
\ 000032 85..83 MOV DPH,?V0 + 3
\ 000035 A3 INC DPTR
\ 000036 A3 INC DPTR
\ 000037 A3 INC DPTR
\ 000038 A3 INC DPTR
\ 000039 A3 INC DPTR
\ 00003A E0 MOVX A,@DPTR
\ 00003B FA MOV R2,A
\ 00003C E5.. MOV A,?V0 + 0
\ 00003E C3 CLR C
\ 00003F 9A SUBB A,R2
\ 000040 4003 JC $+5
\ 000042 02.... LJMP ??mscPanDescriptorExists_5
\ 000045 E5.. MOV A,?V0 + 0
\ 000047 75F017 MOV B,#0x17
\ 00004A A4 MUL AB
\ 00004B F8 MOV R0,A
\ 00004C A9F0 MOV R1,B
\ 00004E E5.. MOV A,?V0 + 2
\ 000050 28 ADD A,R0
\ 000051 F8 MOV R0,A
\ 000052 E5.. MOV A,?V0 + 3
\ 000054 39 ADDC A,R1
\ 000055 F9 MOV R1,A
\ 000056 7406 MOV A,#0x6
\ 000058 28 ADD A,R0
\ 000059 F8 MOV R0,A
\ 00005A E4 CLR A
\ 00005B 39 ADDC A,R1
\ 00005C F9 MOV R1,A
\ 00005D 8E82 MOV DPL,R6
\ 00005F 8F83 MOV DPH,R7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -