增加训练控制蓝牙协议接口
authorCaisking <3449750381@qq.com>
Fri, 19 Apr 2024 01:29:16 +0000 (09:29 +0800)
committerCaisking <3449750381@qq.com>
Fri, 19 Apr 2024 01:29:16 +0000 (09:29 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardPresenter.h
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h

index 7ffebf0..1b36688 100644 (file)
@@ -111,11 +111,11 @@ namespace OHOS
     // 运动状态
     enum class ExerciseState
     {
-        General = 0,
-        Start,
+        Start = 0,
         End,
         Pause,
-        Continue
+        Continue,
+        General,
     };
     // 运动项目
     enum class ExerciseClass
index ac1c453..e5b712d 100644 (file)
 
 #include "broadcast_feature.h"
 #include "broadcast_service.h"
+#include "bletest.h"
 #include "samgr_lite.h"
 #include <mutex>
 #include <memory>
 
 #define TIMER 1
-#define CHECK 0
+#define BLETEST 0
 #define HARD_OFF 1
 #define TRAINING_PATH "user/userdata/sportdata/"
 extern "C" errcode_t uapi_get_timestampe_ms(uint64_t *tm);
@@ -84,6 +85,7 @@ extern "C"
         broadcastApi->UnsubscribeTopic((IUnknown *)broadcastApi, topic, &TraingSubscirber);
         broadcastApi->Release((IUnknown *)broadcastApi);
     }
+    int flag = 0;
     static void Notify(void *args, const Topic topic, Request *request)
     {
         UNUSED(args);
@@ -92,22 +94,44 @@ extern "C"
         {
             return;
         }
-        cywee_activity_result_t *cyweeInfo = nullptr; // 在switch语句外部定义变量
         PRINT("request %d\r\n", request->msgId);
         if (request->msgId == TOPIC_EVENT_ACTIVITY_UPDATE)
         {
-            cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
+#if BLETEST
+            if (!flag)
+            {
+                training_ble *traingbleInfo = new training_ble();
+                traingbleInfo->sportType = 1;
+                traingbleInfo->controlmd = 0;
+                TraingCardPresenter::GetInstance()->send_sport_cmd(traingbleInfo);
+                delete traingbleInfo;
+                flag = 1;
+            }
+#endif
+            cywee_activity_result_t *cyweeInfo = new cywee_activity_result_t();
             int rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
             if (rets != EOK)
             {
                 delete cyweeInfo; // 处理内存分配失败的情况
                 cyweeInfo = NULL;
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_t fail! ret = %d", rets);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_t fail ret = %d", rets);
                 return;
             }
             TraingModel::GetInstance()->AnalysisData(cyweeInfo);
+            delete cyweeInfo; // 释放内存
+        }
+        if (request->msgId == TOPIC_EVENT_BLE_TRAINING)
+        {
+            training_ble *traingbleInfo = new training_ble();
+            int rets = memcpy_s(traingbleInfo, sizeof(training_ble), (training_ble *)request->data, request->len);
+            if (rets != EOK)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_t fail  ret = %d", rets);
+                return;
+            }
+            TraingCardPresenter::GetInstance()->send_sport_cmd(traingbleInfo);
+            delete traingbleInfo;
         }
-        delete cyweeInfo; // 释放内存
     }
 #ifdef __cplusplus
 }
@@ -137,6 +161,7 @@ namespace OHOS
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::~TraingModel()");
         TraingUnsubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE); // 取消订阅
