添加与app对接协议
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user