/**
 *@file    sr_net_adapter.c
 *@brief   网络适配器管理接口
 *@details 提供网络适配器注册、查找等功能的具体实现
 *@copyright Copyright (c) 2024 lierda. All rights reserved.
 *@author  Lierda-RDC
 *@date    2024-04-01
 *@example ZhaoyangSDK\example\component\netadp_example.c
 */


#include "sr_net_adapter.h"
#include "sr_osal.h"
#include "string.h"
#include "sr_log.h"


static os_list_node_t gs_netAdapterList = OS_LIST_INIT(gs_netAdapterList);


SR_NET_ADP_T *SR_NetAdpFind(const char *name)
{
	SR_NET_ADP_T *adp = SR_NULL;

    SR_OsEnterCritical();

    os_list_for_each_entry(adp, &gs_netAdapterList, SR_NET_ADP_T, list)
    {
        if (0 == strncmp(adp->name, name, 16))
        {
            SR_OsExitCritical();
					
			return adp;  
            
        }
    }

    SR_OsExitCritical();
    return SR_NULL;
}




int SR_NetAdpRegister(SR_NET_ADP_T *dev)
{

    if (dev == SR_NULL)
    {
        return SR_INVALID;
    }

    if ((SR_NULL == dev->name) || (SR_NULL != SR_NetAdpFind(dev->name)))
    {
        return SR_INVALID;
    }

    SR_OsEnterCritical();

    os_list_add(&gs_netAdapterList, &dev->list);
   
    SR_OsExitCritical();

    return SR_OK;
}


