136 lines
4.1 KiB
C
136 lines
4.1 KiB
C
#include "sertrf.h"
|
|
|
|
|
|
sertrf_t sertrf;
|
|
void sertrf_init(void)
|
|
{
|
|
uint8_t res = 0;
|
|
res = device_init(&sertrf.device);
|
|
if(res)
|
|
{
|
|
SYS_LOG_WRN("device init error");
|
|
}
|
|
// 协议初始化
|
|
Protocol_init(PORT_LINUX_SBDATA, sertrf.device.embedded_device);
|
|
//RGB灯
|
|
work_rgb_led_start();
|
|
//按键初始化
|
|
button_work_init();
|
|
//线程启动
|
|
sertrf_start();
|
|
}
|
|
void sertrf_start(void)
|
|
{
|
|
os_thread_create(&sertrf.embedded_thread,
|
|
"embedded_thread",
|
|
embedded_thread,
|
|
NULL,
|
|
4096,
|
|
20);
|
|
}
|
|
void embedded_thread(void* arg)
|
|
{
|
|
while(true)
|
|
{
|
|
uint32_t embedded_size = embedded_device_get_rx_length(&sertrf.device);
|
|
if(embedded_size > 0)
|
|
{
|
|
uint8_t data[embedded_size ];
|
|
// data[embedded_size] = '\0';
|
|
embedded_device_read(&sertrf.device, data, embedded_size);
|
|
|
|
Protocol_buf_decode(data, embedded_size);
|
|
// SYS_LOG_INF("data : %s", data);
|
|
pc_device_write(&sertrf.device, data, embedded_size);
|
|
}
|
|
|
|
uint32_t pc_size = pc_device_get_rx_length(&sertrf.device);
|
|
|
|
if(pc_size > 0)
|
|
{
|
|
uint8_t data[pc_size];
|
|
pc_device_read(&sertrf.device, data, pc_size);
|
|
// SYS_LOG_INF("data : %s", data);
|
|
embedded_device_write(&sertrf.device, data, pc_size);
|
|
}
|
|
// printf_chill_time(10,1000);
|
|
pc_link_rgb_color(&sertrf.device);
|
|
//需要添加一些延时,否则会卡死,导致看门狗复位
|
|
// vTaskDelay(( TickType_t ) 1000 / configTICK_RATE_HZ);
|
|
os_thread_sleep(1);
|
|
}
|
|
}
|
|
void pc_link_rgb_color(device_t* device)
|
|
{
|
|
static uint8_t last_connect = 255, last_wifi_mode = 0;
|
|
if(device->connect_pc != last_connect || last_wifi_mode != device->init_device.wifi_mode)
|
|
{
|
|
switch (device->connect_pc)
|
|
{
|
|
case DISCONNECT:
|
|
{
|
|
if(device->init_device.wifi_mode == WIFI_NETIF_MODE_AP)
|
|
rgb_color_change(0, RGB_COLOR_GREEN_WHITE);
|
|
else
|
|
rgb_color_change(0, RGB_COLOR_GREEN_PURPLE);
|
|
|
|
break;
|
|
}
|
|
case CONNECT_WIFI_TCP:
|
|
{
|
|
if(device->init_device.wifi_mode == WIFI_NETIF_MODE_AP)
|
|
rgb_color_change(0, RGB_COLOR_WHITE);
|
|
else
|
|
rgb_color_change(0, RGB_COLOR_PURPLE);
|
|
|
|
break;
|
|
}
|
|
case CONNECT_WIFI_UDP:
|
|
{
|
|
if(device->init_device.wifi_mode == WIFI_NETIF_MODE_AP)
|
|
rgb_color_change(0, RGB_COLOR_WHITE);
|
|
else
|
|
rgb_color_change(0, RGB_COLOR_PURPLE);
|
|
|
|
break;
|
|
}
|
|
case CONNECT_BLE:
|
|
rgb_color_change(0, RGB_COLOR_GREEN);
|
|
break;
|
|
}
|
|
last_connect = device->connect_pc;
|
|
last_wifi_mode = device->init_device.wifi_mode;
|
|
}
|
|
if(device->connect_pc == DISCONNECT)
|
|
{
|
|
rgb_update_cyle(50);
|
|
}
|
|
else if(device->connect_pc){
|
|
rgb_update_cyle(888);
|
|
}else{
|
|
rgb_update_cyle(500);
|
|
}
|
|
}
|
|
|
|
void printf_chill_time(uint8_t chill_time, uint16_t type)
|
|
{
|
|
static size_t last_time[24] = {0};
|
|
static uint16_t cnt[24] = {0};
|
|
static uint32_t type_cnt_time[24] = {0};
|
|
size_t now_time = os_get_sys_time();
|
|
cnt[chill_time]++;
|
|
type_cnt_time[chill_time] += now_time - last_time[chill_time];
|
|
if(cnt[chill_time] % type == 0 && type_cnt_time[chill_time] / type >= now_time - last_time[chill_time] - 1)
|
|
{
|
|
SYS_LOG_INF("TIME_CHILL%d : %d : %d",chill_time, now_time - last_time[chill_time], type_cnt_time[chill_time]);
|
|
cnt[chill_time] = 0;
|
|
type_cnt_time[chill_time] = 0;
|
|
}
|
|
else if(cnt[chill_time] % type == 0)
|
|
{
|
|
SYS_LOG_WRN("TIME_CHILL%d : %d : %d",chill_time, now_time - last_time[chill_time], type_cnt_time[chill_time]);
|
|
cnt[chill_time] = 0;
|
|
type_cnt_time[chill_time] = 0;
|
|
}
|
|
last_time[chill_time] = now_time;
|
|
} |