#include "button_porting.h"
#include "battery_service.h"
+
+/**
+ * 临时性去除充电禁止能力,待海思更新 充电线静态检测能力再回复。
+ * 否则会产生插着充电线重启后,无法继续充电的问题。
+*/
+#define DISABLE_VBUS_CHECK
+
osTimerId_t g_battery_timer = NULL;
// static bool g_bat_timer_is_running = false;
//获取电池温度
batteryservice_get_battery_temp(&bat_temp);
- if(get_charge_stat() == 1){
-
+ #ifdef DISABLE_VBUS_CHECK
PRINT("charging enable charge ! bat-temp %.2f Vs highest temp value %.2f !\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE);
/**
* 如果充电过程中,电池温度>=BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE,则停止充电
}
// PRINT("%d\r\n",BATTERY_VOLTAGE_DEBOUNCE);
}
+ #else
+ if(get_charge_stat() == 1)
+ {
+
+ PRINT("charging enable charge ! bat-temp %.2f Vs highest temp value %.2f !\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE);
+ /**
+ * 如果充电过程中,电池温度>=BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE,则停止充电
+ * 否则按正常流程充电
+ */
- }else{
- //冗余操作,理论上不必在此关闭充电IC
- PRINT("charger not plugged ,disable charge !\r\n");
+ if(bat_temp >= BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE)
+ {
+ PRINT("battery temp is too high : %.2f >= %.2f, disable charge!\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE);
+ disable_charge();
+ g_chargestatus = 0;
+ }else{
+
+ /**
+ * check and control charge current event
+ * larger than 90%, use low charge current
+ * other stat , use high charge current
+ * pay attention to : debounce
+ */
+
+ if(percent >=90)
+ {
+ PRINT("%d >= 90 percent , enable low current charge !\r\n",percent);
+ enable_charge();
+ enable_02c();
+ g_chargestatus = 1;
+ }
+ else
+ {
+ PRINT("%d < 90 percent , enable normal current charge !\r\n",percent);
+ enable_charge();
+ disable_02c();
+ g_chargestatus = 2;
+ }
+ // PRINT("%d\r\n",BATTERY_VOLTAGE_DEBOUNCE);
+ }
- disable_charge();
- g_chargestatus = 0;
- /**
- * if no in_charge then :
- * check and report low power event
- * report alarm lowpower event at 15%
- * report alarm shutdown event at 5%
- * pay attention to : debounce
- */
- if (percent >0 && percent <= BATTERY_LOWPOWER_ALARM_POWERLEVEL)
- {
- low_power_play_toUI(0);
- }else if (percent <= BATTERY_LOWPOWER_ALARM_SHUTDOWNLEVEL)
- {
- low_power_play_toUI(1);
+ }else{
+ //冗余操作,理论上不必在此关闭充电IC
+ PRINT("charger not plugged ,disable charge !\r\n");
+
+ disable_charge();
+
+ g_chargestatus = 0;
+ /**
+ * if no in_charge then :
+ * check and report low power event
+ * report alarm lowpower event at 15%
+ * report alarm shutdown event at 5%
+ * pay attention to : debounce
+ */
+ if (percent >0 && percent <= BATTERY_LOWPOWER_ALARM_POWERLEVEL)
+ {
+ low_power_play_toUI(0);
+ }else if (percent <= BATTERY_LOWPOWER_ALARM_SHUTDOWNLEVEL)
+ {
+ low_power_play_toUI(1);
+ }
}
- }
+ #endif
}
static void battery_check_task(void *arg)
uint32_t msgsize = (uint32_t)sizeof(common_notify_mail_t);
int sendbuf[2] = {0};
+ #ifdef DISABLE_VBUS_CHECK
+ disable_charge();
+ uapi_tcxo_delay_ms(1000);
+ battery_check_voltage();
+ #else
/**开机初始化电量及充电状态 Start*/
if(get_charge_stat() == 1)
{ //如果充电线插入状态,为了获取准确电池数据,需要先停止充电一秒,再继续获取电量。
}else{
battery_check_voltage();
}
+ #endif
battery_check_chargement();
/**开机初始化电量及充电状态 End*/
while (1) {
oncharging_status = 0;
sendbuf[0] = oncharging_status;
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_ONCHARGING_CHANGE,sendbuf);
-
+ #ifndef DISABLE_VBUS_CHECK
disable_charge();
+ #endif
charger_plug_event_ui_sendmsg_toUI(0);
}
}// while (1)
cat1_server_init();\r
#endif\r
\r
+ start_custom_ble_service();\r
+\r
startup_post_init();\r
\r
set_startup_finish_flag();\r
\r
#include "wearable_log.h"\r
#ifdef SUPPORT_ALIPAY_SEC\r
+#include "bleService.h"\r
+#include "alipay_bluetooth.h"\r
\r
-/* Gatt service UUID */\r
-#define ALIPAYY_SERVICE_ID 0x0238\r
-/* Gatt Characteristic UUID */\r
-#define ALIPAYY_CHARACTERISTIC_ID 0x024A\r
-/* Client Characteristic Configuration UUID */\r
-#define ALIPAYY_BLE_UUID_CLIENT_CHARACTERISTIC_CONF 0x2902\r
-/* Gatt Characteristic max length */\r
-#define ALIPAY_CHARACTERISTIC_MAX_LENGTH 256\r
-#define ALIPAY_BLE_ADV_ID 1\r
-#define ALIPAY_BLE_ADV_DATA_MAX_LENGTH 31\r
-#define ALIPAY_BLE_ADV_BLE_NAME_MAX_LENGTH 13 // 31-4-2-3-9 = 13\r
-#define ALIPAY_BLE_NAME_LENGTH 20\r
-#define ALIPAY_BLE_ADV_MAC_HEAD_LENTH 4\r
-#define ALIPAY_BLE_ADV_MAC_LENTH 10\r
-#define ALIPAY_BLE_ADV_TYPE_LENTH 3\r
-#define ALIPAY_BLE_ADV_UUID_LENTH 4\r
-#define ALIPAY_BLE_DEFAULT_NAME "WatchDemo"\r
-#define ALIPAY_BLE_DEFAULT_NAME_LEN 9 \r
-\r
+static uint8_t alipay_scan_data[16] ={0};\r
// Alipay 蓝牙模块全局变量\r
static gap_ble_callbacks_t g_alipay_gapble_cbs;\r
static gatts_callbacks_t g_alipay_gatts_cbs;\r
static const uint8_t alipay_adv_type[ALIPAY_BLE_ADV_TYPE_LENTH] = {2, 1, 2};\r
static const uint8_t alipay_adv_uuid[ALIPAY_BLE_ADV_UUID_LENTH] = {0x3, 0x3, 0x02, 0x38};\r
\r
-static bool svr_alipay_get_adv_start_state(void)\r
+bool svr_alipay_get_adv_start_state(void)\r
{\r
return g_alipay_adv_start_state;\r
}\r
-static void svr_alipay_set_adv_start_state(bool state)\r
+void svr_alipay_set_adv_start_state(bool state)\r
{\r
g_alipay_adv_start_state = state;\r
}\r
{\r
gap_ble_stop_adv(ALIPAY_BLE_ADV_ID);\r
}\r
-\r
+void svr_alipay_ble_adv_start_t(void)\r
+{\r
+ gap_ble_start_adv(ALIPAY_BLE_ADV_ID);\r
+}\r
/* adapt ios adv data. */\r
static void svr_alipay_ble_adv_data_set(int adv_id)\r
{\r
- uint8_t ble_name[ALIPAY_BLE_NAME_LENGTH] = {0};\r
- uint8_t ble_name_len = ALIPAY_BLE_NAME_LENGTH;\r
- uint8_t adv_data[ALIPAY_BLE_ADV_DATA_MAX_LENGTH] = {0};\r
+ uint8_t ble_name[32] = {0};\r
+ uint8_t ble_name_len = 32;\r
+ uint8_t adv_data[31] = {0};\r
uint8_t adv_data_len = 0;\r
- uint8_t ble_data_name[ALIPAY_BLE_ADV_BLE_NAME_MAX_LENGTH + 1 ] = {0}; // +TYPE LENGTH\r
+ uint8_t scan_data_len = 0;\r
+ uint8_t ble_data_name[13 + 1 ] = {0}; // +TYPE LENGTH\r
uint8_t ble_data_mac_switch[BD_ADDR_LEN] = {0};\r
- uint8_t adv_mac_head[ALIPAY_BLE_ADV_MAC_LENTH] = {0x9, 0x16, 0x02, 0x38};\r
+ uint8_t adv_mac_head[10] = {0x9, 0x16, 0x02, 0x38};\r
gap_ble_config_adv_data_t adv_data_info;\r
memset_s(&adv_data_info, sizeof(gap_ble_config_adv_data_t), 0, sizeof(gap_ble_config_adv_data_t));\r
+ unsigned char addr[6] = {0};\r
+ unsigned int len = 6;\r
+ errcode_t ret = 0;\r
\r
- int32_t ret = gap_ble_get_local_name(ble_name, &ble_name_len);\r
- // if (ret != 0) \r
- {\r
- ALIPAY_PRINT_ERR(0, "gap_ble_get_local_name fail, name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
- memset_s(ble_name, ALIPAY_BLE_NAME_LENGTH, 0, ALIPAY_BLE_NAME_LENGTH);\r
- memcpy_s(ble_name, ALIPAY_BLE_NAME_LENGTH, ALIPAY_BLE_DEFAULT_NAME, ALIPAY_BLE_DEFAULT_NAME_LEN);\r
- ble_name_len = ALIPAY_BLE_DEFAULT_NAME_LEN + 1; \r
- }\r
- ALIPAY_PRINT_DEBUG(0, "gap_ble_get_local_name name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
\r
bd_addr_t addr_info;\r
- ret = gap_ble_get_local_addr(&addr_info);\r
- ALIPAY_PRINT_DEBUG(0, "gap_ble_get_local_addr, ret:%u.", ret);\r
+ memset(addr,0,6);\r
+ bluetooth_get_local_addr(&addr[0],len);\r
+ char watchName[32];\r
+ memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
+ (void)sprintf_s(watchName, sizeof(watchName), "%s",ALIPAY_BLE_DEFAULT_NAME);\r
+ // (void)sprintf_s(watchName, sizeof(watchName), "%s",BLE_DEFAULT_NAME);\r
+\r
+ ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
+ if (ret == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt SetLocalName ret = 0x%x", ret);\r
+ }\r
+\r
+ \r
+ ret = bluetooth_get_local_name(ble_name, &ble_name_len);\r
+ if (ret != 0) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_get_local_name fail, name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
+ memset_s(ble_name, 32, 0, 32);\r
+ memcpy_s(ble_name, 32,ALIPAY_BLE_DEFAULT_NAME, 32);\r
+ ble_name_len = 32 + 1; \r
+ }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_get_local_name name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
+\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_get_local_addr, ret:%u.", ret);\r
memcpy_s(adv_data, sizeof(alipay_adv_type), alipay_adv_type, sizeof(alipay_adv_type));\r
adv_data_len = sizeof(alipay_adv_type);\r
\r
- if (ble_name_len > ALIPAY_BLE_ADV_BLE_NAME_MAX_LENGTH) {\r
- ble_name_len = ALIPAY_BLE_ADV_BLE_NAME_MAX_LENGTH;\r
+ if (ble_name_len > 13) {\r
+ ble_name_len = 13;\r
}\r
ble_data_name[0] = ble_name_len;\r
ble_data_name[1] = 0x9;\r
memcpy_s(adv_data + adv_data_len, ble_name_len + 1, ble_data_name, ble_name_len + 1);\r
\r
adv_data_len = adv_data_len + ble_name_len + 1;\r
- memcpy_s(adv_data + adv_data_len, sizeof(alipay_adv_uuid), alipay_adv_uuid, sizeof(alipay_adv_uuid));\r
- adv_data_len = adv_data_len + sizeof(alipay_adv_uuid);\r
+ // memcpy_s(adv_data + adv_data_len, sizeof(alipay_adv_uuid), alipay_adv_uuid, sizeof(alipay_adv_uuid));//这是tx power\r
+ // adv_data_len = adv_data_len + sizeof(alipay_adv_uuid);\r
+\r
int k = BD_ADDR_LEN;\r
for (int i = 0; i < BD_ADDR_LEN; i++) {\r
- ble_data_mac_switch[--k] = addr_info.addr[i];\r
+ ble_data_mac_switch[--k] = addr[i];\r
}\r
- ALIPAY_PRINT_ERR(0, "ble_info:%02x:%02x:%02x:%02x:%02x:%02x", ble_data_mac_switch[0], ble_data_mac_switch[1],\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble_info:%02x:%02x:%02x:%02x:%02x:%02x", ble_data_mac_switch[0], ble_data_mac_switch[1],\r
ble_data_mac_switch[2], ble_data_mac_switch[3], ble_data_mac_switch[4], ble_data_mac_switch[5]);\r
- memcpy_s(adv_mac_head + ALIPAY_BLE_ADV_MAC_HEAD_LENTH, BD_ADDR_LEN, ble_data_mac_switch, BD_ADDR_LEN);\r
+ memcpy_s(adv_mac_head + 4, BD_ADDR_LEN, ble_data_mac_switch, BD_ADDR_LEN);\r
\r
memcpy_s(adv_data + adv_data_len, sizeof(adv_mac_head), adv_mac_head, sizeof(adv_mac_head));\r
adv_data_len = adv_data_len + sizeof(adv_mac_head);\r
\r
-// uint8_t scan_data[20];\r
-// memset(scan_data,0,20);\r
-// adv_data_info.scan_rsp_data = scan_data;\r
-// adv_data_info.scan_rsp_length = 0;\r
- adv_data_info.adv_data = adv_data;\r
- adv_data_info.adv_length = adv_data_len;\r
- ALIPAY_PRINT_ERR(0, "adv_data_info.adv_length:%u.", adv_data_len);\r
-\r
- errcode_t gap_ret = gap_ble_set_adv_data(adv_id, &adv_data_info);\r
- ALIPAY_PRINT_ERR(0, "adv_data_info.adv_length: gap_ret %d.", gap_ret);\r
+ memset(alipay_scan_data,0,16);\r
+ \r
+ alipay_scan_data[0] = 0x09;//长度\r
+ alipay_scan_data[1] = 0xff;//数据类型 manufactory data\r
+ alipay_scan_data[2] = 'J';\r
+ alipay_scan_data[3] = 'H';\r
+ alipay_scan_data[4] = ble_data_mac_switch[0];\r
+ alipay_scan_data[5] = ble_data_mac_switch[1];\r
+ alipay_scan_data[6] = ble_data_mac_switch[2];\r
+ alipay_scan_data[7] = ble_data_mac_switch[3];\r
+ alipay_scan_data[8] = ble_data_mac_switch[4];\r
+ alipay_scan_data[9] = ble_data_mac_switch[5];\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adv_data_info.adv_length.scan_data_len:%d\r\n",scan_data_len);\r
+ scan_data_len = 10;\r
+ if (scan_data_len > 16){\r
+ scan_data_len = 16;\r
+ }\r
+ adv_data_info.scan_rsp_data = alipay_scan_data;//扫描数据\r
+ adv_data_info.scan_rsp_length = scan_data_len;//扫描长度\r
+ adv_data_info.adv_data = adv_data;//广播数据 \r
+ adv_data_info.adv_length = adv_data_len;//广播长度\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adv_data_info.adv_length:%u. scan_data_len:%d\r\n", adv_data_len,scan_data_len);\r
+ ret = gap_ble_set_adv_data(adv_id, &adv_data_info);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "alipay avd:%x\r\n", ret);\r
return;\r
}\r
\r
conn_state, pair_state);\r
g_alipay_conn_id = conn_id;\r
if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
- svr_alipay_ble_adv_start();\r
+ // svr_alipay_ble_adv_start();\r
+ // svr_alipay_reset_init();\r
+ gap_ble_start_adv(ALIPAY_BLE_ADV_ID);\r
} else {\r
svr_alipay_set_adv_start_state(false);\r
}\r
{\r
ALIPAY_PRINT_DEBUG(0, "BleAdvStopCallback adv_id: %d, status:%d\n", adv_id, status);\r
}\r
-\r
+// static uint16_t alipay_server_handle = 0;\r
static void svr_alipay_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
errcode_t status)\r
{\r
+ // alipay_server_handle = srv_handle;\r
ALIPAY_PRINT_DEBUG(0, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x 0x%x", status, server_id, srv_handle,\r
*((uint16_t *)uuid->uuid));\r
int ret;\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_SERVICE_ID)) {\r
+ // if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_SERVICE_ID)) \r
+ {\r
uint16_t id = ALIPAYY_CHARACTERISTIC_ID;\r
gatts_add_chara_info_t character;\r
uint16_t value = 0;\r
\r
g_alipay_server_handle = result->value_handle;\r
\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_CHARACTERISTIC_ID)) {\r
+ // if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_CHARACTERISTIC_ID)) \r
+ {\r
uint8_t bas_ccc_val[] = {\r
0x01,\r
0x00\r
}\r
}\r
}\r
-\r
+//添加alipay 特征和描述符\r
+void svr_alipay_bt_gatts_characteristic_add_dec(uint8_t server_id,uint16_t srv_handle)\r
+{\r
+ int ret = 0;\r
+ uint16_t id = ALIPAYY_CHARACTERISTIC_ID;\r
+ gatts_add_chara_info_t character;\r
+ uint16_t value = 0;\r
+\r
+ memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
+ character.chara_uuid.uuid_len = sizeof(id);\r
+ memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&id, sizeof(id));\r
+ character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+ character.properties =\r
+ GATT_CHARACTER_PROPERTY_BIT_READ | GATT_CHARACTER_PROPERTY_BIT_WRITE | GATT_CHARACTER_PROPERTY_BIT_NOTIFY;\r
+ character.value_len = ALIPAY_CHARACTERISTIC_MAX_LENGTH;\r
+ character.value = g_alipay_character_buf;\r
+\r
+ ret = gatts_add_characteristic(server_id, srv_handle, &character);\r
+ if (ret != ERRCODE_SUCC) {\r
+ ALIPAY_PRINT_ERR(0, "gatts_add_characteristic fail, ret:%u.\r\n", ret);\r
+ }\r
+ uint8_t bas_ccc_val[] = {\r
+ 0x01,\r
+ 0x00\r
+ };\r
+ bt_uuid_t ccc_uuid = { 0 };\r
+ bts_data_to_uuid_len2(0x2902, &ccc_uuid);\r
+ gatts_add_desc_info_t descriptor;\r
+ descriptor.desc_uuid = ccc_uuid;\r
+ descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+ descriptor.value_len = (uint16_t)sizeof(bas_ccc_val);\r
+ descriptor.value = bas_ccc_val;\r
+\r
+ ret = gatts_add_descriptor(server_id, srv_handle, &descriptor);\r
+ if (ret != ERRCODE_SUCC) {\r
+ ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
+ }\r
+ bd_addr_t addr_info;\r
+ gatts_add_desc_info_t descriptor_ap;\r
+ gap_ble_get_local_addr(&addr_info);\r
+ bts_data_to_uuid_len2(0x4b02, &ccc_uuid);\r
+ descriptor_ap.desc_uuid = ccc_uuid;\r
+ descriptor_ap.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+ descriptor_ap.value_len = BD_ADDR_LEN;\r
+ uint8_t ble_data_mac_switch[BD_ADDR_LEN] = {0};\r
+ int k = BD_ADDR_LEN;\r
+ for (int i = 0; i < BD_ADDR_LEN; i++) {\r
+ ble_data_mac_switch[--k] = addr_info.addr[i];\r
+ }\r
+ descriptor_ap.value = ble_data_mac_switch;\r
+ ret = gatts_add_descriptor(server_id, srv_handle, &descriptor_ap);\r
+ if (ret != ERRCODE_SUCC) {\r
+ ALIPAY_PRINT_ERR(0, "gatts_add_descriptor second fail, ret:%u.\r\n", ret);\r
+ }\r
+}\r
static void svr_alipay_bt_gatts_descriptor_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
uint16_t desc_handle, errcode_t status)\r
{\r
void svr_alipay_bt_gatts_noyify(uint8_t *data, uint16_t data_len)\r
{\r
gatts_ntf_ind_t data_info;\r
- data_info.attr_handle = g_alipay_server_handle;\r
+ data_info.attr_handle = alipay_handle;\r
data_info.value = data;\r
data_info.value_len = data_len;\r
\r
- errcode_t ret = gatts_notify_indicate(g_alipay_server_id, g_alipay_conn_id, &data_info);\r
- ALIPAY_PRINT_ERR(0, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.", ret, g_alipay_server_id,\r
- g_alipay_conn_id, g_alipay_server_handle);\r
+ errcode_t ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+ ALIPAY_PRINT_ERR(0, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.", ret, g_ble_server_id,\r
+ g_ble_conn_id, alipay_handle);\r
}\r
\r
static void svr_alipay_btcallback_reg(void)\r
g_alipay_gatts_cbs.mtu_changed_cb = NULL;\r
gatts_register_callbacks(&g_alipay_gatts_cbs);\r
}\r
+//gatts_unregister_server\r
\r
-static void svr_alipay_bt_init_gatts(void)\r
+void svr_alipay_bt_init_gatts(void)\r
{\r
- uint16_t service_id = ALIPAYY_SERVICE_ID;\r
- uint8_t server_id = 0;\r
- bt_uuid_t uuid;\r
int ret;\r
-\r
- uuid.uuid_len = sizeof(service_id);\r
- memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&service_id, sizeof(service_id));\r
- ret = gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
+ bt_uuid_t alipay_service_uuid = {0};\r
+ bts_data_to_uuid_len2(ALIPAYY_SERVICE_ID, &alipay_service_uuid);\r
+ //只有一个服务,永远是1\r
+ ret = gatts_add_service(1, &alipay_service_uuid, true);\r
if (ret != ERRCODE_SUCC) {\r
- ALIPAY_PRINT_ERR(0, "gatts_register_server ret:%u.\r\n", ret);\r
+ ALIPAY_PRINT_ERR(0, "svr_alipay_bt_init_gatts ret:%u.\r\n", ret);\r
}\r
- ALIPAY_PRINT_ERR(0, "gatts_register_server ret: 0x%x server_id = 0x%x", ret, server_id);\r
- g_alipay_server_id = server_id;\r
- uuid.uuid_len = sizeof(service_id);\r
- memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&service_id, sizeof(service_id));\r
- ret = gatts_add_service(server_id, &uuid, true);\r
- if (ret != ERRCODE_SUCC) {\r
- //ALIPAY_PRINT_ERR(0, "gatts_add_service ret:%u.\r\n", ret);\r
- }\r
- ALIPAY_PRINT_ERR(0, "gatts_add_service ret:%u.\r\n", ret);\r
+\r
return;\r
+ // uint16_t id = ALIPAYY_SERVICE_ID;\r
+ // uint16_t srevr_id = ALIPAYY_SERVICE_ID;\r
+ // uint16_t ser_id = 0x1fff;\r
+ // uint8_t serverId = 0;\r
+ // bt_uuid_t uuid;\r
+ // errcode_t ret = 0;\r
+ // uuid.uuid_len = (uint8_t)sizeof(srevr_id);\r
+ // memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&srevr_id, sizeof(srevr_id));\r
+ // ret = gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
+ // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_register_server ret: 0x%x serverId = 0x%x uuid.uuid_len:%d", ret, serverId,uuid.uuid_len);\r
+ // g_alipay_server_id = serverId;\r
+ // // svr_alipay_bt_init_gatts();\r
+ // bt_uuid_t ble_service_uuid = {0};\r
+ // bts_data_to_uuid_len2(id, &ble_service_uuid);\r
+ // ret = gatts_add_service(serverId, &ble_service_uuid, true);\r
+ // return;\r
+\r
}\r
void alipay_unregist_server(void)\r
{\r
ALIPAY_PRINT_ERR(0, "enable_bt_stack ret:%u.\r\n", ret);\r
}\r
if (g_alipay_ble_init_flag == true) {\r
- return;\r
+ // return;\r
}\r
svr_alipay_btcallback_reg();\r
svr_alipay_bt_init_gatts();\r
- //svr_alipay_ble_adv_start();\r
+ svr_alipay_ble_adv_start();\r
g_alipay_ble_init_flag = true;\r
return;\r
}\r
#include <stdint.h>
#include <stdio.h>
#include "stdbool.h"
-
+#include "bts_def.h"
/* Gatt service UUID */
#define ALIPAYY_SERVICE_ID 0x3802
/* Gatt Characteristic UUID */
-#define ALIPAYY_CHARACTERISTIC_ID 0x4a02
+#define ALIPAYY_CHARACTERISTIC_ID 0x4A02
/* Client Characteristic Configuration UUID */
#define ALIPAYY_BLE_UUID_CLIENT_CHARACTERISTIC_CONF 0x2902
/* Gatt Characteristic max length */
#define ALIPAY_BLE_MAC_MAX_LEN 6
void svr_alipay_bluetooth_init(void);
void ble_alipay_add_characters_input_report_cbk(uint16_t srvc_handle);
-void alipay_add_chart_decr_cb(uint8_t server_id,uint16_t srv_handle);
+void svr_alipay_bt_gatts_characteristic_add_dec(uint8_t server_id,uint16_t srv_handle);
+void svr_alipay_set_adv_start_state(bool state);
+bool svr_alipay_get_adv_start_state(void);
+void svr_alipay_bt_init_gatts(void);
+void svr_alipay_ble_adv_start_t(void);
#endif
#include "osal_msgqueue.h"
#include "thread_init.h"
#include "alipay_transit.h"
+#include "bleService.h"
+#include "alipay_bluetooth.h"
#include "vendor_file.h"
#if defined(__FREERTOS__)
#include "FreeRTOS.h"
{
if (value) {
printf("svr_alipay_notify_bt true:%d",value);
-
- svr_alipay_ble_adv_start();
+ // ble_avd_mode_change(1);
+ // svr_alipay_ble_adv_start();
} else {
printf("svr_alipay_notify_bt false:%d",value);
- svr_alipay_ble_adv_stop();
+ // svr_alipay_ble_adv_stop();
}
return 0;
}
uapi_gpio_set_dir(ALIPAY_SEC_GPIO, GPIO_DIRECTION_OUTPUT);
uapi_gpio_set_val(ALIPAY_SEC_GPIO, GPIO_LEVEL_HIGH);
osDelay(30);
- svr_alipay_bluetooth_init();
+
HS_IIC_Init();
alipay_pre_init();
svr_alipay_enter_lpm();
#ifdef JS_ENABLE
ACELite::ProductAdapter::SetScreenSize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
#endif
- ConfigModel::GetInstance()->Init();
+ // ConfigModel::GetInstance()->Init();
// 初始化语言
GraphicStartUp::InitFontEngine(MEM_POOL_UI_FONT, MEM_POOL_UI_FONT_SIZE, OHOS::VECTOR_FONT_DIR, DEFAULT_VECTOR_FONT_FILENAME);
WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "NativeLauncher::InitNativeLauncher");
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStart");\r
Presenter<AlipayMainView>::OnStart();\r
/**启动alipay蓝牙服务*/\r
- start_alipay_ble_service();\r
+ // start_alipay_ble_service();\r
/* -------------------------------- 设置支付宝界面常亮 ------------------------------- */\r
alipayMode_->AlipayScreenControl(true);\r
/* -------------------------------------------------------------------------- */\r
{\r
\r
/**关闭alipay蓝牙服务*/\r
- stop_alipay_ble_service();\r
+ // stop_alipay_ble_service();\r
\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStop");\r
svr_alipay_destroy_task();\r
\r
#endif\r
\r
- /**初始化 经典蓝牙callback 经典蓝牙不改动,因此启动就初始化好 */\r
- BtInitCallBacks();\r
+ // /**初始化 经典蓝牙callback 经典蓝牙不改动,因此启动就初始化好 */\r
+ // BtInitCallBacks();\r
\r
- /**启动spp服务 */\r
+ // /**启动spp服务 */\r
// BtInitSpp();\r
\r
SetUpListCase();\r
#ifdef SUPPORT_POWER_MANAGER
const power_display_svr_api_t *display_api = power_display_svr_get_api();
display_api->turn_on_screen();
- display_api->set_screen_set_keepon_timeout(25000);
+ display_api->set_screen_set_keepon_timeout(15000);
#endif
#include "stdint.h"
#include "errcode.h"
+struct ancs_data_info_t
+{
+ int uid;//uid 消息唯一编号
+ int appid;//消息类型:1:微信 2:QQ 3:短信 4:其他
+ char title[256];//消息发送者
+ char msg[300];//消息内容
+ char time[20];//时间戳"20240417T102400" 用T分隔日期和时间,显示需要注意
+ int hasCode;//消息hash code
+};
+
enum PAIRING
{
DEVICEBIND = 0,//
#include "errcode.h"\r
#define PHONE_WATCH_CONFIG_PATH "/user/userdata/phone_watch.json"\r
#define ALARM_DATA_CONFIG_PATH "/user/userdata/alarm_test.json"\r
+#define ANCS_DATA_CONFIG_PATH "/user/userdata/ancs.json"\r
#include "bletest.h"\r
#define DEBUG_TEST (0)\r
+#define CRC_CHECK_ERR 0 //crc校验失败\r
+#define JSON_CHECK_OK 1 //json解析成功\r
+#define JSON_CHECK_ERR 2 //json解析失败\r
\r
uint8_t *bigDataBuf = NULL;//大数据buf\r
uint8_t bigDataBufLen=0;\r
bool sendbigDataBufState = false;//发送大数据表示不要被其他指令打断\r
bool recvBigDataBufState = false;//接收大数据标志\r
static bool muiltFlag = 0;//多包数据flag\r
+static bool ANCSBigBufFlag = 0;//ANCS多包数据flag\r
static uint16_t data_len = 0;\r
ble_recv_data_info_t ble_recv_data;\r
ble_recv_msg_callback_t g_recv_msg_toUI = NULL;\r
}\r
}\r
\r
+//安卓消息接收解析数据 //ANCS 2AE1\r
+uint8_t jscheck_ancs(uint8_t *data)\r
+{\r
+ \r
+ uint8_t *json;\r
+ json = data;\r
+ cJSON* root = cJSON_Parse((const char *)json);\r
+ if (root == NULL) {\r
+ printf("信息解析 JSON解析\n");\r
+ return 2;\r
+ }\r
+\r
+ int uid_t = 0;\r
+ int appid_t = 0;\r
+ char titleBuf[256];\r
+ char msgBuf[300];\r
+ char timeBuf[32];\r
+ int hasCode_t = 0;\r
+ cJSON* uid = cJSON_GetObjectItem(root, "uid");\r
+ if (cJSON_IsNumber(uid)) {\r
+ printf("uid_t: %d\n", uid->valueint);\r
+ }\r
+ cJSON* appid = cJSON_GetObjectItem(root, "appid");\r
+ if (cJSON_IsNumber(appid)) {\r
+ printf("appid_t: %d\n", appid->valueint);\r
+ appid_t = appid->valueint;\r
+ }\r
+ cJSON* title_c = cJSON_GetObjectItem(root, "title");\r
+ if (cJSON_IsString(title_c)) {\r
+ printf("titleBuf: %s\n", title_c->valuestring);\r
+ title_c->valuestring[strlen(title_c->valuestring)]='\0';\r
+ memcpy(titleBuf,title_c->valuestring,strlen(title_c->valuestring));\r
+ }\r
+ cJSON* msg = cJSON_GetObjectItem(root, "msg");\r
+ if (cJSON_IsString(msg)) {\r
+ printf("msgBuf: %s\n", msg->valuestring);\r
+ // msgBuf = msg->valuestring;\r
+ msg->valuestring[strlen(msg->valuestring)]='\0';\r
+ memcpy(msgBuf,msg->valuestring,strlen(msg->valuestring));\r
+ }\r
+ cJSON* time = cJSON_GetObjectItem(root, "time");\r
+ if (cJSON_IsString(time)) {\r
+ printf("time: %s\n", time->valuestring);\r
+ // timeBuf = time->valueint;\r
+ time->valuestring[strlen(time->valuestring)]='\0';\r
+ memcpy(timeBuf,time->valuestring,strlen(time->valuestring));\r
+\r
+ \r
+ }\r
+ cJSON* hasCode = cJSON_GetObjectItem(root, "hasCode");\r
+ if (cJSON_IsNumber(hasCode)) {\r
+ printf("hasCode_t: %d\n", hasCode->valueint);\r
+ hasCode_t = hasCode->valueint;\r
+ }\r
+ cJSON_Delete(root);\r
+ uint8_t buf_size = 0;\r
+ FILE *jsfile = fopen(ANCS_DATA_CONFIG_PATH, "r");\r
+ cJSON *data_root;\r
+ if (jsfile != NULL) {\r
+ printf("succes opening file\n");\r
+ fseek(jsfile, 0, SEEK_END);\r
+ long fileSize = ftell(jsfile);\r
+ fseek(jsfile, 0, SEEK_SET);\r
+\r
+ char *jsonData = (char *)malloc(fileSize + 1);\r
+ fread(jsonData, 1, fileSize, jsfile);\r
+ jsonData[fileSize] = '\0';\r
+ fclose(jsfile);\r
+\r
+ // 解析JSON数据\r
+ printf("jsonData %s",jsonData);\r
+ data_root= cJSON_Parse(jsonData);\r
+ // data_root = cJSON_GetObjectItem(modifiedJson,"infor");\r
+ free(jsonData);\r
+ }else{\r
+ data_root = cJSON_Parse("{\\r
+ \"infor\": [\\r
+ ]}");\r
+ }\r
+ cJSON *dataJSON = cJSON_CreateObject();\r
+\r
+ cJSON *detialJSON = cJSON_CreateObject();\r
+\r
+ cJSON* itemJSON = cJSON_CreateObject();\r
+\r
+ \r
+ \r
+ cJSON_AddNumberToObject(itemJSON,"uid",uid_t);\r
+ cJSON_AddNumberToObject(itemJSON,"appid_t",appid_t);\r
+ cJSON_AddStringToObject(itemJSON,"title",titleBuf);\r
+ cJSON_AddStringToObject(itemJSON,"msg",msgBuf);\r
+ cJSON_AddStringToObject(itemJSON,"time",timeBuf);\r
+ cJSON_AddNumberToObject(itemJSON,"hasCode",hasCode_t);\r
+ cJSON *dataList = cJSON_GetObjectItem(data_root, "infor");\r
+ // printf("dataList %s",dataList);\r
+ cJSON *array = cJSON_GetObjectItemCaseSensitive(data_root, "infor");\r
+ cJSON_AddItemToArray(array, itemJSON);\r
+\r
+ // char *modified_json = cJSON_Print(data_root);\r
+\r
+\r
+ char *jsonString = cJSON_Print(data_root);\r
+ printf("ancs %s",jsonString);\r
+ FILE *file = fopen(ANCS_DATA_CONFIG_PATH, "wb");\r
+ if (file)\r
+ {\r
+ fwrite(jsonString, 1, strlen(jsonString), file);\r
+ fclose(file);\r
+ }\r
+ free(jsonString);\r
+ return 1;\r
+}\r
+void ancsDataShowCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
+{\r
+ uint8_t value[19];\r
+ memset(value,0,19);\r
+ uint32_t tmp = 1;\r
+ value[0] =0x72;\r
+ value[1] =0x02;\r
+ value[2] =0x01;\r
+ memcpy(value+3,&tmp,4);\r
+ memcpy(value+7,&tmp,4);\r
+ memcpy(value+11,&tmp,4);\r
+ memcpy(value+15,&tmp,2);\r
+ \r
+ if(Check_CRC(crcnum,len,crcvalue))\r
+ {\r
+ //解析ancs数据并且显示出来\r
+ uint8_t check_ok= 1;\r
+ check_ok = jscheck_ancs(crcnum);\r
+ value[17] = 1;\r
+ value[18] = Calculate_CRC(value,18);\r
+ sendBleData(value,19);\r
+ }else{\r
+ value[17] = 0;\r
+ value[18] = Calculate_CRC(value,18);\r
+ sendBleData(value,19);\r
+ }\r
+}\r
+void type2AE1Data(uint8_t *buf_cmd,uint8_t *data,uint16_t datalen,uint8_t *totalData,uint8_t crcvalue)\r
+{\r
+ uint16_t typeID = buf_cmd[1]*256+buf_cmd[2];\r
+ printf("type2AE1Data typeID:0x%x",typeID);\r
+ switch (typeID) //ID\r
+ {\r
+ case ANDROID_ANCS_CMD://app下发的获取用户信息\r
+ ancsDataShowCmd(typeID,data,datalen,totalData,crcvalue);\r
+ break;\r
+ }\r
+}\r
+void bleRecvANCSData(uint8_t *data, uint16_t data_size,uint8_t *buf_cmd,uint8_t *totalData,uint8_t crcvalue)//buf_cmd 指令前17个字节数据\r
+{\r
+ uint8_t type = buf_cmd[1];\r
+ printf("type:%d %d data_size:%d data:%d crcvalue:%x",buf_cmd[0],type,data_size,data[0],crcvalue);\r
+ switch (type)\r
+ {\r
+ case 0x03://获取手机信息\r
+ type2AE1Data(buf_cmd,data,data_size,totalData,crcvalue);\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+}\r
\r
uint32_t packdataLen = 0;\r
uint32_t totalDataLen = 0;\r
break;\r
}\r
}\r
- if(Bleconnect == false)//断开蓝牙不接收数据\r
+ \r
+ }\r
+ }\r
+ else if(data2ae1Cmd == handle)//安卓消息特征Hhandle\r
+ {\r
+ \r
+ while (1)\r
+ {\r
+ printf("ancs!!!!!!!!!");\r
+ if(ANCSBigBufFlag == 0)\r
{\r
- totalpack = 0;\r
- muiltFlag = 0; \r
- packdataLen = 0;\r
- totalDataLen = 0;\r
- if(bigDataBuf != NULL){\r
- free(bigDataBuf);\r
- }\r
- if(recvData != NULL){\r
- free(recvData);\r
+ if(event_size >= 17)\r
+ {\r
+ packdataLen = event_size;//第一包的数据大小 第二包不走这里 514-17 = 497\r
+ memcpy(&totalDataLen,totalData+7,4);//总的数据大小\r
+ printf("ancs totalDataLen;%d totaldataLen:%d",totalDataLen,packdataLen);\r
+ if(totalDataLen > event_size-18)//如果514-18 = 496 497 > 496 \r
+ {\r
+ printf("ancs totalDataLen;%d packdataLen:%d",totalDataLen,packdataLen);\r
+\r
+ recvData = malloc(totalDataLen+18);\r
+ if(recvData == NULL)return;\r
+ ANCSBigBufFlag = 1;//表示有两包以上的数据\r
+ memcpy(recvData,totalData,event_size);//从第十七个字节开始接收数据data\r
+ memset(cmd_data,0,17);\r
+ memcpy(cmd_data,totalData,17);\r
+ totalpack=1;\r
+ break;\r
+ }else{//直接发送数据解析\r
+ printf("ancs totalDataLen11;%d packdataLen:%d",totalDataLen,packdataLen);\r
+ packdataLen = event_size-17;\r
+ memset(cmd_data,0,17);\r
+ memcpy(cmd_data,totalData,17);\r
+\r
+ // 73 2 10 1 0 0 0 16 0 0 0 1 0 0 0 16 0\r
+ recvData = malloc(packdataLen-1);\r
+ if(recvData == NULL)return;\r
+ memcpy(recvData,totalData+17,packdataLen-1);\r
+ if(totalDataLen == 0){\r
+ crcvalue = 0x00;\r
+ }else{\r
+ crcvalue = totalData[event_size-1];\r
+ }\r
+ \r
+ bleRecvANCSData(recvData,packdataLen-1,cmd_data,totalData,crcvalue);\r
+ if(recvData != NULL){\r
+ free(recvData);\r
+ }\r
+ packdataLen = 0;\r
+ break;\r
+ }\r
}\r
break;\r
+ \r
+ }else//这是接收两包以上的数据\r
+ {\r
+ totalpack+=1;//包数\r
+ printf("ancs 122222;%d packdataLen:%d",totalDataLen,packdataLen);\r
+ memcpy(recvData+packdataLen,totalData,event_size); //先copy再加\r
+ packdataLen = packdataLen+event_size;\r
+ printf("ancs 133333;%d packdataLen:%d",totalDataLen,packdataLen);\r
+ if(totalDataLen >= (packdataLen-18))//总的数据包 packdataLen-18把前面17个字节的包头和一个字节的校验和去掉得到数据部分和校验和部分\r
+ {\r
+ bigDataBuf = malloc(totalDataLen);\r
+ crcvalue = totalData[event_size-1];\r
+ memcpy(bigDataBuf,recvData+17,totalDataLen);\r
+ bleRecvANCSData(bigDataBuf,totalDataLen,cmd_data,recvData,crcvalue);\r
+ totalDataLen = 0;\r
+ packdataLen = 0;\r
+ ANCSBigBufFlag = 0;\r
+ totalpack = 0; \r
+ if(bigDataBuf != NULL){\r
+ free(bigDataBuf);\r
+ }\r
+ if(recvData != NULL){\r
+ free(recvData);\r
+ }\r
+ break;\r
+ }else{\r
+\r
+ break;\r
+ }\r
}\r
+ \r
+ }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xhandle %d,%d %d",data2ae3Cmd,data2ae4Cmd,handle);\r
+ }\r
+ if(Bleconnect == false)//断开蓝牙不接收数据\r
+ {\r
+ totalpack = 0;\r
+ muiltFlag = 0; \r
+ ANCSBigBufFlag = 0;\r
+ packdataLen = 0;\r
+ totalDataLen = 0;\r
+ recvBigDataBufState = false;\r
+ sendbigDataBufState = false;\r
+ if(bigDataBuf != NULL){\r
+ free(bigDataBuf);\r
+ }\r
+ if(recvData != NULL){\r
+ free(recvData);\r
}\r
}\r
- // else if(data2ae5Cmd == handle)\r
- // {\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xhandle %d,%d %d",data2ae3Cmd,data2ae4Cmd,handle);\r
- // }\r
}\r
void free_ble_data(void)//以防断开蓝牙没有释放数据类型\r
{\r
muiltFlag = 0; \r
packdataLen = 0;\r
totalDataLen = 0;\r
+ ANCSBigBufFlag = 0;\r
+ recvBigDataBufState = false;\r
+ sendbigDataBufState = false;\r
if(bigDataBuf != NULL){\r
free(bigDataBuf);\r
}\r
}msg_get_other_target_info_t;//获取其他目标设置
#pragma pack()
+/*********************ANCS********安卓指令********************/
+#define ANDROID_ANCS_CMD 0x0301
+
+
/***********************长指令>20字节****************************************/
/*******************TYPE+ID**********************/
/*
#define BLE_DEFAULT_NAME_LEN 32\r
#define BLE_MAC_MAX_LEN 6 //蓝牙mac地址最大个数6个\r
\r
-\r
+static uint8_t exit_alipay_gui = 0;\r
// 蓝牙模块全局变量\r
static gap_ble_callbacks_t g_ble_gapble_cbs;\r
static gatts_callbacks_t g_ble_gatts_cbs;\r
\r
static uint16_t g_ble_read_handle = 0;\r
uint16_t g_ble_conn_id = 0;\r
-static uint16_t g_ble_server_handle = 0;\r
+uint16_t g_ble_server_handle = 0;\r
static uint8_t g_ble_character_buf[BLE_CHARACTERISTIC_MAX_LENGTH] = {0};\r
static bool g_ble_init_flag = false;\r
static const uint8_t ble_adv_type[BLE_ADV_TYPE_LENTH] = {2, 1, 2};\r
#define A2DP_STREAM_ACCEPT_TIMER_PERIOD 500\r
static osal_timer g_a2dp_stream_accept_timer = {NULL, NULL, 0, 0};\r
\r
-uint8_t data2ae3Cmd = 0;//2ae3短指令特征值\r
-uint8_t data2ae4Cmd = 0;\r
-uint8_t data2ae5Cmd = 0;\r
+uint16_t data2ae3Cmd = 0;//2ae3短指令特征值\r
+uint16_t data2ae4Cmd = 0;\r
+uint16_t data2ae5Cmd = 0;\r
+uint16_t data2ae1Cmd = 0;//安卓消息来电\r
#if 1//def SUPPORT_BLE_SERVICE\r
static void set_phone_info(bd_addr_t *addr)//保存手机信息 包含手机mac地址\r
{\r
void svr_ble_adv_start_param(void)\r
{\r
int adv_id = BLE_ADV_ID;\r
- if (AdverFlag == false) { //已经开始广播了,不需要重复开启广播\r
+ if (AdverFlag == true) { //已经开始广播了,不需要重复开启广播\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BleAdvStart already started1");\r
- return;\r
+ // return;\r
}\r
\r
gap_ble_adv_params_t adv_para;\r
g_ble_conn_id = conn_id;\r
if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! 0x%x ret:%d\r\n",pair_state,AdverFlag);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! 0x%x exit_alipay_gui:%d\r\n",pair_state,exit_alipay_gui);\r
// if(AdverFlag == true){\r
- svr_ble_adv_start();\r
- free_ble_data();\r
+\r
+ if(exit_alipay_gui==0)\r
+ {\r
+ if(svr_alipay_get_adv_start_state())\r
+ {\r
+ svr_alipay_set_adv_start_state(0);\r
+ svr_alipay_ble_adv_stop();\r
+ svr_ble_adv_start_param();\r
+\r
+ }\r
+ svr_ble_adv_start();\r
+ }\r
+ \r
+ free_ble_data();\r
// } \r
} else {\r
devpair_state = 0;//\r
// ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
}\r
}\r
-static uint16_t ble_server_handle = 0;\r
+\r
static uint8_t g_alipay_character_buf[256] = {0};\r
-void alipay_add_chart_decr_cb(uint8_t server_id,uint16_t srv_handle)\r
+static void alipay_add_chart_decr_recv_cmd1(uint8_t server_id,uint16_t srv_handle)\r
{\r
errcode_t ret = 0;\r
// uint16_t id = ALIPAYY_CHARACTERISTIC_ID;\r
gatts_add_chara_info_t character;\r
uint16_t value = 0;\r
bt_uuid_t alipay_service_uuid = {0};\r
- bts_data_to_uuid_len2(0x4a02, &alipay_service_uuid);\r
+ bts_data_to_uuid_len2(ALIPAYY_CHARACTERISTIC_ID, &alipay_service_uuid);\r
memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
// character.chara_uuid.uuid_len = sizeof(id);\r
// memcpy_s(character.chara_uuid.uuid, sizeof (character.chara_uuid.uuid), (char *)&id, sizeof(id));\r
if (ret != ERRCODE_SUCC) {\r
ALIPAY_PRINT_ERR(0, "gatts_add_descriptor second fail, ret:%u.\r\n", ret);\r
}\r
+}\r
+\r
+\r
+\r
+static uint16_t ble_server_handle = 0;\r
+\r
+void alipay_add_chart_decr_cb(uint8_t server_id,uint16_t srv_handle)\r
+{\r
+ errcode_t ret = 0;\r
+ static uint8_t ota_point_val[] = {0x00, 0x00};\r
+ gatts_add_chara_info_t character;\r
+ gatts_add_desc_info_t descriptor;\r
+ bts_data_to_uuid_len2(0x4a02, &character.chara_uuid);\r
+ character.permissions = GATT_ATTRIBUTE_PERMISSION_READ;\r
+ character.properties = BLE_CHARACTERISTIC_SNED_OTA_ID_PROPERTIES;\r
+ character.value_len = (uint16_t)sizeof(ota_point_val);\r
+ character.value = ota_point_val;\r
+\r
+ ret = gatts_add_characteristic(server_id, srv_handle, &character);\r
+ if (ret != ERRCODE_SUCC) {\r
+ // ALIPAY_PRINT_ERR(0, "gatts_add_characteristic fail, ret:%u.\r\n", ret);\r
+ }\r
+ bts_data_to_uuid_len2(0x2902, &descriptor.desc_uuid);\r
+ descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE|GATT_ATTRIBUTE_PERMISSION_READ;\r
+ descriptor.value_len = (uint16_t)sizeof(ota_point_val);\r
+ descriptor.value = ota_point_val;\r
+ \r
+ ret = gatts_add_descriptor(server_id, srv_handle, &descriptor);\r
+ if (ret != ERRCODE_SUCC) {\r
+ // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
+ }\r
+ // errcode_t ret = 0;\r
+ // // uint16_t id = ALIPAYY_CHARACTERISTIC_ID;\r
+ // gatts_add_chara_info_t character;\r
+ // uint16_t value = 0;\r
+ // bt_uuid_t alipay_service_uuid = {0};\r
+ // bts_data_to_uuid_len2(0x4a02, &alipay_service_uuid);\r
+ // memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
+ // // character.chara_uuid.uuid_len = sizeof(id);\r
+ // // memcpy_s(character.chara_uuid.uuid, sizeof (character.chara_uuid.uuid), (char *)&id, sizeof(id));\r
+ // character.chara_uuid = alipay_service_uuid;\r
+ // character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+ // character.properties =\r
+ // GATT_CHARACTER_PROPERTY_BIT_READ | GATT_CHARACTER_PROPERTY_BIT_WRITE | GATT_CHARACTER_PROPERTY_BIT_NOTIFY;\r
+ // character.value_len = 256;\r
+ // character.value = g_alipay_character_buf;\r
+\r
+ // ret = gatts_add_characteristic(server_id, srv_handle, &character);\r
+ // if (ret != ERRCODE_SUCC) {\r
+ // ALIPAY_PRINT_ERR(0, "gatts_add_characteristic fail, ret:%u.\r\n", ret);\r
+ // }\r
+\r
+ // uint8_t bas_ccc_val[] = {\r
+ // 0x01,\r
+ // 0x00\r
+ // };\r
+ // bt_uuid_t ccc_uuid = { 0 };\r
+ // bts_data_to_uuid_len2(0x2902, &ccc_uuid);\r
+ // // bts_data_to_uuid_len2(0x2902, &ccc_uuid);\r
+ // gatts_add_desc_info_t descriptor;\r
+ // descriptor.desc_uuid = ccc_uuid;\r
+ // descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+ // descriptor.value_len = (uint16_t)sizeof(bas_ccc_val);\r
+ // descriptor.value = bas_ccc_val;\r
+ \r
+ // ret = gatts_add_descriptor(server_id, srv_handle, &descriptor);\r
+ // if (ret != ERRCODE_SUCC) {\r
+ // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
+ // }\r
+ // bd_addr_t addr_info;\r
+ // gatts_add_desc_info_t descriptor_ap;\r
+ // gap_ble_get_local_addr(&addr_info);\r
+ // bts_data_to_uuid_len2(0x4b02, &ccc_uuid);\r
+ // descriptor_ap.desc_uuid = ccc_uuid;\r
+ // descriptor_ap.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+ // descriptor_ap.value_len = BD_ADDR_LEN;\r
+ // uint8_t ble_data_mac_switch[BD_ADDR_LEN] = {0};\r
+ // int k = BD_ADDR_LEN;\r
+ // for (int i = 0; i < BD_ADDR_LEN; i++) {\r
+ // ble_data_mac_switch[--k] = addr_info.addr[i];\r
+ // }\r
+ // descriptor_ap.value = ble_data_mac_switch;\r
+ // ret = gatts_add_descriptor(server_id, srv_handle, &descriptor_ap);\r
+ // if (ret != ERRCODE_SUCC) {\r
+ // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor second fail, ret:%u.\r\n", ret);\r
+ // }\r
\r
\r
}\r
bt_uuid_t hid_service_uuid = {0};\r
bts_data_to_uuid_len2(BLE_UUID_HUMAN_INTERFACE_DEVICE, &hid_service_uuid);\r
\r
- \r
- bt_uuid_t factory_service_uuid = {0};\r
+ bt_uuid_t alipay_service_uuid = {0};\r
+ bts_data_to_uuid_len2(0x3802, &alipay_service_uuid);\r
+\r
+ bt_uuid_t factory_service_uuid = {0};\r
bts_data_to_uuid_len2(BLE_UUID_ATE_FACTORYTEST_SERVICE, &factory_service_uuid);\r
\r
errcode_t ret = 0;\r
ret = gatts_start_service(server_id, srv_handle);\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "factorytest service svr_ble_bt_gatts_service_add_cb ret:%d\r\n",ret);\r
}\r
+ if (ble_gatts_cmp_uuid(uuid, &alipay_service_uuid) == true){\r
+ alipay_add_chart_decr_recv_cmd1(server_id,srv_handle);\r
+ ret = gatts_start_service(server_id, srv_handle);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "alipay_service_uuid service svr_ble_bt_gatts_service_add_cb ret:%d\r\n",ret);\r
+ }\r
+ \r
}\r
+uint16_t alipay_handle = 0;\r
uint16_t g_hid_server_handle = 0;\r
static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
gatts_add_character_result_t *result, errcode_t status)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt_gatts_characteristic_add_cb uuid:0x%x%x 0x%x 0x%x 0x%x\r\n",uuid->uuid[0],uuid->uuid[1],srv_handle,result->handle,result->value_handle);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt_gatts_characteristic_add_cb uuid:0x%02x%02x 0x%x %d %d\r\n",uuid->uuid[0],uuid->uuid[1],srv_handle,result->handle,result->value_handle);\r
bt_uuid_t chara_uuid_data4 = {0};\r
bts_data_to_uuid_len2(BLE_CHARACTERISTIC_SNED_OTA_ID, &chara_uuid_data4);\r
\r
bt_uuid_t hid_report_uuid = {0};\r
bts_data_to_uuid_len2(BLE_UUID_REPORT, &hid_report_uuid);\r
\r
- \r
+ bt_uuid_t alipay_report_uuid = {0};\r
+ bts_data_to_uuid_len2(ALIPAYY_CHARACTERISTIC_ID, &alipay_report_uuid);\r
+\r
+ if(ble_gatts_cmp_uuid(uuid, &alipay_report_uuid))\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " alipay_handle %d\r\n",result->value_handle);\r
+ alipay_handle = result->value_handle;\r
+ }\r
\r
if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data1))\r
{\r
g_ble_server_handle = result->value_handle;\r
data2ae5Cmd = result->value_handle;\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->value_handle1 %d\r\n",result->value_handle);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " 2ae5 result->value_handle1 %d\r\n",result->value_handle);\r
}\r
\r
if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data2))\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->value_handle2 %d\r\n",result->value_handle);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2ae3 result->value_handle2 %d\r\n",result->value_handle);\r
data2ae3Cmd = result->value_handle;\r
}\r
\r
if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data4))\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->value_handle4 %d\r\n",result->value_handle);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2ae0 result->value_handle4 %d\r\n",result->value_handle);\r
// shortCmdChara = result->value_handle;\r
}\r
if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data5))\r
{\r
-\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->value_handle5 %d\r\n",result->value_handle);\r
+ data2ae1Cmd = result->value_handle;\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2ae1 result->value_handle5 %d\r\n",result->value_handle);\r
// shortCmdChara = result->value_handle;\r
}\r
if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data6))\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->value_handle6 %d\r\n",result->value_handle);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2ae2 result->value_handle6 %d\r\n",result->value_handle);\r
// shortCmdChara = result->value_handle;\r
}\r
if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data3))\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->value_handle3 %d\r\n",result->value_handle);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2ae4 result->value_handle3 %d\r\n",result->value_handle);\r
data2ae4Cmd = result->value_handle;\r
}\r
if (ble_gatts_cmp_uuid(uuid, &hid_report_uuid) == true) {\r
static void svr_ble_bt_gatts_descriptor_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
uint16_t desc_handle, errcode_t status)\r
{\r
- \r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "desc_handle_uuid 0x%02x%02x desc_handle %d\r\n",uuid->uuid[0],uuid->uuid[1],desc_handle);\r
}\r
\r
static void svr_ble_bt_gatts_service_start_cb(uint8_t server_id, uint16_t srv_handle, errcode_t status)\r
static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para,\r
errcode_t status)\r
{ \r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_ble_server_handle %d conn_id :%d write_cb_para->length:%d write_cb_para->handle %d write_cb_para->request_id:%d",g_ble_server_handle,conn_id,write_cb_para->length,\r
- write_cb_para->handle,write_cb_para->request_id);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_ble_server_handle %d conn_id :%d write_cb_para->length:%d write_cb_para->handle %d write_cb_para->request_id:%d",g_ble_server_handle,conn_id,write_cb_para->length,\r
+ write_cb_para->handle,write_cb_para->request_id);\r
+ printf("alipay_handle%d",alipay_handle);\r
for(uint16_t i = 0;i<write_cb_para->length;i++)\r
{ \r
printf("%x ",write_cb_para->value[i]);\r
else if (write_cb_para->handle == get_factory_ota_write_handl())\r
{\r
factory_recv_ota_data(write_cb_para->value,write_cb_para->length,write_cb_para->handle);\r
+ }else if(write_cb_para->handle == alipay_handle)\r
+ {\r
+ printf("alipay wirte!!!!!");\r
+ // svr_alipay_bt_gatts_noyify(buf,5);\r
+ errcode_t ret = svr_alipay_msg_write(ALIPAY_MSG_BT, write_cb_para->value, write_cb_para->length, false);\r
+\r
}else{\r
revBleOldData(write_cb_para->value,write_cb_para->length,write_cb_para->handle);\r
}\r
static void svr_ble_bt_init_gatts(void)\r
{\r
uint16_t id = BLE_SERVICE_UUID;\r
+ uint16_t srevr_id = BLE_SERVICE_UUID;\r
uint16_t ser_id = 0x1fff;\r
uint8_t serverId = 0;\r
bt_uuid_t uuid;\r
errcode_t ret = 0;\r
- uuid.uuid_len = (uint8_t)sizeof(id);\r
- memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&id, sizeof(id));\r
+ uuid.uuid_len = (uint8_t)sizeof(srevr_id);\r
+ memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&srevr_id, sizeof(srevr_id));\r
ret = gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_register_server ret: 0x%x serverId = 0x%x uuid.uuid_len:%d", ret, serverId,uuid.uuid_len);\r
g_ble_server_id = serverId;\r
bt_os_free(tgt);\r
return result;\r
}\r
-extern void alipay_unregist_server(void);\r
+// extern void alipay_unregist_server(void);\r
void ble_unregist_server(void)\r
{\r
svr_ble_adv_stop();\r
// svr_ble_adv_start_param();\r
// }\r
\r
-static void svr_bluetooth_init(void)\r
+void svr_bluetooth_init(void)\r
{\r
+\r
+ AdverFlag = true;\r
bool ret = enable_bt_stack();\r
// bool ret = enable_ble();\r
if (ret != ERRCODE_SUCC) {\r
}\r
// osDelay(100);\r
svr_ble_btcallback_reg();\r
+ \r
#ifdef SUPPORT_BLE_SERVICE\r
+ //add server and ble service\r
svr_ble_bt_init_gatts();\r
#endif\r
#ifdef SUPPORT_HID_SERVICE\r
// ble_hid_server_init();\r
#endif\r
+ svr_alipay_bt_init_gatts();\r
ble_factory_server_init();\r
+\r
svr_ble_adv_start_param();\r
ble_recv_register_msg_callback(ble_recv_msg_callback);//注册驱动回调\r
return;\r
printf("%d %s\n",__LINE__,__FUNCTION__);\r
if(AdverFlag == false)//在连接的状态下不需要\r
{\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AdverFlag true need openBle again\r\n");\r
AdverFlag = true;\r
svr_bluetooth_init();\r
}else{\r
\r
}\r
}\r
+#define MODE_BLE_ADV_SRV (0)\r
+#define MODE_ALIPAY_ADV_SRV (1)\r
+void ble_avd_mode_change(uint8_t mode)\r
+{\r
+ switch(mode)\r
+ {\r
+ case MODE_BLE_ADV_SRV:\r
+ if(AdverFlag != true)\r
+ {\r
+ exit_alipay_gui = 0;\r
+ printf("ble_advd_start!!!!!!!!!");\r
+ svr_alipay_ble_adv_stop();\r
+ svr_alipay_set_adv_start_state(0);\r
+ errcode_t ret = gap_ble_disconnect_remote_device((const bd_addr_t *)&phone_addr);\r
+ svr_ble_adv_start_param();\r
+ }\r
+ \r
+ break;\r
+ case MODE_ALIPAY_ADV_SRV:\r
+ if(svr_alipay_get_adv_start_state() != true)\r
+ {\r
+ exit_alipay_gui = 1;\r
+ printf("alipay_advd_start!!!!!!!!!");\r
+ AdverFlag = false;\r
+ svr_ble_adv_stop();\r
+ errcode_t ret = gap_ble_disconnect_remote_device((const bd_addr_t *)&phone_addr);\r
+ svr_alipay_set_adv_start_state(1);\r
+ svr_alipay_ble_adv_start();\r
+ }\r
+ \r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+}\r
#endif\r
#ifdef __cplusplus\r
}\r
extern uint8_t phone_mac_data[6];
extern uint8_t Bleconnect;//蓝牙默认是断开 0 1 为连接
extern uint8_t devpair_state;
-extern uint8_t data2ae3Cmd;//2ae3短指令特征值
-extern uint8_t data2ae4Cmd;//长指令特征值 大于20个字节的数据app下发的
+extern uint16_t data2ae3Cmd;//2ae3短指令特征值
+extern uint16_t data2ae4Cmd;
+extern uint16_t data2ae5Cmd;
+extern uint16_t data2ae1Cmd;//安卓消息来电
extern uint16_t ble_nus_max_data_len;
-// void svr_bluetooth_init(void);//蓝牙服务初始化
+extern uint16_t alipay_handle;
+extern uint16_t g_ble_conn_id;
+extern uint16_t g_ble_server_handle;
+void svr_bluetooth_init(void);//蓝牙服务初始化
void closeBle(void);//主动关闭蓝牙
void openBle(void);//主动开启蓝牙
void svr_ble_adv_start_param(void);//开始蓝牙广播
errcode_t svr_ble_bt_gatts_noyify(uint8_t *data, uint16_t data_len);
void svr_ble_adv_start(void);
void svr_ble_adv_stop(void);
+void ble_avd_mode_change(uint8_t mode);
#ifdef __cplusplus
}
#endif
//S_AGPIO_L21 NTC_VDD_ON 给低打开 NTC上拉电源 ,默认关闭
{ S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-
-// #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9
-// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //低电流充电
+#if 1 //默认正常充电
+// #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9 //low enable
+// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c 低电流充电
+ { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+ { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+#else
{ S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
{ S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+#endif
+
//默认关闭马达
{ S_AGPIO_R2, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
//默认开启 EXT LDO V3.0 V1.8
{
#ifdef SUPPORT_BLE_SERVICE
PRINT("start custom protocol classic bt ble service !\r\n");
- ble_unregist_server();
+ // ble_unregist_server();
closeBle();
// bool ret = disable_bt_stack();
#endif
bool start_alipay_ble_service(void)
{
- if(get_ble_status())
- {
- PRINT("stop custom protocol classic bt ble service first !\r\n");
- stop_custom_ble_service();
- uapi_systick_delay_ms(20);
- }
- PRINT("start_alipay_ble_service !\r\n");
- svr_alipay_bluetooth_init();
+ ble_avd_mode_change(1);
+ // if(get_ble_status())
+ // {
+ // PRINT("stop custom protocol classic bt ble service first !\r\n");
+ // stop_custom_ble_service();
+ // uapi_systick_delay_ms(20);
+ // }
+ // PRINT("start_alipay_ble_service !\r\n");
+ // svr_alipay_bluetooth_init();
return true;
}
bool stop_alipay_ble_service(void)
{
-
- PRINT("stop_alipay_ble_service !\r\n");
- alipay_unregist_server();
- disable_bt_stack();
- if(custom_ble_service_on_flag())
- {
- PRINT("start_custom_ble_service !\r\n");
- uapi_systick_delay_ms(20);
- start_custom_ble_service();
- }
+ ble_avd_mode_change(0);
+ // PRINT("stop_alipay_ble_service !\r\n");
+ // alipay_unregist_server();
+ // disable_bt_stack();
+ // if(custom_ble_service_on_flag())
+ // {
+ // PRINT("start_custom_ble_service !\r\n");
+ // uapi_systick_delay_ms(20);
+ // start_custom_ble_service();
+ // }
return true;
}
void startup_post_init_task(void)
PRINT("startup_post_init_task !\r\n");
uapi_calendar_recover_date();
- if(custom_ble_service_on_flag())
+ if(!custom_ble_service_on_flag())
{
- start_custom_ble_service();
+ stop_custom_ble_service();
}
initScreenBrightness();