重构蓝牙服务架构,适配新的0626patch
authorSnickerSun <snickersun@163.com>
Wed, 3 Jul 2024 11:45:52 +0000 (19:45 +0800)
committerSnickerSun <snickersun@163.com>
Wed, 3 Jul 2024 11:45:52 +0000 (19:45 +0800)
16 files changed:
code/sdk/application/brandy/brandy_standard/thread_pri_init.c
code/sdk/application/wearable/alipay/service/alipay_bluetooth.c
code/sdk/application/wearable/alipay/service/alipay_feature.c
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothModel.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothWrapper.cpp
code/sdk/application/wearable/fd230app/nativeui/classicbluetooth/src/ClassicBlueToothPresenter.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.h
code/sdk/application/wearable/service/factorytest_service/factorytestService.c
code/sdk/application/wearable/service/factorytest_service/factorytestService.h
code/sdk/drivers/peripheral/ppg/ppgBleService/ppgBleService.c
code/sdk/drivers/peripheral/ppg/ppgBleService/ppgBleService.h
code/sdk/drivers/peripheral/utils/custom_utils.c

index a2a7353..4fc1401 100755 (executable)
@@ -449,10 +449,7 @@ static void thread_main(const void *unused)
 \r
 \r
 \r
-#ifdef SUPPORT_ALIPAY_SEC\r
-    uapi_alipay_svr_init();\r
-#endif\r
- \r
+\r
 \r
 #ifdef SUPPORT_CAT1_SERVICE\r
     cat1_server_init();\r
@@ -461,7 +458,11 @@ static void thread_main(const void *unused)
     uapi_blesrv_service_init();\r
     \r
     start_custom_ble_service();\r
-\r
+    \r
+#ifdef SUPPORT_ALIPAY_SEC\r
+    uapi_alipay_svr_init();\r
+#endif\r
+ \r
     startup_post_init();\r
 \r
     set_startup_finish_flag();\r
index d311c65..03fe767 100644 (file)
@@ -373,24 +373,32 @@ void svr_alipay_bt_init_gatts(void)
     memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&service_id, sizeof(service_id));\r
 #ifndef SUPPORT_AT_OHOSFWK\r
     ret = gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
+    if (ret != ERRCODE_SUCC) {\r
+        ALIPAY_PRINT_ERR(0, "gatts_register_server ret:0x%x.\r\n", ret);\r
+    }\r
 #else\r
     ret = wrapper_gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
-#endif\r
     if (ret != ERRCODE_SUCC) {\r
-        ALIPAY_PRINT_ERR(0, "gatts_register_server ret:%u.\r\n", ret);\r
+        ALIPAY_PRINT_ERR(0, "wrapper_gatts_register_server ret:0x%x.\r\n", ret);\r
     }\r
+#endif\r
+    \r
     ALIPAY_PRINT_DEBUG(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
 #ifndef SUPPORT_AT_OHOSFWK\r
     ret = gatts_add_service(server_id, &uuid, true);\r
+    if (ret != ERRCODE_SUCC) {\r
+        ALIPAY_PRINT_ERR(0, "gatts_add_service ret:0x%x.\r\n", ret);\r
+    }\r
 #else\r
     ret = wrapper_gatts_add_service(server_id, &uuid, true);\r
-#endif\r
     if (ret != ERRCODE_SUCC) {\r
-        ALIPAY_PRINT_ERR(0, "gatts_add_service ret:%u.\r\n", ret);\r
+        ALIPAY_PRINT_ERR(0, "wrapper_gatts_add_service ret:0x%x.\r\n", ret);\r
     }\r
+#endif\r
+    \r
     return;\r
 }\r
 \r
index 653cd25..7020768 100644 (file)
@@ -73,10 +73,9 @@ static mc_payment_state_t svr_alipay_get_paystate(void)
 static int32_t svr_alipay_notify_bt(bool value)
 {
     if (value) {
-        printf("svr_alipay_notify_bt true:%d",value);
-        ble_avd_mode_change(1);
+        // svr_alipay_ble_adv_start();  //统一采用 bleService的adv
     } else {
-        printf("svr_alipay_notify_bt false:%d",value);
+        // svr_alipay_ble_adv_stop();   //统一采用 bleService的adv
     }
     return 0;
 }
@@ -605,7 +604,7 @@ errcode_t uapi_alipay_svr_init(void)
     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();
index 4bdac91..6d6ccdf 100644 (file)
@@ -123,6 +123,9 @@ void BtA2dpInit(void);
 void BtInitGatts(void);\r
 void BtInitSpp(void);\r
 void BleAdvStart(void);\r
+void bluetooth_init(void);\r
+void bluetooth_enable_all(void);\r
+void bluetooth_close_all(void);\r
 #ifdef __cplusplus\r
 }\r
 #endif\r
index d9142b0..56f3cff 100644 (file)
@@ -34,6 +34,7 @@
 #include "dfx_channel.h"\r
 #include "tcxo.h"\r
 #include "custom_runtime.h"\r
+#include "bleService.h"\r
 namespace OHOS {\r
 \r
 #define BT_SPP_TASK_STACK_SIZE 2048\r
@@ -104,7 +105,8 @@ void BluetoothModel::InitBluetoothInfo(void)
         WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "nameLen: %u", nameLen);\r
     }\r
 }\r
