{DEFAULT_DIAL_ID_0, "N9"},
{DEFAULT_DIAL_ID_1, "eagle"},
{DEFAULT_DIAL_ID, "lake"},
- {DEFAULT_DIAL_ID_2, "vibrant_number"},
+ {DEFAULT_DIAL_ID_2, "vibrantnumber"},
{DEFAULT_DIAL_ID_3, "distortion"},
- {DEFAULT_DIAL_ID_MAX, "science"},
+ {MAX_DEFAULT_DIAL_ID, "science"},
};
// 表盘市场UID 对应表盘name
// 存储表盘到文件
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
"UpdateDialSetting: Found dial in registeredDials: ID=%d -> Name=%s",
ID, dialname.c_str());
-
+
+ // 若 dialInfoList 为空(如 BLE 切表盘早于/晚于列表加载),先重载再查找,避免 registeredDials 有数据但 dialInfoList 未同步
+ if (dialInfoList.empty()) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "UpdateDialSetting: dialInfoList is empty, calling LoadAllDial() before lookup");
+ LoadAllDial();
+ }
+
// 在dialInfoList中查找同名表盘
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
"UpdateDialSetting: Searching for dial name '%s' in dialInfoList (size=%zu)",
dialname.c_str(), dialInfoList.size());
-
+
bool foundInList = false;
for (size_t i = 0; i < dialInfoList.size(); i++) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
加载默认表盘
*/
const std::vector<std::string> defaultDials = {
- "lake", "eagle", "vibrant_number", "distortion", "science",
+ "lake", "eagle", "vibrantnumber", "distortion", "science",
};
void SetDialModel::LoadAllDialFromDefult(void) {
MainModel::GetInstance().AddDialSetting(diagSetting, currentDialID);
}
-/*获取表盘的总数*/
+/*获取表盘的总数
+ * 注意:BLE 侧用此值分配缓冲区并调用 GetAllDialIDs 写入 ID 列表,
+ * 因此必须与 GetAllDialIDs 使用同一数据源(registeredDials),
+ * 否则会出现 dial_num 与实际写入字节数不一致的 err。*/
size_t SetDialModel::GetDialCount(void) {
- size_t count = dialInfoList.size();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetDialCount: dialInfoList.size() = %d", count);
-
- // 如果表盘列表为空,尝试重新加载
+ size_t count = registeredDials.size();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetDialCount: registeredDials.size() = %zu (dialInfoList.size() = %zu)",
+ count, dialInfoList.size());
+
+ // 若持久化表盘列表为空,尝试从文件恢复后再取数量
if (count == 0) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetDialCount: dialInfoList is empty, try to reload");
- LoadAllDial();
- count = dialInfoList.size();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetDialCount: After reload, dialInfoList.size() = %d", count);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetDialCount: registeredDials is empty, try readDialfile");
+ readDialfile();
+ count = registeredDials.size();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetDialCount: After readDialfile, registeredDials.size() = %zu", count);
}
-
+
return count;
}
case OHOS::DEFAULT_DIAL_ID_1:
case OHOS::DEFAULT_DIAL_ID_2:
case OHOS::DEFAULT_DIAL_ID_3:
- case OHOS::DEFAULT_DIAL_ID_MAX:
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
"UninstallDial: Default dial %d cannot be uninstalled", id);
return false;