249 lines
6.7 KiB
C
249 lines
6.7 KiB
C
#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_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 void usr_reset_device_sta();
|
|
extern u8 usr_get_ldoin_all();
|
|
|
|
void usr_ble_adv_updata();
|
|
|
|
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();
|
|
|
|
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;
|
|
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;
|
|
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;
|
|
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);
|
|
}
|
|
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;
|
|
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;
|
|
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 };
|
|
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'};
|
|
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;
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
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)
|
|
{
|
|
ble_trans_module_enable(0);
|
|
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);
|
|
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)
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
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();
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
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;
|
|
|
|
#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地址
|
|
|
|
#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);
|
|
}
|
|
}
|