g0b1vetx-board/Board/network/netdrv.c
2023-11-30 08:10:01 +08:00

162 lines
2.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <cat1drv.h>
#include <rtthread.h>
#include <os-app.h>
#include "main.h"
#include "usart-board.h"
#include <string.h>
#include <stdlib.h>
#include <easyflash.h>
#include "netdrv.h"
#include "dtu-board.h"
extern netDrv_t g_cat1Drv;
extern netDrv_t g_MJEth1Drv;
extern netDrv_t g_dtuDrv;
netDrv_t * g_netDrv;
static int mysock = 0;
static int offset = 0;
void netdrv_init (void)
{
char * drv = ef_get_env ("net_drv"); // 读取网络类型
if (rt_memcmp ("dtu", drv, 3) == 0) // 驱动程序位DTU模式就是不通过本地配置直接透传
{
g_netDrv = &g_dtuDrv;
DTUThreadStart();
}
else if (rt_memcmp ("ec200", drv, 4) == 0)
{
g_netDrv = &g_cat1Drv;
CAT1ThreadStart();
}
// else if (rt_memcmp ("eth", drv, 3) == 0)
// {
// g_netDrv = &g_MJEth1Drv;
// MJEth1ThreadStart();
// }
else
{
}
}
void netdrv_service_tx (uint8_t * data, int length)
{
char * drv = ef_get_env ("net_drv"); // 读取网络类型
if (rt_memcmp ("dtu", drv, 3) == 0) // 驱动程序位DTU模式就是不通过本地配置直接透传
{
dtu_service_tx ( (char *) data, length);
}
else if (rt_memcmp ("ec200", drv, 4) == 0)
{
cat1_service_tx ( (char *) data, length);
}
else if (rt_memcmp ("eth", drv, 3) == 0)
{
}
else
{
}
}
void netdrv_reset (void)
{
char * drv = ef_get_env ("net_drv"); // 读取网络类型
if (rt_memcmp ("dtu", drv, 3) == 0) // 驱动程序位DTU模式就是不通过本地配置直接透传
{
dtu_netreset();
}
else if (rt_memcmp ("ec200", drv, 4) == 0)
{
//cat1_service_tx ( (char *) data, length);
}
else if (rt_memcmp ("eth", drv, 3) == 0)
{
}
else
{
}
}
int netdrv_getdata (unsigned char* buf, int count)
{
int tsize = 0;
char * drv = ef_get_env ("net_drv"); // 读取网络类型
if (rt_memcmp ("dtu", drv, 3) == 0) // 驱动程序位DTU模式就是不通过本地配置直接透传
{
if (offset + count > g_netDrv->rx_size)
{
tsize = g_netDrv->rx_size - offset;
rt_memcpy (buf, &g_netDrv->rxbuff[offset], tsize);
}
else
{
tsize = count;
rt_memcpy (buf, &g_netDrv->rxbuff[offset], tsize);
}
}
else if (rt_memcmp ("ec200", drv, 4) == 0)
{
if (offset + count > g_netDrv->rx_size)
{
tsize = g_netDrv->rx_size - offset;
rt_memcpy (buf, &g_netDrv->rxbuff[offset], tsize);
}
else
{
tsize = count;
rt_memcpy (buf, &g_netDrv->rxbuff[offset], tsize);
}
}
else if (rt_memcmp ("eth", drv, 3) == 0)
{
}
else
{
}
offset += count;
return tsize;
}
int netdrv_clear (void)
{
char * drv = ef_get_env ("net_drv"); // 读取网络类型
if (rt_memcmp ("dtu", drv, 3) == 0) // 驱动程序位DTU模式就是不通过本地配置直接透传
{
MX_UART_Clear (&g_ETH1Drv);
}
else if (rt_memcmp ("ec200", drv, 4) == 0)
{
//rt_memcpy(buf, &g_cat1Drv.rxbuff[offset], count);
}
else if (rt_memcmp ("eth", drv, 3) == 0)
{
}
else
{
}
offset = 0;
return 0;
}