update: remove old bl616 wifi driver, add new api

Signed-off-by: sakumisu <1203593632@qq.com>
This commit is contained in:
sakumisu
2025-12-03 17:26:50 +08:00
parent 670bde3671
commit 006123c296
5 changed files with 182 additions and 108 deletions

182
demo/usbh_bl616_wifi_cli.c Normal file
View File

@@ -0,0 +1,182 @@
#include "usbh_core.h"
#include "usbh_cdc_acm.h"
#include "shell.h"
static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t cdc_buffer[8 * 1024];
int wifi_scan(int argc, char **argv)
{
struct usbh_cdc_acm *cdc_acm_class = usbh_find_class_instance("/dev/ttyACM0");
uint32_t len;
int ret;
if (cdc_acm_class == NULL) {
printf("cdc acm class not found\r\n");
return -1;
}
len = snprintf((char *)cdc_buffer, sizeof(cdc_buffer), "ap_scan\r\n");
ret = usbh_cdc_acm_bulk_out_transfer(cdc_acm_class, cdc_buffer, len, 3000);
if (ret < 0) {
printf("wifi scan failed1, ret:%d\r\n", ret);
return -1;
}
ret = usbh_cdc_acm_bulk_in_transfer(cdc_acm_class, cdc_buffer, sizeof(cdc_buffer), 3000);
if (ret < 0) {
printf("wifi scan failed2, ret:%d\r\n", ret);
return -1;
}
cdc_buffer[ret] = '\0';
printf("%s\r\n", cdc_buffer);
return 0;
}
CSH_CMD_EXPORT(wifi_scan, wifi_scan);
int wifi_scan_result(int argc, char **argv)
{
struct usbh_cdc_acm *cdc_acm_class = usbh_find_class_instance("/dev/ttyACM0");
uint32_t len;
int ret;
if (cdc_acm_class == NULL) {
printf("cdc acm class not found\r\n");
return -1;
}
len = snprintf((char *)cdc_buffer, sizeof(cdc_buffer), "ap_scan_result {\"offset\":0, \"count\":0}\r\n");
ret = usbh_cdc_acm_bulk_out_transfer(cdc_acm_class, cdc_buffer, len, 3000);
if (ret < 0) {
printf("wifi scan failed1, ret:%d\r\n", ret);
return -1;
}
ret = usbh_cdc_acm_bulk_in_transfer(cdc_acm_class, cdc_buffer, sizeof(cdc_buffer), 3000);
if (ret < 0) {
printf("wifi scan failed2, ret:%d\r\n", ret);
return -1;
}
cdc_buffer[ret] = '\0';
printf("%s\r\n", cdc_buffer);
return 0;
}
CSH_CMD_EXPORT(wifi_scan_result, wifi_scan_result);
int wifi_connect(int argc, char **argv)
{
struct usbh_cdc_acm *cdc_acm_class = usbh_find_class_instance("/dev/ttyACM0");
uint32_t len;
int ret;
if (cdc_acm_class == NULL) {
printf("cdc acm class not found\r\n");
return -1;
}
if (argc < 3) {
printf("please input correct command: wifi_connect ssid password\r\n");
return -1;
}
len = snprintf((char *)cdc_buffer, sizeof(cdc_buffer), "ap_connect {\"ssid\":\"%s\", \"password\":\"%s\"}\r\n", argv[1], argv[2]);
ret = usbh_cdc_acm_bulk_out_transfer(cdc_acm_class, cdc_buffer, len, 3000);
if (ret < 0) {
printf("wifi connect failed1, ret:%d\r\n", ret);
return -1;
}
ret = usbh_cdc_acm_bulk_in_transfer(cdc_acm_class, cdc_buffer, sizeof(cdc_buffer), 3000);
if (ret < 0) {
printf("wifi connect failed2, ret:%d\r\n", ret);
return -1;
}
cdc_buffer[ret] = '\0';
printf("%s\r\n", cdc_buffer);
return 0;
}
CSH_CMD_EXPORT(wifi_connect, wifi_connect);
int wifi_disconnect(int argc, char **argv)
{
struct usbh_cdc_acm *cdc_acm_class = usbh_find_class_instance("/dev/ttyACM0");
uint32_t len;
int ret;
if (cdc_acm_class == NULL) {
printf("cdc acm class not found\r\n");
return -1;
}
len = snprintf((char *)cdc_buffer, sizeof(cdc_buffer), "ap_disconnect\r\n");
ret = usbh_cdc_acm_bulk_out_transfer(cdc_acm_class, cdc_buffer, len, 3000);
if (ret < 0) {
printf("wifi disconnect failed1, ret:%d\r\n", ret);
return -1;
}
ret = usbh_cdc_acm_bulk_in_transfer(cdc_acm_class, cdc_buffer, sizeof(cdc_buffer), 3000);
if (ret < 0) {
printf("wifi disconnect failed2, ret:%d\r\n", ret);
return -1;
}
cdc_buffer[ret] = '\0';
printf("%s\r\n", cdc_buffer);
return 0;
}
CSH_CMD_EXPORT(wifi_disconnect, wifi_disconnect);
int wifi_status(int argc, char **argv)
{
struct usbh_cdc_acm *cdc_acm_class = usbh_find_class_instance("/dev/ttyACM0");
uint32_t len;
int ret;
if (cdc_acm_class == NULL) {
printf("cdc acm class not found\r\n");
return -1;
}
len = snprintf((char *)cdc_buffer, sizeof(cdc_buffer), "ap_status\r\n");
ret = usbh_cdc_acm_bulk_out_transfer(cdc_acm_class, cdc_buffer, len, 3000);
if (ret < 0) {
printf("wifi status failed1, ret:%d\r\n", ret);
return -1;
}
ret = usbh_cdc_acm_bulk_in_transfer(cdc_acm_class, cdc_buffer, sizeof(cdc_buffer), 3000);
if (ret < 0) {
printf("wifi status failed2, ret:%d\r\n", ret);
return -1;
}
cdc_buffer[ret] = '\0';
printf("%s\r\n", cdc_buffer);
return 0;
}
CSH_CMD_EXPORT(wifi_status, wifi_status);
int wifi_version(int argc, char **argv)
{
struct usbh_cdc_acm *cdc_acm_class = usbh_find_class_instance("/dev/ttyACM0");
uint32_t len;
int ret;
if (cdc_acm_class == NULL) {
printf("cdc acm class not found\r\n");
return -1;
}
len = snprintf((char *)cdc_buffer, sizeof(cdc_buffer), "sys_version\r\n");
ret = usbh_cdc_acm_bulk_out_transfer(cdc_acm_class, cdc_buffer, len, 3000);
if (ret < 0) {
printf("wifi status failed1, ret:%d\r\n", ret);
return -1;
}
ret = usbh_cdc_acm_bulk_in_transfer(cdc_acm_class, cdc_buffer, sizeof(cdc_buffer), 3000);
if (ret < 0) {
printf("wifi status failed2, ret:%d\r\n", ret);
return -1;
}
cdc_buffer[ret] = '\0';
printf("%s\r\n", cdc_buffer);
return 0;
}
CSH_CMD_EXPORT(wifi_version, wifi_version);