-void BluetoothModel::Init()\r
+\r
+void bluetooth_enable_all(void)\r
 {\r
 #ifndef SUPPORT_AUTO_OTA\r
     errcode_t ret;\r
@@ -119,25 +121,60 @@ void BluetoothModel::Init()
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %u", ret);\r
 \r
     // 设置安全连接\r
-    gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
-    ret = gap_ble_set_sec_param(&sec_param);\r
+    gap_ble_sec_params_t sec_params = {0};\r
+    sec_params.bondable = 0x01;\r
+    sec_params.io_capability = GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT;//最好选择没有输入输出IO能力\r
+    sec_params.sc_enable = 0x00;\r
+    sec_params.sc_mode = GAP_BLE_GAP_SECURITY_MODE1_LEVEL2;\r
+    errcode_t ret = gap_ble_set_sec_param(&sec_params);//设置配对参数 发起配对弹窗\r
+\r
+    // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
+    // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 0, GAP_BLE_GAP_SECURITY_MODE1_LEVEL2 };\r
+    // ret = gap_ble_set_sec_param(&sec_param);\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret);\r
 \r
-    InitBluetoothInfo();\r
     BtInitCallBacks();\r
     wrapper_ble_register();\r
 #ifdef SUPPORT_ALIPAY_SEC\r
-    svr_alipay_bluetooth_init();\r
+    // svr_alipay_bluetooth_init(); //Alipay BLE\r
 #endif\r
-    BtInitCallBacksEx();\r
-    BtInitGatts();\r
-    BtInitSpp();\r
 \r
-    SetUpListCase();\r
-    SetUpConnedDevicesList();\r
+    /***Custom BleService */\r
+    svr_ble_bluetooth_init(); //CUSTOM BLE\r
+    // BtInitCallBacksEx(); //BLE\r
+    // BtInitGatts(); //BLE \r
+\r
+    wrapper_gatts_service_start(); //start reg ble server\r
+\r
+    // BtInitSpp();\r
+    BtA2dpInit();\r
+\r
+    /**开始ble广播*/\r
+    // openBle();\r
+    // BleAdvStart();\r
+\r
 #endif\r
 }\r
 \r
+void bluetooth_close_all(void)\r
+{\r
+    errcode_t ret;\r
+    \r
+    /**停止扫描,清除协议缓存*/\r
+    closeBle();\r
+\r
+    ret = disable_bt_stack();\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt disable_bt_stack ret = %u", ret);\r
+}\r
+\r
+void BluetoothModel::Init()\r
+{\r
+// bluetooth_init();\r
+// InitBluetoothInfo();\r
+SetUpListCase();\r
+SetUpConnedDevicesList();\r
+}\r
+\r
 void BluetoothModel::SetCaseListClear()\r
 {\r
     btScansDevicesList_.clear();\r
@@ -1302,7 +1339,7 @@ void BtInitGatts(void)
 {\r
     uint16_t id = 0x1FF0;\r
     uint16_t ser_id = 0x1FFF;\r
-    uint8_t serverId = 0;\r
+    uint8_t serverId = 1;\r
     bt_uuid_t uuid;\r
     int ret;\r
 \r
@@ -1315,8 +1352,6 @@ void BtInitGatts(void)
     memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&id, sizeof(id));\r
     ret = wrapper_gatts_add_service(serverId, &uuid, true);\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_service ret: 0x%x", ret);\r
-\r
-    wrapper_gatts_service_start();\r
 }\r
 \r
 static uint8_t Char2Num(int8_t c)\r
index fd9dd57..7293cfd 100644 (file)
@@ -300,16 +300,20 @@ errcode_t wrapper_gatts_add_service(uint8_t server_id, bt_uuid_t *service_uuid,
     g_uuid_list.push_back(*service_uuid);\r
     return ERRCODE_SUCC;\r
 }\r
-\r
+#include "debug_print.h"\r
+extern "C" void openBle(void);\r
 void wrapper_gatts_service_start(void)\r
 {\r
     if (!g_uuid_list.empty()) {\r
         bt_uuid_t &uuid = g_uuid_list.front();\r
         // 服务异步添加,需要保证当前服务start后,再添加下一个服务\r
-        (void)gatts_add_service(gatts_server_id, &uuid, true);\r
+        errcode_t ret = gatts_add_service(gatts_server_id, &uuid, true);\r
+        printf("wrapper_gatts_service_start gatts_add_service uuid len %x [0x%04X],gatts_server_id %u, ret 0x%x\n",uuid.uuid_len,*((uint16_t*)&uuid.uuid),gatts_server_id,ret);\r
         g_uuid_list.pop_front();\r
     } else {\r
         g_svr_handle_list.clear();\r
+         /**开始ble广播*/\r
+        openBle();\r
     }\r
 }\r
 \r
index 26c1839..e91a7ed 100644 (file)
@@ -1,8 +1,8 @@
 /*\r
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-04-25 11:50:57\r
- * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-25 15:54:05\r
+ * @LastEditors: SnickerSun snickersun@163.com\r
+ * @LastEditTime: 2024-07-03 15:18:50\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/classicbluetooth/src/ClassicBlueToothPresenter.cpp\r
  */\r
 #include "classicbluetooth/include/ClassicBlueToothPresenter.h"\r
@@ -102,14 +102,6 @@ namespace OHOS
         return true;\r
     }\r
 \r
-    extern "C"\r
-    {\r
-        void closeBle(void);       // 主动关闭蓝牙\r
-        void openBle(void);        // 主动开启蓝牙\r
-        bool get_ble_status(void); // 获取蓝牙是否关闭还是开启 1就是开启 0关闭 一开机默认是开启蓝牙\r
-        void getDeviceState(void);\r
-        void malloc_test(void);\r
-    }\r
     bool ClassicBlueToothPresenter::OnChange(UICheckBox::UICheckBoxState state)\r
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClassicBlueToothPresenter::OnChange");\r
index 4139825..02f3628 100644 (file)
@@ -56,7 +56,6 @@ static bool muiltFlag = 0;//多包数据flag
 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
 static uint8_t TRANSMIT_DATA;\r
 #if 1\r
 #include "app_msg_manager.h"\r
@@ -124,106 +123,8 @@ static errcode_t get_dial_file_path(char* input_dialname ,uint32_t input_size, c
 \r
     return ERRCODE_SUCC;\r
 } \r
-// typedef void (*hx3695_msg_callback_t)(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen);\r
-uint32_t ble_recv_register_msg_callback(ble_recv_msg_callback_t func)\r
-{\r
-    g_recv_msg_toUI = func;\r
-    return 0;\r
-}\r
-\r
-ble_recv_msg_callback_t ble_recv_get_send_msg_callback_func(void)\r
-{\r
-    return g_recv_msg_toUI;\r
-}\r
-static msg_get_heart_set_param_info_t hr_param;\r
-static msg_get_spo2_set_param_info_t spo2_param;\r
-static msg_drink_set_param_info_t drink_info;\r
-static msg_drink_param_info_t drink_on_t;//喝水提醒开关\r
-static msg_watch_lcd_param_info_t watch_lcd_param;//手表屏幕参数\r
-static msg_get_voice_vibration_info_t voice_vibration;\r
-static msg_caramer_info_t caramer_info;//拍照手势状态 0退出拍照 1进入拍照\r
-static msg_user_info_t user_info;//用户信息 体重 身高 年龄 性别\r
-//手表TODO 这是一个sample\r
-int ble_recv_msg_callback(uint8_t writ_read,uint16_t msg_typeID, uint8_t *msg_data, uint16_t msg_datalen)\r
-{\r
-    if(writ_read == READ_FLASH_DATA){//读手表数据 WRITE_FLASH_DATA 写手表数据\r
-        switch (msg_typeID)\r
-        {\r
-            case SET_DRINK_PARAM_CMD:\r
-                memset(&drink_info,0,sizeof(msg_drink_set_param_info_t));\r
-                drink_info.drink_on = 1;\r
-                drink_info.alarm_mode = 1;\r
-                drink_info.start_hour = 8;\r
-                drink_info.startt_min = 9;\r
-                drink_info.end_hour = 23;\r
-                drink_info.end_min = 59;\r
-                drink_info.frequenc = 1;\r
-                memcpy(msg_data,&drink_info,sizeof(msg_drink_set_param_info_t));\r
-                \r
-                break;\r
-            case GET_WATCH_HR_SET_PARAM_CMD:\r
-                memset(&hr_param,0,sizeof(msg_get_heart_set_param_info_t));\r
-                hr_param.frequence = 1;\r
-                hr_param.remind_on = 1;\r
-                hr_param.max_min = 1;\r
-                hr_param.heart = 180;\r
-                memcpy(msg_data,&hr_param,sizeof(msg_get_heart_set_param_info_t));\r
-               \r
-                break;\r
-            case GET_DRINK_SWITCH_CMD:\r
-                \r
-                memset(&drink_on_t,0,sizeof(msg_drink_param_info_t));\r
-                drink_on_t.drink_on = 1;\r
-                memcpy(msg_data,&drink_on_t,sizeof(msg_drink_param_info_t));\r
-                break;\r
-            case GET_WATCH_LCD_PARAM_CMD:\r
-                memset(&watch_lcd_param,0,sizeof(msg_watch_lcd_param_info_t));\r
-                watch_lcd_param.brigntess = 10;\r
-                watch_lcd_param.screen_time = 3;\r
-                watch_lcd_param.wrist_on = 0;\r
-                memcpy(msg_data,&watch_lcd_param,sizeof(msg_get_heart_set_param_info_t));\r
-               \r
-                break;\r
-            default:\r
-                break;\r
-        }\r
-        \r
-       \r
-    }else{\r
-        switch (msg_typeID)\r
-        {\r
-            case SET_DRINK_PARAM_CMD:\r
-                \r
-                memset(&drink_info,0,sizeof(msg_drink_set_param_info_t));\r
-                drink_info.drink_on = msg_data[0];\r
-                drink_info.alarm_mode = msg_data[1];\r
-                drink_info.target_drink = msg_data[2]+msg_data[3]*256;\r
-                drink_info.start_hour = msg_data[4];\r
-                drink_info.startt_min = msg_data[5];\r
-                drink_info.end_hour = msg_data[6];\r
-                drink_info.end_min = msg_data[7];\r
-                drink_info.frequenc = msg_data[8];\r
-                // memcpy(msg_data,&drink_info,sizeof(msg_drink_set_param_info_t));\r
-                break;\r
-            case GET_DRINK_SWITCH_CMD:\r
-                \r
-                memset(&drink_on_t,0,sizeof(msg_drink_param_info_t));\r
-                drink_on_t.drink_on = 1;\r
-                memcpy(msg_data,&drink_on_t,sizeof(msg_drink_param_info_t));\r
-                break;\r
 \r
-            case USER_INFOR_CMD:\r
-                \r
-                break;\r
 \r
-            \r
-            default:\r
-                break;\r
-        }\r
-    }\r
-    int ret = 1;\r
-    return ret;\r
-}\r
 int char_to_dec(char ch)\r
 {\r
     int num = 0;\r
@@ -2258,13 +2159,6 @@ void getUserInfo(ble_read_data *buffer_handle,uint16_t cmd,uint8_t *data,uint16_
         );\r
         \r
         set_user_data(&msg_userinfo);\r
-\r
-        ble_recv_msg_callback_t func = ble_recv_get_send_msg_callback_func();\r
-        if (func !=NULL)\r
-        {\r
-            \r
-        }\r
-        \r
         \r
     }else{\r
         ble_reply_cmd(USER_INFOR_CMD,0);//crc error\r
@@ -6533,8 +6427,19 @@ void free_ble_data(void)//以防断开蓝牙没有释放数据类型
     packdataLen = 0;\r
     totalDataLen = 0;\r
     ANCSBigBufFlag = 0;\r
+\r
     recvBigDataBufState = false;\r
     sendbigDataBufState = false;\r
+\r
+    for (int i = 0 ; i < MAX_HANDLE_NUM ; i++)\r
+    {\r
+        if (handle_l[i].data != NULL)\r
+        {\r
+            free(handle_l[i].data);\r
+            handle_l[i].data=NULL;\r
+        }\r
+        memset((void*)&handle_l[i],0,sizeof(ble_read_data));\r
+    }\r
     return;\r
     \r
 }\r
index ce675a9..56cec65 100644 (file)
@@ -26,9 +26,6 @@ typedef struct {
     uint16_t data_len;       /* data_len 数据长度        */
     uint16_t handle;         /* handle   数据句柄        */
 } ble_recv_data_info_t;
-typedef int (*ble_recv_msg_callback_t)(uint8_t writ_read,uint16_t msg_typeID, uint8_t *msg_data, uint16_t msg_datalen);
-uint32_t ble_recv_register_msg_callback(ble_recv_msg_callback_t func);
-ble_recv_msg_callback_t ble_recv_get_send_msg_callback_func(void);
 //write_read 0x01是从手表中读取数据 0x02 是app将数据传给设备 设备保存
 //msy_typeid 是协议指令类型+ID拼接 去bleEvent.h里面或者协议文档查找对应的协议指令 比如 01 02 会拼接成0x0102两个字节的数据
 //msg_data 是数据内容 如果数据没有就传NULL
@@ -36,7 +33,6 @@ ble_recv_msg_callback_t ble_recv_get_send_msg_callback_func(void);
 //返回值 解析数据成功返回 1 解析失败返回 0 
 // 
 void malloc_test(void);
-int ble_recv_msg_callback(uint8_t writ_read,uint16_t msg_typeID, uint8_t *msg_data, uint16_t msg_datalen);
 void cameram_send_data(void);
 /*********************TYPE+ID***********************************
  * TYPE:01 
index 25ed5dd..06c59fb 100644 (file)
@@ -39,7 +39,9 @@ extern "C" {
 #include "custom_runtime.h"\r
 #include "custom_utils.h"\r
 #include "bletest.h"\r
-\r
+#ifdef SUPPORT_AT_OHOSFWK\r
+#include "BluetoothWrapper.h"\r
+#endif\r
 \r
 // extern void bts_data_to_uuid_len2(uint16_t uuid_data, bt_uuid_t *out_uuid);\r
 // extern void bts_init_128bit_uuid(const bt_uuid_t *uuid);\r
@@ -73,7 +75,8 @@ extern "C" {
 #define BLE_DEFAULT_NAME_LEN 32\r
 #define BLE_MAC_MAX_LEN 6 //蓝牙mac地址最大个数6个\r
 \r
-#define BLE_CHANGE_MODE //开启是不需要切换广播数据 屏蔽掉就需要切换广播模式数据\r
+#define SWAP_U16(x) ((uint16_t)((((uint16_t)(x) & (uint16_t)0x00ffU) << 8) | \\r
+                    (((uint16_t)(x) & (uint16_t)0xff00U) >> 8)))\r
 \r
 static uint8_t exit_alipay_gui = 0;\r
 //  蓝牙模块全局变量\r
@@ -126,6 +129,8 @@ enum{
     BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ|GATT_CHARACTER_PROPERTY_BIT_NOTIFY,\r
 };\r
 static uint8_t ble_adv_falg = 0;\r
+static bool g_custom_ble_init_flag = false;\r
+\r
 void svr_ble_adv_stop(void)\r
 {\r
     ble_adv_falg = 0;\r
@@ -158,8 +163,6 @@ static void svr_ble_adv_data_set(int adv_id)
     unsigned int len = BLE_MAC_MAX_LEN;\r
     errcode_t ret = 0;\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
@@ -239,16 +242,14 @@ static void svr_ble_adv_data_set(int adv_id)
     // printf("scan_data_len!!!!3333:%d\r\n",scan_data_len);\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
-    \r
-    \r
-    #ifdef BLE_CHANGE_MODE\r
+        ble_data_mac_switch[2], ble_data_mac_switch[3], ble_data_mac_switch[4], ble_data_mac_switch[5]);    \r
+   \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(scan_data + scan_data_len, sizeof(adv_mac_head), adv_mac_head, sizeof(adv_mac_head));\r
     scan_data_len = scan_data_len + sizeof(adv_mac_head);\r
     // printf("adv_data_len!!!!4444:%d\r\n",scan_data_len);\r
-    #endif\r
+   \r
 \r
     if (scan_data_len > BLE_SCAN_DATA_LENTH){\r
         scan_data_len = BLE_SCAN_DATA_LENTH;\r
@@ -298,6 +299,7 @@ static void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr,
     gap_ble_pair_state_t pair_state, gap_ble_disc_reason_t disc_reason)\r
 {\r
     \r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "svr_ble_connstate_change_cb gap_ble_conn_state_t conn_state:%d  pair_state:%d disc_reason:%d\r\n",conn_state,pair_state,disc_reason);\r
     \r
     g_ble_conn_id = conn_id;\r
     if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
@@ -305,41 +307,17 @@ static void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr,
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! \r\n");\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
-            free_ble_data();\r
-            #ifdef BLE_CHANGE_MODE\r
-            svr_ble_adv_start();\r
-            #else\r
-            if(svr_alipay_get_adv_start_state())//如果绑定二维码识图界面并且没有绑定成功断开连接还是广播alipay服务\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
-            \r
+            free_ble_data();            \r
+            svr_ble_adv_start();                        \r
         // }    \r
     } else {\r
         devpair_state = 0;//\r
-        #ifdef BLE_CHANGE_MODE\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "exit_alipay_gui  error!!! %d",exit_alipay_gui);\r
+ \r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "exit_alipay_gui  !!! %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
+        }              \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
@@ -739,10 +717,24 @@ void alipay_add_chart_decr_cb(uint8_t server_id,uint16_t srv_handle)
 static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
     errcode_t status)\r
 {\r
+    if (uuid->uuid_len != sizeof(uint16_t)) return ;\r
+    uint16_t uuid_tmp = *((uint16_t*)uuid->uuid);\r
+    uuid_tmp = SWAP_U16(uuid_tmp);\r
+    if ( uuid_tmp == BLE_SERVICE_UUID \r
+        || uuid_tmp == BLE_UUID_HUMAN_INTERFACE_DEVICE \r
+        || uuid_tmp == BLE_UUID_ATE_FACTORYTEST_SERVICE \r
+        || uuid_tmp == BLE_UUID_PPG_BLE_SERVICE \r
+        || uuid_tmp == 0x3802 ) \r
+    {\r
+\r
+    }else{\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_service_add_cb UUID not supported 0x%x\r\n",uuid_tmp);\r
+        return ;\r
+    }\r
     ble_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
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_service_add_cb 0x%x\r\n",srv_handle);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_service_add_cb srv_handle 0x%x\r\n",srv_handle);\r
     if (status != ERRCODE_BT_SUCCESS)\r
     {\r
         return;\r
@@ -802,7 +794,10 @@ uint16_t g_hid_server_handle = 0;
 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%02x%02x 0x%x %d %d\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 , status %x\r\n",\r
+        uuid->uuid[0],uuid->uuid[1],\r
+        srv_handle,result->handle,\r
+        result->value_handle,status);\r
     bt_uuid_t chara_uuid_data_2ae0 = {0};\r
     bts_data_to_uuid_len2(BLE_CHARACTERISTIC_SNED_OTA_ID, &chara_uuid_data_2ae0);\r
 \r
@@ -1154,43 +1149,43 @@ static void sample_gap_ble_scan_result_cbk(const gap_scan_result_data_t *scan_re
         scan_result_data->addr.addr[0], scan_result_data->addr.addr[4],\r
         scan_result_data->addr.addr[5], scan_result_data->rssi );\r
 }\r
-void srv_ble_start_scan(void)\r
-{\r
-    gap_ble_scan_params_t scan_param = { 0 };\r
-    scan_param.scan_interval = 0x0050;\r
-    scan_param.scan_window = 0x0030;\r
-    scan_param.scan_type = GAP_BLE_SCAN_TYPE_ACTIVE;\r
-    scan_param.scan_phy = GAP_BLE_PHY_NO_PACKET;\r
-    scan_param.scan_filter_policy = GAP_BLE_ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY;\r
-    errcode_t ret = gap_ble_set_scan_parameters(&scan_param);\r
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble set scan parameters ret(errcode_t): %x\n", ret);\r
-\r
-    errcode_t reT_gap=gap_ble_start_scan();\r
-    if(reT_gap==ERRCODE_SUCC)\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan %d !",reT_gap);\r
-    else\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan fail %d !",reT_gap);\r
+// void srv_ble_start_scan(void)\r
+// {\r
+//     gap_ble_scan_params_t scan_param = { 0 };\r
+//     scan_param.scan_interval = 0x0050;\r
+//     scan_param.scan_window = 0x0030;\r
+//     scan_param.scan_type = GAP_BLE_SCAN_TYPE_ACTIVE;\r
+//     scan_param.scan_phy = GAP_BLE_PHY_NO_PACKET;\r
+//     scan_param.scan_filter_policy = GAP_BLE_ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY;\r
+//     errcode_t ret = gap_ble_set_scan_parameters(&scan_param);\r
+//     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble set scan parameters ret(errcode_t): %x\n", ret);\r
+\r
+//     errcode_t reT_gap=gap_ble_start_scan();\r
+//     if(reT_gap==ERRCODE_SUCC)\r
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan %d !",reT_gap);\r
+//     else\r
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan fail %d !",reT_gap);\r
     \r
-}\r
+// }\r
 \r
-void srv_ble_stop_scan(void)\r
-{\r
-    errcode_t reT_gap=gap_ble_stop_scan();\r
-    if(reT_gap==ERRCODE_SUCC)\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan %d !",reT_gap);\r
-    else\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan fail %d !",reT_gap);\r
-}\r
+// void srv_ble_stop_scan(void)\r
+// {\r
+//     errcode_t reT_gap=gap_ble_stop_scan();\r
+//     if(reT_gap==ERRCODE_SUCC)\r
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan %d !",reT_gap);\r
+//     else\r
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan fail %d !",reT_gap);\r
+// }\r
 \r
 void svr_ble_btcallback_reg(void)//ble基础通讯服务注册回调函数\r
 {\r
     \r
-    gap_ble_sec_params_t sec_params = {0};\r
-    sec_params.bondable = 0x01;\r
-    sec_params.io_capability = GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT;//最好选择没有输入输出IO能力\r
-    sec_params.sc_enable = 0x00;\r
-    sec_params.sc_mode = GAP_BLE_GAP_SECURITY_MODE1_LEVEL2;\r
-    errcode_t ret = gap_ble_set_sec_param(&sec_params);//设置配对参数 发起配对弹窗\r
+    // gap_ble_sec_params_t sec_params = {0};\r
+    // sec_params.bondable = 0x01;\r
+    // sec_params.io_capability = GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT;//最好选择没有输入输出IO能力\r
+    // sec_params.sc_enable = 0x00;\r
+    // sec_params.sc_mode = GAP_BLE_GAP_SECURITY_MODE1_LEVEL2;\r
+    // errcode_t ret = gap_ble_set_sec_param(&sec_params);//设置配对参数 发起配对弹窗\r
 \r
 \r
     g_ble_gapble_cbs.ble_enable_cb = NULL;\r
@@ -1208,8 +1203,11 @@ void svr_ble_btcallback_reg(void)//ble基础通讯服务注册回调函数
     g_ble_gapble_cbs.auth_complete_cb = svr_gap_ble_auth_complete_callback;\r
     g_ble_gapble_cbs.conn_param_update_cb = svr_gap_ble_connect_param_update_callback;\r
    \r
+#ifndef SUPPORT_AT_OHOSFWK\r
     gap_ble_register_callbacks(&g_ble_gapble_cbs);\r
-\r
+#else\r
+    wrapper_gap_ble_register_callbacks(&g_ble_gapble_cbs);\r
+#endif\r
     srv_ble_server_register_gatt_callbacks();\r
 }\r
 void srv_ble_server_register_gatt_callbacks(void)\r
@@ -1224,7 +1222,12 @@ void srv_ble_server_register_gatt_callbacks(void)
     g_ble_gatts_cbs.read_request_cb = svr_ble_bt_gatts_req_read_cb;\r
     g_ble_gatts_cbs.write_request_cb = svr_ble_bt_gatts_req_write_cb;\r
     g_ble_gatts_cbs.mtu_changed_cb = svr_ble_mtu_exchange;\r
+\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     gatts_register_callbacks(&g_ble_gatts_cbs);\r
+#else\r
+    wrapper_gatts_register_callbacks(&g_ble_gatts_cbs);\r
+#endif\r
     return;\r
 }\r
 static uint8_t g_server_id = 0;\r
@@ -1238,16 +1241,25 @@ static void svr_ble_bt_init_gatts(void)
     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
+\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     ret = gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
+#else\r
+    ret = wrapper_gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
+#endif\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
 \r
     bt_uuid_t ble_service_uuid = {0};\r
     bts_data_to_uuid_len2(id, &ble_service_uuid);\r
+\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     ret = gatts_add_service(serverId, &ble_service_uuid, true);\r
+#else\r
+    ret = wrapper_gatts_add_service(serverId, &ble_service_uuid, true);\r
+#endif\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_service ret: 0x%x", ret);\r
 \r
-    \r
     return;\r
 }\r
 bool ble_gatts_cmp_uuid(const bt_uuid_t *tgt_uuid, const bt_uuid_t *src_uuid)//比较源uuid和给定的uuid是否匹配\r
@@ -1288,29 +1300,32 @@ void ble_unregist_server(void)
 //     svr_ble_adv_start_param();\r
 // }\r
 \r
-void svr_bluetooth_init(void)\r
+void svr_ble_bluetooth_init(void)\r
 {\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
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_bluetooth_init enable_bt_stack ret:%u.\r\n", ret);\r
+    // bool ret = enable_bt_stack();\r
+    // // bool ret = enable_ble();\r
+    // if (ret != ERRCODE_SUCC) {\r
+    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_bluetooth_init enable_bt_stack ret:%u.\r\n", ret);\r
+    // }\r
+\r
+    if (g_custom_ble_init_flag)\r
+    {\r
+        return ;\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
-    ble_ppgtest_server_init();\r
-    svr_ble_adv_start_param();\r
-    ble_recv_register_msg_callback(ble_recv_msg_callback);//注册驱动回调\r
+    // svr_alipay_bt_init_gatts();\r
+    ble_factory_server_init(g_ble_server_id);\r
+    ble_ppgtest_server_init(g_ble_server_id);\r
+\r
+    g_custom_ble_init_flag = true;\r
     return;\r
 }\r
 //关闭蓝牙\r
@@ -1321,22 +1336,22 @@ void closeBle(void)
     {\r
         AdverFlag = false;\r
         g_ble_init_flag = false;\r
-        bd_addr_t bd_addr;\r
-        unsigned char addr[BLE_MAC_MAX_LEN] = {0};\r
-        bluetooth_get_local_addr(&addr[0],BD_ADDR_LEN);\r
-        memcpy(bd_addr.addr,addr,BLE_MAC_MAX_LEN);\r
+        // bd_addr_t bd_addr;\r
+        // unsigned char addr[BLE_MAC_MAX_LEN] = {0};\r
+        // bluetooth_get_local_addr(&addr[0],BD_ADDR_LEN);\r
+        // memcpy(bd_addr.addr,addr,BLE_MAC_MAX_LEN);\r
         errcode_t ret = 0;\r
         if(Bleconnect == GAP_BLE_STATE_CONNECTED){//设备连接需要断开\r
             ret = gap_ble_disconnect_remote_device((const bd_addr_t *)&phone_addr);//与固定的mac设置地址进行断开连接\r
         }\r
-        // ret = gap_ble_remove_all_pairs();//删除和所有配对的手机app\r
-        // gap_remove_all_pairs();\r
+        // // ret = gap_ble_remove_all_pairs();//删除和所有配对的手机app\r
+        // // gap_remove_all_pairs();\r
         svr_ble_adv_stop();//停止广播 不发送广播数据 就是app搜索不到该设备了\r
-\r
-        ble_recv_register_msg_callback(NULL);\r
-        ret = disable_bt_stack();//关闭ble 直接断开和当前连接的手机app\r
+        free_ble_data();\r
+        // ble_recv_register_msg_callback(NULL);\r
+        // ret = disable_bt_stack();//关闭ble 直接断开和当前连接的手机app\r
         // ret = disable_ble();//关闭ble 直接断开和当前连接的手机app\r
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "closeBle ret%d 0x%x-0x%x-0x%x-0x%x-0x%x-0x%x\r\n",ret,bd_addr.addr[0],bd_addr.addr[1],bd_addr.addr[2],bd_addr.addr[3],bd_addr.addr[4],bd_addr.addr[5]);\r
+        // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "closeBle ret%d 0x%x-0x%x-0x%x-0x%x-0x%x-0x%x\r\n",ret,bd_addr.addr[0],bd_addr.addr[1],bd_addr.addr[2],bd_addr.addr[3],bd_addr.addr[4],bd_addr.addr[5]);\r
     }else{\r
         WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AdverFlag false no need closeBle\r\n");\r
 \r
@@ -1350,7 +1365,7 @@ void openBle(void)
     {\r
         WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AdverFlag true need openBle again\r\n");\r
         AdverFlag = true;\r
-        svr_bluetooth_init();\r
+        svr_ble_adv_start_param();\r
     }else{\r
         WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AdverFlag true no need openBle again\r\n");\r
 \r
@@ -1369,7 +1384,7 @@ void ble_avd_mode_change(uint8_t mode)
     switch(mode)\r
     {\r
         case MODE_BLE_ADV_SRV:\r
-            #ifdef BLE_CHANGE_MODE \r
+            \r
             if(exit_alipay_gui == 1)//如果进了绑定二维码界面就走这里\r
             {\r
                 exit_alipay_gui = 0;\r
@@ -1384,35 +1399,15 @@ void ble_avd_mode_change(uint8_t mode)
                     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
-                svr_ble_adv_start_param();\r
-            }\r
-            #endif\r
+          \r
             break;\r
         case MODE_ALIPAY_ADV_SRV:\r
 \r
-            #ifdef BLE_CHANGE_MODE\r
+            \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
-                svr_ble_adv_stop();\r
-                svr_alipay_set_adv_start_state(1);\r
-                svr_alipay_ble_adv_start();\r
-            }\r
-            #endif\r
+          \r
             break;\r
         default:\r
             break;\r
index d1ce8ca..162ae5f 100644 (file)
@@ -26,9 +26,10 @@ extern uint16_t ble_nus_max_data_len;
 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 svr_ble_bluetooth_init(void);//蓝牙服务初始化
 void closeBle(void);//主动关闭蓝牙
 void openBle(void);//主动开启蓝牙
+
 void svr_ble_adv_start_param(void);//开始蓝牙广播
 bool get_ble_status(void);//默认是开启一开机
 void svr_ble_btcallback_reg(void);
index b5fa022..baa64b4 100644 (file)
@@ -11,9 +11,9 @@
 #include "bts_gatt_server.h"\r
 #include "securec.h"\r
 #include "wearable_log.h"\r
-\r
-\r
-#define BLE_HID_SERVER_ID 1\r
+#ifdef SUPPORT_AT_OHOSFWK\r
+#include "BluetoothWrapper.h"\r
+#endif\r
 \r
 /* HID gatt notification flag, do not need confirm */\r
 #define GATT_NOTIFICATION_FLAG 0\r
