📄 mac_indirect_polling.lst
字号:
\ 000017 ; Setup parameters for call to function macSetState
\ 000017 7900 MOV R1,#0x0
\ 000019 12.... LCALL macSetState & 0xFFFF
200
201 // Remove the task
202 mschRemoveTask(pTask->priority, 0);
\ 00001C ; Setup parameters for call to function mschRemoveTask
\ 00001C 7A00 MOV R2,#0x0
\ 00001E 8E82 MOV DPL,R6
\ 000020 8F83 MOV DPH,R7
\ 000022 A3 INC DPTR
\ 000023 A3 INC DPTR
\ 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 E0 MOVX A,@DPTR
\ 00002B F9 MOV R1,A
\ 00002C 12.... LCALL mschRemoveTask & 0xFFFF
203
204 // Notify the higher layer...
205 switch (oldState) {
\ 00002F E5.. MOV A,?V0 + 0
\ 000031 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for mipDataRequestTimeoutTask>_0`:
\ 000034 21 DB 33
\ 000035 01 DB 1
\ 000036 .... DW ??mipDataRequestTimeoutTask_0
\ 000038 .... DW ??mipDataRequestTimeoutTask_1
\ 00003A .... DW ??mipDataRequestTimeoutTask_2
206 case MAC_STATE_MANUAL_DATA_REQUEST_SENT: mlmePollConfirm(NO_DATA); break;
\ ??mipDataRequestTimeoutTask_1:
\ 00003C ; Setup parameters for call to function mlmePollConfirm
\ 00003C 79EB MOV R1,#-0x15
\ 00003E 12.... LCALL mlmePollConfirm & 0xFFFF
\ 000041 8009 SJMP ??mipDataRequestTimeoutTask_0
207 case MAC_STATE_ASSOC_DATA_REQUEST_SENT: mlmeAssociateConfirm(0xFFFF, NO_DATA); break;
\ ??mipDataRequestTimeoutTask_2:
\ 000043 ; Setup parameters for call to function mlmeAssociateConfirm
\ 000043 79EB MOV R1,#-0x15
\ 000045 7AFF MOV R2,#-0x1
\ 000047 7BFF MOV R3,#-0x1
\ 000049 12.... LCALL mlmeAssociateConfirm & 0xFFFF
208 default: break;
209 }
210
211 } // mipDataRequestTimeoutTask
\ ??mipDataRequestTimeoutTask_0:
\ 00004C REQUIRE ?Subroutine1
\ 00004C ; // Fall through to label ?Subroutine1
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 7F01 MOV R7,#0x1
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
212
213
214
215
216 //-------------------------------------------------------------------------------------------------------
217 // void mipDataRequestTimeout(void)
218 //
219 // DESCRIPTION:
220 // This timeout will occur when no response has been received after a data request.
221 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
222 void mipDataRequestTimeout(void) NEAR {
\ mipDataRequestTimeout:
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 0
223 if (!mschAddTask(mschReserveTask(), MAC_TASK_PRI_HIGH, mipDataRequestTimeoutTask, 0)) {
\ 000005 ; Setup parameters for call to function mschAddTask
\ 000005 75.... MOV ?V0 + 0,#(mipDataRequestTimeoutTask & 0xff)
\ 000008 75.... MOV ?V0 + 1,#((mipDataRequestTimeoutTask >> 8) & 0xff)
\ 00000B 75.... MOV ?V0 + 2,#((mipDataRequestTimeoutTask >> 16) & 0xff)
\ 00000E 78.. MOV R0,#?V0 + 0
\ 000010 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 000013 7A02 MOV R2,#0x2
\ 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 ??mipDataRequestTimeout_0
224 mtimSetCallback(mipDataRequestTimeout, 10);
\ 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,#(mipDataRequestTimeout & 0xff)
\ 000034 7A.. MOV R2,#((mipDataRequestTimeout >> 8) & 0xff)
\ 000036 7B.. MOV R3,#((mipDataRequestTimeout >> 16) & 0xff)
\ 000038 12.... LCALL mtimSetCallback & 0xFFFF
\ 00003B 7404 MOV A,#0x4
\ 00003D 12.... LCALL ?DEALLOC_XSTACK8
225 }
226 } // mipDataRequestTimeout
\ ??mipDataRequestTimeout_0:
\ 000040 REQUIRE ?Subroutine2
\ 000040 ; // Fall through to label ?Subroutine2
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine2:
\ 000000 7F03 MOV R7,#0x3
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
227
228
229
230
231 //-------------------------------------------------------------------------------------------------------
232 // MAC_STATE_TYPE mipCancelDataRequestTimeout(void)
233 //
234 // DESCRIPTION:
235 // Cancels the data request timeout. This function should be used when a valid or invalid "indirect
236 // packet" has been received. The MAC state is set back to the default state.
237 //
238 // RETURN VALUE:
239 // MAC_STATE_TYPE
240 // The MAC state before resetting it to MAC_STATE_DEFAULT
241 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
242 MAC_STATE_TYPE mipCancelDataRequestTimeout(void) NEAR {
\ mipCancelDataRequestTimeout:
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
243 MAC_STATE_TYPE macState = MAC_STATE_DEFAULT;
\ 000005 7E00 MOV R6,#0x0
244
245 if (mtimCancelCallback(mipDataRequestTimeout)) {
\ 000007 ; Setup parameters for call to function mtimCancelCallback
\ 000007 79.. MOV R1,#(mipDataRequestTimeout & 0xff)
\ 000009 7A.. MOV R2,#((mipDataRequestTimeout >> 8) & 0xff)
\ 00000B 7B.. MOV R3,#((mipDataRequestTimeout >> 16) & 0xff)
\ 00000D 12.... LCALL mtimCancelCallback & 0xFFFF
\ 000010 E9 MOV A,R1
\ 000011 6016 JZ ??mipCancelDataRequestTimeout_0
246 mrxDecrOnCounter();
\ 000013 ; Setup parameters for call to function mrxDecrOnCounter
\ 000013 90.... MOV DPTR,#(mrxDecrOnCounter & 0xffff)
\ 000016 74.. MOV A,#((mrxDecrOnCounter >> 16) & 0xff)
\ 000018 12.... LCALL ?BCALL ; Banked call to: DPTR()
247 DISABLE_GLOBAL_INT();
\ 00001B C2AF CLR 0xa8.7
248 macState = macInfo.state;
\ 00001D 90.... MOV DPTR,#macInfo
\ 000020 E0 MOVX A,@DPTR
\ 000021 FE MOV R6,A
249 macSetState(MAC_STATE_DEFAULT);
\ 000022 ; Setup parameters for call to function macSetState
\ 000022 7900 MOV R1,#0x0
\ 000024 12.... LCALL macSetState & 0xFFFF
250 ENABLE_GLOBAL_INT();
\ 000027 D2AF SETB 0xa8.7
251 }
252 return macState;
\ ??mipCancelDataRequestTimeout_0:
\ 000029 EE MOV A,R6
\ 00002A F9 MOV R1,A
\ 00002B 80.. SJMP ?Subroutine1
253 } // mipCancelDataRequestTimeout
254
255
256
257
258 /*******************************************************************************************************
259 *******************************************************************************************************
260 ************************** ASSOCIATION RESPONSE POLLING **************************
261 *******************************************************************************************************
262 *******************************************************************************************************/
263
264
265
266
267 //-------------------------------------------------------------------------------------------------------
268 // MAC_ENUM mipTransmitAssocDataRequest(void)
269 //
270 // DESCRIPTION:
271 // Tranmits an the data request packet that follows a successful association request packet. This
272 // packet is transmitted when the data is indicated in the beacon pending list, or the response
273 // time has passed.
274 //
275 // RETURN VALUE:
276 // BOOL
277 // The association request was transmitted
278 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
279 ROOT MAC_ENUM mipTransmitAssocDataRequest(void) {
\ mipTransmitAssocDataRequest:
\ 000000 74F8 MOV A,#-0x8
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 8
\ 000005 ; Auto size: 0
280 BOOL securityEnable;
281
282 #if MAC_OPT_SECURITY
283 securityEnable = GET_MF(MF_SECURE_ASSOC);
284 #else
285 securityEnable = FALSE;
286 #endif
287
288 // Set automatic polling mode
289 if (!macSetState(MAC_STATE_TX_ASSOC_DATA_REQUEST)) return SUCCESS;
\ 000005 ; Setup parameters for call to function macSetState
\ 000005 7912 MOV R1,#0x12
\ 000007 12.... LCALL macSetState
\ 00000A E9 MOV A,R1
\ 00000B 7004 JNZ ??mipTransmitAssocDataRequest_0
\ 00000D 7900 MOV R1,#0x0
\ 00000F 8036 SJMP ??mipTransmitAssocDataRequest_1
290
291 // Transmit the data request
292 if (mpib.macCoordShortAddress < 0xFFFE) {
\ ??mipTransmitAssocDataRequest_0:
\ 000011 90.... MOV DPTR,#(mpib + 28)
\ 000014 E0 MOVX A,@DPTR
\ 000015 FA MOV R2,A
\ 000016 A3 INC DPTR
\ 000017 E0 MOVX A,@DPTR
\ 000018 FB MOV R3,A
\ 000019 90.... MOV DPTR,#(mpib + 22)
\ 00001C C3 CLR C
\ 00001D E0 MOVX A,@DPTR
\ 00001E 94FE SUBB A,#-0x2
\ 000020 A3 INC DPTR
\ 000021 E0 MOVX A,@DPTR
\ 000022 94FF SUBB A,#-0x1
\ 000024 75..00 MOV ?V0 + 0,#0x0
\ 000027 78.. MOV R0,#?V0 + 0
\ 000029 500B JNC ??mipTransmitAssocDataRequest_2
293 return mipTransmitDataRequest(AM_SHORT_16, mpib.macPANId, (ADDRESS *) &mpib.macCoordShortAddress, securityEnable);
\ 00002B ; Setup parameters for call to function mipTransmitDataRequest
\ 00002B 12.... LCALL ?PUSH_XSTACK_I_ONE
\ 00002E 7C.. MOV R4,#((mpib + 22) & 0xff)
\ 000030 7D.. MOV R5,#(((mpib + 22) >> 8) & 0xff)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -