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

📄 mac_support.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
    318          
    319          } // msupSetChannel
   \                     ??msupSetChannel_1:
   \   000069   7F02         MOV     R7,#0x2
   \   00006B   02....       LJMP    ?FUNC_LEAVE_XDATA
    320          
    321          
    322          
    323          
    324          /*******************************************************************************************************
    325           *******************************************************************************************************
    326           **************************                TX PACKET GENERATION               **************************
    327           *******************************************************************************************************
    328           *******************************************************************************************************/
    329          
    330          
    331          
    332          
    333          //-------------------------------------------------------------------------------------------------------
    334          //  msupPrepareHeader(MAC_TX_PACKET *pPacket, BYTE type, BYTE addrModes, WORD srcPanId, ADDRESS ...)
    335          //
    336          //  DESCRIPTION:
    337          //      Packet header assembly function, used for beacon, data and command frames.
    338          //
    339          //  PARAMETERS:
    340          //      MAC_TX_PACKET *pPacket
    341          //          The packet structure to update (this function affects the header part)
    342          //      BYTE type
    343          //          FT_BEACON, FT_DATA or FT_COMMAND
    344          //      BYTE addrModes
    345          //          Address mode for source and destination
    346          //          (SRC_ADDR_SHORT, SRC_ADDR_EXT or 0) | (DEST_ADDR_SHORT, DEST_ADDR_EXT or 0)
    347          //      WORD srcPanId
    348          //          Source PAN identifier
    349          //      ADDRESS *pSrcAddr
    350          //          Pointer to the source address (short or extended)
    351          //      WORD destPanId,
    352          //          Destination PAN identifier
    353          //      ADDRESS *pDestAddr,
    354          //          Pointer to the destination address (short or extended)
    355          //      BYTE txOptions
    356          //          (TX_OPT_SECURITY_ENABLE | TX_OPT_INDIRECT | TX_OPT_GTS | TX_OPT_ACK_REQ) or TX_OPT_NONE
    357          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    358          ROOT __xdata_reentrant void msupPrepareHeader(MAC_TX_PACKET   *pPacket, BYTE type, BYTE addrModes, WORD srcPanId,
   \                     msupPrepareHeader:
    359                                 ADDRESS   *pSrcAddr, WORD destPanId, ADDRESS   *pDestAddr, BYTE txOptions)
    360          {
   \   000000   74F2         MOV     A,#-0xe
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 14
   \   000005                ; Auto size: 0
   \   000005   8A..         MOV     ?V0 + 2,R2
   \   000007   8B..         MOV     ?V0 + 3,R3
   \   000009   89..         MOV     ?V0 + 0,R1
   \   00000B   8C..         MOV     ?V0 + 6,R4
   \   00000D   740E         MOV     A,#0xe
   \   00000F   12....       LCALL   ?XSTACK_DISP0_8
   \   000012   E0           MOVX    A,@DPTR
   \   000013   FE           MOV     R6,A
   \   000014   A3           INC     DPTR
   \   000015   E0           MOVX    A,@DPTR
   \   000016   FF           MOV     R7,A
   \   000017   7412         MOV     A,#0x12
   \   000019   12....       LCALL   ?XSTACK_DISP0_8
   \   00001C   E0           MOVX    A,@DPTR
   \   00001D   F8           MOV     R0,A
   \   00001E   A3           INC     DPTR
   \   00001F   E0           MOVX    A,@DPTR
   \   000020   F9           MOV     R1,A
    361              BYTE temp;
    362              UINT8 length = 0;
    363          
    364              // Packet type and options
    365              pPacket->type = type;
   \   000021   EA           MOV     A,R2
   \   000022   2480         ADD     A,#-0x80
   \   000024   F582         MOV     DPL,A
   \   000026   EB           MOV     A,R3
   \   000027   3400         ADDC    A,#0x0
   \   000029   F583         MOV     DPH,A
   \   00002B   E5..         MOV     A,?V0 + 0
   \   00002D   F0           MOVX    @DPTR,A
    366              pPacket->txOptions = txOptions;
   \   00002E   EA           MOV     A,R2
   \   00002F   2481         ADD     A,#-0x7f
   \   000031   F582         MOV     DPL,A
   \   000033   EB           MOV     A,R3
   \   000034   3400         ADDC    A,#0x0
   \   000036   F583         MOV     DPH,A
   \   000038   ED           MOV     A,R5
   \   000039   F0           MOVX    @DPTR,A
    367          
    368              // Frame control field
    369              temp = (BYTE)(type & FRAME_TYPE_BM);
   \   00003A   7407         MOV     A,#0x7
   \   00003C   55..         ANL     A,?V0 + 0
   \   00003E   F5..         MOV     ?V0 + 1,A
    370          #if MAC_OPT_SECURITY
    371              pPacket->securitySetup.micLength = 0;
    372          
    373              if (txOptions & TX_OPT_SECURITY_ENABLE) {
    374                  temp |= SECURITY_ENABLED_BM;
    375                  // Set securitySuite or securityStatus (UNAVAILABLE_KEY)
    376                  msecFindTxSecurityMaterial(pPacket, TRUE, ((addrModes & DEST_ADDR_BM) >> 2), destPanId, pDestAddr);
    377          
    378              } else {
    379                  pPacket->securitySuite = MAC_SECURITY_NONE;
    380              }
    381          #else
    382              pPacket->securitySuite = MAC_SECURITY_NONE;
   \   000040   EA           MOV     A,R2
   \   000041   2492         ADD     A,#-0x6e
   \   000043   F582         MOV     DPL,A
   \   000045   EB           MOV     A,R3
   \   000046   3400         ADDC    A,#0x0
   \   000048   F583         MOV     DPH,A
   \   00004A   E4           CLR     A
   \   00004B   F0           MOVX    @DPTR,A
    383          #endif
    384              if (txOptions & TX_OPT_ACK_REQ) temp |= ACK_REQ_BM;
   \   00004C   ED           MOV     A,R5
   \   00004D   A2E0         MOV     C,0xE0 /* A   */.0
   \   00004F   5006         JNC     ??msupPrepareHeader_0
   \   000051   E5..         MOV     A,?V0 + 1
   \   000053   D2E5         SETB    0xE0 /* A   */.5
   \   000055   F5..         MOV     ?V0 + 1,A
    385              if (((addrModes & BOTH_ADDR_USED) == BOTH_ADDR_USED) && (srcPanId == destPanId)) temp |= INTRA_PAN_BM;
   \                     ??msupPrepareHeader_0:
   \   000057   7488         MOV     A,#-0x78
   \   000059   55..         ANL     A,?V0 + 6
   \   00005B   6488         XRL     A,#0x88
   \   00005D   700E         JNZ     ??msupPrepareHeader_1
   \   00005F   E8           MOV     A,R0
   \   000060   6E           XRL     A,R6
   \   000061   7002         JNZ     ??msupPrepareHeader_2
   \   000063   E9           MOV     A,R1
   \   000064   6F           XRL     A,R7
   \                     ??msupPrepareHeader_2:
   \   000065   7006         JNZ     ??msupPrepareHeader_1
   \   000067   E5..         MOV     A,?V0 + 1
   \   000069   D2E6         SETB    0xE0 /* A   */.6
   \   00006B   F5..         MOV     ?V0 + 1,A
    386              pPacket->pHeader[length++] = temp;
   \                     ??msupPrepareHeader_1:
   \   00006D   8A82         MOV     DPL,R2
   \   00006F   8B83         MOV     DPH,R3
   \   000071   A3           INC     DPTR
   \   000072   A3           INC     DPTR
   \   000073   A3           INC     DPTR
   \   000074   E5..         MOV     A,?V0 + 1
   \   000076   F0           MOVX    @DPTR,A
    387              pPacket->pHeader[length++] = addrModes;
   \   000077   8A82         MOV     DPL,R2
   \   000079   8B83         MOV     DPH,R3
   \   00007B   A3           INC     DPTR
   \   00007C   A3           INC     DPTR
   \   00007D   A3           INC     DPTR
   \   00007E   A3           INC     DPTR
   \   00007F   EC           MOV     A,R4
   \   000080   F0           MOVX    @DPTR,A
    388          
    389              // Sequence number
    390              if (type == FT_BEACON) {
   \   000081   EA           MOV     A,R2
   \   000082   2405         ADD     A,#0x5
   \   000084   FA           MOV     R2,A
   \   000085   EB           MOV     A,R3
   \   000086   3400         ADDC    A,#0x0
   \   000088   FB           MOV     R3,A
   \   000089   E5..         MOV     A,?V0 + 0
   \   00008B   700E         JNZ     ??msupPrepareHeader_3
    391                  pPacket->pHeader[length++] = mpib.macBSN++;
   \   00008D   90....       MOV     DPTR,#(mpib + 13)
   \   000090   E0           MOVX    A,@DPTR
   \   000091   8A82         MOV     DPL,R2
   \   000093   8B83         MOV     DPH,R3
   \   000095   F0           MOVX    @DPTR,A
   \   000096   90....       MOV     DPTR,#(mpib + 13)
   \   000099   800C         SJMP    ??msupPrepareHeader_4
    392              } else {
    393                  pPacket->pHeader[length++] = mpib.macDSN++;
   \                     ??msupPrepareHeader_3:
   \   00009B   90....       MOV     DPTR,#(mpib + 24)
   \   00009E   E0           MOVX    A,@DPTR
   \   00009F   8A82         MOV     DPL,R2
   \   0000A1   8B83         MOV     DPH,R3
   \   0000A3   F0           MOVX    @DPTR,A
   \   0000A4   90....       MOV     DPTR,#(mpib + 24)
   \                     ??msupPrepareHeader_4:
   \   0000A7   E0           MOVX    A,@DPTR
   \   0000A8   04           INC     A
   \   0000A9   F0           MOVX    @DPTR,A
   \   0000AA   75..03       MOV     ?V0 + 0,#0x3
   \   0000AD   740C         MOV     A,#0xc
   \   0000AF   55..         ANL     A,?V0 + 6
   \   0000B1   FC           MOV     R4,A
   \   0000B2   7003         JNZ     $+5
   \   0000B4   02....       LJMP    ??msupPrepareHeader_5
   \   0000B7   E8           MOV     A,R0
   \   0000B8   85..82       MOV     DPL,?V0 + 2
   \   0000BB   85..83       MOV     DPH,?V0 + 3
   \   0000BE   A3           INC     DPTR
   \   0000BF   A3           INC     DPTR
   \   0000C0   A3           INC     DPTR
   \   0000C1   A3           INC     DPTR
   \   0000C2   A3           INC     DPTR
   \   0000C3   A3           INC     DPTR
   \   0000C4   F0           MOVX    @DPTR,A
    394              }
    395          
    396              // Destination PAN ID
    397              if (addrModes & DEST_ADDR_BM) {
    398                  pPacket->pHeader[length++] = LOBYTE(destPanId);
    399                  pPacket->pHeader[length++] = HIBYTE(destPanId);
   \   0000C5   E9           MOV     A,R1
   \   0000C6   85..82       MOV     DPL,?V0 + 2
   \   0000C9   85..83       MOV     DPH,?V0 + 3
   \   0000CC   A3           INC     DPTR
   \   0000CD   A3           INC     DPTR
   \   0000CE   A3           INC     DPTR
   \   0000CF   A3           INC     DPTR
   \   0000D0   A3           INC     DPTR
   \   0000D1   A3           INC     DPTR
   \   0000D2   A3           INC     DPTR
   \   0000D3   F0           MOVX    @DPTR,A
   \   0000D4   75..05       MOV     ?V0 + 0,#0x5
    400                  pPacket->toCoord = mpib.macPANId == destPanId;
   \   0000D7   90....       MOV     DPTR,#(mpib + 28)
   \   0000DA   E0           MOVX    A,@DPTR
   \   0000DB   68           XRL     A,R0
   \   0000DC   7003         JNZ     ??msupPrepareHeader_6
   \   0000DE   A3           INC     DPTR
   \   0000DF   E0           MOVX    A,@DPTR
   \   0000E0   69           XRL     A,R1
   \                     ??msupPrepareHeader_6:
   \   0000E1   7004         JNZ     ??msupPrepareHeader_7
   \   0000E3   7D01         MOV     R5,#0x1
   \   0000E5   8002         SJMP    ??msupPrepareHeader_8
   \                     ??msupPrepareHeader_7:
   \   0000E7   7D00         MOV     R5,#0x0
   \                     ??msupPrepareHeader_8:
   \   0000E9   E5..         MOV     A,?V0 + 2
   \   0000EB   2484         ADD     A,#-0x7c
   \   0000ED   F582         MOV     DPL,A
   \   0000EF   E5..         MOV     A,?V0 + 3
   \   0000F1   3400         ADDC    A,#0x0
   \   0000F3   F583         MOV     DPH,A
   \   0000F5   ED           MOV     A,R5
   \   0000F6   F0           MOVX    @DPTR,A
    401              } else {
    402                  pPacket->toCoord = FALSE;

⌨️ 快捷键说明

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