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

📄 zdsecmgr.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
    689          #endif // defined ( ZDSECMGR_COMMERCIAL )
    690          
    691          #if defined ( ZDSECMGR_COMMERCIAL )
    692          /******************************************************************************
    693           * @fn          ZDSecMgrEntryLookupExt
    694           *
    695           * @brief       Lookup entry index using specified EXT address.
    696           *
    697           * @param       extAddr - [in] EXT address
    698           * @param       entry   - [out] valid entry
    699           *
    700           * @return      ZStatus_t
    701           */
    702          ZStatus_t ZDSecMgrEntryLookupExt( uint8* extAddr, ZDSecMgrEntry_t** entry )
    703          {
    704            ZStatus_t status;
    705            uint16    ami;
    706          
    707          
    708            // initialize results
    709            *entry = NULL;
    710            status = ZNwkUnknownDevice;
    711          
    712            // lookup address index
    713            if ( ZDSecMgrExtAddrLookup( extAddr, &ami ) == ZSuccess )
    714            {
    715              status = ZDSecMgrEntryLookupAMI( ami, entry );
    716            }
    717          
    718            return status;
    719          }
    720          #endif // defined ( ZDSECMGR_COMMERCIAL )
    721          
    722          #if defined ( ZDSECMGR_COMMERCIAL )
    723          /******************************************************************************
    724           * @fn          ZDSecMgrEntryFree
    725           *
    726           * @brief       Free entry.
    727           *
    728           * @param       entry - [in] valid entry
    729           *
    730           * @return      ZStatus_t
    731           */
    732          void ZDSecMgrEntryFree( ZDSecMgrEntry_t* entry )
    733          {
    734            entry->ami = INVALID_NODE_ADDR;
    735          }
    736          #endif // defined ( ZDSECMGR_COMMERCIAL )
    737          
    738          #if defined ( ZDSECMGR_COMMERCIAL )
    739          /******************************************************************************
    740           * @fn          ZDSecMgrEntryNew
    741           *
    742           * @brief       Get a new entry.
    743           *
    744           * @param       entry - [out] valid entry
    745           *
    746           * @return      ZStatus_t
    747           */
    748          ZStatus_t ZDSecMgrEntryNew( ZDSecMgrEntry_t** entry )
    749          {
    750            ZStatus_t status;
    751            uint16    index;
    752          
    753          
    754            // initialize results
    755            *entry = NULL;
    756            status = ZNwkUnknownDevice;
    757          
    758            // verify data is available
    759            if ( ZDSecMgrEntries != NULL )
    760            {
    761              // find available entry
    762              for ( index = 0; index < ZDSECMGR_ENTRY_MAX ; index++ )
    763              {
    764                if ( ZDSecMgrEntries[index].ami == INVALID_NODE_ADDR )
    765                {
    766                  // return successful result
    767                  *entry = &ZDSecMgrEntries[index];
    768                  status = ZSuccess;
    769          
    770                  // break from loop
    771                  index = ZDSECMGR_ENTRY_MAX;
    772                }
    773              }
    774            }
    775          
    776            return status;
    777          }
    778          #endif // defined ( ZDSECMGR_COMMERCIAL )
    779          
    780          #if defined ( ZDSECMGR_COMMERCIAL )
    781          /******************************************************************************
    782           * @fn          ZDSecMgrCtrlInit
    783           *
    784           * @brief       Initialize control sub module
    785           *
    786           * @param       none
    787           *
    788           * @return      none
    789           */
    790          void ZDSecMgrCtrlInit( void )
    791          {
    792            //---------------------------------------------------------------------------
    793            #if defined ( ZDO_COORDINATOR )
    794            //---------------------------------------------------------------------------
    795            uint16 size;
    796            uint16 index;
    797          
    798          
    799            // allocate entry data
    800            size = (short)( sizeof(ZDSecMgrCtrl_t) * ZDSECMGR_CTRL_MAX );
    801          
    802            ZDSecMgrCtrlData = osal_mem_alloc( size );
    803          
    804            // initialize data
    805            if ( ZDSecMgrCtrlData != NULL )
    806            {
    807              for( index = 0; index < ZDSECMGR_CTRL_MAX; index++ )
    808              {
    809                ZDSecMgrCtrlData[index].state = ZDSECMGR_CTRL_NONE;
    810              }
    811            }
    812            //---------------------------------------------------------------------------
    813            #endif // defined ( ZDO_COORDINATOR )
    814            //---------------------------------------------------------------------------
    815          }
    816          #endif // defined ( ZDSECMGR_COMMERCIAL )
    817          
    818          #if defined ( ZDSECMGR_COMMERCIAL )
    819          #if defined ( ZDO_COORDINATOR )
    820          /******************************************************************************
    821           * @fn          ZDSecMgrCtrlRelease
    822           *
    823           * @brief       Release control data.
    824           *
    825           * @param       ctrl - [in] valid control data
    826           *
    827           * @return      none
    828           */
    829          void ZDSecMgrCtrlRelease( ZDSecMgrCtrl_t* ctrl )
    830          {
    831            // should always be enough entry control data
    832            ctrl->state = ZDSECMGR_CTRL_NONE;
    833          }
    834          #endif // defined ( ZDO_COORDINATOR )
    835          #endif // defined ( ZDSECMGR_COMMERCIAL )
    836          
    837          #if defined ( ZDSECMGR_COMMERCIAL )
    838          #if defined ( ZDO_COORDINATOR )
    839          /******************************************************************************
    840           * @fn          ZDSecMgrCtrlLookup
    841           *
    842           * @brief       Lookup control data.
    843           *
    844           * @param       entry - [in] valid entry data
    845           * @param       ctrl  - [out] control data - NULL if not found
    846           *
    847           * @return      none
    848           */
    849          void ZDSecMgrCtrlLookup( ZDSecMgrEntry_t* entry, ZDSecMgrCtrl_t** ctrl )
    850          {
    851            uint16 index;
    852          
    853          
    854            // initialize search results
    855            *ctrl = NULL;
    856          
    857            // verify data is available
    858            if ( ZDSecMgrCtrlData != NULL )
    859            {
    860              for ( index = 0; index < ZDSECMGR_CTRL_MAX; index++ )
    861              {
    862                // make sure control data is in use
    863                if ( ZDSecMgrCtrlData[index].state != ZDSECMGR_CTRL_NONE )
    864                {
    865                  // check for entry match
    866                  if ( ZDSecMgrCtrlData[index].entry == entry )
    867                  {
    868                    // return this control data
    869                    *ctrl = &ZDSecMgrCtrlData[index];
    870          
    871                    // break from loop
    872                    index = ZDSECMGR_CTRL_MAX;
    873                  }
    874                }
    875              }
    876            }
    877          }
    878          #endif // defined ( ZDO_COORDINATOR )
    879          #endif // defined ( ZDSECMGR_COMMERCIAL )
    880          
    881          
    882          #if defined ( ZDSECMGR_COMMERCIAL )
    883          #if defined ( ZDO_COORDINATOR )
    884          /******************************************************************************
    885           * @fn          ZDSecMgrCtrlSet
    886           *
    887           * @brief       Set control data.
    888           *
    889           * @param       device - [in] valid device data
    890           * @param       entry  - [in] valid entry data
    891           * @param       ctrl   - [in] valid control data
    892           *
    893           * @return      none
    894           */
    895          void ZDSecMgrCtrlSet( ZDSecMgrDevice_t* device,
    896                                ZDSecMgrEntry_t*  entry,
    897                                ZDSecMgrCtrl_t*   ctrl )
    898          {
    899            // set control date
    900            ctrl->parentAddr = device->parentAddr;
    901            ctrl->secure     = device->secure;
    902            ctrl->entry      = entry;
    903            ctrl->state      = ZDSECMGR_CTRL_INIT;
    904            ctrl->cntr       = 0;
    905          
    906            // set device pointer
    907            device->ctrl = ctrl;
    908          }
    909          #endif // defined ( ZDO_COORDINATOR )
    910          #endif // defined ( ZDSECMGR_COMMERCIAL )
    911          
    912          #if defined ( ZDSECMGR_COMMERCIAL )
    913          /******************************************************************************
    914           * @fn          ZDSecMgrCtrlAdd
    915           *
    916           * @brief       Add control data.
    917           *
    918           * @param       device - [in] valid device data
    919           * @param       entry  - [in] valid entry data
    920           *
    921           * @return      none
    922           */
    923          ZStatus_t ZDSecMgrCtrlAdd( ZDSecMgrDevice_t* device, ZDSecMgrEntry_t*  entry )
    924          {
    925            //---------------------------------------------------------------------------
    926            #if defined ( ZDO_COORDINATOR )
    927            //---------------------------------------------------------------------------
    928            ZStatus_t status;
    929            uint16    index;
    930          
    931          
    932            // initialize results
    933            status = ZNwkUnknownDevice;
    934          
    935            // verify data is available
    936            if ( ZDSecMgrCtrlData != NULL )
    937            {
    938              // look for an empty slot
    939              for ( index = 0; index < ZDSECMGR_CTRL_MAX; index++ )
    940              {
    941                if ( ZDSecMgrCtrlData[index].state == ZDSECMGR_CTRL_NONE )
    942                {
    943                  // return successful results
    944                  ZDSecMgrCtrlSet( device, entry, &ZDSecMgrCtrlData[index] );
    945          
    946                  status = ZSuccess;
    947          
    948                  // break from loop
    949                  index = ZDSECMGR_CTRL_MAX;
    950                }
    951              }
    952            }
    953          

⌨️ 快捷键说明

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