From e970474420a24d3860e3befe1f6c202d8b7fd586 Mon Sep 17 00:00:00 2001 From: dianke3yu <343528259@qq.com> Date: Fri, 13 Jun 2025 16:18:06 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B2=A1=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boarding_service/wifi_boarding_utils.c | 230 +----------------- 1 file changed, 7 insertions(+), 223 deletions(-) diff --git a/bk_aidk/projects/beken_wss_paopao/main/boarding_service/wifi_boarding_utils.c b/bk_aidk/projects/beken_wss_paopao/main/boarding_service/wifi_boarding_utils.c index cea2669d..cc8ab64b 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/boarding_service/wifi_boarding_utils.c +++ b/bk_aidk/projects/beken_wss_paopao/main/boarding_service/wifi_boarding_utils.c @@ -20,10 +20,6 @@ #include "wifi_boarding_internal.h" #include "wifi_boarding_utils.h" -//helloyifa -#include "../iot/iot_sleep_helper.h" -#include "../iot/iot_lamp.h" -#include "spi_led.h" static ble_boarding_info_t *s_ble_boarding_info = NULL; static beken_semaphore_t s_ble_sema = NULL; @@ -453,11 +449,10 @@ static int32_t wifi_boarding_gatts_cb(bk_gatts_cb_event_t event, bk_gatt_if_t ga bk_ble_gatts_get_attr_value(param->handle, &buff_size, &tmp_buff); wboard_loge("state: %s", param->value); - char recv [param->len]; - os_memcpy((char *)recv, param->value, param->len); - + + //�������ܵ���ָ�� char* ptr; - if (NULL != (ptr = strstr((char *)recv, "AT+SSID"))){ + if (NULL != (ptr = strstr((char *)param->value, "AT+SSID"))){ wboard_loge("start scan wifi!!"); //�ص� if (s_ble_boarding_info && s_ble_boarding_info->scan_wifi_cb) @@ -465,7 +460,7 @@ static int32_t wifi_boarding_gatts_cb(bk_gatts_cb_event_t event, bk_gatt_if_t ga s_ble_boarding_info->scan_wifi_cb(); } } - if (NULL != (ptr = strstr((char *)recv, "AT+SCAN"))){ + if (NULL != (ptr = strstr((char *)param->value, "AT+SCAN"))){ wboard_loge("start scan wifi!!"); //�ص� if (s_ble_boarding_info && s_ble_boarding_info->scan_wifi_cb) @@ -474,14 +469,14 @@ static int32_t wifi_boarding_gatts_cb(bk_gatts_cb_event_t event, bk_gatt_if_t ga } } - if (NULL != (ptr = strstr((char *)recv, "AT+WIFI"))){ + if (NULL != (ptr = strstr((char *)param->value, "AT+WIFI"))){ wboard_loge("recv wifi info!!"); char m_ssid[64] = {0}; char m_pwd [64] = {0}; memset(m_ssid,0,sizeof(m_ssid)); memset(m_pwd,0,sizeof(m_pwd)); - sscanf((char *)recv,"AT+WIFI=%[^,],%[^,]", m_ssid,m_pwd); + sscanf((char *)param->value,"AT+WIFI=%[^,],%[^,]", m_ssid,m_pwd); wboard_loge("%s %s ",m_ssid,m_pwd); //����SSID if(strlen(m_ssid) > 0){ @@ -527,221 +522,10 @@ static int32_t wifi_boarding_gatts_cb(bk_gatts_cb_event_t event, bk_gatt_if_t ga } } - /** - * 7.蓝牙控制音量 - * AT+VOLUME=100 (0-100) - * 回复:AT+VOLUME=OK - */ - else if (NULL != (ptr = strstr((char *)recv, "AT+VOLUME"))) - { - wboard_loge("AT+VOLUME!!"); - uint8_t str_respone[32] = {0}; - memset(str_respone, 0, sizeof(str_respone)); - - char volume[12] = {0}; - memset(volume, 0, sizeof(volume)); - sscanf((char *)recv, "AT+VOLUME=%s", volume); - if (strcmp(volume, "?") == 0) - { - // 返回当前音量 - } - else - { - // 设置音量 - // int v = atoi(volume); - } - sprintf((char *)str_respone, "%s", "AT+VOLUME=OK"); - wifi_boarding_notify(str_respone, strlen((char *)&str_respone)); - } - /** - * 蓝牙控制灯光亮度 - * AT+BRIGHT=100 (0-100) - * 回复:AT+BRIGHT=OK - */ - else if (NULL != (ptr = strstr((char *)recv, "AT+BRIGHT"))) - { - wboard_loge("AT+BRIGHT!!"); - uint8_t str_respone[32] = {0}; - memset(str_respone, 0, sizeof(str_respone)); - char bright[12] = {0}; - memset(bright, 0, sizeof(bright)); - sscanf((char *)recv, "AT+BRIGHT=%s", bright); - if (strcmp(bright, "?") == 0) - { - // 返回当前亮度 - sprintf((char *)str_respone, "%s", "AT+BRIGHT=100"); - wifi_boarding_notify(str_respone, strlen((char *)&str_respone)); - } - else - { - int brightness = atoi(bright); - ws2812_set_all_led_brightness(brightness); - sprintf((char *)str_respone, "%s", "AT+BRIGHT=OK"); - wifi_boarding_notify(str_respone, strlen((char *)&str_respone)); - } - } - /** - * 蓝牙控制打开关闭助眠仪 - * AT+SLEEP_EN=1 (0-关闭 1-打开) - * 回复:AT+SLEEP_EN=OK - */ - else if (NULL != (ptr = strstr((char *)recv, "AT+SLEEP_EN"))) - { - wboard_loge("AT+SLEEP_EN!!"); - uint8_t str_respone[32] = {0}; - memset(str_respone, 0, sizeof(str_respone)); - - char enable[12] = {0}; - memset(enable, 0, sizeof(enable)); - sscanf((char *)recv, "AT+SLEEP_EN=%s", enable); - if (strcmp(enable, "?") == 0) - { - sprintf((char *)str_respone, "%s", "AT+SLEEP_EN=1"); - } - else - { - int open = atoi(enable); - if(open){ - sleep_helper_open(); - }else{ - sleep_helper_close(); - } - sprintf((char *)str_respone, "%s", "AT+SLEEP_EN=OK"); - } - wifi_boarding_notify(str_respone, strlen((char *)&str_respone)); - } - /** - * 蓝牙控制助眠仪模式 - * 发送:AT+SLEEP_MODE=1 (1-3 代表3种模式) - * 回复:AT+SLEEP_MODE=OK - */ - else if (NULL != (ptr = strstr((char *)recv, "AT+SLEEP_MODE"))) - { - wboard_loge("AT+SLEEP_MODE!!"); - uint8_t str_respone[32] = {0}; - memset(str_respone, 0, sizeof(str_respone)); - char mode[12] = {0}; - memset(mode, 0, sizeof(mode)); - sscanf((char *)recv, "AT+SLEEP_MODE=%s", mode); - if (strcmp(mode, "?") == 0) - { - sprintf((char *)str_respone, "%s", "AT+SLEEP_MODE=1"); - } - else - { - int v = atoi(mode); - switch(v){ - case 1: - sleep_helper_set_mode(SLEEP_MODE_1); - break; - case 2: - sleep_helper_set_mode(SLEEP_MODE_1); - break; - case 3: - sleep_helper_set_mode(SLEEP_MODE_1); - break; - } - sprintf((char *)str_respone, "%s", "AT+SLEEP_MODE=OK"); - } - wifi_boarding_notify(str_respone, strlen((char *)&str_respone)); - } - - /** - * 蓝牙控制助眠仪超时时间 - * 发送:AT+SLEEP_TIMEOUT=1 (0-30 分钟) - * 回复:AT+SLEEP_TIMEOUT=OK - */ - else if (NULL != (ptr = strstr((char *)recv, "AT+SLEEP_TIMEOUT"))) - { - wboard_loge("AT+SLEEP_TIMEOUT!!"); - uint8_t str_respone[32] = {0}; - memset(str_respone, 0, sizeof(str_respone)); - char mode[12] = {0}; - memset(mode, 0, sizeof(mode)); - sscanf((char *)recv, "AT+SLEEP_TIMEOUT=%s", mode); - if (strcmp(mode, "?") == 0) - { - sprintf((char *)str_respone, "%s", "AT+SLEEP_TIMEOUT=10"); - } - else - { - int v = atoi(mode); - sleep_helper_set_timeout(v); - sprintf((char *)str_respone, "%s", "AT+SLEEP_MODE=OK"); - } - wifi_boarding_notify(str_respone, strlen((char *)&str_respone)); - } - /* - *11.蓝牙控制助眠仪工作等级 - 发送: AT+SLEEP_LEVEL=1 (1-9 代表9个等级强度) - 回复: AT+SLEEP_LEVEL=OK - */ - else if (NULL != (ptr = strstr((char *)recv, "AT+SLEEP_LEVEL"))) - { - wboard_loge("AT+SLEEP_LEVEL!!"); - uint8_t str_respone[32] = {0}; - memset(str_respone, 0, sizeof(str_respone)); - char level[12] = {0}; - memset(level, 0, sizeof(level)); - sscanf((char *)recv, "AT+SLEEP_LEVEL=%s", level); - if (strcmp(level, "?") == 0) - { - sprintf((char *)str_respone, "%s", "AT+SLEEP_LEVEL=1"); - } - else - { - int v = atoi(level); - sleep_helper_set_level(v); - sprintf((char *)str_respone, "%s", "AT+SLEEP_LEVEL=OK"); - } - wifi_boarding_notify(str_respone, strlen((char *)&str_respone)); - } - /** - * 蓝牙控制OTA + - */ - else if (NULL != (ptr = strstr((char *)recv, "AT+OTA"))) - { - wboard_loge("AT+OTA!!"); - uint8_t str_respone[32] = {0}; - memset(str_respone, 0, sizeof(str_respone)); - // char ota_url[128] = {0}; - // memset(ota_url, 0, sizeof(ota_url)); - // sscanf((char *)recv, "AT+OTA=%s", ota_url); - - // 2. 查找等号位置 - char *equal_pos = strchr((char *)param->value, '='); - if (equal_pos != NULL) - { - // 3. 计算等号后子串长度 - int len = strlen(equal_pos + 1); // +1跳过等号本身 - - // 4. 动态分配内存 - char *ota_url = (char *)malloc(len + 1); // +1存放结束符'\0' - - // 5. 复制子串并添加结束符 - strncpy(ota_url, equal_pos + 1, len); - ota_url[len] = '\0'; // 确保字符串终止 - - sprintf((char *)str_respone, "%s", "AT+OTA=OK"); - wifi_boarding_notify(str_respone, strlen((char *)&str_respone)); - if (strlen(ota_url) > 0) - { - wboard_loge("OTA-->%s", ota_url); - wboard_loge("OTA--len >%d", strlen(ota_url)); - ws2812_led_start_ota(); - lamp_http_ota_start(ota_url); - free(ota_url); - } - } - - // int v = atoi(mode); - // sleep_helper_set_timeout(v); - } //wifi_boarding_notify(param->value,param->len); } - - else { wboard_loge("invalid write handle %d", param->handle); From 74bc2c078c22de80a9a269fae5f60b6a6c99cc05 Mon Sep 17 00:00:00 2001 From: dianke3yu <343528259@qq.com> Date: Fri, 13 Jun 2025 18:02:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E6=9D=A1?= =?UTF-8?q?=E8=93=9D=E7=89=99=E5=8D=8F=E8=AE=AE=E4=BA=AE=E7=81=AF10?= =?UTF-8?q?=E7=A7=92=E9=92=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boarding_service/wifi_boarding_utils.c | 12 ++++++++ .../projects/beken_wss_paopao/main/spi_led.c | 30 +++++++++++++++---- .../projects/beken_wss_paopao/main/spi_led.h | 1 + 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/bk_aidk/projects/beken_wss_paopao/main/boarding_service/wifi_boarding_utils.c b/bk_aidk/projects/beken_wss_paopao/main/boarding_service/wifi_boarding_utils.c index fac4fc64..84c52706 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/boarding_service/wifi_boarding_utils.c +++ b/bk_aidk/projects/beken_wss_paopao/main/boarding_service/wifi_boarding_utils.c @@ -715,6 +715,18 @@ static int32_t wifi_boarding_gatts_cb(bk_gatts_cb_event_t event, bk_gatt_if_t ga wifi_boarding_notify(str_respone, strlen((char *)&str_respone)); } } + + else if (NULL != (ptr = strstr((char *)recv, "AT+SOU_DEVICE"))) + { + wboard_loge("AT+SOU_DEVICE!!"); + ws2812_led_start_ota(); + + rtos_delay_milliseconds(10000); + ws2812_stop_led_start_ota(); + + + } + /** * 蓝牙控制OTA diff --git a/bk_aidk/projects/beken_wss_paopao/main/spi_led.c b/bk_aidk/projects/beken_wss_paopao/main/spi_led.c index 299e0352..0c5fabb7 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/spi_led.c +++ b/bk_aidk/projects/beken_wss_paopao/main/spi_led.c @@ -67,11 +67,19 @@ static uint8_t led_data[WS2812_LED_NUM *24*sizeof(uint8_t)]; static int ws2812_start = 0; + //static beken_timer_t timer_led_ota_handle; static int ota_led_state = 0; + static beken_thread_t ota_led_thread_hdl = NULL; + + + + + + static void ws2812_led_ota_task(void *arg){ while(ws2812_start){ @@ -84,9 +92,15 @@ static void ws2812_led_ota_task(void *arg){ } rtos_delay_milliseconds(100); } + + if(ota_led_thread_hdl) { + rtos_delete_thread(&ota_led_thread_hdl); + ota_led_thread_hdl = NULL; + } } void ws2812_led_start_ota(){ + ws2812_start = 1; bk_err_t ret = BK_OK; ret = rtos_create_thread(&ota_led_thread_hdl, 4, @@ -169,15 +183,15 @@ static void spi_led_task(void *arg) //唤醒词 灯效果 case TYPE_WAKEUP: ws2812_set_all_led(current_color,0); - ws2812_set_all_led(current_color,current_brightness); + ws2812_set_all_led(current_color,1); rtos_delay_milliseconds(100); ws2812_set_all_led(current_color,0); rtos_delay_milliseconds(100); - ws2812_set_all_led(current_color,current_brightness); + ws2812_set_all_led(current_color,1); rtos_delay_milliseconds(100); ws2812_set_all_led(current_color,0); rtos_delay_milliseconds(100); - ws2812_set_all_led(current_color,current_brightness); + ws2812_set_all_led(current_color,1); break; case TYPE_OFF: ws2812_set_all_led(current_color,0); @@ -319,9 +333,9 @@ void ws2812_led_asr_wakeup(){ if (spi_led_msg_que != NULL) { - //ws2812_msg_t msg; - //msg.type = TYPE_WAKEUP; - //rtos_push_to_queue(&spi_led_msg_que, &msg, BEKEN_NO_WAIT); + ws2812_msg_t msg; + msg.type = TYPE_WAKEUP; + rtos_push_to_queue(&spi_led_msg_que, &msg, BEKEN_NO_WAIT); } } @@ -371,3 +385,7 @@ void ws2812_led_clear_all(){ ws2812_set_all_led(0x000000,0); } + +void ws2812_stop_led_start_ota(){ + ws2812_start = 0; +} diff --git a/bk_aidk/projects/beken_wss_paopao/main/spi_led.h b/bk_aidk/projects/beken_wss_paopao/main/spi_led.h index 052d47a1..c8928abc 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/spi_led.h +++ b/bk_aidk/projects/beken_wss_paopao/main/spi_led.h @@ -37,6 +37,7 @@ void ws2812_set_all_led_brightness(int brightness); void ws2812_led_asr_wakeup(); void ws2812_led_change_color(); void ws2812_led_start_ota(); +void ws2812_stop_led_start_ota(); #ifdef __cplusplus } #endif