BR回连修改 1278/1 1278/head
authorhcj <1224667075@qq.com>
Mon, 28 Oct 2024 10:26:47 +0000 (18:26 +0800)
committerhcj <1224667075@qq.com>
Mon, 28 Oct 2024 10:26:47 +0000 (18:26 +0800)
code/sdk/application/wearable/fd230app/nativeui/classicbluetooth/src/ClassicBlueToothPresenter.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c

index aa764e3..12cdc63 100644 (file)
@@ -15,6 +15,9 @@
 #include "wearable_log.h"\r
 #include "ConfigModel.h"\r
 #include <UiConfig.h>\r
+#include "BluetoothModel.h"\r
+#include "custom_runtime.h"\r
+#include "ConfigModelC.h"\r
 namespace OHOS\r
 {\r
     // 当前Presenter属性实例化的内存指针\r
@@ -112,11 +115,33 @@ namespace OHOS
     bool ClassicBlueToothPresenter::OnChange(UICheckBox::UICheckBoxState state)\r
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClassicBlueToothPresenter::OnChange");\r
+        bd_addr_t bdaddr={0};\r
         switch (state)\r
         {\r
         case UICheckBox::SELECTED:\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BlueTooth Capability Is Enabled");\r
             start_custom_ble_service(); // 主动开启蓝牙\r
+            //开启完增加回连\r
+          \r
+            uapi_get_br_address(&bdaddr);\r
+            if( uapi_dev_runtime_get_bt_powerstat() && (cm_get_HFP_switch()||cm_get_A2DP_switch()))\r
+            {\r
+                if (false==bt_is_acl_connected(&bdaddr) && !(bdaddr.addr[0]==0 && bdaddr.addr[1]==0 && bdaddr.addr[2]==0 && bdaddr.addr[3]==0 \r
+                    && bdaddr.addr[4]==0 && bdaddr.addr[5]==0))\r
+                {\r
+                    int ret = gap_reconnect_media_device(&bdaddr);\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " gap_reconnect_media_device ret = %u %02x %02x %02x ", ret,bdaddr.addr[5],bdaddr.addr[4],bdaddr.addr[3]);\r
+                }\r
+                else\r
+                {\r
+                    \r
+                    if(cm_get_A2DP_switch() || cm_get_HFP_switch())\r
+                    uapi_a2dp_snk_connect();\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_a2dp_snk_connect!!! \r\n");\r
+                }\r
+                \r
+            }\r
+   \r
 \r
             ConfigModel::GetInstance()->SetClassicBlueToothState(true);\r
             break;\r
index 9668d15..134023b 100644 (file)
@@ -732,6 +732,7 @@ uint8_t ble_get_sleep_data(uint32_t file_size,uint8_t day_,uint8_t *data)
                 fseek(fp, 0, SEEK_SET);
                 uint16_t read_size_status =fread(data+offset+3+read_size,1,sleep_file_size,fp);
                 read_size+=read_size_status;
+                read_size+=1;
                 memcpy(data+offset,&read_size,2);
                 fclose(fp);
 
@@ -1297,11 +1298,11 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
                 break;
             case 0x45://同步站立历史数据
 
-                if(get_stand_falg())
-                {
-                    memcpy(buf+size,&creationTime,4);
-                    size+=4;
-                }
+                // if(get_stand_falg())
+                // {
+                //     memcpy(buf+size,&creationTime,4);
+                    //     size+=4;
+                // }
                
                 break;
             case 0x46://同步卡路里历史数据
index ca8d20e..ecfe67c 100644 (file)
@@ -681,7 +681,7 @@ void clearPaireCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,ui
         clearPaireFlag(0);\r
     }\r
 }\r
-uint8_t *savephonename;\r
+uint8_t *savephonename=NULL;\r
 //确认配对指令\r
 uint8_t first_bond = 0;//是否第一次绑定 第一次绑定保存配对mac地址\r
 void comfirmPaire(uint8_t flag)\r
@@ -799,6 +799,11 @@ static uint8_t *getPhoneName(uint8_t *data)//获取手机设备名称
                 {\r
                     memcpy(str,(uint8_t *)pn->valuestring,datalen+1);\r
                 }\r
+                if(savephonename)\r
+                {\r
+                    ym_free(savephonename);\r
+                    savephonename=NULL;\r
+                }\r
                 savephonename =  ym_malloc(sizeof(char)*datalen);\r
                 if(savephonename != NULL){\r
                     memcpy(savephonename,(uint8_t *)pn->valuestring,datalen+1);\r
@@ -823,7 +828,7 @@ void getPhoneMac(uint8_t *data,uint8_t *phoneMac)//获取手机设备mac这个
     memset(phone_tmp,0,6);\r
     cJSON* root = cJSON_Parse((const char *)json);\r
     uint8_t datalen = 0;\r
-    uint8_t count = 0;\r
+    uint8_t count = 5;\r
     if(root != NULL)\r
     {\r
         cJSON* mac = cJSON_GetObjectItem(root, "mac");\r
@@ -834,7 +839,8 @@ void getPhoneMac(uint8_t *data,uint8_t *phoneMac)//获取手机设备mac这个
                 if (cJSON_IsNumber(macElement)) {\r
                       WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%d", macElement->valueint);\r
                     if (macElement->prev != NULL) {\r
-                        phone_tmp[count++] = macElement->valueint;\r
+                        phone_tmp[count] = macElement->valueint;\r
+                        count--;\r
                           WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,", ");\r
                     }\r
                 }\r
@@ -1351,7 +1357,14 @@ void sendParieSuccess(uint8_t flag,bd_addr_t *addr)//发送配对成功指令to
             cJSON_Delete(dataJSON);\r
             // 读取JSON文件\r
 \r
-            memcpy(value+18,addr->addr,6);\r
+            //memcpy(value+18,addr->addr,6);\r
+            value[18]=addr->addr[5];\r
+            value[19]=addr->addr[4];\r
+            value[20]=addr->addr[3]; \r
+            value[21]=addr->addr[2];\r
+            value[22]=addr->addr[1];\r
+            value[23]=addr->addr[0];\r
+\r
             memcpy(parie_mac,addr->addr,6);\r
             length = 18+6;\r
             uint8_t crcvalue = Calculate_CRC(value,length);\r
@@ -2812,11 +2825,20 @@ uint8_t parse_jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析
     uapi_get_br_address(&bdaddr);\r
     if( uapi_dev_runtime_get_bt_powerstat() && (cm_get_HFP_switch()||cm_get_A2DP_switch()))\r
     {\r
-        if (false==bt_is_acl_connected(&bdaddr))\r
+        if (false==bt_is_acl_connected(&bdaddr) && !(bdaddr.addr[0]==0 && bdaddr.addr[1]==0 && bdaddr.addr[2]==0 && bdaddr.addr[3]==0 \r
+              && bdaddr.addr[4]==0 && bdaddr.addr[5]==0))\r
         {\r
             int ret = gap_reconnect_media_device(&bdaddr);\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " gap_reconnect_media_device ret = %u", ret);\r
-        }  \r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " gap_reconnect_media_device ret = %u %02x %02x %02x ", ret,bdaddr.addr[5],bdaddr.addr[4],bdaddr.addr[3]);\r
+        }\r
+        else\r
+        {\r
+            \r
+            if(cm_get_A2DP_switch() || cm_get_HFP_switch())\r
+            uapi_a2dp_snk_connect();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_a2dp_snk_connect!!! \r\n");\r
+        }\r
+        \r
     }\r
    \r
 \r
@@ -7311,27 +7333,38 @@ errcode_t decode_single_dial_info(ble_read_data *buffer_handle)
 \r
     if (check_dial_freespace(ble_dial_uid, file_size) == false)\r
     {\r
+\r
+        TRANSMIT_DATA=TRANS_DIAL_FAIL;\r
+        CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
         return ERRCODE_FAIL;\r
     }\r
+    else\r
+    {\r
+        buffer_handle->file_recv_stat.file_name = filename;\r
+        buffer_handle->file_recv_stat.file_size = file_size;\r
+        buffer_handle->file_recv_stat.file_type = 3;//表盘\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"  filetype = %d, file_name=%s, file_size=%d , dial_uid %04X ,dial_count %d, dial_filetype %d\n",\r
+            buffer_handle->file_recv_stat.file_type,\r
+            buffer_handle->file_recv_stat.file_name,\r
+            buffer_handle->file_recv_stat.file_size,\r
+            dialinfo.dial_uid,\r
+            dialinfo.dial_count,\r
+            dialinfo.file_type\r
 \r
-    buffer_handle->file_recv_stat.file_name = filename;\r
-    buffer_handle->file_recv_stat.file_size = file_size;\r
-    buffer_handle->file_recv_stat.file_type = 3;//表盘\r
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"  filetype = %d, file_name=%s, file_size=%d , dial_uid %04X ,dial_count %d, dial_filetype %d\n",\r
-        buffer_handle->file_recv_stat.file_type,\r
-        buffer_handle->file_recv_stat.file_name,\r
-        buffer_handle->file_recv_stat.file_size,\r
-        dialinfo.dial_uid,\r
-        dialinfo.dial_count,\r
-        dialinfo.file_type\r
+        );\r
+        buffer_handle->file_recv_stat.received_size = 0;\r
+        buffer_handle->file_recv_stat.lrcvalue = 0;\r
+        buffer_handle->receive_file_flag = 1;\r
+        uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH);\r
 \r