+        TraingUnsubscribeTopic(TOPIC_EVENT_BLE_TRAINING);
     }
     TraingModel *TraingModel::GetInstance(void)
     {
@@ -147,6 +172,7 @@ namespace OHOS
     void TraingModel ::Init()
     {
         TraingSubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE); // 进行消息订阅
+        TraingSubscribeTopic(TOPIC_EVENT_BLE_TRAINING);
     }
     /***
      * @description: 初始化标签
index 7b68636..9fa8b5f 100644 (file)
@@ -20,6 +20,7 @@
 #include "cywee_service.h"\r
 #include "cywee_hal.h"\r
 #include "traing/include/TraingModel.h"\r
+#include "bletest.h"\r
 \r
 namespace OHOS\r
 {\r
@@ -49,7 +50,7 @@ namespace OHOS
 \r
         void ModifiesTime();\r
         void RefreshData(); // 更新数据\r
-        bool send_sport_cmd(uint32 cmd);\r
+        bool send_sport_cmd(training_ble *cmd);\r
 \r
     private:\r
         // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
index 131f04b..577fe3a 100644 (file)
@@ -260,19 +260,21 @@ namespace OHOS
         return true;\r
     }\r
 \r
-#if 0\r
-    bool TraingCardPresenter::send_sport_cmd(uint32 cmd)\r
+    bool TraingCardPresenter::send_sport_cmd(training_ble *cmd)\r
     {\r
-        if (cmd > MAXSPORTID || cmd < 0)\r
+        if (cmd == nullptr || cmd->sportType > MAXSPORTID || cmd->sportType < 0)\r
         {\r
-            WEARABLE_LOGE("send_sport_cmd", "Invalid cmd value: %d", cmd);\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid sport command");\r
             return false;\r
         }\r
-        uapi_set_screen_on_api(); // 亮屏检测\r
-        NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGCRAD);\r
-        ExerciseClass exerciseType = static_cast<ExerciseClass>(cmd);\r
-        OHOS::TraingCardPresenter::GetInstance()->OpenSensor(exerciseType);\r
+\r
+        uapi_set_screen_on_api();                                   // 亮屏检测\r
+        NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGCRAD); // 切换Slice\r
+\r
+        OpenSensor(static_cast<ExerciseClass>(cmd->sportType));\r
+        ControlSensor(static_cast<ExerciseState>(cmd->controlmd));\r
+\r
         return true;\r
     }\r
-#endif\r
+\r
 }\r
index 26067d9..c306836 100644 (file)
@@ -1,3 +1,9 @@
+/***
+ * @Date: 2024-04-18 17:25:04
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-04-18 17:44:00
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
+ */
 /**
  * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
  *
 
 #ifdef __cplusplus
 #if __cplusplus
-extern "C" {
+extern "C"
+{
 #endif /* __cplusplus */
 #endif /* __cplusplus */
 
 #include "stdint.h"
 #include "errcode.h"
-enum PAIRING
-{
-    DEVICEBIND = 0,//
-    DEVICEUNBIND,//设备解绑通知
-    DeviceUnBindingRequest,//设备解绑请求(与新设备连接)通知
-    REBOOT,
-    SHUTDOWN
-};
-
-enum TRANING
-{
-    START=0,
-    STOP,
-    RECOVER,
-    END
-};
-
-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);
-
-uint8_t ble_is_ready(void);
-void set_ble_falg(uint8_t falg);
-uint8_t ble_is_connect_ready(void);
-char *addressbook(void);
-void addressbookToRead(void);
-const char *get_health_data_path(void);
-void add_addressbookToRead(char *data);
+    enum PAIRING
+    {
+        DEVICEBIND = 0,         //
+        DEVICEUNBIND,           // 设备解绑通知
+        DeviceUnBindingRequest, // 设备解绑请求(与新设备连接)通知
+        REBOOT,
+        SHUTDOWN
+    };
+
+    enum TRANING
+    {
+        START = 0,
+        STOP,
+        RECOVER,
+        END
+    };
+
+    typedef struct
+    {
+        int sportType;
+        int controlmd;
+    } training_ble;
+
+    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);
+
+    uint8_t ble_is_ready(void);
+    void set_ble_falg(uint8_t falg);
+    uint8_t ble_is_connect_ready(void);
+    char *addressbook(void);
+    void addressbookToRead(void);
+    const char *get_health_data_path(void);
+    void add_addressbookToRead(char *data);
 #ifdef __cplusplus
 #if __cplusplus
 }