⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mac.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00003A   12....       LCALL   mtxpReservePacket
   \   00003D   8A..         MOV     ?V0 + 2,R2
   \   00003F   8B..         MOV     ?V0 + 3,R3
    194              if (!pPacket) {
   \   000041   EA           MOV     A,R2
   \   000042   7001         JNZ     ??mcpsDataRequest_1
   \   000044   EB           MOV     A,R3
   \                     ??mcpsDataRequest_1:
   \   000045   7014         JNZ     ??mcpsDataRequest_2
    195                  if (txOptions & TX_OPT_INDIRECT) {
   \   000047   741A         MOV     A,#0x1a
   \   000049   12....       LCALL   ?XSTACK_DISP0_8
   \   00004C   E0           MOVX    A,@DPTR
   \   00004D   A2E2         MOV     C,0xE0 /* A   */.2
   \   00004F   50E9         JNC     ??mcpsDataRequest_0
    196                      mcpsDataConfirm(TRANSACTION_OVERFLOW, msduHandle);
   \   000051                ; Setup parameters for call to function mcpsDataConfirm
   \   000051   AA..         MOV     R2,?V0 + 6
   \   000053   79F1         MOV     R1,#-0xf
   \                     ??mcpsDataRequest_3:
   \   000055   12....       LCALL   mcpsDataConfirm
    197                      return;
   \   000058   02....       LJMP    ??mcpsDataRequest_4
    198                  } else {
    199                      goto reservePacket;
    200                  }
    201              }
    202          #else // RFD
    203              if (txOptions & TX_OPT_INDIRECT) {
    204                  mcpsDataConfirm(INVALID_PARAMETER, msduHandle);
    205                  return;
    206              }
    207          
    208          reservePacket:
    209              pPacket = mtxpReservePacket();
    210              if (!pPacket) {
    211                  goto reservePacket;
    212              }
    213          #endif
    214          
    215              // Set transmission mode
    216              pPacket->txMode = MTX_MODE_USE_CSMACA_BM;
   \                     ??mcpsDataRequest_2:
   \   00005B   EA           MOV     A,R2
   \   00005C   2486         ADD     A,#-0x7a
   \   00005E   F582         MOV     DPL,A
   \   000060   EB           MOV     A,R3
   \   000061   3400         ADDC    A,#0x0
   \   000063   F583         MOV     DPH,A
   \   000065   7401         MOV     A,#0x1
   \   000067   F0           MOVX    @DPTR,A
    217          
    218              // Set number of retries
    219              pPacket->retriesLeft = aMaxFrameRetries;
   \   000068   EA           MOV     A,R2
   \   000069   2491         ADD     A,#-0x6f
   \   00006B   F582         MOV     DPL,A
   \   00006D   EB           MOV     A,R3
   \   00006E   3400         ADDC    A,#0x0
   \   000070   F583         MOV     DPH,A
   \   000072   7403         MOV     A,#0x3
   \   000074   F0           MOVX    @DPTR,A
    220          
    221              // Store the msdu handle
    222              pPacket->msduHandle = msduHandle;
   \   000075   EA           MOV     A,R2
   \   000076   2482         ADD     A,#-0x7e
   \   000078   F582         MOV     DPL,A
   \   00007A   EB           MOV     A,R3
   \   00007B   3400         ADDC    A,#0x0
   \   00007D   F583         MOV     DPH,A
   \   00007F   E5..         MOV     A,?V0 + 6
   \   000081   F0           MOVX    @DPTR,A
    223          
    224              // Generate the packet header (and find security material, if enabled)
    225              msupPrepareHeader(pPacket, FT_DATA, addrModes, srcPanId, pSrcAddr, destPanId, pDestAddr, txOptions);
   \   000082                ; Setup parameters for call to function msupPrepareHeader
   \   000082   7414         MOV     A,#0x14
   \   000084   12....       LCALL   ?XSTACK_DISP0_8
   \   000087   12....       LCALL   ?PUSH_XSTACK8_X_TWO
   \   00008A   8E..         MOV     ?V0 + 4,R6
   \   00008C   8F..         MOV     ?V0 + 5,R7
   \   00008E   78..         MOV     R0,#?V0 + 4
   \   000090   12....       LCALL   ?PUSH_XSTACK_I_TWO
   \   000093   7405         MOV     A,#0x5
   \   000095   12....       LCALL   ?XSTACK_DISP0_8
   \   000098   12....       LCALL   ?PUSH_XSTACK8_X_TWO
   \   00009B   78..         MOV     R0,#?V0 + 0
   \   00009D   12....       LCALL   ?PUSH_XSTACK_I_TWO
   \   0000A0   7422         MOV     A,#0x22
   \   0000A2   12....       LCALL   ?XSTACK_DISP0_8
   \   0000A5   E0           MOVX    A,@DPTR
   \   0000A6   FD           MOV     R5,A
   \   0000A7   7408         MOV     A,#0x8
   \   0000A9   12....       LCALL   ?XSTACK_DISP0_8
   \   0000AC   E0           MOVX    A,@DPTR
   \   0000AD   FC           MOV     R4,A
   \   0000AE   7901         MOV     R1,#0x1
   \   0000B0   12....       LCALL   msupPrepareHeader
   \   0000B3   7408         MOV     A,#0x8
   \   0000B5   12....       LCALL   ?DEALLOC_XSTACK8
    226          
    227              pPayload = pPacket->pPayload;
    228          
    229          #if MAC_OPT_SECURITY
    230              // Before calculating the PSDU length; make sure that the payload + MIC is less than aMaxMACFrameSize
    231          
    232              // #bytes in frame counter + key sequence counter (0 or 5)
    233              temp = msecProcessSecurityCounters(pPacket, pPayload);
    234          
    235              // In case of frame counter overflow or missing key
    236              // Generate error with FAILED_SECURITY_CHECK or UNAVAILABLE_KEY
    237              if (pPacket->securitySuite >= 8) {
    238                  mtxpReleasePacket(pPacket);
    239                  mcpsDataConfirm(pPacket->securitySuite, msduHandle);
    240                  return;
    241              }
    242          
    243              // Increment payload pointer when counters inserted
    244              pPayload += temp;
    245          
    246              // Include msduLength and optional MIC (integrity code) length
    247              temp += msduLength + pPacket->securitySetup.micLength;
    248          
    249          #else
    250              temp = msduLength;
    251          #endif
    252          
    253              // Is frame too long?
    254              if (temp > aMaxMACFrameSize) {
   \   0000B8   E5..         MOV     A,?V0 + 7
   \   0000BA   C3           CLR     C
   \   0000BB   9467         SUBB    A,#0x67
   \   0000BD   400D         JC      ??mcpsDataRequest_5
    255                  mtxpReleasePacket(pPacket);
   \   0000BF                ; Setup parameters for call to function mtxpReleasePacket
   \   0000BF   AA..         MOV     R2,?V0 + 2
   \   0000C1   AB..         MOV     R3,?V0 + 3
   \   0000C3   12....       LCALL   mtxpReleasePacket
    256                  mcpsDataConfirm(FRAME_TOO_LONG, msduHandle);
   \   0000C6                ; Setup parameters for call to function mcpsDataConfirm
   \   0000C6   AA..         MOV     R2,?V0 + 6
   \   0000C8   79E5         MOV     R1,#-0x1b
   \   0000CA   8089         SJMP    ??mcpsDataRequest_3
    257                  return;
    258              }
    259          
    260              // Calculate total frame length
    261              pPacket->length = (BYTE)(pPacket->headerLength + temp + MAC_FCS_LENGTH);
   \                     ??mcpsDataRequest_5:
   \   0000CC   E5..         MOV     A,?V0 + 2
   \   0000CE   2402         ADD     A,#0x2
   \   0000D0   FE           MOV     R6,A
   \   0000D1   E5..         MOV     A,?V0 + 3
   \   0000D3   3400         ADDC    A,#0x0
   \   0000D5   FF           MOV     R7,A
   \   0000D6   85..82       MOV     DPL,?V0 + 2
   \   0000D9   85..83       MOV     DPH,?V0 + 3
   \   0000DC   A3           INC     DPTR
   \   0000DD   E0           MOVX    A,@DPTR
   \   0000DE   25..         ADD     A,?V0 + 7
   \   0000E0   2402         ADD     A,#0x2
   \   0000E2   8E82         MOV     DPL,R6
   \   0000E4   8F83         MOV     DPH,R7
   \   0000E6   F0           MOVX    @DPTR,A
    262          
    263              // Copy data into packet buffer
    264              memcpy(pPayload, pMsdu, msduLength);
   \   0000E7                ; Setup parameters for call to function memcpy
   \   0000E7   85....       MOV     ?V0 + 0,?V0 + 7
   \   0000EA   75..00       MOV     ?V0 + 1,#0x0
   \   0000ED   78..         MOV     R0,#?V0 + 0
   \   0000EF   12....       LCALL   ?PUSH_XSTACK_I_TWO
   \   0000F2   7419         MOV     A,#0x19
   \   0000F4   12....       LCALL   ?XSTACK_DISP0_8
   \   0000F7   E0           MOVX    A,@DPTR
   \   0000F8   FC           MOV     R4,A
   \   0000F9   A3           INC     DPTR
   \   0000FA   E0           MOVX    A,@DPTR
   \   0000FB   FD           MOV     R5,A
   \   0000FC   E5..         MOV     A,?V0 + 2
   \   0000FE   241A         ADD     A,#0x1a
   \   000100   FA           MOV     R2,A
   \   000101   E5..         MOV     A,?V0 + 3
   \   000103   3400         ADDC    A,#0x0
   \   000105   FB           MOV     R3,A
   \   000106   90....       MOV     DPTR,#(memcpy & 0xffff)
   \   000109   74..         MOV     A,#((memcpy >> 16) & 0xff)
   \   00010B   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00010E   7402         MOV     A,#0x2
   \   000110   12....       LCALL   ?DEALLOC_XSTACK8
    265          
    266              // Calculate the packet duration (including ack. and IFS)
    267              pPacket->duration = msupCalcPacketDuration(pPacket->length, (BOOL)(pPacket->txOptions & TX_OPT_ACK_REQ));
   \   000113                ; Setup parameters for call to function msupCalcPacketDuration
   \   000113   E5..         MOV     A,?V0 + 2
   \   000115   2481         ADD     A,#-0x7f
   \   000117   F582         MOV     DPL,A
   \   000119   E5..         MOV     A,?V0 + 3
   \   00011B   3400         ADDC    A,#0x0
   \   00011D   F583         MOV     DPH,A
   \   00011F   E0           MOVX    A,@DPTR
   \   000120   A2E0         MOV     C,0xE0 /* A   */.0
   \   000122   E4           CLR     A
   \   000123   92E0         MOV     0xE0 /* A   */.0,C
   \   000125   FA           MOV     R2,A
   \   000126   8E82         MOV     DPL,R6
   \   000128   8F83         MOV     DPH,R7
   \   00012A   E0           MOVX    A,@DPTR
   \   00012B   F9           MOV     R1,A
   \   00012C   12....       LCALL   msupCalcPacketDuration
   \   00012F   E5..         MOV     A,?V0 + 2
   \   000131   2485         ADD     A,#-0x7b
   \   000133   F582         MOV     DPL,A
   \   000135   E5..         MOV     A,?V0 + 3
   \   000137   3400         ADDC    A,#0x0
   \   000139   F583         MOV     DPH,A
   \   00013B   E9           MOV     A,R1
   \   00013C   F0           MOVX    @DPTR,A
    268          
    269              do {
    270                  taskNumber = mschReserveTask();
   \                     ??mcpsDataRequest_6:
   \   00013D                ; Setup parameters for call to function mschReserveTask
   \   00013D   12....       LCALL   mschReserveTask
    271              } while (taskNumber == NO_TASK);
   \   000140   74FF         MOV     A,#-0x1
   \   000142   69           XRL     A,R1
   \   000143   60F8         JZ      ??mcpsDataRequest_6
    272          #if MAC_OPT_FFD
    273              if (txOptions & TX_OPT_INDIRECT) {
   \   000145   AC..         MOV     R4,?V0 + 2
   \   000147   AD..         MOV     R5,?V0 + 3
   \   000149   741A         MOV     A,#0x1a
   \   00014B   12....       LCALL   ?XSTACK_DISP0_8
   \   00014E   E0           MOVX    A,@DPTR
   \   00014F   A2E2         MOV     C,0xE0 /* A   */.2
   \   000151   5012         JNC     ??mcpsDataRequest_7
    274                  mschAddTask(taskNumber, MAC_TASK_PRI_MEDIUM, miqAddIndirectPacket, (WORD) pPacket);
   \   000153                ; Setup parameters for call to function mschAddTask
   \   000153   75....       MOV     ?V0 + 0,#(miqAddIndirectPacket & 0xff)
   \   000156   75....       MOV     ?V0 + 1,#((miqAddIndirectPacket >> 8) & 0xff)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -