已裁剪掉逗猫棒的业务程序,原有的蓝牙转USB功能不受影响

This commit is contained in:
2026-07-24 12:26:52 +08:00
parent b3f06697a6
commit c843fb24e0
61 changed files with 2195 additions and 7393 deletions
+95 -155
View File
@@ -1,248 +1,188 @@
/******************************************************************************
* @file usr_le_adv.c
* @brief BLE broadcast / pair / reconnect (USB-BLE bridge, cat-toy logic removed)
* @author cyWu <1917507415@qq.com>
* @date 2026-07-24
* @version V1.0.0
* @history
* - V1.0.0, 2026-07-24, cyWu, trim cat-toy deps, keep bind/reconn adv
******************************************************************************/
#include "system/includes.h"
#include "app_config.h"
#include "asm/pwm_led.h"
#include "tone_player.h"
#include "ui_manage.h"
#include "app_main.h"
#include "app_task.h"
#include "asm/charge.h"
#include "app_power_manage.h"
#include "app_charge.h"
#include "user_cfg.h"
#include "audio.h"
#include "vm.h"
#include "bleproto.h"
#include "bleproto_api.h"
#include "bleproto.h"
#define LOG_TAG_CONST APP
#define LOG_TAG "[APP]"
#define LOG_ERROR_ENABLE
#define LOG_DEBUG_ENABLE
#define LOG_INFO_ENABLE
/* #define LOG_DUMP_ENABLE */
#define LOG_CLI_ENABLE
#include "debug.h"
extern u8 muti_adv_data[31];//={0};
extern u8 muti_adv_data[31];
extern u8 muti_adv_data_len;
extern u8 usr_get_full();
extern u16 usr_get_conn_service();
extern int muti_make_set_adv_data(u8* data,u8 data_len);
extern void usr_clear_plan();
extern int muti_make_set_adv_data(u8 *data, u8 data_len);
extern void usr_reset_device_sta();
extern u8 usr_get_ldoin_all();
extern void usr_set_adv_interval(u16 val);
extern u16 usr_get_adv_interval();
extern void ble_multi_trans_disconnect(void);
extern void ble_trans_module_enable(u8 flag);
extern u8 usr_get_ota_status();
extern void usr_ota_exit();
extern int muti_make_set_adv_data_updata();
void usr_ble_adv_updata();
void usr_ble_adv_init();
static int le_timer_handle=0;
static int le_timer_handle2=0;
extern void usr_led_w_out(u8 flag);
extern void usr_led_b_out(u8 flag);
extern u8 get_ldo5v_online_hw(void);
extern u8 usr_get_work_status();
extern void usr_printf_sta();
extern int muti_make_set_adv_data_updata();
static int le_timer_handle = 0;
void usr_get_pair_info()
{
int ret = 0xffff;
ret = syscfg_read(CFG_USER_PAIR_INFO, (u8 *)&usr_auth_data, sizeof(usr_auth_data));
if(ret<=0)
{
memset(&usr_auth_data,0x00,sizeof(usr_auth_data));
usr_auth_data.paired_flag=0;
int ret = syscfg_read(CFG_USER_PAIR_INFO, (u8 *)&usr_auth_data, sizeof(usr_auth_data));
if (ret <= 0) {
memset(&usr_auth_data, 0x00, sizeof(usr_auth_data));
usr_auth_data.paired_flag = 0;
syscfg_write(CFG_USER_PAIR_INFO, (u8 *)&usr_auth_data, sizeof(usr_auth_data));
}
}
void usr_write_pair_info()
{
usr_auth_data.paired_flag=1;
usr_auth_data.paired_flag = 1;
syscfg_write(CFG_USER_PAIR_INFO, (u8 *)&usr_auth_data, sizeof(usr_auth_data));
}
void usr_clear_pair_info()
{
printf("usr_clear_pair_info\n");
memset(&usr_auth_data,0x00,sizeof(usr_auth_data));
usr_auth_data.paired_flag=0;
memset(&usr_auth_data, 0x00, sizeof(usr_auth_data));
usr_auth_data.paired_flag = 0;
syscfg_write(CFG_USER_PAIR_INFO, (u8 *)&usr_auth_data, sizeof(usr_auth_data));
usr_clear_plan();
if(_usr_module_cfg.power_on_flag)sys_timeout_add(NULL,cpu_reset,600);
else sys_enter_soft_poweroff(NULL);
if (_usr_module_cfg.power_on_flag) {
sys_timeout_add(NULL, cpu_reset, 600);
} else {
sys_enter_soft_poweroff(NULL);
}
}
void usr_clear_pair_info_noreset()
{
printf("usr_clear_pair_info2\n");
memset(&usr_auth_data,0x00,sizeof(usr_auth_data));
usr_auth_data.paired_flag=0;
memset(&usr_auth_data, 0x00, sizeof(usr_auth_data));
usr_auth_data.paired_flag = 0;
syscfg_write(CFG_USER_PAIR_INFO, (u8 *)&usr_auth_data, sizeof(usr_auth_data));
usr_clear_plan();
usr_reset_device_sta();
//sys_timeout_add(NULL,cpu_reset,600);
}
extern void usr_set_adv_interval(u16 val);
extern u16 usr_get_adv_interval();
extern void ble_multi_trans_disconnect(void);
void usr_ble_adv_init();
void usr_goto_pair_mode()
{
ble_multi_trans_disconnect();
usr_clear_pair_info_noreset();
usr_var.usr_goto_pair=1;
_usr_module_cfg.local_moto_mode=3;
usr_var.usr_goto_pair = 1;
os_time_dly(5);
usr_ble_adv_init();
}
void usr_ble_adv_init()
{
int8_t txpower = 0;
uint8_t manucode[BLEPROTO_ADV_TLV_LENGTH_MANUCODE] = { 0 };
int8_t txpower = 0;
uint8_t manucode[BLEPROTO_ADV_TLV_LENGTH_MANUCODE] = {0};
uint8_t prodcode[BLEPROTO_ADV_TLV_LENGTH_PRODCODE] = {'C', 'B', 'C', '0'};
uint8_t gmac[6]={0};
uint8_t pcode[6]={'P','I','C','B','C','0'};
uint8_t gmac[6] = {0};
uint8_t pcode[6] = {'P', 'I', 'C', 'B', 'C', '0'};
usr_set_adv_interval(80);
if(usr_var.usr_ota_succ_flag)return;
//muti_adv_data
if(usr_var.usr_goto_pair)
{
usr_clear_pair_info_noreset();
printf("power on force to par flag= %d\n",usr_auth_data.paired_flag);
//if(usr_auth_data.paired_flag==0)
{
muti_adv_data_len=bleproto_advdata_encode4bind(muti_adv_data,txpower,manucode,pcode,prodcode);
}
usr_var.usr_adv_flag=1;
if (usr_var.usr_ota_succ_flag) {
return;
}
else
{
if (usr_var.usr_goto_pair) {
usr_clear_pair_info_noreset();
printf("power on force to pair flag= %d\n", usr_auth_data.paired_flag);
muti_adv_data_len = bleproto_advdata_encode4bind(muti_adv_data, txpower, manucode, pcode, prodcode);
usr_var.usr_adv_flag = 1;
} else {
usr_get_pair_info();
if(usr_auth_data.paired_flag==0)
{
muti_adv_data_len=bleproto_advdata_encode4bind(muti_adv_data,txpower,manucode,pcode,prodcode);
usr_var.usr_adv_flag=0;
}
else
{
memcpy(gmac,usr_auth_data.gwmac,6);
muti_adv_data_len=bleproto_advdata_encode4reconn(muti_adv_data,txpower,gmac,manucode,pcode,prodcode);
usr_var.usr_adv_flag=1;
if (usr_auth_data.paired_flag == 0) {
muti_adv_data_len = bleproto_advdata_encode4bind(muti_adv_data, txpower, manucode, pcode, prodcode);
usr_var.usr_adv_flag = 0;
} else {
memcpy(gmac, usr_auth_data.gwmac, 6);
muti_adv_data_len = bleproto_advdata_encode4reconn(muti_adv_data, txpower, gmac, manucode, pcode, prodcode);
usr_var.usr_adv_flag = 1;
}
}
usr_ble_adv_updata();
if(le_timer_handle==0)le_timer_handle = sys_timer_add(NULL, usr_ble_adv_updata, 500);
//user_send_cmd_prepare(USER_CTRL_ALL_SNIFF_EXIT, 0, NULL);
if (le_timer_handle == 0) {
le_timer_handle = sys_timer_add(NULL, usr_ble_adv_updata, 500);
}
}
u8 usr_get_pair_flag()
{
return usr_auth_data.paired_flag;
}
/*
void usr_reconn_adv()
{
int8_t txpower = 0;
uint8_t gmac[6]={0};
uint8_t manucode[BLEPROTO_ADV_TLV_LENGTH_MANUCODE] = { 0 };
uint8_t prodcode[BLEPROTO_ADV_TLV_LENGTH_PRODCODE] = {'C', 'B', 'F', 'D'};
uint8_t pcode[6]={'P','C','B','F','D','0'};
memcpy(gmac,usr_auth_data.gwmac,6);
muti_adv_data_len=bleproto_advdata_encode4reconn(muti_adv_data,txpower,gmac,manucode,pcode,prodcode);
usr_adv_flag=1;
}*/
extern u16 get_vbat_level(void);
extern void ble_trans_module_enable(u8 flag);
extern u8 usr_get_ota_status();
void usr_ble_adv_updata()
{
//printf("usr_ble_adv_updata\n");
static u16 usr_goto_slow_adv=0;
if(usr_var.usr_adv_flag)
{
static u16 usr_goto_slow_adv = 0;
if (usr_var.usr_adv_flag) {
ble_trans_module_enable(0);
usr_var.usr_adv_flag=0;
muti_make_set_adv_data(muti_adv_data,muti_adv_data_len);
usr_var.usr_adv_flag = 0;
muti_make_set_adv_data(muti_adv_data, muti_adv_data_len);
printf("###muti_adv_data = ");
printf_buf(muti_adv_data,muti_adv_data_len);
printf_buf(muti_adv_data, muti_adv_data_len);
ble_trans_module_enable(1);
}
if(usr_get_conn_service()==0)
{
if(usr_get_adv_interval()==80)
{
if((usr_var.usr_goto_pair==0)&&(usr_auth_data.paired_flag))
{
if(usr_var.usr_ota_succ_flag==0)
{
if (usr_get_conn_service() == 0) {
if (usr_get_adv_interval() == 80) {
if ((usr_var.usr_goto_pair == 0) && (usr_auth_data.paired_flag)) {
if (usr_var.usr_ota_succ_flag == 0) {
usr_goto_slow_adv++;
printf("usr_goto_slow_adv = %d\n",usr_goto_slow_adv);
}
if(usr_goto_slow_adv>=120)
{
usr_goto_slow_adv=0;
usr_set_adv_interval(80*10);
usr_var.usr_adv_flag=1;
if (usr_goto_slow_adv >= 120) {
usr_goto_slow_adv = 0;
usr_set_adv_interval(80 * 10);
usr_var.usr_adv_flag = 1;
}
}
} else {
usr_goto_slow_adv = 0;
}
else
{
usr_goto_slow_adv=0;
}
}
else
{
usr_goto_slow_adv=0;
} else {
usr_goto_slow_adv = 0;
}
if(usr_get_ota_status()==0)
{
if(usr_get_conn_service()==0)
{
if(usr_var.usr_ota_succ_flag==0)usr_ota_exit();
if (usr_get_ota_status() == 0) {
if (usr_get_conn_service() == 0) {
if (usr_var.usr_ota_succ_flag == 0) {
usr_ota_exit();
}
}
}
}
void usr_ble_adv_updata_OTA()
{
//printf("usr_ble_adv_updata\n");
if(1)
{
ble_trans_module_enable(0);
usr_var.usr_adv_flag=0;
ble_trans_module_enable(0);
usr_var.usr_adv_flag = 0;
#if 1
extern u8 usr_mac_addr[6];
//u8 ble_mac[6];
extern int le_controller_set_mac(void *addr);
//extern void lib_make_ble_address(u8 * ble_address, u8 * edr_address);
//bt_update_mac_addr(mac);
//lmp_hci_write_local_address(mac);
//bt_update_testbox_addr(mac);
//lib_make_ble_address(ble_mac, mac);
usr_mac_addr[0]=usr_mac_addr[0]+1;
le_controller_set_mac(usr_mac_addr); //修改BLE地址
extern u8 usr_mac_addr[6];
extern int le_controller_set_mac(void *addr);
usr_mac_addr[0] = usr_mac_addr[0] + 1;
le_controller_set_mac(usr_mac_addr);
#endif
muti_make_set_adv_data_updata();
printf("###muti_adv_data = ");
printf_buf(muti_adv_data,muti_adv_data_len);
ble_trans_module_enable(1);
}
muti_make_set_adv_data_updata();
printf("###muti_adv_data = ");
printf_buf(muti_adv_data, muti_adv_data_len);
ble_trans_module_enable(1);
}