@@ -44,12 +44,18 @@ uint32_t g_factory_ota_report_hdl = 0;
 uint32_t factory_ota_write_handl = 0;\r
 \r
 /* 创建服务 */\r
-static void ble_factorytest_add_service(void)\r
+static void ble_factorytest_add_service(uint8_t server_id)\r
 {\r
     bt_uuid_t factory_service_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_ATE_FACTORYTEST_SERVICE, &factory_service_uuid);\r
     //只有一个服务,永远是1\r
-    gatts_add_service(BLE_HID_SERVER_ID, &factory_service_uuid, true);\r
+   errcode_t ret = 0;\r
+#ifndef SUPPORT_AT_OHOSFWK\r
+    ret = gatts_add_service(server_id, &factory_service_uuid, true);\r
+#else\r
+    ret = wrapper_gatts_add_service(server_id, &factory_service_uuid, true);\r
+#endif\r
+\r
 }\r
 static void ble_factory_add_descriptor_report_reference(uint8_t server_id, uint16_t srvc_handle, bool is_notify_report)\r
 {\r
@@ -218,9 +224,9 @@ void ble_factorytest_add_characters_and_descriptors(uint8_t server_id, uint16_t
     ble_factorytest_add_character_and_information(server_id, srvc_handle);\r
 }\r
 \r
-void ble_factory_server_init(void)\r
+void ble_factory_server_init(uint8_t server_id)\r
 {\r
-    ble_factorytest_add_service();\r
+    ble_factorytest_add_service(server_id);\r
 }\r
 \r
 extern void factorytest_protocol_decode(uint8_t *buf, uint16_t event_size);\r
index c88dccd..f788c69 100644 (file)
@@ -54,7 +54,7 @@ extern "C" {
  * @li ble_hid_server.h
  * @endif
  */
-void ble_factory_server_init(void);
+void ble_factory_server_init(uint8_t server_id);
 
 /**
  * @if Eng
index a3eee9a..0131acb 100644 (file)
@@ -17,7 +17,9 @@ extern "C" {
 #include "bts_gatt_server.h"\r
 #include "securec.h"\r
 #include "wearable_log.h"\r
-\r
+#ifdef SUPPORT_AT_OHOSFWK\r
+#include "BluetoothWrapper.h"\r
+#endif\r
 // #include "bts_def.h"\r
 // #include "sdk_general.h"\r
 // #include "bts_gatt_stru.h"\r
@@ -25,7 +27,6 @@ extern "C" {
 // #include "ble_gatts_callbacks.h"\r
 // #include "bts_uuid.h"\r
 \r
-#define BLE_HID_SERVER_ID 1\r
 \r
 /* HID gatt notification flag, do not need confirm */\r
 #define GATT_NOTIFICATION_FLAG 0\r
@@ -56,12 +57,17 @@ uint32_t g_ppgtest_ota_report_hdl = 0;
 uint32_t ppgtest_ota_write_handl = 0;\r
 \r
 /* 创建服务 */\r
-static void ble_ppgtest_add_service(void)\r
+static void ble_ppgtest_add_service(uint8_t server_id)\r
 {\r
     bt_uuid_t ppgtest_service_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_PPG_BLE_SERVICE, &ppgtest_service_uuid);\r
     //只有一个服务,永远是1\r
-    gatts_add_service(BLE_HID_SERVER_ID, &ppgtest_service_uuid, true);\r
+    errcode_t ret = 0;\r
+#ifndef SUPPORT_AT_OHOSFWK\r
+    ret = gatts_add_service(server_id, &ppgtest_service_uuid, true);\r
+#else\r
+    ret = wrapper_gatts_add_service(server_id, &ppgtest_service_uuid, true);\r
+#endif\r
 }\r
 static void ble_ppgtest_add_descriptor_report_reference(uint8_t server_id, uint16_t srvc_handle, bool is_notify_report)\r
 {\r
@@ -141,9 +147,9 @@ void ble_ppgtest_add_characters_and_descriptors(uint8_t server_id, uint16_t srvc
     ble_ppgtest_add_character_and_information(server_id, srvc_handle);\r
 }\r
 \r
-void ble_ppgtest_server_init(void)\r
+void ble_ppgtest_server_init(uint8_t server_id)\r
 {\r
-    ble_ppgtest_add_service();\r
+    ble_ppgtest_add_service(server_id);\r
 }\r
 \r
 #ifdef __cplusplus\r
index d988d68..5492cab 100644 (file)
@@ -42,7 +42,7 @@ extern "C" {
  * @li ble_hid_server.h
  * @endif
  */
-void ble_ppgtest_server_init(void);
+void ble_ppgtest_server_init(uint8_t server_id);
 
 /**
  * @if Eng
index 247fcee..ae48297 100644 (file)
@@ -231,30 +231,14 @@ bool enable_spp_service(bool _enable)
     return true;
 }
 
-extern void BtInitSpp(void);
-extern void BtA2dpInit(void);
-extern void BtInitCallBacks(void);
+extern void bluetooth_close_all(void);
+extern void bluetooth_enable_all(void);
 bool start_custom_ble_service(void)
 {
 #ifdef SUPPORT_BLE_SERVICE
-        openBle();
         PRINT("start custom protocol classic bt ble service !\r\n");
-        // bool ret = enable_bt_stack();
+        bluetooth_enable_all();
 #endif 
-    // if(uapi_dev_runtime_get_bt_powerstat()==true)
-    {
-
-        PRINT("register custom protocol classic bt service !\r\n");
-
-        BtInitCallBacks();
-        #ifdef FD230
-        BtA2dpInit();
-        #endif
-        enable_a2dp_service(true);
-        BtInitSpp();
-        enable_spp_service(true);
-        
-    }
 
     uapi_dev_runtime_set_bt_powerstat(1);
     return true;
@@ -263,10 +247,8 @@ bool start_custom_ble_service(void)
 bool stop_custom_ble_service(void)
 {
 #ifdef SUPPORT_BLE_SERVICE
-        PRINT("start custom protocol classic bt ble service !\r\n");
-        // ble_unregist_server();
-        closeBle();
-        // bool ret = disable_bt_stack();
+    PRINT("stop custom protocol classic bt ble service !\r\n");
+    bluetooth_close_all();
 #endif 
     uapi_dev_runtime_set_bt_powerstat(0);
     return true;
@@ -274,7 +256,7 @@ bool stop_custom_ble_service(void)
 
 bool start_alipay_ble_service(void)
 {
-    // ble_avd_mode_change(1);
+    ble_avd_mode_change(1);
     // if(get_ble_status())
     // {
     //     PRINT("stop custom protocol classic bt ble service first !\r\n");