添加与app对接协议

This commit is contained in:
OPTOC
2025-09-09 18:16:48 +08:00
parent fb05542e80
commit f081dc891c
8 changed files with 523 additions and 7 deletions

View File

@@ -2,6 +2,7 @@
sertrf_t sertrf;
void sertrf_init(void)
{
uint8_t res = 0;
@@ -16,6 +17,9 @@ void sertrf_init(void)
work_rgb_led_start();
//按键初始化
button_work_init();
// 协议初始化
sertrf.resend_read_mutex = xSemaphoreCreateMutex();
resend_init(&sertrf.resend_device, resend_send, resend_recv, resend_get_length,resend_user_parse);
//线程启动
sertrf_start();
}
@@ -50,7 +54,7 @@ void embedded_thread(void* arg)
{
uint8_t data[embedded_size ];
// data[embedded_size] = '\0';
embedded_device_read(&sertrf.device, data, embedded_size);
embedded_device_read(&sertrf.device, data, embedded_size,0);
Protocol_buf_decode(data, embedded_size);
// SYS_LOG_INF("data : %s", data);
@@ -199,4 +203,58 @@ void printf_chill_time(uint8_t chill_time, uint16_t type)
type_cnt_time[chill_time] = 0;
}
last_time[chill_time] = now_time;
}
int resend_send(void* data, uint16_t len, int timeout)
{
return embedded_device_write(&sertrf.device, data, len);
}
int resend_recv(void* data, uint16_t len, int timeout)
{
int ret = 0;
if (xSemaphoreTake(sertrf.resend_read_mutex, portMAX_DELAY) == pdTRUE)
{
ret = embedded_device_read(&sertrf.device, data, len,timeout);
xSemaphoreGive(sertrf.resend_read_mutex);
}
return ret;
}
int resend_get_length(void)
{
return embedded_device_get_rx_length(&sertrf.device);
}
void resend_user_parse(void *resend_device)
{
resend_device_t* resend_parse = (resend_device_t*)resend_device;
switch(resend_parse->rx_frame.cmd)
{
case RESEND_CMD_OTA_START:
{
if(!sertrf.resend_device.status.resend_flag)
otau_init(&sertrf.otau);
resend_send_cmd(resend_device, RESEND_CMD_ACK, 0);
}
break;
case RESEND_CMD_OTA_DATA:
{
if(!sertrf.resend_device.status.resend_flag)
{
SYS_LOG_DBG("KUYI_CMD_OTA_DATA");
otau_write(&sertrf.otau, sertrf.resend_device.rx_frame.payload, sertrf.resend_device.rx_frame.len);
}
resend_send_cmd(resend_device, RESEND_CMD_ACK, 0);
}
break;
case RESEND_CMD_OTA_END:
{
if(!sertrf.resend_device.status.resend_flag)
otau_end(&sertrf.otau);
resend_send_cmd(resend_device, RESEND_CMD_ACK, 0);
os_thread_sleep(2);
esp_restart();
}
break;
}
}