From e39c5f213d17ba86cb575c315a94d95ce535585d Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Mon, 21 Oct 2024 17:28:25 +0800 Subject: [PATCH] =?utf8?q?=E8=A1=A8=E7=9B=98=EF=BC=9A=E5=A2=9E=E5=8A=A0?= =?utf8?q?=E8=A1=A8=E7=9B=98=E6=95=B0=E9=87=8F=E4=B8=8E=E7=A9=BA=E9=97=B4?= =?utf8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/set_dial/include/SetDialModel.h | 16 ++++- .../nativeui/set_dial/include/SetDialModelC.h | 15 +++++ .../nativeui/set_dial/src/SetDialModel.cpp | 63 ++++++++++++++++--- .../nativeui/system/include/SystemLogModel.h | 2 +- .../nativeui/system/src/SystemLogModel.cpp | 2 +- .../peripheral/utils/custom_cmd_service.c | 5 ++ .../drivers/peripheral/utils/custom_utils.h | 2 + 7 files changed, 95 insertions(+), 10 deletions(-) create mode 100644 code/sdk/application/wearable/fd230app/nativeui/set_dial/include/SetDialModelC.h diff --git a/code/sdk/application/wearable/fd230app/nativeui/set_dial/include/SetDialModel.h b/code/sdk/application/wearable/fd230app/nativeui/set_dial/include/SetDialModel.h index ef0fcfa76..f3e544f9b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/set_dial/include/SetDialModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/set_dial/include/SetDialModel.h @@ -37,6 +37,12 @@ namespace OHOS #define DIAL_NAME_LENGTH 50 #define DIAL_ID_PATH "user/dial/dial_id.bin" + #define DIAL_MAX_NUM 21 + #define DIAL_CUSTOM_MAX_NUM 1 + #define DIAL_OFFLINE_DIAL_MAX_NUM 14 + #define DIAL_RES_DIAL_MAX_NUM 6 + + class SetDialModel { public: @@ -76,7 +82,11 @@ namespace OHOS bool DeleteCustomDial(uint16_t Id); void TestDialConfig(void); std::string GetSaveDir(int Id,uint8_t type); - void RegisterDial(uint16_t ID, const char *dialname,uint8_t type); + void RegisterDial(uint16_t ID, const char *dialname, uint8_t type); + + //判断是否可以继续下载表盘 + bool CheckDialDownload(uint16_t ID,uint32_t dial_size); + void CheckDialSpace(); private: void LoadAllDialFromRam(void); @@ -89,6 +99,10 @@ namespace OHOS int32_t ParseDialHeader(int type, const std::string &dialFileName, SetDialInfo &dialInfo); std::vector dialInfoList; uint16_t currentDialID = 114; // 设置表盘默认值 + + uint16_t download_DialID = 1028; + uint32_t download_dialSize = 0; + bool downloadstate = false; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/set_dial/include/SetDialModelC.h b/code/sdk/application/wearable/fd230app/nativeui/set_dial/include/SetDialModelC.h new file mode 100644 index 000000000..bc6bf7b6c --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/set_dial/include/SetDialModelC.h @@ -0,0 +1,15 @@ + +#ifndef SET_DIAL_MODEL_C_H +#define SET_DIAL_MODEL_C_H + +#ifdef __cplusplus +extern "C" { +#endif + +void check_dial_space(void); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp index a6cc799c5..bf8af6583 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp @@ -1,13 +1,15 @@ - -#include "SetDialModel.h" +#include "set_dial/include/SetDialModel.h" #include "DialBinParser.h" #include "MainModel.h" #include "NativeAbility.h" #include "clock/include/MainClockView.h" +#include "custom_runtime.h" #include "custom_utils.h" #include "dirent.h" #include "kv_store.h" #include "securec.h" +#include "set_dial/include/SetDialModelC.h" +#include "system/include/SystemLogModel.h" #include "wearable_log.h" #include #include @@ -20,6 +22,12 @@ #include #include #include + +extern "C" { +void check_dial_space() { + OHOS::SetDialModel::GetInstance().CheckDialSpace(); +} +} namespace OHOS { // 表盘map[Id--dialname] 前5个ID固定 @@ -35,7 +43,7 @@ std::unordered_map registeredDials{ /* TODO:增加表盘 - {DEFAULT_DIAL_ID_3, "smart_payment"}, // 智能支付表盘 + {DEFAULT_DIAL_ID_3, "dawn_insight"}, // 晨曦智影 {MAX_DEFAULT_DIAL_ID, "kumi_point"}, // kumi指针表盘 */ @@ -184,7 +192,7 @@ uint16_t SetDialModel::GetCurrentDialID() { return id; } /* 获取所有表盘Id 每个表盘Id 2个字节 拼接为字符串 */ -int SetDialModel::GetAllDialIDs(char *allidStr,uint16_t MAX_LEN) { +int SetDialModel::GetAllDialIDs(char *allidStr, uint16_t MAX_LEN) { std::string allIDs; int length = 0; for (const auto &entry : registeredDials) { @@ -192,8 +200,8 @@ int SetDialModel::GetAllDialIDs(char *allidStr,uint16_t MAX_LEN) { if (id <= 5) { id--; } - if(lengthdialName); } +//判断是否可以继续下载表盘 +void SetDialModel::CheckDialSpace() { + downloadstate = true; + //安装离线表盘 + if (download_DialID > 5) { + //离线表盘 判断当前离线表盘个数 + uint8_t offlinedial_num = + DIAL_OFFLINE_DIAL_MAX_NUM - + (GetDialCount() - DIAL_CUSTOM_MAX_NUM - DIAL_RES_DIAL_MAX_NUM); + if (offlinedial_num <= 0) { + //离线表盘个数已到上限 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "CheckDialSpace: Offline dial count %d", offlinedial_num); + downloadstate = false; + return; + } else { + //判断offlinedial文件夹内存是否可以继续存储 + downloadstate = SystemLogModel::GetInstance()->canSyncFile( + TOTAL_DIAL_SPACE_PATH, TOTAL_DIAL_SPACE, download_dialSize); + return; + } + } else { + //安装自定义表盘 + downloadstate = SystemLogModel::GetInstance()->canSyncFile( + TOTAL_CUSTOM_DAIL_SPACE_PATH, TOTAL_CUSTOM_DAIL_SPACE, + download_dialSize); + } +} + +bool SetDialModel::CheckDialDownload(uint16_t ID, uint32_t dial_size) { + + download_DialID = ID; + download_dialSize = dial_size; + + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CHECK_DIAL_SPACE, nullptr, 0); + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CheckDialDownload: %d", + downloadstate); + return downloadstate; +} + } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/system/include/SystemLogModel.h b/code/sdk/application/wearable/fd230app/nativeui/system/include/SystemLogModel.h index b4849c483..a8050a144 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/system/include/SystemLogModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/system/include/SystemLogModel.h @@ -16,7 +16,7 @@ #define TOTAL_RING_SPACE (2 * 1024 * 1024) // 2M #define TOTAL_RING_SPACE_PATH "/user/musci/ring" -#define TOTAL_DIAL_SPACE (27 * 1024 * 1024) // 27M +#define TOTAL_DIAL_SPACE (24 * 1024 * 1024) // 24M #define TOTAL_DIAL_SPACE_PATH "/user/dial/offline_dial" #define TOTAL_RES_DIAL_SPACE (7 * 1024 * 1024) // 7M diff --git a/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemLogModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemLogModel.cpp index 8b1718a79..d6eeba4b5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemLogModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemLogModel.cpp @@ -216,7 +216,7 @@ std::string SystemLogModel::get_system_mem_info() { // 遍历每个目录,获取文件系统状态 for (const auto &volume_name : volume_names) { // 获取文件系统状态 - uint64_t total_size =getFolderSize(volume_name.c_str()); + uint64_t total_size = getFolderSize(volume_name.c_str()); if (total_size == 0) { result << "Error retrieving info for " << volume_name << std::endl; } else { diff --git a/code/sdk/drivers/peripheral/utils/custom_cmd_service.c b/code/sdk/drivers/peripheral/utils/custom_cmd_service.c index 22885b27a..4811b315c 100644 --- a/code/sdk/drivers/peripheral/utils/custom_cmd_service.c +++ b/code/sdk/drivers/peripheral/utils/custom_cmd_service.c @@ -40,9 +40,11 @@ #include "bletest.h" #include "safemodemanager/include/SafeModeManagerModelC.h" +#include "set_dial/include/SetDialModelC.h" #include "alarmclocktimerconfig/include/AlarmClockTimerConfig.h" + typedef struct { uint8_t cmd; @@ -304,6 +306,9 @@ static void custom_cmd_service_check_task(void const *arg) case CUSTOM_CMD_MSG_BLE_ADV_CHECK: Check_ble_adv_status(); break; + case CUSTOM_CMD_MSG_CHECK_DIAL_SPACE: + check_dial_space(); + break; default: PRINT("Unknown CUSTOM_CMD_MSG cmd 0x%02X \r\n", mail.cmd); break; diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index b532c7c3d..d2c495a6c 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -224,6 +224,8 @@ uint32_t uapi_calendar_store_date(void); #define CUSTOM_CMD_MSG_BLE_ADV_CHECK 0x11 +#define CUSTOM_CMD_MSG_CHECK_DIAL_SPACE 0x12 + typedef enum { BR_HFP_CONNECT=1, BR_HFP_DISCONNECT, -- 2.17.1