-    );\r
-    buffer_handle->file_recv_stat.received_size = 0;\r
-    buffer_handle->file_recv_stat.lrcvalue = 0;\r
-    buffer_handle->receive_file_flag = 1;\r
-    uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH);\r
+        TRANSMIT_DATA=TRANS_DIAL_TRANSMITTING;\r
+        CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+        return ERRCODE_SUCC;\r
+    }\r
 \r
-    return ERRCODE_SUCC;\r
+  \r
+\r
+   \r
 \r
 }\r
 static errcode_t install_dial(void)\r
@@ -7414,7 +7447,7 @@ static errcode_t install_dial(void)
         \r
        \r
         //安装完后删除表盘\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"remove  %s\r\n",lzma_filepath);\r
+         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"remove  %s\r\n",lzma_filepath);\r
 \r
         if(0!=remove(lzma_filepath))\r
         return ERRCODE_FAIL;\r
@@ -7770,8 +7803,7 @@ void type2AE0Data(ble_read_data *buffer_handle)
                         }\r
                         else\r
                         {\r
-                            TRANSMIT_DATA=TRANS_DIAL_TRANSMITTING;\r
-                            CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                           \r
                             ble_reply_cmd(DIAL_FILE_RECV_CMD,1);\r
                         }\r
                         \r
@@ -7788,8 +7820,6 @@ void type2AE0Data(ble_read_data *buffer_handle)
                 {\r
                     ble_reply_cmd(SINGLE_DIAL_FILE_RECV_CMD,1);\r
                 } else {\r
-                    TRANSMIT_DATA=TRANS_DIAL_FAIL;\r
-                    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
                     ble_reply_cmd(SINGLE_DIAL_FILE_RECV_CMD,2);\r
                 }         \r
                 break;\r
@@ -7992,7 +8022,6 @@ errcode_t cancel_recv_file(void)
                 //"/user/userdata/music"\r
                 char filepath[256]={0};\r
                 create_mp3_name(filepath,musicpath,ble_read_timer_p->file_recv_stat.file_name);\r
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"filepath %s\r\n",filepath);\r
                 remove(filepath);\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"filepath %s\r\n",filepath);\r
             }\r
index 5ef0bee..41b5a82 100644 (file)
@@ -502,7 +502,35 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl
             int ret =svr_ble_adv_stop();\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"%x",ret);\r
         \r
-      \r
+\r
+        // if(!get_ble_pair()&&( cm_get_A2DP_switch() || cm_get_HFP_switch()))\r
+        // {\r
+        //     bd_addr_t bdaddr={0};\r
+        //     uapi_get_br_address(&bdaddr);\r
+        //     if(!(bdaddr.addr[0]==addr->addr[0] && bdaddr.addr[1]==addr->addr[1] && bdaddr.addr[2]==addr->addr[2] && bdaddr.addr[3]==addr->addr[3] \r
+        //      && bdaddr.addr[4]==addr->addr[4] && bdaddr.addr[5]==addr->addr[5]))\r
+        //     {\r
+               \r
+        //         if(false==(bt_is_acl_connected(addr)))\r
+        //         {\r
+        //             if(cm_get_A2DP_switch() || cm_get_HFP_switch())\r
+        //             {\r
+        //                 int ret=gap_reconnect_media_device(addr);\r
+        //                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_reconnect_media_device!!! %X\r\n",ret);\r
+        //             }\r
+        //             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_reconnect_media_device!!! \r\n");    \r
+        //         }\r
+        //         else\r
+        //         {\r
+        //             if(cm_get_A2DP_switch() || cm_get_HFP_switch())\r
+        //             uapi_a2dp_snk_connect();\r
+        //             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_a2dp_snk_connect!!! \r\n");\r
+        //         }\r
+        //     }\r
+                \r
+        // }\r
+        \r
+\r
 \r
   \r
         set_phone_info(addr,conn_id);\r