📄 mac.s51
字号:
LCALL mtxpReleasePacket
// 256 mcpsDataConfirm(FRAME_TOO_LONG, msduHandle);
; Setup parameters for call to function mcpsDataConfirm
MOV R2,?V0 + 6
MOV R1,#-0x1b
SJMP ??mcpsDataRequest_3
// 257 return;
// 258 }
// 259
// 260 // Calculate total frame length
// 261 pPacket->length = (BYTE)(pPacket->headerLength + temp + MAC_FCS_LENGTH);
??mcpsDataRequest_5:
MOV A,?V0 + 2
ADD A,#0x2
MOV R6,A
MOV A,?V0 + 3
ADDC A,#0x0
MOV R7,A
MOV DPL,?V0 + 2
MOV DPH,?V0 + 3
INC DPTR
MOVX A,@DPTR
ADD A,?V0 + 7
ADD A,#0x2
MOV DPL,R6
MOV DPH,R7
MOVX @DPTR,A
// 262
// 263 // Copy data into packet buffer
// 264 memcpy(pPayload, pMsdu, msduLength);
; Setup parameters for call to function memcpy
MOV ?V0 + 0,?V0 + 7
MOV ?V0 + 1,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 20)
MOV A,#0x19
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV A,?V0 + 2
ADD A,#0x1a
MOV R2,A
MOV A,?V0 + 3
ADDC A,#0x0
MOV R3,A
MOV DPTR,#(memcpy & 0xffff)
MOV A,#((memcpy >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
// 265
// 266 // Calculate the packet duration (including ack. and IFS)
// 267 pPacket->duration = msupCalcPacketDuration(pPacket->length, (BOOL)(pPacket->txOptions & TX_OPT_ACK_REQ));
; Setup parameters for call to function msupCalcPacketDuration
MOV A,?V0 + 2
ADD A,#-0x7f
MOV DPL,A
MOV A,?V0 + 3
ADDC A,#0x0
MOV DPH,A
MOVX A,@DPTR
MOV C,0xE0 /* A */.0
CLR A
MOV 0xE0 /* A */.0,C
MOV R2,A
MOV DPL,R6
MOV DPH,R7
MOVX A,@DPTR
MOV R1,A
LCALL msupCalcPacketDuration
MOV A,?V0 + 2
ADD A,#-0x7b
MOV DPL,A
MOV A,?V0 + 3
ADDC A,#0x0
MOV DPH,A
MOV A,R1
MOVX @DPTR,A
// 268
// 269 do {
// 270 taskNumber = mschReserveTask();
??mcpsDataRequest_6:
; Setup parameters for call to function mschReserveTask
LCALL mschReserveTask
// 271 } while (taskNumber == NO_TASK);
MOV A,#-0x1
XRL A,R1
JZ ??mcpsDataRequest_6
// 272 #if MAC_OPT_FFD
// 273 if (txOptions & TX_OPT_INDIRECT) {
MOV R4,?V0 + 2
MOV R5,?V0 + 3
MOV A,#0x1a
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV C,0xE0 /* A */.2
JNC ??mcpsDataRequest_7
// 274 mschAddTask(taskNumber, MAC_TASK_PRI_MEDIUM, miqAddIndirectPacket, (WORD) pPacket);
; Setup parameters for call to function mschAddTask
MOV ?V0 + 0,#(miqAddIndirectPacket & 0xff)
MOV ?V0 + 1,#((miqAddIndirectPacket >> 8) & 0xff)
MOV ?V0 + 2,#((miqAddIndirectPacket >> 16) & 0xff)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 21)
MOV R2,#0x1
SJMP ??mcpsDataRequest_8
CFI CFA_XSP16 add(XSP16, 18)
// 275 } else {
// 276 mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);
??mcpsDataRequest_7:
; Setup parameters for call to function mschAddTask
MOV ?V0 + 0,#(mtxScheduleTransmission & 0xff)
MOV ?V0 + 1,#((mtxScheduleTransmission >> 8) & 0xff)
MOV ?V0 + 2,#((mtxScheduleTransmission >> 16) & 0xff)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 21)
MOV R2,#0x0
??mcpsDataRequest_8:
LCALL mschAddTask
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
??mcpsDataRequest_4:
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI EndBlock cfiBlock1
REQUIRE ?Subroutine0
; // Fall through to label ?Subroutine0
// 277 }
// 278
// 279 #else // RFD
// 280 mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);
// 281 #endif
// 282
// 283 } // mcpsDataRequest
RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock2 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 15)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
MOV R7,#0x8
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock2
// 284
// 285
// 286
// 287
// 288 //-------------------------------------------------------------------------------------------------------
// 289 // MAC_ENUM mlmeStartRequest(WORD panId, UINT8 logicalChannel, UINT8 beaconOrder, UINT8 ...)
// 290 //
// 291 // DESCRIPTION:
// 292 // As a coordinator: Start or stop transmitting beacons.
// 293 //
// 294 // PARAMETERS:
// 295 // WORD panId
// 296 // The new PAN identifier
// 297 // UINT8 logicalChannel
// 298 // The channel to operate on (11-26)
// 299 // UINT8 beaconOrder
// 300 // The beacon order, which defines the beacon interval (0-14 for beacon PAN, 15 for non-beacon PAN)
// 301 // UINT8 superframeOrder
// 302 // The superframe order, which defines the superframe duration (that is the active period of the
// 303 // beacon interval). superframeOrder must be <= beaconOrder
// 304 // BOOL panCoordinator
// 305 // TRUE if this node should be the PAN coordinator
// 306 // BOOL batteryLifeExtension
// 307 // Enable battery life extension
// 308 // BOOL coordRealignment
// 309 // Transmit a coordinator realignment frame before making the changes
// 310 // BOOL securityEnable
// 311 // Security is enabled?
// 312 //
// 313 // RETURN VALUE:
// 314 // MAC_ENUM
// 315 // SUCCESS, NO_SHORT_ADDRESS or INVALID_PARAMETER
// 316 //-------------------------------------------------------------------------------------------------------
// 317 #if MAC_OPT_FFD
RSEG NEAR_CODE:CODE:NOROOT(0)
// 318 ROOT MAC_ENUM mlmeStartRequest(WORD panId,
mlmeStartRequest:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function mlmeStartRequest
// 319 UINT8 logicalChannel,
// 320 UINT8 beaconOrder,
// 321 UINT8 superframeOrder,
// 322 BOOL panCoordinator,
// 323 BOOL batteryLifeExtension,
// 324 BOOL coordRealignment,
// 325 BOOL securityEnable)
// 326 {
FUNCALL mlmeStartRequest, msupChannelValid
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mtxpReservePacket
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mbcnPrepareCoordinatorRealignment
LOCFRAME XSTACK, 23, STACK
ARGFRAME XSTACK, 23, STACK
FUNCALL mlmeStartRequest, mschReserveTask
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mschAddTask
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL mlmeStartRequest, mschReserveTask
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mschAddTask
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL mlmeStartRequest, mlmeSetRequest
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mschReleaseTask
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mtxpReleasePacket
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mlmeSetRequest
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, msupSetChannel
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mlmeSetRequest
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mtimCancelCallback
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mtimSetCallback
LOCFRAME XSTACK, 22, STACK
ARGFRAME XSTACK, 22, STACK
FUNCALL mlmeStartRequest, mschReserveTask
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mtxpReservePacket
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, msupCalcBeaconInterval
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, msupCalcBeaconInterval
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, msupCalcBeaconInterval
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL mlmeStartRequest, mbcnTxPeriodicalBeacon
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
MOV A,#-0xe
LCALL ?FUNC_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
; Saved register size: 14
; Auto size: 4
MOV A,#-0x4
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
MOV A,R4
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX @DPTR,A
MOV A,R1
MOV R6,A
MOV ?V0 + 3,R5
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 6,A
MOV A,#0x14
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 0,A
MOV A,#0x15
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R7,A
// 327 BOOL firstBeaconNow;
// 328 WORD mdmctrl0;
// 329 BOOL waiting;
// 330 MAC_TX_PACKET *pPacket;
// 331 BYTE taskNumber;
// 332
// 333 // Is the short address OK?
// 334 if (mpib.macShortAddress == 0xFFFF) {
MOV DPTR,#(mpib + 32)
MOVX A,@DPTR
XRL A,#0xff
JNZ ??mlmeStartRequest_0
INC DPTR
MOVX A,@DPTR
XRL A,#0xff
??mlmeStartRequest_0:
JNZ ??mlmeStartRequest_1
// 335 return NO_SHORT_ADDRESS;
MOV R1,#-0x14
LJMP ??mlmeStartRequest_2
// 336
// 337 // Are the parameters OK?
// 338 } else if ((!msupChannelValid(logicalChannel)) || (beaconOrder > BEACON_ORDER_NO_BEACON) || ((superframeOrder > beaconOrder) && (superframeOrder != BEACON_ORDER_NO_BEACON))) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -