#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:
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);
int32_t ParseDialHeader(int type, const std::string &dialFileName, SetDialInfo &dialInfo);
std::vector<SetDialInfo> dialInfoList;
uint16_t currentDialID = 114; // 设置表盘默认值
+
+ uint16_t download_DialID = 1028;
+ uint32_t download_dialSize = 0;
+ bool downloadstate = false;
};
}
-
-#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 <algorithm>
#include <array>
#include <string>
#include <sys/stat.h>
#include <unistd.h>
+
+extern "C" {
+void check_dial_space() {
+ OHOS::SetDialModel::GetInstance().CheckDialSpace();
+}
+}
namespace OHOS {
// 表盘map[Id--dialname] 前5个ID固定
/*
TODO:增加表盘
- {DEFAULT_DIAL_ID_3, "smart_payment"}, // 智能支付表盘
+ {DEFAULT_DIAL_ID_3, "dawn_insight"}, // 晨曦智影
{MAX_DEFAULT_DIAL_ID, "kumi_point"}, // kumi指针表盘
*/
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) {
if (id <= 5) {
id--;
}
- if(length<MAX_LEN)
- memcpy_s(allidStr + length, 512, &id, 2);
+ if (length < MAX_LEN)
+ memcpy_s(allidStr + length, 512, &id, 2);
length += 2;
}
// 表盘Id以及表盘map打印
char dialId[128];
- GetAllDialIDs(dialId,128);
+ GetAllDialIDs(dialId, 128);
PrintRegisteredDials(registeredDials);
}
/*加载离线表盘*/
return (info->dialName);
}
+//判断是否可以继续下载表盘
+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