This commit is contained in:
dianke3yu 2025-06-13 16:18:06 +08:00
parent 0c7475e0d3
commit e970474420

View File

@ -20,10 +20,6 @@
#include "wifi_boarding_internal.h" #include "wifi_boarding_internal.h"
#include "wifi_boarding_utils.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 ble_boarding_info_t *s_ble_boarding_info = NULL;
static beken_semaphore_t s_ble_sema = 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); bk_ble_gatts_get_attr_value(param->handle, &buff_size, &tmp_buff);
wboard_loge("state: %s", param->value); wboard_loge("state: %s", param->value);
char recv [param->len];
os_memcpy((char *)recv, param->value, param->len); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD>ָ<EFBFBD><D6B8>
char* ptr; char* ptr;
if (NULL != (ptr = strstr((char *)recv, "AT+SSID"))){ if (NULL != (ptr = strstr((char *)param->value, "AT+SSID"))){
wboard_loge("start scan wifi!!"); wboard_loge("start scan wifi!!");
//<2F>ص<EFBFBD> //<2F>ص<EFBFBD>
if (s_ble_boarding_info && s_ble_boarding_info->scan_wifi_cb) 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(); 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!!"); wboard_loge("start scan wifi!!");
//<2F>ص<EFBFBD> //<2F>ص<EFBFBD>
if (s_ble_boarding_info && s_ble_boarding_info->scan_wifi_cb) 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!!"); wboard_loge("recv wifi info!!");
char m_ssid[64] = {0}; char m_ssid[64] = {0};
char m_pwd [64] = {0}; char m_pwd [64] = {0};
memset(m_ssid,0,sizeof(m_ssid)); memset(m_ssid,0,sizeof(m_ssid));
memset(m_pwd,0,sizeof(m_pwd)); 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); wboard_loge("%s %s ",m_ssid,m_pwd);
//<2F><><EFBFBD><EFBFBD>SSID //<2F><><EFBFBD><EFBFBD>SSID
if(strlen(m_ssid) > 0){ 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); //wifi_boarding_notify(param->value,param->len);
} }
else else
{ {
wboard_loge("invalid write handle %d", param->handle); wboard_loge("invalid write handle %d", param->handle);