📄 mac_indirect_polling.lst
字号:
\ 000032 7902 MOV R1,#0x2
\ 000034 8009 SJMP ??mipTransmitAssocDataRequest_3
294 } else {
295 return mipTransmitDataRequest(AM_EXTENDED_64, mpib.macPANId, (ADDRESS *) mpib.pMacCoordExtendedAddress, securityEnable);
\ ??mipTransmitAssocDataRequest_2:
\ 000036 ; Setup parameters for call to function mipTransmitDataRequest
\ 000036 12.... LCALL ?PUSH_XSTACK_I_ONE
\ 000039 7C.. MOV R4,#((mpib + 14) & 0xff)
\ 00003B 7D.. MOV R5,#(((mpib + 14) >> 8) & 0xff)
\ 00003D 7903 MOV R1,#0x3
\ ??mipTransmitAssocDataRequest_3:
\ 00003F 12.... LCALL mipTransmitDataRequest
\ 000042 7401 MOV A,#0x1
\ 000044 12.... LCALL ?DEALLOC_XSTACK8
\ ??mipTransmitAssocDataRequest_1:
\ 000047 02.... LJMP ?Subroutine0
296 }
297
298 } // mipTransmitAssocDataRequest
299
300
301
302
303 //-------------------------------------------------------------------------------------------------------
304 // void mipPollAssociateResponseTask(MAC_TASK_INFO *pTask)
305 //
306 // DESCRIPTION:
307 // This task makes sure that a data request is transmitted in the association procedure. If the
308 // transmission couldn't be initiated, this task will be rescheduled.
309 //
310 // TASK DATA:
311 // 0
312 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
313 void mipPollAssociateResponseTask(MAC_TASK_INFO *pTask) NEAR {
\ mipPollAssociateResponseTask:
\ 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
314
315 // We should not wait for the association response to be indicated in the beacon pending list, because there's no
316 // guarantee that it will ever appear there (the coordinator could for instance be out of resources when the
317 // association request is received)! If the association response is not polled, the MAC state machine (macInfo.state)
318 // will lock up (and probably the higher layer too).
319 if (macInfo.state == MAC_STATE_ASSOC_REQUEST_SENT) {
\ 000009 90.... MOV DPTR,#macInfo
\ 00000C E0 MOVX A,@DPTR
\ 00000D 6481 XRL A,#0x81
\ 00000F 7013 JNZ ??mipPollAssociateResponseTask_0
320 if (mipTransmitAssocDataRequest() == RESOURCE_SHORTAGE) {
\ 000011 ; Setup parameters for call to function mipTransmitAssocDataRequest
\ 000011 12.... LCALL mipTransmitAssocDataRequest & 0xFFFF
\ 000014 E9 MOV A,R1
\ 000015 6401 XRL A,#0x1
\ 000017 700B JNZ ??mipPollAssociateResponseTask_0
321
322 // Reschedule this task if there was a lack of resources (TX packet or task)
323 mschRescheduleTask(pTask, 0);
\ 000019 ; Setup parameters for call to function mschRescheduleTask
\ 000019 7900 MOV R1,#0x0
\ 00001B EE MOV A,R6
\ 00001C FA MOV R2,A
\ 00001D EF MOV A,R7
\ 00001E FB MOV R3,A
\ 00001F 12.... LCALL mschRescheduleTask & 0xFFFF
324 return;
\ 000022 8013 SJMP ??mipPollAssociateResponseTask_1
325 }
326 }
327
328 // Done! Remove this task
329 mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_IN_PROGRESS_BM);
\ ??mipPollAssociateResponseTask_0:
\ 000024 ; Setup parameters for call to function mschRemoveTask
\ 000024 7A02 MOV R2,#0x2
\ 000026 8E82 MOV DPL,R6
\ 000028 8F83 MOV DPH,R7
\ 00002A A3 INC DPTR
\ 00002B A3 INC DPTR
\ 00002C A3 INC DPTR
\ 00002D A3 INC DPTR
\ 00002E A3 INC DPTR
\ 00002F A3 INC DPTR
\ 000030 A3 INC DPTR
\ 000031 A3 INC DPTR
\ 000032 E0 MOVX A,@DPTR
\ 000033 F9 MOV R1,A
\ 000034 12.... LCALL mschRemoveTask & 0xFFFF
330
331 } // mipPollAssociateResponse
\ ??mipPollAssociateResponseTask_1:
\ 000037 02.... LJMP ?Subroutine1
332
333
334
335
336 //-------------------------------------------------------------------------------------------------------
337 // void mipPollAssociateResponse(void)
338 //
339 // DESCRIPTION:
340 // This timeout function creates the task responsible for polling the association response.
341 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
342 void mipPollAssociateResponse(void) NEAR {
\ mipPollAssociateResponse:
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 0
343 if (!mschAddTask(mschReserveTask(), MAC_TASK_PRI_LOW, mipPollAssociateResponseTask, 0)) {
\ 000005 ; Setup parameters for call to function mschAddTask
\ 000005 75.... MOV ?V0 + 0,#(mipPollAssociateResponseTask & 0xff)
\ 000008 75.... MOV ?V0 + 1,#((mipPollAssociateResponseTask >> 8) & 0xff)
\ 00000B 75.... MOV ?V0 + 2,#((mipPollAssociateResponseTask >> 16) & 0xff)
\ 00000E 78.. MOV R0,#?V0 + 0
\ 000010 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 000013 7A00 MOV R2,#0x0
\ 000015 EA MOV A,R2
\ 000016 C0E0 PUSH A
\ 000018 ; Setup parameters for call to function mschReserveTask
\ 000018 12.... LCALL mschReserveTask & 0xFFFF
\ 00001B E4 CLR A
\ 00001C FC MOV R4,A
\ 00001D FD MOV R5,A
\ 00001E D0E0 POP A
\ 000020 FA MOV R2,A
\ 000021 12.... LCALL mschAddTask & 0xFFFF
\ 000024 7403 MOV A,#0x3
\ 000026 12.... LCALL ?DEALLOC_XSTACK8
\ 000029 E9 MOV A,R1
\ 00002A 7014 JNZ ??mipPollAssociateResponse_0
344 mtimSetCallback(mipPollAssociateResponse, MIP_RETRY_ASSOCIATION_RESPONSE_POLLING_TIMEOUT);
\ 00002C ; Setup parameters for call to function mtimSetCallback
\ 00002C 90.... MOV DPTR,#__Constant_a
\ 00002F 12.... LCALL ?PUSH_XSTACK8_X_FOUR
\ 000032 79.. MOV R1,#(mipPollAssociateResponse & 0xff)
\ 000034 7A.. MOV R2,#((mipPollAssociateResponse >> 8) & 0xff)
\ 000036 7B.. MOV R3,#((mipPollAssociateResponse >> 16) & 0xff)
\ 000038 12.... LCALL mtimSetCallback & 0xFFFF
\ 00003B 7404 MOV A,#0x4
\ 00003D 12.... LCALL ?DEALLOC_XSTACK8
345 }
346 } // mipPollAssociateResponse
\ ??mipPollAssociateResponse_0:
\ 000040 02.... LJMP ?Subroutine2
\ In segment XDATA_I, align 1, keep-with-next
\ __Constant_a:
\ 000000 DS 4
\ 000004 REQUIRE `?<Initializer for __Constant_a>`
\ 000004 REQUIRE __INIT_XDATA_I
\ In segment XDATA_ID, align 1, keep-with-next
\ `?<Initializer for __Constant_a>`:
\ 000000 0A000000 DD 10
\ In segment SFR_AN, at 0xa8
\ union <unnamed> volatile __sfr _A_IEN0
\ _A_IEN0:
\ 000000 DS 1
347
Maximum stack usage in bytes:
Function ISTACK PSTACK XSTACK
-------- ------ ------ ------
mipCancelDataRequestTimeout 0 0 9
-> mtimCancelCallback 0 0 18
-> mrxDecrOnCounter 0 0 18
-> macSetState 0 0 18
mipDataRequestTimeout 1 0 15
-> mschReserveTask 2 0 28
-> mschAddTask 0 0 28
-> mtimSetCallback 0 0 30
mipDataRequestTimeoutTask 0 0 9
-> mrxDecrOnCounter 0 0 18
-> macSetState 0 0 18
-> mschRemoveTask 0 0 18
-> mlmePollConfirm 0 0 18
-> mlmeAssociateConfirm 0 0 18
mipPollAssociateResponse 1 0 15
-> mschReserveTask 2 0 28
-> mschAddTask 0 0 28
-> mtimSetCallback 0 0 30
mipPollAssociateResponseTask 0 0 9
-> mipTransmitAssocDataRequest
0 0 18
-> mschRescheduleTask 0 0 18
-> mschRemoveTask 0 0 18
mipTransmitAssocDataRequest 0 0 18
-> macSetState 0 0 16
-> mipTransmitDataRequest 0 0 18
-> mipTransmitDataRequest 0 0 18
mipTransmitAutoDataRequest 0 0 9
-> macSetState 0 0 16
-> mipTransmitDataRequest 0 0 18
-> mipTransmitDataRequest 0 0 18
-> macSetState 0 0 16
mipTransmitDataRequest 1 0 32
-> mtxpReservePacket 0 0 30
-> mschReserveTask 0 0 30
-> mtxpReleasePacket 0 0 30
-> msupPrepareHeader 0 0 46
-> msupPrepareHeader 0 0 46
-> msupCalcPacketDuration 0 0 30
-> mschAddTask 0 0 36
Segment part sizes:
Function/Label Bytes
-------------- -----
mipTransmitAutoDataRequest 77
?Subroutine0 5
mipTransmitDataRequest 313
mipDataRequestTimeoutTask 76
?Subroutine1 5
mipDataRequestTimeout 64
?Subroutine2 5
mipCancelDataRequestTimeout 45
mipTransmitAssocDataRequest 74
mipPollAssociateResponseTask 58
mipPollAssociateResponse 67
__Constant_a 4
?<Initializer for __Constant_a>
4
_A_IEN0 1
789 bytes in segment NEAR_CODE
1 byte in segment SFR_AN
4 bytes in segment XDATA_I
4 bytes in segment XDATA_ID
789 bytes of CODE memory (+ 4 bytes shared)
0 bytes of DATA memory (+ 1 byte shared)
0 bytes of XDATA memory (+ 4 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -