1013 lines
31 KiB
C
1013 lines
31 KiB
C
|
#include "init.h"
|
||
|
#include "app_config.h"
|
||
|
#include "system/includes.h"
|
||
|
#include "asm/charge.h"
|
||
|
#include "asm/chargestore.h"
|
||
|
#include "user_cfg.h"
|
||
|
#include "app_chargestore.h"
|
||
|
#include "device/vm.h"
|
||
|
#include "btstack/avctp_user.h"
|
||
|
#include "app_power_manage.h"
|
||
|
#include "app_action.h"
|
||
|
#include "app_main.h"
|
||
|
#include "app_charge.h"
|
||
|
#include "classic/tws_api.h"
|
||
|
#include "update.h"
|
||
|
#include "bt_ble.h"
|
||
|
#include "bt_tws.h"
|
||
|
#include "app_action.h"
|
||
|
#include "bt_common.h"
|
||
|
#include "le_rcsp_adv_module.h"
|
||
|
#include "app_task.h"
|
||
|
#include "update_loader_download.h"
|
||
|
|
||
|
#define LOG_TAG_CONST APP_CHARGESTORE
|
||
|
#define LOG_TAG "[APP_CHARGESTORE]"
|
||
|
#define LOG_ERROR_ENABLE
|
||
|
#define LOG_DEBUG_ENABLE
|
||
|
#define LOG_INFO_ENABLE
|
||
|
/* #define LOG_DUMP_ENABLE */
|
||
|
#define LOG_CLI_ENABLE
|
||
|
#include "debug.h"
|
||
|
|
||
|
#define CMD_TWS_CHANNEL_SET 0x01
|
||
|
#define CMD_TWS_REMOTE_ADDR 0x02
|
||
|
#define CMD_TWS_ADDR_DELETE 0x03
|
||
|
#define CMD_BOX_TWS_CHANNEL_SEL 0x04//测试盒获取地址
|
||
|
#define CMD_BOX_TWS_REMOTE_ADDR 0x05//测试盒交换地址
|
||
|
#define CMD_POWER_LEVEL_OPEN 0x06//开盖充电舱报告/获取电量
|
||
|
#define CMD_POWER_LEVEL_CLOSE 0x07//合盖充电舱报告/获取电量
|
||
|
#define CMD_RESTORE_SYS 0x08//恢复出厂设置
|
||
|
#define CMD_ENTER_DUT 0x09//进入测试模式
|
||
|
#define CMD_EX_FIRST_READ_INFO 0x0A//F95读取数据首包信息
|
||
|
#define CMD_EX_CONTINUE_READ_INFO 0x0B//F95读取数据后续包信息
|
||
|
#define CMD_EX_FIRST_WRITE_INFO 0x0C//F95写入数据首包信息
|
||
|
#define CMD_EX_CONTINUE_WRITE_INFO 0x0D//F95写入数据后续包信息
|
||
|
#define CMD_EX_INFO_COMPLETE 0x0E//F95完成信息交换
|
||
|
#define CMD_TWS_SET_CHANNEL 0x0F//F95设置左右声道信息
|
||
|
#define CMD_BOX_UPDATE 0x20//测试盒升级
|
||
|
#define CMD_BOX_MODULE 0x21//测试盒一级命令
|
||
|
|
||
|
#define CMD_SHUT_DOWN 0x80//充电舱关机,充满电关机,或者是低电关机
|
||
|
#define CMD_CLOSE_CID 0x81//充电舱盒盖
|
||
|
#define CMD_ANC_MODULE 0x90//ANC一级命令
|
||
|
#define CMD_UNDEFINE 0xff//未知命令回复
|
||
|
|
||
|
//testbox sub cmd
|
||
|
#define CMD_BOX_BT_NAME_INFO 0x01 //获取蓝牙名
|
||
|
#define CMD_BOX_SDK_VERSION 0x02 //获取sdk版本信息
|
||
|
#define CMD_BOX_BATTERY_VOL 0x03 //获取电量
|
||
|
#define CMD_BOX_ENTER_DUT 0x04 //进入dut模式
|
||
|
|
||
|
struct chargestore_info {
|
||
|
int timer;
|
||
|
int shutdown_timer;
|
||
|
u8 version;
|
||
|
u8 chip_type;
|
||
|
u8 max_packet_size;//充电舱端一包的最大值
|
||
|
u8 bt_init_ok;//蓝牙协议栈初始化成功
|
||
|
u8 power_level;//本机记录的充电舱电量百分比
|
||
|
u8 pre_power_lvl;
|
||
|
u8 sibling_chg_lev;//对耳同步的充电舱电量
|
||
|
u8 power_status;//充电舱供电状态 0:断电 5V不在线 1:升压 5V在线
|
||
|
u8 cover_status;//充电舱盖子状态 0:合盖 1:开盖
|
||
|
u8 testbox_status;//测试盒在线状态
|
||
|
u8 connect_status;//通信成功
|
||
|
u8 ear_number;//盒盖时耳机在线数
|
||
|
u8 channel;//左右
|
||
|
u8 tws_power;//对耳的电量
|
||
|
u8 power_sync;//第一次获取到充电舱电量时,同步到对耳
|
||
|
u8 pair_flag;//配对标记
|
||
|
u8 close_ing;//等待合窗超时
|
||
|
u8 active_disconnect;//主动断开连接
|
||
|
u8 event_hdl_flag;
|
||
|
u8 switch2bt;
|
||
|
};
|
||
|
|
||
|
extern void sys_enter_soft_poweroff(void *priv);
|
||
|
//extern void bt_tws_cancle_wait_pair();
|
||
|
extern int tws_api_cancle_wait_pair_internal();
|
||
|
extern int tws_cancle_create_connection_internal();
|
||
|
extern void tws_api_set_connect_aa_allways(u32 connect_aa);
|
||
|
extern u32 tws_le_get_pair_aa(void);
|
||
|
extern u32 tws_le_get_connect_aa(void);
|
||
|
extern u32 tws_le_get_search_aa(void);
|
||
|
extern void bt_page_scan_for_test();
|
||
|
extern u8 get_jl_chip_id(void);
|
||
|
extern u8 get_jl_chip_id2(void);
|
||
|
extern void bt_get_vm_mac_addr(u8 *addr);
|
||
|
extern bool get_tws_sibling_connect_state(void);
|
||
|
extern bool get_tws_phone_connect_state(void);
|
||
|
extern void local_irq_disable();
|
||
|
extern void cpu_reset();
|
||
|
extern u32 dual_bank_update_exist_flag_get(void);
|
||
|
extern u32 classic_update_task_exist_flag_get(void);
|
||
|
|
||
|
|
||
|
#if TCFG_CHARGESTORE_ENABLE || TCFG_TEST_BOX_ENABLE || TCFG_ANC_BOX_ENABLE
|
||
|
|
||
|
static struct chargestore_info info;
|
||
|
#define __this (&info)
|
||
|
static u8 send_buf[36];
|
||
|
static u8 local_packet[36];
|
||
|
static CHARGE_STORE_INFO read_info, write_info;
|
||
|
static u8 read_index, write_index;
|
||
|
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
void chargestore_clean_tws_conn_info(u8 type)
|
||
|
{
|
||
|
CHARGE_STORE_INFO charge_store_info;
|
||
|
log_info("chargestore_clean_tws_conn_info=%d\n", type);
|
||
|
if (type == TWS_DEL_TWS_ADDR) {
|
||
|
log_info("TWS_DEL_TWS_ADDR\n");
|
||
|
} else if (type == TWS_DEL_PHONE_ADDR) {
|
||
|
log_info("TWS_DEL_PHONE_ADDR\n");
|
||
|
} else if (type == TWS_DEL_ALL_ADDR) {
|
||
|
log_info("TWS_DEL_ALL_ADDR\n");
|
||
|
}
|
||
|
memset(&charge_store_info, 0xff, sizeof(CHARGE_STORE_INFO));
|
||
|
syscfg_write(CFG_TWS_REMOTE_ADDR, charge_store_info.tws_remote_addr, sizeof(charge_store_info.tws_remote_addr));
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#if TCFG_USER_TWS_ENABLE
|
||
|
|
||
|
extern void bt_tws_remove_pairs();
|
||
|
bool chargestore_set_tws_remote_info(u8 *data, u8 len)
|
||
|
{
|
||
|
u8 i;
|
||
|
bool ret = true;
|
||
|
u8 remote_addr[6];
|
||
|
u8 common_addr[6];
|
||
|
u8 local_addr[6];
|
||
|
CHARGE_STORE_INFO *charge_store_info = (CHARGE_STORE_INFO *)data;
|
||
|
if (len > sizeof(CHARGE_STORE_INFO)) {
|
||
|
log_error("len err\n");
|
||
|
return false;
|
||
|
}
|
||
|
//set remote addr
|
||
|
syscfg_read(CFG_TWS_REMOTE_ADDR, remote_addr, sizeof(remote_addr));
|
||
|
if (memcmp(remote_addr, charge_store_info->tws_local_addr, sizeof(remote_addr))) {
|
||
|
ret = false;
|
||
|
}
|
||
|
syscfg_write(CFG_TWS_REMOTE_ADDR, charge_store_info->tws_local_addr, sizeof(charge_store_info->tws_remote_addr));
|
||
|
|
||
|
#if (CONFIG_TWS_COMMON_ADDR_SELECT != CONFIG_TWS_COMMON_ADDR_USED_LEFT)
|
||
|
//set common addr
|
||
|
bt_get_tws_local_addr(local_addr);
|
||
|
syscfg_read(CFG_TWS_COMMON_ADDR, common_addr, sizeof(common_addr));
|
||
|
|
||
|
for (i = 0; i < sizeof(common_addr); i++) {
|
||
|
if (common_addr[i] != (u8)(local_addr[i] + charge_store_info->tws_local_addr[i])) {
|
||
|
ret = false;
|
||
|
}
|
||
|
common_addr[i] = local_addr[i] + charge_store_info->tws_local_addr[i];
|
||
|
}
|
||
|
syscfg_write(CFG_TWS_COMMON_ADDR, common_addr, sizeof(common_addr));
|
||
|
#endif
|
||
|
|
||
|
#ifndef CONFIG_NEW_BREDR_ENABLE
|
||
|
if (__this->channel == 'L') {
|
||
|
if (tws_le_get_connect_aa() != tws_le_get_pair_aa()) {
|
||
|
ret = false;
|
||
|
}
|
||
|
tws_api_set_connect_aa_allways(tws_le_get_pair_aa());
|
||
|
} else {
|
||
|
if (tws_le_get_connect_aa() != charge_store_info->pair_aa) {
|
||
|
ret = false;
|
||
|
}
|
||
|
tws_api_set_connect_aa_allways(charge_store_info->pair_aa);
|
||
|
}
|
||
|
#endif
|
||
|
if (__this->testbox_status) {
|
||
|
u8 cmd = CMD_BOX_TWS_REMOTE_ADDR;
|
||
|
chargestore_api_write(&cmd, 1);
|
||
|
|
||
|
}
|
||
|
return ret;
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#define WRITE_LIT_U16(a,src) {*((u8*)(a)+1) = (u8)(src>>8); *((u8*)(a)+0) = (u8)(src&0xff); }
|
||
|
#define EXTEND_TWS_REMOTE_ADDR_SIZE (1 + sizeof(u16) + sizeof(u16))
|
||
|
extern char tws_api_get_local_channel();
|
||
|
extern u16 bt_get_tws_device_indicate(u8 *tws_device_indicate);
|
||
|
u16 chargestore_get_tws_remote_info(u8 *data)
|
||
|
{
|
||
|
u16 ret_len = 0;
|
||
|
u16 device_ind;
|
||
|
u16 reserved_data = 0;
|
||
|
CHARGE_STORE_INFO *charge_store_info = (CHARGE_STORE_INFO *)data;
|
||
|
bt_get_tws_local_addr(charge_store_info->tws_local_addr);
|
||
|
bt_get_vm_mac_addr(charge_store_info->tws_mac_addr);
|
||
|
#ifndef CONFIG_NEW_BREDR_ENABLE
|
||
|
charge_store_info->search_aa = tws_le_get_search_aa();
|
||
|
charge_store_info->pair_aa = tws_le_get_pair_aa();
|
||
|
#endif
|
||
|
if (1 == __this->testbox_status) {
|
||
|
#if (CONFIG_TWS_CHANNEL_SELECT == CONFIG_TWS_AS_LEFT_CHANNEL) \
|
||
|
||(CONFIG_TWS_CHANNEL_SELECT == CONFIG_TWS_AS_RIGHT_CHANNEL) \
|
||
|
||(CONFIG_TWS_CHANNEL_SELECT == CONFIG_TWS_EXTERN_DOWN_AS_LEFT) \
|
||
|
||(CONFIG_TWS_CHANNEL_SELECT == CONFIG_TWS_EXTERN_UP_AS_LEFT)
|
||
|
data[sizeof(CHARGE_STORE_INFO)] = tws_api_get_local_channel();
|
||
|
#else
|
||
|
data[sizeof(CHARGE_STORE_INFO)] = 'U';
|
||
|
#endif
|
||
|
device_ind = bt_get_tws_device_indicate(NULL);
|
||
|
WRITE_LIT_U16(&data[sizeof(CHARGE_STORE_INFO) + 1], device_ind);
|
||
|
WRITE_LIT_U16(&data[sizeof(CHARGE_STORE_INFO) + 1 + 2], reserved_data);
|
||
|
//printf("tws_ch:%c %x\n", data[sizeof(CHARGE_STORE_INFO)], device_ind);
|
||
|
ret_len = sizeof(CHARGE_STORE_INFO) + EXTEND_TWS_REMOTE_ADDR_SIZE;
|
||
|
} else {
|
||
|
ret_len = sizeof(CHARGE_STORE_INFO);
|
||
|
}
|
||
|
|
||
|
return ret_len;
|
||
|
}
|
||
|
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
u16 chargestore_f95_read_tws_remote_info(u8 *data, u8 flag)
|
||
|
{
|
||
|
u8 read_len;
|
||
|
u8 *pbuf = (u8 *)&read_info;
|
||
|
if (flag) {//first packet
|
||
|
read_index = 0;
|
||
|
chargestore_get_tws_remote_info((u8 *)&read_info);
|
||
|
}
|
||
|
read_len = sizeof(read_info) - read_index;
|
||
|
read_len = (read_len > (__this->max_packet_size - 1)) ? (__this->max_packet_size - 1) : read_len;
|
||
|
memcpy(data, pbuf + read_index, read_len);
|
||
|
read_index += read_len;
|
||
|
return read_len;
|
||
|
}
|
||
|
|
||
|
u16 chargestore_f95_write_tws_remote_info(u8 *data, u8 len, u8 flag)
|
||
|
{
|
||
|
u8 write_len;
|
||
|
u8 *pbuf = (u8 *)&write_info;
|
||
|
if (flag) {
|
||
|
write_index = 0;
|
||
|
memset(&write_info, 0, sizeof(write_info));
|
||
|
}
|
||
|
write_len = sizeof(write_info) - write_index;
|
||
|
write_len = (write_len >= len) ? len : write_len;
|
||
|
memcpy(pbuf + write_index, data, write_len);
|
||
|
write_index += write_len;
|
||
|
return write_len;
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
void chargestore_set_tws_channel_info(void)
|
||
|
{
|
||
|
if ((__this->channel == 'L') || (__this->channel == 'R')) {
|
||
|
syscfg_write(CFG_CHARGESTORE_TWS_CHANNEL, &__this->channel, 1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
void chargestore_timeout_deal(void *priv)
|
||
|
{
|
||
|
__this->timer = 0;
|
||
|
__this->close_ing = 0;
|
||
|
if ((!__this->cover_status) || __this->active_disconnect) {//当前为合盖或者主动断开连接
|
||
|
u8 app = app_get_curr_task();
|
||
|
if (app == APP_IDLE_TASK) {
|
||
|
sys_enter_soft_poweroff((void *)1);
|
||
|
}
|
||
|
} else {
|
||
|
|
||
|
#if (TCFG_BLE_DEMO_SELECT == DEF_BLE_DEMO_ADV)
|
||
|
|
||
|
/* if ((!get_total_connect_dev()) && (tws_api_get_role() == TWS_ROLE_MASTER) && (get_bt_tws_connect_status())) { */
|
||
|
if (tws_api_get_role() == TWS_ROLE_MASTER) {
|
||
|
printf("charge_icon_ctl...\n");
|
||
|
bt_ble_icon_reset();
|
||
|
#if CONFIG_NO_DISPLAY_BUTTON_ICON
|
||
|
if (get_total_connect_dev()) {
|
||
|
//蓝牙未真正断开;重新广播
|
||
|
bt_ble_icon_open(ICON_TYPE_RECONNECT);
|
||
|
} else {
|
||
|
//蓝牙未连接,重新开可见性
|
||
|
bt_ble_icon_open(ICON_TYPE_INQUIRY);
|
||
|
}
|
||
|
#else
|
||
|
//不管蓝牙是否连接,默认打开
|
||
|
bt_ble_icon_open(ICON_TYPE_RECONNECT);
|
||
|
#endif
|
||
|
|
||
|
}
|
||
|
#elif (TCFG_BLE_DEMO_SELECT == DEF_BLE_DEMO_ADV_RCSP)
|
||
|
if (tws_api_get_role() == TWS_ROLE_MASTER) {
|
||
|
printf("charge_icon_ctl...\n");
|
||
|
#if CONFIG_NO_DISPLAY_BUTTON_ICON
|
||
|
if (get_total_connect_dev()) {
|
||
|
//蓝牙未真正断开;重新广播
|
||
|
bt_ble_adv_ioctl(BT_ADV_SET_EDR_CON_FLAG, SECNE_CONNECTED, 1);
|
||
|
} else {
|
||
|
//蓝牙未连接,重新开可见性
|
||
|
bt_ble_adv_ioctl(BT_ADV_SET_EDR_CON_FLAG, SECNE_UNCONNECTED, 1);
|
||
|
}
|
||
|
#else
|
||
|
//不管蓝牙是否连接,默认打开
|
||
|
bt_ble_adv_ioctl(BT_ADV_SET_EDR_CON_FLAG, SECNE_CONNECTED, 1);
|
||
|
#endif
|
||
|
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
}
|
||
|
__this->ear_number = 1;
|
||
|
}
|
||
|
|
||
|
void chargestore_set_phone_disconnect(void)
|
||
|
{
|
||
|
#if (TCFG_BLE_DEMO_SELECT == DEF_BLE_DEMO_ADV)
|
||
|
#if (!CONFIG_NO_DISPLAY_BUTTON_ICON)
|
||
|
if (__this->pair_flag && get_tws_sibling_connect_state()) {
|
||
|
//check ble inquiry
|
||
|
//printf("get box log_key...con_dev=%d\n",get_tws_phone_connect_state());
|
||
|
if ((bt_ble_icon_get_adv_state() == ADV_ST_RECONN)
|
||
|
|| (bt_ble_icon_get_adv_state() == ADV_ST_DISMISS)
|
||
|
|| (bt_ble_icon_get_adv_state() == ADV_ST_END)) {
|
||
|
bt_ble_icon_reset();
|
||
|
bt_ble_icon_open(ICON_TYPE_INQUIRY);
|
||
|
}
|
||
|
}
|
||
|
#endif
|
||
|
__this->pair_flag = 0;
|
||
|
#elif (TCFG_BLE_DEMO_SELECT == DEF_BLE_DEMO_ADV_RCSP)
|
||
|
#if (!CONFIG_NO_DISPLAY_BUTTON_ICON)
|
||
|
if (__this->pair_flag && get_tws_sibling_connect_state()) {
|
||
|
//check ble inquiry
|
||
|
bt_ble_adv_ioctl(BT_ADV_SET_EDR_CON_FLAG, SECNE_UNCONNECTED, 1);
|
||
|
}
|
||
|
#endif
|
||
|
__this->pair_flag = 0;
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
void chargestore_set_phone_connect(void)
|
||
|
{
|
||
|
__this->active_disconnect = 0;
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
int app_chargestore_event_handler(struct chargestore_event *chargestore_dev)
|
||
|
{
|
||
|
int ret = false;
|
||
|
|
||
|
u8 app = app_get_curr_task();
|
||
|
|
||
|
#if defined(TCFG_CHARGE_KEEP_UPDATA) && TCFG_CHARGE_KEEP_UPDATA
|
||
|
//在升级过程中,不响应智能充电舱app层消息
|
||
|
if (dual_bank_update_exist_flag_get() || classic_update_task_exist_flag_get()) {
|
||
|
return ret;
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
switch (chargestore_dev->event) {
|
||
|
case CMD_RESTORE_SYS:
|
||
|
#if (TCFG_AUDIO_ANC_ENABLE == ANC_RUN_MODE)
|
||
|
|
||
|
#if TCFG_USER_TWS_ENABLE
|
||
|
bt_tws_remove_pairs();
|
||
|
#endif
|
||
|
user_send_cmd_prepare(USER_CTRL_DEL_ALL_REMOTE_INFO, 0, NULL);
|
||
|
cpu_reset();
|
||
|
#endif
|
||
|
break;
|
||
|
#if TCFG_TEST_BOX_ENABLE
|
||
|
case CMD_BOX_TWS_CHANNEL_SEL:
|
||
|
__this->event_hdl_flag = 0;
|
||
|
chargestore_set_tws_channel_info();
|
||
|
#if TCFG_SYS_LVD_EN
|
||
|
if (get_vbat_need_shutdown() == TRUE) {
|
||
|
//电压过低,不进行测试
|
||
|
break;
|
||
|
}
|
||
|
#endif
|
||
|
#if TCFG_APP_BT_EN
|
||
|
if (app != APP_BT_TASK) {
|
||
|
if (!app_var.goto_poweroff_flag) {
|
||
|
app_var.play_poweron_tone = 0;
|
||
|
task_switch_to_bt();
|
||
|
}
|
||
|
} else {
|
||
|
if ((!__this->connect_status) && __this->bt_init_ok) {
|
||
|
log_info("\n\nbt_page_scan_for_test\n\n");
|
||
|
__this->connect_status = 1;
|
||
|
#if TCFG_USER_TWS_ENABLE
|
||
|
bt_page_scan_for_test();
|
||
|
#endif
|
||
|
}
|
||
|
}
|
||
|
#endif
|
||
|
break;
|
||
|
#if TCFG_USER_TWS_ENABLE
|
||
|
case CMD_BOX_TWS_REMOTE_ADDR:
|
||
|
log_info("event_CMD_BOX_TWS_REMOTE_ADDR \n");
|
||
|
chargestore_set_tws_remote_info(chargestore_dev->packet, chargestore_dev->size);
|
||
|
break;
|
||
|
#endif
|
||
|
#endif
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
case CMD_TWS_CHANNEL_SET:
|
||
|
chargestore_set_tws_channel_info();
|
||
|
break;
|
||
|
#if TCFG_USER_TWS_ENABLE
|
||
|
case CMD_TWS_REMOTE_ADDR:
|
||
|
log_info("event_CMD_TWS_REMOTE_ADDR\n");
|
||
|
if (chargestore_set_tws_remote_info(chargestore_dev->packet, chargestore_dev->size) == false) {
|
||
|
//交换地址后,断开与手机连接,并删除所有连过的手机地址
|
||
|
user_send_cmd_prepare(USER_CTRL_DEL_ALL_REMOTE_INFO, 0, NULL);
|
||
|
__this->ear_number = 2;
|
||
|
sys_enter_soft_poweroff((void *)1);
|
||
|
} else {
|
||
|
__this->pair_flag = 1;
|
||
|
if (get_tws_phone_connect_state() == TRUE) {
|
||
|
__this->active_disconnect = 1;
|
||
|
user_send_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL);
|
||
|
} else {
|
||
|
chargestore_set_phone_disconnect();
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case CMD_TWS_ADDR_DELETE:
|
||
|
log_info("event_CMD_TWS_ADDR_DELETE\n");
|
||
|
chargestore_clean_tws_conn_info(chargestore_dev->packet[0]);
|
||
|
break;
|
||
|
#endif
|
||
|
case CMD_POWER_LEVEL_OPEN:
|
||
|
log_info("event_CMD_POWER_LEVEL_OPEN\n");
|
||
|
|
||
|
//电压过低,不进响应开盖命令
|
||
|
#if TCFG_SYS_LVD_EN
|
||
|
if (get_vbat_need_shutdown() == TRUE) {
|
||
|
log_info(" lowpower deal!\n");
|
||
|
break;
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
if (__this->cover_status) {//当前为开盖
|
||
|
if (__this->power_sync) {
|
||
|
if (chargestore_sync_chg_level() == 0) {
|
||
|
__this->power_sync = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ((app == APP_IDLE_TASK) && (app_var.goto_poweroff_flag == 0)) {
|
||
|
/* app_var.play_poweron_tone = 1; */
|
||
|
app_var.play_poweron_tone = 0;
|
||
|
power_set_mode(TCFG_LOWPOWER_POWER_SEL);
|
||
|
__this->switch2bt = 1;
|
||
|
task_switch_to_bt();
|
||
|
__this->switch2bt = 0;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case CMD_POWER_LEVEL_CLOSE:
|
||
|
log_info("event_CMD_POWER_LEVEL_CLOSE\n");
|
||
|
if (!__this->cover_status) {//当前为合盖
|
||
|
if (app != APP_IDLE_TASK) {
|
||
|
sys_enter_soft_poweroff((void *)1);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case CMD_CLOSE_CID:
|
||
|
log_info("event_CMD_CLOSE_CID\n");
|
||
|
if (!__this->cover_status) {//当前为合盖
|
||
|
#if (TCFG_BLE_DEMO_SELECT == DEF_BLE_DEMO_ADV)
|
||
|
if ((__this->bt_init_ok) && (tws_api_get_role() == TWS_ROLE_MASTER)) {
|
||
|
bt_ble_icon_close(1);
|
||
|
}
|
||
|
#elif (TCFG_BLE_DEMO_SELECT == DEF_BLE_DEMO_ADV_RCSP)
|
||
|
if ((__this->bt_init_ok) && (tws_api_get_role() == TWS_ROLE_MASTER)) {
|
||
|
bt_ble_adv_ioctl(BT_ADV_SET_EDR_CON_FLAG, SECNE_DISMISS, 1);
|
||
|
}
|
||
|
#endif
|
||
|
if (!__this->timer) {
|
||
|
__this->timer = sys_timeout_add(NULL, chargestore_timeout_deal, 2000);
|
||
|
if (!__this->timer) {
|
||
|
log_error("timer alloc err!\n");
|
||
|
} else {
|
||
|
__this->close_ing = 1;
|
||
|
}
|
||
|
} else {
|
||
|
sys_timer_modify(__this->timer, 2000);
|
||
|
__this->close_ing = 1;
|
||
|
}
|
||
|
} else {
|
||
|
__this->ear_number = 1;
|
||
|
__this->close_ing = 0;
|
||
|
}
|
||
|
break;
|
||
|
#endif
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
|
||
|
u8 chargestore_get_vbat_percent(void)
|
||
|
{
|
||
|
u8 power;
|
||
|
#if CONFIG_DISPLAY_DETAIL_BAT
|
||
|
power = get_vbat_percent();//显示个位数的电量
|
||
|
#else
|
||
|
power = get_self_battery_level() * 10 + 10; //显示10%~100%
|
||
|
#endif
|
||
|
|
||
|
#if TCFG_CHARGE_ENABLE
|
||
|
if (get_charge_full_flag()) {
|
||
|
power = 100;
|
||
|
} else if (power == 100) {
|
||
|
power = 99;
|
||
|
}
|
||
|
if (get_charge_online_flag()) {
|
||
|
power |= BIT(7);
|
||
|
}
|
||
|
#endif
|
||
|
return power;
|
||
|
}
|
||
|
|
||
|
void chargestore_set_power_status(u8 *buf, u8 len)
|
||
|
{
|
||
|
__this->version = buf[0] & 0x0f;
|
||
|
__this->chip_type = (buf[0] >> 4) & 0x0f;
|
||
|
//f95可能传一个大于100的电量
|
||
|
if ((buf[1] & 0x7f) > 100) {
|
||
|
__this->power_level = (buf[1] & 0x80) | 100;
|
||
|
} else {
|
||
|
__this->power_level = buf[1];
|
||
|
}
|
||
|
if (len > 2) {
|
||
|
__this->max_packet_size = buf[2];
|
||
|
if (len > 3) {
|
||
|
__this->tws_power = buf[3];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void chargestore_shutdown_do(void *priv)
|
||
|
{
|
||
|
log_info("chargestore shutdown!\n");
|
||
|
power_set_soft_poweroff();
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|
||
|
void chargestore_event_to_user(u8 *packet, u32 type, u8 event, u8 size)
|
||
|
{
|
||
|
struct sys_event e;
|
||
|
e.type = SYS_DEVICE_EVENT;
|
||
|
if (packet != NULL) {
|
||
|
if (size > sizeof(local_packet)) {
|
||
|
return;
|
||
|
}
|
||
|
e.u.chargestore.packet = local_packet;
|
||
|
memcpy(e.u.chargestore.packet, packet, size);
|
||
|
}
|
||
|
e.arg = (void *)type;
|
||
|
e.u.chargestore.event = event;
|
||
|
e.u.chargestore.size = size;
|
||
|
sys_event_notify(&e);
|
||
|
}
|
||
|
|
||
|
extern const char *bt_get_local_name();
|
||
|
extern u16 get_vbat_value(void);
|
||
|
extern const int config_btctler_eir_version_info_len;
|
||
|
extern const char *sdk_version_info_get(void);
|
||
|
void app_chargestore_testbox_sub_cmd_handle(u8 *buf, u8 len)
|
||
|
{
|
||
|
u8 name_len;
|
||
|
u8 send_len = 0;
|
||
|
|
||
|
send_buf[0] = buf[0];
|
||
|
send_buf[1] = buf[1];
|
||
|
|
||
|
log_info("sub_cmd:%x\n", buf[1]);
|
||
|
|
||
|
switch (buf[1]) {
|
||
|
case CMD_BOX_BT_NAME_INFO:
|
||
|
name_len = strlen(bt_get_local_name());
|
||
|
if (name_len < (sizeof(send_buf) - 2)) {
|
||
|
memcpy(&send_buf[2], bt_get_local_name(), name_len);
|
||
|
send_len = name_len + 2;
|
||
|
chargestore_api_write(send_buf, send_len);
|
||
|
} else {
|
||
|
log_error("bt name buf len err\n");
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case CMD_BOX_BATTERY_VOL:
|
||
|
send_buf[2] = get_vbat_value();
|
||
|
send_buf[3] = get_vbat_value() >> 8;
|
||
|
send_len = sizeof(u16) + 2;
|
||
|
log_info("bat_val:%x\n", get_vbat_value());
|
||
|
chargestore_api_write(send_buf, send_len);
|
||
|
break;
|
||
|
|
||
|
case CMD_BOX_SDK_VERSION:
|
||
|
if (config_btctler_eir_version_info_len) {
|
||
|
log_info("version:%s\n", sdk_version_info_get());
|
||
|
memcpy(send_buf + 2, sdk_version_info_get(), config_btctler_eir_version_info_len);
|
||
|
send_len = config_btctler_eir_version_info_len + 2;
|
||
|
chargestore_api_write(send_buf, send_len);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case CMD_BOX_ENTER_DUT:
|
||
|
log_info("enter dut\n");
|
||
|
if (!get_total_connect_dev()) { //未连接手机
|
||
|
extern void bredr_set_dut_enble(u8 en, u8 phone);
|
||
|
bredr_set_dut_enble(1, 1);
|
||
|
}
|
||
|
chargestore_api_write(send_buf, 2);
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
send_buf[0] = CMD_UNDEFINE;
|
||
|
send_len = 1;
|
||
|
chargestore_api_write(send_buf, send_len);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
log_info_hexdump(send_buf, send_len);
|
||
|
}
|
||
|
|
||
|
void app_chargestore_data_deal(u8 *buf, u8 len)
|
||
|
{
|
||
|
//u8 send_buf[30];
|
||
|
/* log_info_hexdump(buf, len); */
|
||
|
#if TCFG_CHARGESTORE_ENABLE//有通信则关机定时器删掉
|
||
|
chargestore_shutdown_reset();
|
||
|
#endif
|
||
|
send_buf[0] = buf[0];
|
||
|
#ifdef CONFIG_CHARGESTORE_REMAP_ENABLE
|
||
|
if (remap_app_chargestore_data_deal(buf, len)) {
|
||
|
return;
|
||
|
}
|
||
|
#endif
|
||
|
switch (buf[0]) {
|
||
|
#if TCFG_CHARGESTORE_ENABLE || TCFG_TEST_BOX_ENABLE
|
||
|
#if TCFG_TEST_BOX_ENABLE
|
||
|
//case CMD_ENTER_DUT:
|
||
|
// __this->testbox_status = 1;
|
||
|
//log_info("enter_dut\n");
|
||
|
//break;
|
||
|
|
||
|
case CMD_BOX_MODULE:
|
||
|
app_chargestore_testbox_sub_cmd_handle(buf, len);
|
||
|
break;
|
||
|
|
||
|
case CMD_BOX_UPDATE:
|
||
|
if (UPDATE_MODULE_IS_SUPPORT(UPDATE_UART_EN)) {
|
||
|
__this->testbox_status = 1;
|
||
|
if (buf[13] == get_jl_chip_id() || buf[13] == get_jl_chip_id2()) {
|
||
|
chargestore_set_update_ram();
|
||
|
cpu_reset();
|
||
|
} else {
|
||
|
send_buf[1] = 0x01;//chip id err
|
||
|
chargestore_api_write(send_buf, 2);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case CMD_BOX_TWS_CHANNEL_SEL:
|
||
|
__this->testbox_status = 1;
|
||
|
#endif
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
case CMD_TWS_CHANNEL_SET:
|
||
|
#endif
|
||
|
__this->channel = (buf[1] == TWS_CHANNEL_LEFT) ? 'L' : 'R';
|
||
|
if (0 == __this->event_hdl_flag) {
|
||
|
chargestore_event_to_user(NULL, DEVICE_EVENT_CHARGE_STORE, buf[0], 0);
|
||
|
__this->event_hdl_flag = 1;
|
||
|
}
|
||
|
#if TCFG_APP_BT_EN
|
||
|
if (__this->bt_init_ok) {
|
||
|
len = chargestore_get_tws_remote_info(&send_buf[1]);
|
||
|
chargestore_api_write(send_buf, len + 1);
|
||
|
} else {
|
||
|
send_buf[0] = CMD_UNDEFINE;
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
}
|
||
|
#else
|
||
|
len = chargestore_get_tws_remote_info(&send_buf[1]);
|
||
|
chargestore_api_write(send_buf, len + 1);
|
||
|
#endif
|
||
|
break;
|
||
|
#endif
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
case CMD_TWS_SET_CHANNEL:
|
||
|
__this->channel = (buf[1] == TWS_CHANNEL_LEFT) ? 'L' : 'R';
|
||
|
log_info("f95 set channel = %c\n", __this->channel);
|
||
|
chargestore_event_to_user(NULL, DEVICE_EVENT_CHARGE_STORE, CMD_TWS_CHANNEL_SET, 0);
|
||
|
if (__this->bt_init_ok) {
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
} else {
|
||
|
send_buf[0] = CMD_UNDEFINE;
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
}
|
||
|
break;
|
||
|
#endif
|
||
|
|
||
|
#if TCFG_USER_TWS_ENABLE
|
||
|
#if TCFG_TEST_BOX_ENABLE
|
||
|
case CMD_BOX_TWS_REMOTE_ADDR:
|
||
|
len -= EXTEND_TWS_REMOTE_ADDR_SIZE;
|
||
|
__this->testbox_status = 1;
|
||
|
__this->close_ing = 0;
|
||
|
chargestore_event_to_user((u8 *)&buf[1], DEVICE_EVENT_CHARGE_STORE, buf[0], len - 1);
|
||
|
chargestore_api_set_timeout(100);
|
||
|
break;
|
||
|
#endif
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
case CMD_TWS_REMOTE_ADDR:
|
||
|
__this->close_ing = 0;
|
||
|
chargestore_event_to_user((u8 *)&buf[1], DEVICE_EVENT_CHARGE_STORE, buf[0], len - 1);
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
break;
|
||
|
case CMD_EX_FIRST_READ_INFO:
|
||
|
log_info("read first!\n");
|
||
|
__this->close_ing = 0;
|
||
|
len = chargestore_f95_read_tws_remote_info(&send_buf[1], 1);
|
||
|
chargestore_api_write(send_buf, len + 1);
|
||
|
break;
|
||
|
case CMD_EX_CONTINUE_READ_INFO:
|
||
|
log_info("read continue!\n");
|
||
|
__this->close_ing = 0;
|
||
|
len = chargestore_f95_read_tws_remote_info(&send_buf[1], 0);
|
||
|
chargestore_api_write(send_buf, len + 1);
|
||
|
break;
|
||
|
case CMD_EX_FIRST_WRITE_INFO:
|
||
|
log_info("write first!\n");
|
||
|
__this->close_ing = 0;
|
||
|
chargestore_f95_write_tws_remote_info(&buf[1], len - 1, 1);
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
break;
|
||
|
case CMD_EX_CONTINUE_WRITE_INFO:
|
||
|
log_info("write continue!\n");
|
||
|
__this->close_ing = 0;
|
||
|
chargestore_f95_write_tws_remote_info(&buf[1], len - 1, 0);
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
break;
|
||
|
case CMD_EX_INFO_COMPLETE:
|
||
|
log_info("ex complete!\n");
|
||
|
chargestore_event_to_user((u8 *)&write_info, DEVICE_EVENT_CHARGE_STORE, CMD_TWS_REMOTE_ADDR, sizeof(write_info));
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
break;
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
case CMD_TWS_ADDR_DELETE:
|
||
|
__this->close_ing = 0;
|
||
|
chargestore_event_to_user(&buf[1], DEVICE_EVENT_CHARGE_STORE, CMD_TWS_ADDR_DELETE, len - 1);
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
break;
|
||
|
case CMD_POWER_LEVEL_OPEN:
|
||
|
__this->power_status = 1;
|
||
|
__this->cover_status = 1;
|
||
|
__this->close_ing = 0;
|
||
|
if (__this->power_level == 0xff) {
|
||
|
__this->power_sync = 1;
|
||
|
}
|
||
|
chargestore_set_power_status(&buf[1], len - 1);
|
||
|
if (__this->power_level != __this->pre_power_lvl) {
|
||
|
__this->power_sync = 1;
|
||
|
}
|
||
|
__this->pre_power_lvl = __this->power_level;
|
||
|
send_buf[1] = chargestore_get_vbat_percent();
|
||
|
send_buf[2] = chargestore_get_det_level(__this->chip_type);
|
||
|
chargestore_api_write(send_buf, 3);
|
||
|
//切模式过程中不发送消息,防止堆满消息
|
||
|
if (__this->switch2bt == 0) {
|
||
|
chargestore_event_to_user(NULL, DEVICE_EVENT_CHARGE_STORE, CMD_POWER_LEVEL_OPEN, 0);
|
||
|
}
|
||
|
break;
|
||
|
case CMD_POWER_LEVEL_CLOSE:
|
||
|
__this->power_status = 1;
|
||
|
__this->cover_status = 0;
|
||
|
__this->close_ing = 0;
|
||
|
chargestore_set_power_status(&buf[1], len - 1);
|
||
|
send_buf[1] = chargestore_get_vbat_percent();
|
||
|
send_buf[2] = chargestore_get_det_level(__this->chip_type);
|
||
|
chargestore_api_write(send_buf, 3);
|
||
|
chargestore_event_to_user(NULL, DEVICE_EVENT_CHARGE_STORE, CMD_POWER_LEVEL_CLOSE, 0);
|
||
|
break;
|
||
|
case CMD_SHUT_DOWN:
|
||
|
log_info("shut down\n");
|
||
|
__this->power_status = 0;
|
||
|
__this->cover_status = 0;
|
||
|
__this->close_ing = 0;
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
__this->shutdown_timer = sys_hi_timer_add(NULL, chargestore_shutdown_do, 1000);
|
||
|
break;
|
||
|
case CMD_CLOSE_CID:
|
||
|
log_info("close cid\n");
|
||
|
__this->power_status = 1;
|
||
|
__this->cover_status = 0;
|
||
|
__this->ear_number = buf[1];
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
chargestore_event_to_user(NULL, DEVICE_EVENT_CHARGE_STORE, CMD_CLOSE_CID, 0);
|
||
|
break;
|
||
|
|
||
|
case CMD_RESTORE_SYS:
|
||
|
r_printf("restore sys\n");
|
||
|
__this->power_status = 1;
|
||
|
__this->cover_status = 1;
|
||
|
__this->close_ing = 0;
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
chargestore_event_to_user(NULL, DEVICE_EVENT_CHARGE_STORE, CMD_RESTORE_SYS, 0);
|
||
|
break;
|
||
|
#endif
|
||
|
|
||
|
#if TCFG_ANC_BOX_ENABLE
|
||
|
case CMD_ANC_MODULE:
|
||
|
app_ancbox_module_deal(buf, len);
|
||
|
break;
|
||
|
#endif
|
||
|
default:
|
||
|
send_buf[0] = CMD_UNDEFINE;
|
||
|
chargestore_api_write(send_buf, 1);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#if TCFG_CHARGESTORE_ENABLE
|
||
|
u8 chargestore_get_power_level(void)
|
||
|
{
|
||
|
if ((__this->power_level == 0xff) ||
|
||
|
((!get_charge_online_flag()) &&
|
||
|
(__this->sibling_chg_lev != 0xff))) {
|
||
|
return __this->sibling_chg_lev;
|
||
|
}
|
||
|
return __this->power_level;
|
||
|
}
|
||
|
|
||
|
u8 chargestore_get_power_status(void)
|
||
|
{
|
||
|
return __this->power_status;
|
||
|
}
|
||
|
|
||
|
u8 chargestore_get_cover_status(void)
|
||
|
{
|
||
|
return __this->cover_status;
|
||
|
}
|
||
|
|
||
|
u8 chargestore_get_earphone_online(void)
|
||
|
{
|
||
|
return __this->ear_number;
|
||
|
}
|
||
|
|
||
|
void chargestore_set_earphone_online(u8 ear_number)
|
||
|
{
|
||
|
__this->ear_number = ear_number;
|
||
|
}
|
||
|
|
||
|
void chargestore_set_pair_flag(u8 pair_flag)
|
||
|
{
|
||
|
__this->pair_flag = pair_flag;
|
||
|
}
|
||
|
|
||
|
void chargestore_set_active_disconnect(u8 active_disconnect)
|
||
|
{
|
||
|
__this->active_disconnect = active_disconnect;
|
||
|
}
|
||
|
|
||
|
u8 chargestore_get_earphone_pos(void)
|
||
|
{
|
||
|
log_info("get_ear_channel = %c\n", __this->channel);
|
||
|
return __this->channel;
|
||
|
}
|
||
|
|
||
|
u8 chargestore_get_sibling_power_level(void)
|
||
|
{
|
||
|
return __this->tws_power;
|
||
|
}
|
||
|
|
||
|
|
||
|
#if TCFG_USER_TWS_ENABLE
|
||
|
|
||
|
|
||
|
static void set_tws_sibling_charge_level(void *_data, u16 len, bool rx)
|
||
|
{
|
||
|
if (rx) {
|
||
|
u8 *data = (u8 *)_data;
|
||
|
chargestore_set_sibling_chg_lev(data[0]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
REGISTER_TWS_FUNC_STUB(charge_level_stub) = {
|
||
|
.func_id = TWS_FUNC_ID_CHARGE_SYNC,
|
||
|
.func = set_tws_sibling_charge_level,
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|
||
|
int chargestore_sync_chg_level(void)
|
||
|
{
|
||
|
#if TCFG_USER_TWS_ENABLE
|
||
|
int err = -1;
|
||
|
u8 app = app_get_curr_task();
|
||
|
if (app == APP_BT_TASK) && ((!app_var.goto_poweroff_flag)) {
|
||
|
err = tws_api_send_data_to_sibling((u8 *)&__this->power_level, 1,
|
||
|
TWS_FUNC_ID_CHARGE_SYNC);
|
||
|
}
|
||
|
return err;
|
||
|
#else
|
||
|
return 0;
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
void chargestore_set_sibling_chg_lev(u8 chg_lev)
|
||
|
{
|
||
|
__this->sibling_chg_lev = chg_lev;
|
||
|
}
|
||
|
|
||
|
void chargestore_set_power_level(u8 power)
|
||
|
{
|
||
|
__this->power_level = power;
|
||
|
}
|
||
|
|
||
|
u8 chargestore_check_going_to_poweroff(void)
|
||
|
{
|
||
|
return __this->close_ing;
|
||
|
}
|
||
|
|
||
|
void chargestore_shutdown_reset(void)
|
||
|
{
|
||
|
if (__this->shutdown_timer) {
|
||
|
sys_hi_timer_del(__this->shutdown_timer);
|
||
|
__this->shutdown_timer = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
void chargestore_set_bt_init_ok(u8 flag)
|
||
|
{
|
||
|
__this->bt_init_ok = flag;
|
||
|
}
|
||
|
|
||
|
#if TCFG_TEST_BOX_ENABLE
|
||
|
u8 chargestore_get_connect_status(void)
|
||
|
{
|
||
|
return __this->connect_status;
|
||
|
}
|
||
|
|
||
|
void chargestore_clear_connect_status(void)
|
||
|
{
|
||
|
__this->connect_status = 0;
|
||
|
}
|
||
|
|
||
|
u8 chargestore_get_testbox_status(void)
|
||
|
{
|
||
|
return __this->testbox_status;
|
||
|
}
|
||
|
|
||
|
void chargestore_clear_testbox_status(void)
|
||
|
{
|
||
|
__this->testbox_status = 0;
|
||
|
chargestore_clear_connect_status();
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
CHARGESTORE_PLATFORM_DATA_BEGIN(chargestore_data)
|
||
|
.uart_irq = TCFG_CHARGESTORE_UART_ID,
|
||
|
.io_port = TCFG_CHARGESTORE_PORT,
|
||
|
CHARGESTORE_PLATFORM_DATA_END()
|
||
|
|
||
|
__BANK_INIT
|
||
|
int app_chargestore_init(void)
|
||
|
{
|
||
|
__this->power_status = 1;
|
||
|
__this->cover_status = 0;
|
||
|
__this->bt_init_ok = 0;
|
||
|
__this->testbox_status = 0;
|
||
|
__this->connect_status = 0;
|
||
|
__this->ear_number = 1;
|
||
|
__this->tws_power = 0xff;
|
||
|
__this->power_level = 0xff;
|
||
|
__this->sibling_chg_lev = 0xff;
|
||
|
__this->max_packet_size = 32;
|
||
|
__this->channel = 'U';
|
||
|
__this->close_ing = 0;
|
||
|
__this->event_hdl_flag = 0;
|
||
|
__this->switch2bt = 0;
|
||
|
chargestore_api_init(&chargestore_data);
|
||
|
syscfg_read(CFG_CHARGESTORE_TWS_CHANNEL, &__this->channel, 1);
|
||
|
log_info("channel = %c\n", __this->channel);
|
||
|
return 0;
|
||
|
}
|
||
|
__initcall(app_chargestore_init);
|
||
|
|
||
|
#endif
|
||
|
|