#define BLE_DEFAULT_NAME_LEN 32\r
#define BLE_MAC_MAX_LEN 6 //蓝牙mac地址最大个数6个\r
\r
+#define BLE_CHANGE_MODE //开启是不需要切换广播数据 屏蔽掉就需要切换广播模式数据\r
+\r
static uint8_t exit_alipay_gui = 0;\r
// 蓝牙模块全局变量\r
static gap_ble_callbacks_t g_ble_gapble_cbs;\r
BLE_CHARACTERISTIC_SNED_ANDRIOD_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ,\r
};\r
-\r
+static uint8_t ble_adv_falg = 0;\r
void svr_ble_adv_stop(void)\r
{\r
+ ble_adv_falg = 0;\r
gap_ble_stop_adv(BLE_ADV_ID);\r
}\r
void svr_ble_adv_start(void)\r
{\r
+ ble_adv_falg = 1;\r
gap_ble_start_adv(BLE_ADV_ID);\r
}\r
bool get_ble_status(void)\r
}\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 + BLE_ADV_MAC_HEAD_LENTH, BD_ADDR_LEN, ble_data_mac_switch, BD_ADDR_LEN);\r
+ #ifdef BLE_CHANGE_MODE\r
+ memcpy_s(adv_mac_head + BLE_ADV_MAC_HEAD_LENTH, 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
+ 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
+ #endif\r
\r
scan_data[0] = 0x0f;//长度\r
scan_data[1] = 0xff;//数据类型 manufactory data\r
gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数\r
gap_ble_set_local_appearance(GAP_BLE_APPEARANCE_TYPE_GENERIC_WATCH);//仅是手表\r
svr_ble_adv_data_set(adv_id);//开始广播和扫描数据\r
+ ble_adv_falg = 1;\r
int32_t ret = gap_ble_start_adv(adv_id);\r
if (ret) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_adv_start bt gap_ble_start_adv1 ret = 0x%x", ret);\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 exit_alipay_gui:%d\r\n",pair_state,exit_alipay_gui);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! svr_alipay_get_adv_start_state %d alipay_get_binding_status:%d\r\n",svr_alipay_get_adv_start_state(),alipay_get_binding_status());\r
// if(AdverFlag == true){\r
\r
- if(exit_alipay_gui==0)\r
+ #ifdef BLE_CHANGE_MODE\r
+ svr_ble_adv_start();\r
+ #else\r
+ if(svr_alipay_get_adv_start_state())//如果绑定二维码识图界面并且没有绑定成功断开连接还是广播alipay服务\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
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "alipay_get_binding_status error!!!");\r
+ svr_alipay_ble_adv_start_t();\r
+ }else{\r
svr_ble_adv_start();\r
}\r
\r
+ #endif\r
free_ble_data();\r
// } \r
} else {\r
devpair_state = 0;//\r
- svr_ble_adv_stop();\r
+ #ifdef BLE_CHANGE_MODE\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "exit_alipay_gui error!!! %d",exit_alipay_gui);\r
+ if(!exit_alipay_gui)//如果进入了绑定二维码界面 正在连接app 不需要停止广播数据\r
+ {\r
+ svr_ble_adv_stop();\r
+ }\r
+ #else\r
+ if(svr_alipay_get_adv_start_state())//进了支付宝二维码界面没有绑定连接才停止当前alipay的服务\r
+ {\r
+ if(alipay_get_binding_status() == false)//如果还在绑定二维码码所有的识图界面没有绑定成功都不需要关闭广播数据还是继续广播数据\r
+ { \r
+ svr_alipay_ble_adv_stop();\r
+ }\r
+ }else{\r
+ svr_ble_adv_stop();\r
+ }\r
+ #endif\r
+ \r
set_phone_info(addr);\r
Bleconnect = GAP_BLE_STATE_CONNECTED;//蓝牙已连接\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_CONNECTED!!! 0x%x\r\n",pair_state);\r
\r
void svr_bluetooth_init(void)\r
{\r
-\r
- AdverFlag = true;\r
+ memset(&phone_addr,0,sizeof(bd_addr_t));\r
bool ret = enable_bt_stack();\r
// bool ret = enable_ble();\r
if (ret != ERRCODE_SUCC) {\r
#define MODE_ALIPAY_ADV_SRV (1)\r
void ble_avd_mode_change(uint8_t mode)\r
{\r
+ uint8_t adv_ok = 0;\r
switch(mode)\r
{\r
case MODE_BLE_ADV_SRV:\r
- if(AdverFlag != true)\r
+ #ifdef BLE_CHANGE_MODE \r
+ if(exit_alipay_gui == 1)//如果进了绑定二维码界面就走这里\r
{\r
exit_alipay_gui = 0;\r
+ printf("ble_advd_start!!!!!!!!! %d %d Bleconnect:%d\r\n",ble_adv_falg,AdverFlag,Bleconnect);\r
+ if(ble_adv_falg == false && AdverFlag == true)//关闭ble 并且没有广播不需要广播数据了\r
+ {\r
+ adv_ok = 1;\r
+ svr_ble_adv_start(); \r
+ }\r
+ if(Bleconnect == true && adv_ok != 1)//退出识图还在连接app需要关闭广播数据\r
+ {\r
+ svr_ble_adv_stop();\r
+ }\r
+ }\r
+ #else\r
+ if(alipay_get_binding_status() == false)//已经绑定了就不需要再开关蓝牙服务了\r
+ {\r
printf("ble_advd_start!!!!!!!!!");\r
+\r
+ exit_alipay_gui= 0;\r
+ printf("svr_alipay_ble_adv stop !!!!!!!!!");\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
+ #endif\r
break;\r
case MODE_ALIPAY_ADV_SRV:\r
- if(svr_alipay_get_adv_start_state() != true)\r
+\r
+ #ifdef BLE_CHANGE_MODE\r
+ exit_alipay_gui = 1;\r
+ printf("alipay_ble_advd_start!!!!!!!!! %d %d",ble_adv_falg,AdverFlag);\r
+ svr_ble_adv_start(); \r
+ #else\r
+ if(alipay_get_binding_status() == false)//已经绑定了就不需要再开关蓝牙服务了 未绑定就需要切换开启服务\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
+ #endif\r
break;\r
default:\r
break;\r