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

📄 mac_rx_engine.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
    306          //  MLME_BEACON_NOTIFY_INDICATION* mrxMakeBeaconNotifyIndication(MAC_RX_PACKET *pPacket)
    307          //
    308          //  DESCRIPTION:
    309          //      Modifies a MAC_RX_PACKET structure to become a beacon notify indication.
    310          //
    311          //  ARGUMENTS:
    312          //      MAC_RX_PACKET *pPacket
    313          //          The packet that contains the beacon. This structure will be modified to contain the
    314          //          notification.
    315          //
    316          //  RETURN VALUE:
    317          //      MLME_BEACON_NOTIFY_INDICATION*
    318          //          A pointer to the notification to be passed to the higher layer
    319          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    320          ROOT MLME_BEACON_NOTIFY_INDICATION   * mrxMakeBeaconNotifyIndication(MAC_RX_PACKET    *pPacket) {
   \                     mrxMakeBeaconNotifyIndication:
   \   000000   74F1         MOV     A,#-0xf
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 15
   \   000005                ; Auto size: 3
   \   000005   74FD         MOV     A,#-0x3
   \   000007   12....       LCALL   ?ALLOC_XSTACK8
    321              MLME_BEACON_NOTIFY_INDICATION   *pMBNI = (MLME_BEACON_NOTIFY_INDICATION  *) (((BYTE  *) pPacket) + 1);
   \   00000A   8A82         MOV     DPL,R2
   \   00000C   8B83         MOV     DPH,R3
   \   00000E   A3           INC     DPTR
   \   00000F   A882         MOV     R0,DPL
   \   000011   A983         MOV     R1,DPH
   \   000013   85..82       MOV     DPL,?XSP + 0
   \   000016   85..83       MOV     DPH,?XSP + 1
   \   000019   E8           MOV     A,R0
   \   00001A   F0           MOVX    @DPTR,A
   \   00001B   A3           INC     DPTR
   \   00001C   E9           MOV     A,R1
   \   00001D   F0           MOVX    @DPTR,A
    322              MCPS_DATA_INDICATION   *pMDI = &pPacket->mdi;
   \   00001E   EA           MOV     A,R2
   \   00001F   2407         ADD     A,#0x7
   \   000021   F5..         MOV     ?V0 + 0,A
   \   000023   EB           MOV     A,R3
   \   000024   3400         ADDC    A,#0x0
   \   000026   F5..         MOV     ?V0 + 1,A
    323              PAN_DESCRIPTOR   *pPanDescriptor = &pMBNI->panDescriptor;
   \   000028   85..82       MOV     DPL,?XSP + 0
   \   00002B   85..83       MOV     DPH,?XSP + 1
   \   00002E   E0           MOVX    A,@DPTR
   \   00002F   2401         ADD     A,#0x1
   \   000031   F5..         MOV     ?V0 + 6,A
   \   000033   A3           INC     DPTR
   \   000034   E0           MOVX    A,@DPTR
   \   000035   3400         ADDC    A,#0x0
   \   000037   F5..         MOV     ?V0 + 7,A
   \   000039   E5..         MOV     A,?V0 + 0
   \   00003B   241C         ADD     A,#0x1c
   \   00003D   F582         MOV     DPL,A
   \   00003F   E5..         MOV     A,?V0 + 1
   \   000041   3400         ADDC    A,#0x0
   \   000043   F583         MOV     DPH,A
   \   000045   E0           MOVX    A,@DPTR
   \   000046   5407         ANL     A,#0x7
    324              UINT8 n;
    325              UINT8 payloadOffset;
    326              UINT8 pendAddrOffset;
    327              UINT8 pendAddrSpec;
    328              UINT8 pendingIndex;
    329          
    330              // Do not change the order of these operations!!!
    331          
    332              // Calculate the pSDU offset
    333              n = pMDI->pMsdu[2] & 0x07;
    334              if (n) {
   \   000048   6009         JZ      ??mrxMakeBeaconNotifyIndication_0
    335                  n = 3 + 1 + 3 * n;
   \   00004A   75F003       MOV     B,#0x3
   \   00004D   A4           MUL     AB
   \   00004E   2404         ADD     A,#0x4
   \   000050   FF           MOV     R7,A
   \   000051   8002         SJMP    ??mrxMakeBeaconNotifyIndication_1
    336              } else {
    337                  n = 3;
   \                     ??mrxMakeBeaconNotifyIndication_0:
   \   000053   7F03         MOV     R7,#0x3
    338              }
    339              pendAddrSpec = pMDI->pMsdu[n];
   \                     ??mrxMakeBeaconNotifyIndication_1:
   \   000055   8F..         MOV     ?V0 + 2,R7
   \   000057   E5..         MOV     A,?V0 + 0
   \   000059   25..         ADD     A,?V0 + 2
   \   00005B   F8           MOV     R0,A
   \   00005C   E5..         MOV     A,?V0 + 1
   \   00005E   3400         ADDC    A,#0x0
   \   000060   F9           MOV     R1,A
   \   000061   741A         MOV     A,#0x1a
   \   000063   28           ADD     A,R0
   \   000064   F582         MOV     DPL,A
   \   000066   E4           CLR     A
   \   000067   39           ADDC    A,R1
   \   000068   F583         MOV     DPH,A
   \   00006A   E0           MOVX    A,@DPTR
   \   00006B   F5..         MOV     ?V0 + 5,A
    340              payloadOffset = (n + 1 + (sizeof(WORD) * (pendAddrSpec & 0x07)) + (sizeof(ADDRESS) * ((pendAddrSpec & 0x70) >> 4)));
   \   00006D   7470         MOV     A,#0x70
   \   00006F   55..         ANL     A,?V0 + 5
   \   000071   C4           SWAP    A
   \   000072   30E302       JNB     0xE0 /* A   */.3,??mrxMakeBeaconNotifyIndication_2
   \   000075   44F0         ORL     A,#0xf0
   \                     ??mrxMakeBeaconNotifyIndication_2:
   \   000077   C0E0         PUSH    A
   \   000079   7402         MOV     A,#0x2
   \   00007B   12....       LCALL   ?XSTACK_DISP0_8
   \   00007E   D0E0         POP     A
   \   000080   F0           MOVX    @DPTR,A
   \   000081   7402         MOV     A,#0x2
   \   000083   12....       LCALL   ?XSTACK_DISP0_8
   \   000086   E0           MOVX    A,@DPTR
   \   000087   33           RLC     A
   \   000088   33           RLC     A
   \   000089   33           RLC     A
   \   00008A   54F8         ANL     A,#0xf8
   \   00008C   C0E0         PUSH    A
   \   00008E   7407         MOV     A,#0x7
   \   000090   55..         ANL     A,?V0 + 5
   \   000092   C3           CLR     C
   \   000093   33           RLC     A
   \   000094   2F           ADD     A,R7
   \   000095   FA           MOV     R2,A
   \   000096   D0E0         POP     A
   \   000098   2A           ADD     A,R2
   \   000099   04           INC     A
   \   00009A   FE           MOV     R6,A
    341          
    342              // Start by copying the payload in reverse order to avoid overwriting
    343              msupReverseCopy(pMBNI->pSdu, pMDI->pMsdu + payloadOffset, aMaxBeaconPayloadLength);
   \   00009B                ; Setup parameters for call to function msupReverseCopy
   \   00009B   7934         MOV     R1,#0x34
   \   00009D   8E..         MOV     ?V0 + 2,R6
   \   00009F   E5..         MOV     A,?V0 + 0
   \   0000A1   25..         ADD     A,?V0 + 2
   \   0000A3   FA           MOV     R2,A
   \   0000A4   E5..         MOV     A,?V0 + 1
   \   0000A6   3400         ADDC    A,#0x0
   \   0000A8   FB           MOV     R3,A
   \   0000A9   741A         MOV     A,#0x1a
   \   0000AB   2A           ADD     A,R2
   \   0000AC   FC           MOV     R4,A
   \   0000AD   E4           CLR     A
   \   0000AE   3B           ADDC    A,R3
   \   0000AF   FD           MOV     R5,A
   \   0000B0   85..82       MOV     DPL,?XSP + 0
   \   0000B3   85..83       MOV     DPH,?XSP + 1
   \   0000B6   E0           MOVX    A,@DPTR
   \   0000B7   2452         ADD     A,#0x52
   \   0000B9   FA           MOV     R2,A
   \   0000BA   A3           INC     DPTR
   \   0000BB   E0           MOVX    A,@DPTR
   \   0000BC   3400         ADDC    A,#0x0
   \   0000BE   FB           MOV     R3,A
   \   0000BF   12....       LCALL   msupReverseCopy
    344          
    345              // Copy lots of parameters (no fields are overwritten!)
    346              pMBNI->sduLength = pMDI->msduLength - payloadOffset;
   \   0000C2   E5..         MOV     A,?V0 + 0
   \   0000C4   2419         ADD     A,#0x19
   \   0000C6   F582         MOV     DPL,A
   \   0000C8   E5..         MOV     A,?V0 + 1
   \   0000CA   3400         ADDC    A,#0x0
   \   0000CC   F583         MOV     DPH,A
   \   0000CE   E0           MOVX    A,@DPTR
   \   0000CF   C3           CLR     C
   \   0000D0   9E           SUBB    A,R6
   \   0000D1   C0E0         PUSH    A
   \   0000D3   85..82       MOV     DPL,?XSP + 0
   \   0000D6   85..83       MOV     DPH,?XSP + 1
   \   0000D9   E0           MOVX    A,@DPTR
   \   0000DA   2419         ADD     A,#0x19
   \   0000DC   F8           MOV     R0,A
   \   0000DD   A3           INC     DPTR
   \   0000DE   E0           MOVX    A,@DPTR
   \   0000DF   3400         ADDC    A,#0x0
   \   0000E1   F9           MOV     R1,A
   \   0000E2   8882         MOV     DPL,R0
   \   0000E4   8983         MOV     DPH,R1
   \   0000E6   D0E0         POP     A
   \   0000E8   F0           MOVX    @DPTR,A
    347              pPanDescriptor->logicalChannel = ppib.phyCurrentChannel;
   \   0000E9   90....       MOV     DPTR,#ppib
   \   0000EC   E0           MOVX    A,@DPTR
   \   0000ED   C0E0         PUSH    A
   \   0000EF   E5..         MOV     A,?V0 + 6
   \   0000F1   2416         ADD     A,#0x16
   \   0000F3   F582         MOV     DPL,A
   \   0000F5   E5..         MOV     A,?V0 + 7
   \   0000F7   3400         ADDC    A,#0x0
   \   0000F9   F583         MOV     DPH,A
   \   0000FB   D0E0         POP     A
   \   0000FD   F0           MOVX    @DPTR,A
    348              pPanDescriptor->linkQuality = pMDI->mpduLinkQuality;
   \   0000FE   E5..         MOV     A,?V0 + 0
   \   000100   2416         ADD     A,#0x16
   \   000102   F582         MOV     DPL,A
   \   000104   E5..         MOV     A,?V0 + 1
   \   000106   3400         ADDC    A,#0x0
   \   000108   F583         MOV     DPH,A
   \   00010A   E0           MOVX    A,@DPTR
   \   00010B   C0E0         PUSH    A
   \   00010D   E5..         MOV     A,?V0 + 6
   \   00010F   2414         ADD     A,#0x14
   \   000111   F582         MOV     DPL,A
   \   000113   E5..         MOV     A,?V0 + 7
   \   000115   3400         ADDC    A,#0x0
   \   000117   F583         MOV     DPH,A
   \   000119   D0E0         POP     A
   \   00011B   F0           MOVX    @DPTR,A
    349              pPanDescriptor->superframeSpec = *((WORD   *) pMDI->pMsdu);
   \   00011C   E5..         MOV     A,?V0 + 0
   \   00011E   241A         ADD     A,#0x1a
   \   000120   F582         MOV     DPL,A
   \   000122   E5..         MOV     A,?V0 + 1
   \   000124   3400         ADDC    A,#0x0
   \   000126   F583         MOV     DPH,A
   \   000128   E0           MOVX    A,@DPTR
   \   000129   F8           MOV     R0,A
   \   00012A   A3           INC     DPTR
   \   00012B   E0           MOVX    A,@DPTR
   \   00012C   F9           MOV     R1,A
   \   00012D   E5..         MOV     A,?V0 + 6
   \   00012F   2411         ADD     A,#0x11
   \   000131   F582         MOV     DPL,A
   \   000133   E5..         MOV     A,?V0 + 7
   \   000135   3400         ADDC    A,#0x0
   \   000137   F583         MOV     DPH,A
   \   000139   E8           MOV     A,R0
   \   00013A   F0           MOVX    @DPTR,A
   \   00013B   A3           INC     DPTR
   \   00013C   E9           MOV     A,R1
   \   00013D   F0           MOVX    @DPTR,A
    350              pPanDescriptor->gtsPermit = !!(pMDI->pMsdu[2] & 0x80);
   \   00013E   E5..         MOV     A,?V0 + 0
   \   000140   241C         ADD     A,#0x1c
   \   000142   F582         MOV     DPL,A
   \   000144   E5..         MOV     A,?V0 + 1
   \   000146   3400         ADDC    A,#0x0
   \   000148   F583         MOV     DPH,A
   \   00014A   E0           MOVX    A,@DPTR
   \   00014B   A2E7         MOV     C,0xE0 /* A   */.7
   \   00014D   5004         JNC     ??mrxMakeBeaconNotifyIndication_3
   \   00014F   D2F0         SETB    B.0

⌨️ 快捷键说明

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