拜拜,再见等收到close后断开连接,你好小宝唤醒加判断,没联网就联网,联网了才会发打断

This commit is contained in:
dianke3yu 2025-05-24 11:34:07 +08:00
parent 50edb94a7e
commit 8e28595128
3 changed files with 48 additions and 19 deletions

View File

@ -1419,7 +1419,7 @@ void websocket_client_task(beken_thread_arg_t *thread_param)
BK_LOGE(TAG, "Client run iteration in a default state: %d\r\n", client->state);
break;
}
if (WEBSOCKET_STATE_CONNECTED == client->state) {
read_select = ws_tcp_poll_read(client, 1000); //Poll every 1000ms
if (read_select < 0) {
@ -1431,17 +1431,22 @@ void websocket_client_task(beken_thread_arg_t *thread_param)
rtos_delay_milliseconds(WEBSOCKET_RECONNECT_TIMEOUT_MS);
} else if (WEBSOCKET_STATE_CLOSING == client->state) {
BK_LOGE(TAG, " Waiting for TCP connection to be closed by the server\r\n");
int ret = ws_poll_connection_closed(&(client->sockfd), 1000);
if (ret == 0) {
// still waiting
break;
}
if (ret < 0) {
BK_LOGE(TAG, "Connection terminated while waiting for clean TCP close\r\n");
}
client->run = false;
client->state = WEBSOCKET_STATE_UNKNOW;
bk_websocket_client_dispatch_event(client, WEBSOCKET_EVENT_CLOSED, NULL, 0, -1);
ws_disconnect(client);//zhanyu
// int ret = ws_poll_connection_closed(&(client->sockfd), 1000);
// if (ret == 0) {
// // still waiting
// break;
// }
// if (ret < 0) {
// BK_LOGE(TAG, "Connection terminated while waiting for clean TCP close\r\n");
// }
// client->run = false;
// client->state = WEBSOCKET_STATE_UNKNOW;
// bk_websocket_client_dispatch_event(client, WEBSOCKET_EVENT_CLOSED, NULL, 0, -1);
break;
}
}

View File

@ -26,7 +26,7 @@
#include "bat_monitor.h"
#include "bk_ota_private.h"
#define TAG "app_evt"
#include "spi_led.h"//zhanyu
#include "spi_led.h" //zhanyu
#define LOGI(...) BK_LOGI(TAG, ##__VA_ARGS__)
#define LOGW(...) BK_LOGW(TAG, ##__VA_ARGS__)
#define LOGE(...) BK_LOGE(TAG, ##__VA_ARGS__)
@ -46,7 +46,9 @@ typedef struct
extern void lvgl_app_init(void);
extern void lvgl_app_deinit(void);
extern void beken_auto_run(void);
extern bool g_connected_flag; // zhanyu
static app_evt_info_t app_evt_info;
bk_err_t app_event_send_msg(uint32_t event, uint32_t param)
@ -66,7 +68,7 @@ bk_err_t app_event_send_msg(uint32_t event, uint32_t param)
return BK_FAIL;
}
extern bk_err_t audio_tras_init(void);
void app_event_asr_evt_callback(media_app_evt_type_t event, uint32_t param)
{
LOGD("asr event callback: %x\n", event);
@ -76,10 +78,20 @@ void app_event_asr_evt_callback(media_app_evt_type_t event, uint32_t param)
switch (event)
{
case MEDIA_APP_EVT_ASR_WAKEUP_IND:
bk_printf("MEDIA_APP_EVT_ASR_WAKEUP_IND_sent_abort_msg\n");
ws2812_led_asr_wakeup();
sent_abort_msg();//zhanyu
bk_printf("MEDIA_APP_EVT_ASR_WAKEUP_IND_sent_abort_msg\n");
if (g_connected_flag)
{ // zhanyu
sent_abort_msg();
}
else
{
bk_printf("beken_rtc_start~~~audio_tras_init\n");
beken_auto_run();
// audio_tras_init();
}
app_event_send_msg(APP_EVT_ASR_WAKEUP, 0);
break;

View File

@ -110,6 +110,8 @@ extern uint32_t volume;
extern uint32_t g_volume_gain[SPK_VOLUME_LEVEL];
extern app_aud_para_t app_aud_cust_para;
bk_err_t beken_rtc_stop(void);//zhanyu
#if CONFIG_WIFI_ENABLE
extern void rwnxl_set_video_transfer_flag(uint32_t video_transfer_flag);
#else
@ -748,7 +750,7 @@ static bk_err_t init_check_timer(void)
timer_initialized = true;
return 0;
}
//extern bk_err_t audio_tras_deinit(void);zhanyu
void rtc_websocket_event_handler(void *event_handler_arg, char *event_base, int32_t event_id, void *event_data)
{
bk_websocket_event_data_t *data = (bk_websocket_event_data_t *)event_data;
@ -769,11 +771,17 @@ void rtc_websocket_event_handler(void *event_handler_arg, char *event_base, int3
// rtc_websocket_send_text(client, (void *)(&audio_info), BEKEN_RTC_SEND_LISTEN);
break;
case WEBSOCKET_EVENT_DISCONNECTED:
bk_printf("WEBSOCKET_EVENT_DISCONNECTED~~~~\n");
LOGE("Disconnected from WebSocket server\r\n");
g_connected_flag = false;
__get_beken_rtc()->disconnecting_state++;
if (__get_beken_rtc()->disconnecting_state == 1)
if (__get_beken_rtc()->disconnecting_state == 1){
app_event_send_msg(APP_EVT_RTC_CONNECTION_LOST, 0);
}
beken_rtc_stop();//zhanyu
//audio_tras_deinit();
break;
case WEBSOCKET_EVENT_DATA:
LOGD("data from WebSocket server, len:%d op:%d\r\n", data->data_len, data->op_code);
@ -904,8 +912,11 @@ bk_err_t beken_rtc_stop(void)
return BK_OK;
}
static bk_err_t beken_rtc_start(void)
{
bk_printf("beken_rtc_start2222~~~\n");
bk_err_t ret = BK_OK;
if (rtc_runing)
@ -1020,3 +1031,4 @@ void cli_beken_rtc_test_cmd(char *pcWriteBuffer, int xWriteBufferLen, int argc,
cmd_fail:
cli_beken_rtc_help();
}