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

133 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"
#if !defined(LOG_TAG)
#define LOG_TAG "CAT1"
#endif
#include <elog.h>
ALIGN (RT_ALIGN_SIZE)
static char thread_stack[4096];
static struct rt_thread thread;
static char tcprxbbuff[1200];
static char tcptxbbuff[1200];
static const uint8_t header[] = {0xed, 0xf2, 0xa3, 0x56, 0xca, 0xdb, 0x91, 0x84, 0xb0, 0xd7};
static const uint8_t readip[] = {0xed, 0xf2, 0xa3, 0x56, 0xca, 0xdb, 0x91, 0x84, 0xb0, 0xd7, 0x00, 0x00, 0x04};
netDrv_t g_ZS001Drv =
{
0, // 信号值
"", // iccid
Init, // 状态
tcprxbbuff, // 接受缓存
0, // 接受数据长度
tcptxbbuff, // 发送数据缓存
0, // 发送数据长度
};
static void zs001_rx_done (void)
{
rt_event_send (gUartEvents, EVENT_UART_ETH1_RX);
}
static int zs001_packet_commad (int type, int loc, int size, char * data)
{
int index = 0;
for (int i = 0; i < 10; i++)
{
data[index++] = header[i];
}
data[index++] = type;
data[index++] = loc;
data[index++] = size;
return index;
}
static void thread_entry (void * argument)
{
// char at_cmd[128] = {NULL};
// char ipaddr[32] = {NULL};
// int ipport;
// char *p;
// int retry = 0;
// char send_data[32];
// int size = 0;
// size = zs001_packet_commad(0,)
// p = ef_get_env ("mqtt_addr");
// rt_strncpy (ipaddr, p, rt_strlen (p));
// p = ef_get_env ("mqtt_port");
// ipport = atoi (p);
//rt_sprintf (at_cmd, "AT+QIOPEN=1,0,\"TCP\",\"%s\",%d,0,0\r", ipaddr, ipport);
g_ETH1Drv.rxdone = zs001_rx_done;
g_ETH1Drv.BaudRate = 115200;
// 启动4G 模块电源
// 拉高4G 模块复位
MX_UART_Init (&g_ETH1Drv);
HAL_GPIO_WritePin (ETH_RST_GPIO_Port, ETH_RST_Pin, GPIO_PIN_SET);
rt_thread_mdelay (1000);
HAL_GPIO_WritePin (GPIOA, ETH_PW_Pin | GSM_PW_Pin, GPIO_PIN_SET);
rt_thread_mdelay (3000);
while (1)
{
// rt_kprintf("zs0010+++++++++++++++++++\r\n");
MX_UART_PutBuffer (&g_ETH1Drv, (char *) readip, 13) ;
// 发送数据
if (RT_EOK == rt_event_recv (gUartEvents, EVENT_UART_ETH1_RX, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, 2000, RT_NULL)) // 需要发送数据
{
for (int i = 0 ; i < g_ETH1Drv.rx_size; i++)
{
rt_kprintf ("%02X", g_ETH1Drv.rx_buffer[i]);
}
rt_kprintf ("\r\n");
MX_UART_Clear (&g_ETH1Drv) ;
}
rt_thread_mdelay (3000);
}
}
void ZS001ThreadStart (void)
{
/* 创建线程1名称是thread1入口是thread1_entry */
rt_thread_init (&thread, "zs001_thread",
thread_entry, RT_NULL,
&thread_stack[0],
sizeof (thread_stack),
ZS001_THREAD_PRIORITY, ZS001_THREAD_TIMESLICE);
rt_thread_startup (&thread);
return ;
}