APP通讯录协议对接
authorhcj <1224667075@qq.com>
Thu, 11 Apr 2024 08:03:35 +0000 (16:03 +0800)
committerhcj <1224667075@qq.com>
Thu, 11 Apr 2024 08:03:35 +0000 (16:03 +0800)
code/sdk/application/wearable/fd230app/nativeui/findphone/src/FindPhoneModel.cpp
code/sdk/application/wearable/fd230app/nativeui/findphone/src/FindPhonePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/findphone/src/FindPhoneView.cpp
code/sdk/application/wearable/fd230app/nativeui/producttest/src/testView.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/Systemupgrade.cpp
code/sdk/application/wearable/service/ble_service/blemoder/CMakeLists.txt
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h

index 66cffb2..dee76b5 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "findphone/include/FindPhoneModel.h"
+#include "bletest.h"
 
 namespace OHOS
 {
@@ -25,6 +26,6 @@ namespace OHOS
     /*获取蓝牙是否已连接*/
     bool FindPhoneModel::GetBlueToothConnectedState()
     {
-        return isBlueToothConnected;
+        return ble_is_ready() && ble_is_connect_ready();
     }
 }
\ No newline at end of file
index 50aeb34..6b4982c 100644 (file)
@@ -12,6 +12,8 @@
 #include "findphone/include/FindPhonePresenter.h"
 #include "common/key_code.h"
 #include <custom_utils.h>
+#include "bleEvent.h"
+
 namespace OHOS
 {
     // 当前Presenter属性实例化的内存指针
@@ -60,6 +62,7 @@ namespace OHOS
             //发送指令停止震动
             uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
             NativeAbility::GetInstance().ChangeSlice(preSlice);
+            senfindphoneSend(0);
         }
         return true;
     }
index b984081..642b2b2 100644 (file)
@@ -10,6 +10,8 @@
 #include "wearable_log.h"
 #include "findphone/include/FindPhoneModel.h"
 #include "UiConfig.h"
+#include "bletest.h"
+#include "bleEvent.h"
 namespace OHOS
 {
 
@@ -288,6 +290,7 @@ namespace OHOS
         if (FindPhoneModel::GetInstance().GetBlueToothConnectedState() == true) // 判断蓝牙是否是连接状态
         {
             FindPhoneViewInit_BlueToothConnected();
+            senfindphoneSend(1);
         }
         else
         {
index bf8a389..a192e59 100644 (file)
@@ -690,11 +690,11 @@ namespace OHOS
         //InitIView();\r
         initView_ext(43,120,380,100,120,"/user/res/SETTING_NEXT.bin");\r
         const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
-        // if (display_api->get_screen_state() != SCREEN_ON)\r
-        //  {   \r
-        //        display_api->turn_on_screen();  \r
-        //  }  \r
-        // display_api->set_screen_set_keepon_timeout(-1);\r
+        if (display_api->get_screen_state() != SCREEN_ON)\r
+         {   \r
+               display_api->turn_on_screen();  \r
+         }  \r
+        display_api->set_screen_set_keepon_timeout(-1);\r
     }\r
 \r
     void testView::OnSetUpView()\r
index 99f73a0..134213d 100644 (file)
@@ -604,7 +604,7 @@ namespace OHOS
         labelButton1_exit->SetViewId("labelButton1_exit");// Set style
 
         // Set additional property
-        labelButton1_exit->SetText("退出");
+        labelButton1_exit->SetText("exit");
         labelButton1_exit->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35);
         labelButton1_exit->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
         labelButton1_exit->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
index 56aa04d..08fa110 100644 (file)
@@ -13,6 +13,7 @@ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
 ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
 ${ROOT_DIR}/application/wearable/nativeapp/nativeui/heartrate/include
 ${ROOT_DIR}/application/wearable/fd230app/nativeui/weather/include
+${ROOT_DIR}/application/wearable/fd230app/nativeui/heart_blood/health_service
 
 )
 
index 45acec4..cd98d98 100644 (file)
@@ -15,6 +15,7 @@
 #include "thread_adapter.h"
 #include "graphic_service.h"
 #include "WeatherModel.h"
+#include "health_service.h"
 
 #ifdef __cplusplus
 #if __cplusplus
@@ -43,6 +44,9 @@ extern "C" {
 
 #include "custom_utils.h"
 #include "string.h"
+#include "bleService.h"
+
+
 // struct Weather_data
 // {
 //     int humidity;
@@ -52,7 +56,22 @@ extern "C" {
 //     int temp;
 //     int iconNight;
 // };
+uint8_t ble_falg=0;
+
+uint8_t ble_is_ready(void)
+{
+    return ble_falg;
+}
 
+uint8_t ble_is_connect_ready(void)
+{
+    return Bleconnect;
+}
+
+void set_ble_falg(bool falg)
+{
+    ble_falg=falg;
+}
 
 void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight)
 {
index 6335a4a..a89f9ff 100644 (file)
@@ -22,7 +22,12 @@ extern "C" {
 void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
 
 void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon);
-void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int x) ;
+void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int x);
+
+uint8_t ble_is_ready(void);
+void set_ble_falg(uint8_t falg);
+uint8_t ble_is_connect_ready(void);
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index 9e84c0f..2f88f67 100644 (file)
@@ -751,7 +751,8 @@ void cleanUnbindInfor(void)//和旧手机解绑清除配对信息
     if(0!=remove(PHONE_WATCH_CONFIG_PATH))\r
     {\r
         printf("json remove fail\r\n");\r
-    } \r
+    }\r
+    set_ble_falg(0);\r
 \r
 }\r
 void sendBindInfor(uint8_t *crcnum)\r
@@ -879,6 +880,7 @@ void sendParieSuccess(uint8_t flag,bd_addr_t *addr)//发送配对成功指令to
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sendParieSuccess:0x%x-0x%x-0x%x-0x%x-0x%x-0x%x\r\n",addr->addr[0],addr->addr[1],addr->addr[2],addr->addr[3],addr->addr[4],addr->addr[5]);\r
     if(first_bond == 1 && phoneDataFlag == 1)//第一次连接绑定\r
     {\r
+        set_ble_falg(1);\r
         uint8_t value[25];\r
         uint8_t length = 0;\r
         memset(value,0,25);\r
@@ -969,6 +971,25 @@ void checkCrcSend(uint8_t type,uint8_t typeID,uint8_t crcflag)//获取时间
     sendBleData(sendBuf,19);\r
 \r
 }\r
+//发送查找手机\r
+void senfindphoneSend(uint8_t flag)\r
+{\r
+    uint32_t tmp = 1;\r
+    uint16_t tmp_data = 1;\r
+    uint8_t sendBuf[19];\r
+    memset(sendBuf,0,19);\r
+    sendBuf[0] = 0x72;\r
+    sendBuf[1] = 0x05;\r
+    sendBuf[2] = 0x01; //3\r
+    memcpy(sendBuf+3,&tmp,4);\r
+    memcpy(sendBuf+7,&tmp,4);\r
+    memcpy(sendBuf+11,&tmp,4); //15\r
+    memcpy(sendBuf+15,&tmp_data,2); //17\r
+    sendBuf[17] = flag;\r
+    sendBuf[18] = Calculate_CRC(sendBuf,18);\r
+    sendBleData(sendBuf,19);\r
+}\r
+\r
 static void jsonCheck_time(uint8_t *buf)//json 格式解析\r
 {\r
     char time_data[24];\r
@@ -1510,6 +1531,99 @@ void getUserInfo(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,ui
 void getTRAIN_TARGETInfo(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
 {\r
 \r
+}\r
+\r
+//电话薄解析函数\r
+void  Parse_addressbook_bin(uint8_t *crcnum,uint16_t len)\r
+{\r
+    int num=crcnum[0];//人数\r
+    int offset=1;\r
+    while (num)\r
+    {\r
+        uint8 sex = crcnum[offset];\r
+        printf("性别: %d\r\n",sex);\r
+        offset=offset+1;\r
+        uint8 name_len=crcnum[offset];\r
+        printf("name_len %d\r\n",name_len);\r
+        char name[32]={0};\r
+        if(name_len==0)\r
+        {\r
+            name_len=strlen("未知");\r
+           printf("未知\r\n");\r
+        }\r
+        else\r
+        {\r
+            memcpy(name,&crcnum[offset+1],name_len);\r
+            printf("姓名: %s\r\n",name);\r
+            // for(int i=0;i<name_len;i++)\r
+            // {\r
+            //     printf(" %X ",name[i]);\r
+            // }\r
+            // printf("r\n");\r
+        }\r
+        offset=offset+name_len+1;\r
+        uint8 phone_num=crcnum[offset]; \r
+        offset=offset+1;\r
+        for(int i=0;i<phone_num;i++)\r
+        { \r
+\r
+            uint8 phonen_len=crcnum[offset];\r
+            char phonen_name[32]={0};\r
+            memcpy(phonen_name,&crcnum[offset+1],phonen_len);\r
+            printf("号码: %s\r\n",phonen_name);\r
+            //  for(int i=0;i<phonen_len;i++)\r
+            // {\r
+            //     printf(" %X ",phonen_name[i]);\r
+            // }\r
+            // printf("r\n");\r
+\r
+            offset=offset+phonen_len+1;\r
+        }\r
+        for(int i=0;i<phone_num;i++)\r
+        {\r
+            uint8 add = crcnum[offset];\r
+            printf("归属地长度: %d\r\n",add);\r
+            memcpy(name,&crcnum[offset+1],add);\r
+            printf("归属地: %s\r\n",name);\r
+            offset=offset+add+1;\r
+            uint8 yun = crcnum[offset];\r
+            memcpy(name,&crcnum[offset+1],yun);\r
+            printf("运营商: %s\r\n",name);\r
+            offset=offset+yun+1;\r
+        }\r
+       \r
+        num--;\r
+    }\r
+     \r
+}\r
+void getAPPaddressbook(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] =0x0b;\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
+        //解析,传来的二进制数据\r
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "");\r
+        Parse_addressbook_bin(crcnum,len);\r
+        \r
+        value[17] = 0x01;\r
+        value[18] = Calculate_CRC(value,18);\r
+        sendBleData(value,19);\r
+    }else{\r
+        value[17] = 0x00;\r
+        value[18] = Calculate_CRC(value,18);\r
+        sendBleData(value,19);\r
+    }\r
+\r
 }\r
 //02 类型\r
 void type2AE4Data(uint8_t *buf_cmd,uint8_t *data,uint16_t datalen,uint8_t *totalData,uint8_t crcvalue)\r
@@ -1532,6 +1646,9 @@ void type2AE4Data(uint8_t *buf_cmd,uint8_t *data,uint16_t datalen,uint8_t *total
             break;\r
         case SET_TRAIN_TARGET_CMD:\r
 \r
+            break;\r
+        case SET_address_book_CMD:\r
+            getAPPaddressbook(typeID,data,datalen,totalData,crcvalue);\r
             break;\r
         case SET_ALARM_DATA_CMD:\r
             GetAlarmDataCmd(typeID,data,datalen,totalData,crcvalue);\r
@@ -3247,7 +3364,15 @@ static void burntimeDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *t
         sendBleData(value,19);\r
     }\r
 }\r
-\r
+uint8 read_hart_jsondata(uint8 day)\r
+{\r
+    // char path[64]={0};\r
+    // sprintf(path,"%s/%d",HEALTH_JSON_PATH,day);\r
+    // fopen();\r
+    // {\r
+        return 0;\r
+    // }\r
+}\r
 //同步心率历史数据\r
 static void heartDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
 {\r
@@ -3265,17 +3390,19 @@ static void heartDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *tota
     memcpy(value+15,&tmp_data,2);\r
     if(Check_CRC(crcnum,len,crcvalue))\r
     {\r
-        uint32_t data_len = 0;\r
-        for(uint16_t i = 0;i<5;i++)\r
-        {\r
-            uint32_t time = 1710484844+i*3600;\r
-            uint8_t hr = 70+i*5;//1 \r
-            memcpy(value+17+data_len,&time,4);\r
-            data_len=data_len+4;//4 6\r
-            memcpy(value+17+data_len,&hr,1);//1 3 5 7 9\r
-            data_len=data_len+1;//6 \r
-        }\r
-        printf("data_len:%d",data_len);\r
+        read_hart_jsondata(crcnum[17]);\r
+        \r
+        // uint32_t data_len = 0;\r
+        // for(uint16_t i = 0;i<5;i++)\r
+        // {\r
+        //     uint32_t time = 1710484844+i*3600;\r
+        //     uint8_t hr = 70+i*5;//1 \r
+        //     memcpy(value+17+data_len,&time,4);\r
+        //     data_len=data_len+4;//4 6\r
+        //     memcpy(value+17+data_len,&hr,1);//1 3 5 7 9\r
+        //     data_len=data_len+1;//6 \r
+        // }\r
+        // printf("data_len:%d",data_len);\r
         // memcpy(&value[17],data_buf,30);\r
         // value[17] = 1;// \r
         value[17+data_len] = Calculate_CRC(value,data_len+17);\r
@@ -3462,6 +3589,8 @@ void type2AE3Data(uint16_t cmd ,uint8_t *data,uint16_t datalen,uint8_t *totaldat
             GetSynDataEndCmd(cmd,data,datalen,totaldata,crcvalue);\r
             break;\r
         case SYN_HEART_HISTORY_DATA_CMD://同步心率历史数据\r
+            heartDataCmd(cmd,data,datalen,totaldata,crcvalue);\r
+            break;\r
         case SYN_SPO2_HISTORY_DATA_CMD://同步血氧历史数据\r
         case SYN_STEP_HISTORY_DATA_CMD: //同步步数历史数据\r
         case SYN_FAT_BURN_HISTORY_DATA_CMD://同步燃脂时间数据\r
index 2fdcdca..2ed5036 100644 (file)
@@ -479,6 +479,7 @@ TYPE:02
 #define CURR_TIME_CMD 0x0202 //发送当前时间app->watch
 #define SET_BLE_NAME_CMD 0x0203 //修改蓝牙名称
 #define SET_TRAIN_TARGET_CMD 0x0204 //设置训练目标
+#define SET_address_book_CMD 0x020b //设置通讯录
 #define SYN_WATCH_LCD_PARAM_CMD 0x020E//同步屏幕参数app-watch
 #define SYN_VOICE_VIBRATION_PARAM_CMD 0x020f //同步参数app-watch
 #define SET_PHONE_INFOR_CMD 0x0210 //app发送手机信息
@@ -585,6 +586,7 @@ void getDeviceState(void);
 void cleanUnbindInfor(void);//和旧手机解绑清除配对信息
 void comfirmPaire(uint8_t flag);//发送确认配对指令 1确认配对 0取消配对
 void cameraSend(void);
+void senfindphoneSend(uint8_t flag);
 #ifdef __cplusplus
 }
 #endif