📄 mac_scan.lst
字号:
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 0
\ 000005 8A.. MOV ?V0 + 0,R2
\ 000007 8B.. MOV ?V0 + 1,R3
306 INT8 maxRssi;
307 MAC_STATE_TYPE macState = MAC_STATE_DEFAULT;
\ 000009 7900 MOV R1,#0x0
308
309 switch (pTask->state) {
\ 00000B EA MOV A,R2
\ 00000C 2405 ADD A,#0x5
\ 00000E FE MOV R6,A
\ 00000F EB MOV A,R3
\ 000010 3400 ADDC A,#0x0
\ 000012 FF MOV R7,A
\ 000013 8E82 MOV DPL,R6
\ 000015 8F83 MOV DPH,R7
\ 000017 E0 MOVX A,@DPTR
\ 000018 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for mscScanProcedure>_0`:
\ 00001B 00 DB 0
\ 00001C 08 DB 8
\ 00001D .... DW ??mscScanProcedure_0
\ 00001F .... DW ??mscScanProcedure_1
\ 000021 .... DW ??mscScanProcedure_2
\ 000023 .... DW ??mscScanProcedure_3
\ 000025 .... DW ??mscScanProcedure_4
\ 000027 .... DW ??mscScanProcedure_5
\ 000029 .... DW ??mscScanProcedure_6
\ 00002B .... DW ??mscScanProcedure_7
\ 00002D .... DW ??mscScanProcedure_8
\ 00002F .... DW ??mscScanProcedure_9
310 case MSC_STATE_INITIALIZE_SCAN:
311
312 // If the state cannot be switched now, then reschedule this task (move it to the back of the
313 // queue) to avoid potential deadlock...
314 switch (mscInfo.scanType) {
\ ??mscScanProcedure_1:
\ 000031 90.... MOV DPTR,#mscInfo
\ 000034 E0 MOVX A,@DPTR
\ 000035 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for mscScanProcedure>_1`:
\ 000038 00 DB 0
\ 000039 03 DB 3
\ 00003A .... DW ??mscScanProcedure_10
\ 00003C .... DW ??mscScanProcedure_11
\ 00003E .... DW ??mscScanProcedure_12
\ 000040 .... DW ??mscScanProcedure_12
\ 000042 .... DW ??mscScanProcedure_13
315 case ENERGY_SCAN: macState = MAC_STATE_ENERGY_SCAN; break;
\ ??mscScanProcedure_11:
\ 000044 7940 MOV R1,#0x40
\ 000046 8006 SJMP ??mscScanProcedure_10
316 case PASSIVE_SCAN:
317 case ACTIVE_SCAN: macState = MAC_STATE_ACTIVE_OR_PASSIVE_SCAN; break;
\ ??mscScanProcedure_12:
\ 000048 7941 MOV R1,#0x41
\ 00004A 8002 SJMP ??mscScanProcedure_10
318 case ORPHAN_SCAN: macState = MAC_STATE_ORPHAN_SCAN; break;
\ ??mscScanProcedure_13:
\ 00004C 7943 MOV R1,#0x43
319 }
320 if (!macSetState(macState)) {
\ ??mscScanProcedure_10:
\ 00004E ; Setup parameters for call to function macSetState
\ 00004E 12.... LCALL macSetState & 0xFFFF
\ 000051 E9 MOV A,R1
\ 000052 700C JNZ ??mscScanProcedure_14
321 mschRescheduleTask(pTask, MSC_STATE_INITIALIZE_SCAN);
\ 000054 ; Setup parameters for call to function mschRescheduleTask
\ 000054 7900 MOV R1,#0x0
\ ??mscScanProcedure_15:
\ 000056 AA.. MOV R2,?V0 + 0
\ 000058 AB.. MOV R3,?V0 + 1
\ 00005A 12.... LCALL mschRescheduleTask & 0xFFFF
322 break;
\ 00005D 02.... LJMP ??mscScanProcedure_0 & 0xFFFF
323 }
324
325 // Configure CC2430 for scanning
326 if (mscInfo.scanType != ORPHAN_SCAN) {
\ ??mscScanProcedure_14:
\ 000060 90.... MOV DPTR,#mscInfo
\ 000063 E0 MOVX A,@DPTR
\ 000064 6403 XRL A,#0x3
\ 000066 600C JZ ??mscScanProcedure_16
327 DISABLE_GLOBAL_INT(); // TBD: Can this line be removed?
\ 000068 C2AF CLR 0xa8.7
328 WRITE_RFR16(PANID, 0xFFFF);
\ 00006A 74FF MOV A,#-0x1
\ 00006C 90DF4B MOV DPTR,#-0x20b5
\ 00006F F0 MOVX @DPTR,A
\ 000070 90DF4C MOV DPTR,#-0x20b4
\ 000073 F0 MOVX @DPTR,A
329 }
330
331 // Increment the RX on counter, so that other events don't turn it off
332 mrxIncrOnCounter();
\ ??mscScanProcedure_16:
\ 000074 ; Setup parameters for call to function mrxIncrOnCounter
\ 000074 90.... MOV DPTR,#(mrxIncrOnCounter & 0xffff)
\ 000077 74.. MOV A,#((mrxIncrOnCounter >> 16) & 0xff)
\ 000079 12.... LCALL ?BCALL ; Banked call to: DPTR()
333
334 pTask->state = MSC_STATE_UNREQUEST_INDIRECT;
\ 00007C 7401 MOV A,#0x1
\ ??mscScanProcedure_17:
\ 00007E 8E82 MOV DPL,R6
\ 000080 8F83 MOV DPH,R7
\ 000082 F0 MOVX @DPTR,A
\ 000083 02.... LJMP ??mscScanProcedure_0 & 0xFFFF
335 break;
336
337 case MSC_STATE_UNREQUEST_INDIRECT:
338
339 // At this point we can be sure that RX has been shut down, that the RX engine is not running, including
340 // the high-priority processing tasks. There are no direct packet transmissions in progress, because
341 // that would have blocked this task. The beacon transmission and reception tasks, and the force RX off
342 // function are blocked by the MAC state.
343
344 #if MAC_OPT_FFD
345 // Unrequest all indirect packets to avoid that the miqTransmitRequestedPackets() function eats up the
346 // whole task pool (requested packets are usually transmitted in between).
347 miqUnrequestAll();
\ ??mscScanProcedure_2:
\ 000086 ; Setup parameters for call to function miqUnrequestAll
\ 000086 12.... LCALL miqUnrequestAll & 0xFFFF
348 #endif
349
350 // Remove invalid channels from the mask, and go to the first channel to be scanned
351 mscInfo.pScanResult->unscannedChannels = mscInfo.scanChannels;
\ 000089 90.... MOV DPTR,#(mscInfo + 6)
\ 00008C E0 MOVX A,@DPTR
\ 00008D F5.. MOV ?V0 + 4,A
\ 00008F A3 INC DPTR
\ 000090 E0 MOVX A,@DPTR
\ 000091 F5.. MOV ?V0 + 5,A
\ 000093 90.... MOV DPTR,#(mscInfo + 1)
\ 000096 78.. MOV R0,#?V0 + 0
\ 000098 12.... LCALL ?L_MOV_X
\ 00009B 85..82 MOV DPL,?V0 + 4
\ 00009E 85..83 MOV DPH,?V0 + 5
\ 0000A1 A3 INC DPTR
\ 0000A2 E5.. MOV A,?V0 + 0
\ 0000A4 F0 MOVX @DPTR,A
\ 0000A5 A3 INC DPTR
\ 0000A6 E5.. MOV A,?V0 + 1
\ 0000A8 F0 MOVX @DPTR,A
\ 0000A9 A3 INC DPTR
\ 0000AA E5.. MOV A,?V0 + 2
\ 0000AC F0 MOVX @DPTR,A
\ 0000AD A3 INC DPTR
\ 0000AE E5.. MOV A,?V0 + 3
\ 0000B0 F0 MOVX @DPTR,A
352 mscInfo.scanChannels &= MSC_VALID_CHANNELS;
\ 0000B1 90.... MOV DPTR,#__Constant_7fff800
\ 0000B4 78.. MOV R0,#?V0 + 0
\ 0000B6 12.... LCALL ?L_MOV_X
\ 0000B9 90.... MOV DPTR,#(mscInfo + 1)
\ 0000BC 78.. MOV R0,#?V0 + 0
\ 0000BE 12.... LCALL ?L_AND_TO_X
353 mscInfo.pScanResult->resultListSize = 0;
\ 0000C1 E4 CLR A
\ 0000C2 85..82 MOV DPL,?V0 + 4
\ 0000C5 85..83 MOV DPH,?V0 + 5
\ 0000C8 A3 INC DPTR
\ 0000C9 A3 INC DPTR
\ 0000CA A3 INC DPTR
\ 0000CB A3 INC DPTR
\ 0000CC A3 INC DPTR
\ 0000CD F0 MOVX @DPTR,A
354 mscInfo.currentChannel = 0;
\ 0000CE 90.... MOV DPTR,#(mscInfo + 8)
\ 0000D1 F0 MOVX @DPTR,A
355 mscInfo.oldPhyCurrentChannel = ppib.phyCurrentChannel;
\ 0000D2 90.... MOV DPTR,#ppib
\ 0000D5 E0 MOVX A,@DPTR
\ 0000D6 90.... MOV DPTR,#(mscInfo + 11)
\ 0000D9 F0 MOVX @DPTR,A
356 if (mscSetNextChannel()) {
\ 0000DA ; Setup parameters for call to function mscSetNextChannel
\ 0000DA 12.... LCALL mscSetNextChannel & 0xFFFF
\ 0000DD E9 MOV A,R1
\ 0000DE 7003 JNZ $+5
\ 0000E0 02.... LJMP ??mscScanProcedure_18 & 0xFFFF
357 pTask->state = MSC_STATE_SET_CHANNEL;
\ ??mscScanProcedure_19:
\ 0000E3 7402 MOV A,#0x2
\ 0000E5 8097 SJMP ??mscScanProcedure_17
358 } else {
359 pTask->state = MSC_STATE_FINISH;
360 }
361 break;
362
363 case MSC_STATE_SET_CHANNEL:
364
365 // Set the timer which will tell us when to move on to the next channel
366 mscInfo.channelComplete = FALSE;
\ ??mscScanProcedure_3:
\ 0000E7 E4 CLR A
\ 0000E8 90.... MOV DPTR,#(mscInfo + 9)
\ 0000EB F0 MOVX @DPTR,A
367
368 // Set the new channel and turn on RX
369 msupSetChannel(mscInfo.currentChannel, TRUE);
\ 0000EC ; Setup parameters for call to function msupSetChannel
\ 0000EC 7A01 MOV R2,#0x1
\ 0000EE 90.... MOV DPTR,#(mscInfo + 8)
\ 0000F1 E0 MOVX A,@DPTR
\ 0000F2 F9 MOV R1,A
\ 0000F3 12.... LCALL msupSetChannel & 0xFFFF
370
371 // Set the channel timeout
372 switch (mscInfo.scanType) {
\ 0000F6 90.... MOV DPTR,#mscInfo
\ 0000F9 E0 MOVX A,@DPTR
\ 0000FA 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for mscScanProcedure>_2`:
\ 0000FD 00 DB 0
\ 0000FE 02 DB 2
\ 0000FF .... DW ??mscScanProcedure_20
\ 000101 .... DW ??mscScanProcedure_21
\ 000103 .... DW ??mscScanProcedure_20
\ 000105 .... DW ??mscScanProcedure_21
373 case ENERGY_SCAN:
374 case PASSIVE_SCAN:
375 mtimSetCallback(mscChannelTimeout, ((UINT32) aBaseSuperframeDuration / (UINT32) aUnitBackoffPeriod) * (((UINT32) 1 << mscInfo.scanDuration) + 1));
\ ??mscScanProcedure_21:
\ 000107 ; Setup parameters for call to function mtimSetCallback
\ 000107 75..01 MOV ?V0 + 4,#0x1
\ 00010A 75..00 MOV ?V0 + 5,#0x0
\ 00010D 75..00 MOV ?V0 + 6,#0x0
\ 000110 75..00 MOV ?V0 + 7,#0x0
\ 000113 90.... MOV DPTR,#(mscInfo + 5)
\ 000116 E0 MOVX A,@DPTR
\ 000117 78.. MOV R0,#?V0 + 4
\ 000119 12.... LCALL ?L_SHL
\ 00011C 90.... MOV DPTR,#__Constant_1
\ 00011F 78.. MOV R0,#?V0 + 4
\ 000121 12.... LCALL ?L_ADD_X
\ 000124 90.... MOV DPTR,#__Constant_3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -