From e7fa10f85e79cf018127fae39d4a1063d430e6fe Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E7=A8=8B=E7=BE=BD=E9=A3=9E?= <2393524978@qq.com> Date: Tue, 27 Aug 2024 03:38:01 +0000 Subject: [PATCH] Merge #796 into sdk602patch0626 from refs/changes/796/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Code review from 程羽飞 * refs/changes/796/head: (2 commits squashed) - 日程UI优化、数据存储及读取 - Merge branch 'sdk602patch0626' of codeup.aliyun.com:64191456b9581d62e8f81ac0/FD230 into sdk602patch0626 Signed-off-by: dingtalk_kaxuzp <2393524978@qq.com> Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/796 --- .../nativelauncher/src/NativeLauncher.cpp | 3 + .../nativeui/schedule/include/ScheduleData.h | 26 +++- .../nativeui/schedule/include/ScheduleModel.h | 8 + .../schedule/src/ScheduleListItem.cpp | 2 +- .../nativeui/schedule/src/ScheduleModel.cpp | 137 ++++++++++++++++-- .../schedule/src/SchedulePresenter.cpp | 3 +- .../service/ble_service/blemoder/bletest.cpp | 15 +- .../drivers/peripheral/utils/custom_utils.c | 2 + 8 files changed, 169 insertions(+), 27 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index 73563069c..b26e7d202 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -265,6 +265,7 @@ #include "traing/training_card/include/TraingCardView.h" /* -------------------------------------------------------------------------- */ #include "schedule/include/SchedulePresenter.h" +#include "schedule/include/ScheduleData.h" #ifdef SUPPORT_ALIPAY_SEC #include "AlipayMainView.h" @@ -502,6 +503,8 @@ namespace OHOS } /*开机读取天气历史数据*/ read_jsonHistory_weather(); + + C_ScheduleDataReadFromFile(); } void NativeLauncher::InitAllNativeSlices(void) diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleData.h b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleData.h index 56dd43a5a..72e7a26b2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleData.h +++ b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleData.h @@ -11,8 +11,24 @@ extern "C" { #endif #endif -namespace OHOS -{ +// namespace OHOS +// { + #define SCHEDULE_DATA_FILE "/user/userdata/scheduleData.bin" + #define SCHEDULE_DATA_DIRECTORY "/user/userdata/" + + #define SCHEDULE_DATE_STR_MAX (8) + #define SCHEDULE_TOPIC_STR_MAX (64) + #define SCHEDULE_TIME_STR_MAX (16) + #define SCHEDULE_CONTENT_STR_MAX (256) + + typedef struct + { + char date[SCHEDULE_DATE_STR_MAX]; + char topic[SCHEDULE_TOPIC_STR_MAX]; + char time[SCHEDULE_TIME_STR_MAX]; + char content[SCHEDULE_CONTENT_STR_MAX]; + }C_ScheduleRevData; + typedef struct { std::string date; // 7/8 @@ -24,9 +40,9 @@ namespace OHOS #define SCHEDULE_DATA_COUNT_MAX (20) void C_ScheduleSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish); - int C_ScheduleDataReadFromFile(); - int C_ScheduleDataWriteToFile(); -} + int C_ScheduleDataReadFromFile(void); + int C_ScheduleDataWriteToFile(void); +// } #ifdef __cplusplus diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleModel.h b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleModel.h index 2028510ec..3e028f7e5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleModel.h @@ -22,10 +22,17 @@ namespace OHOS std::string ScheduleItemDataTopicStrGet(uint8_t index); std::string ScheduleItemDataTimeStrGet(uint8_t index); std::string ScheduleItemDataContentStrGet(uint8_t index); + uint8_t ScheduleItemDataOriginalDataIndexGet(uint8_t index); void ScheduleOriginalDataSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish); void ScheduleOriginalDataSetByUI(uint8_t index); + int ScheduleDataReadFromFile(void); + int ScheduleDataWriteToFile(void); + + void DataStringToCharArray(void); + void DataCharArrayToString(uint8_t DataCount); + private: ScheduleModel(); ~ScheduleModel(); @@ -38,6 +45,7 @@ namespace OHOS // original data ScheduleRevData ScheduleOriginalData_[SCHEDULE_DATA_COUNT_MAX] = {nullptr, nullptr, nullptr, nullptr}; + C_ScheduleRevData C_ScheduleOriginalData_[SCHEDULE_DATA_COUNT_MAX] = {0}; // item data ScheduleListItemInfo ScheduleItemData_[SCHEDULE_DATA_COUNT_MAX*2] = {nullptr, nullptr, nullptr, nullptr, 0, false, 0}; uint8_t ItemCount_{0}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListItem.cpp b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListItem.cpp index 33e57ba2a..1203291e2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListItem.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListItem.cpp @@ -38,7 +38,7 @@ namespace OHOS LabelExtTopic_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // LabelExtTopic_.SetStyle(STYLE_TEXT_COLOR, 0xffff5a36); - LabelExtTime_.SetPosition(47, 57, 105, 24); + LabelExtTime_.SetPosition(47, 57, 115, 24); LabelExtTime_.SetStyle(STYLE_TEXT_FONT, 20); LabelExtTime_.SetStyle(STYLE_LINE_HEIGHT, 24); // LabelExtTime_.SetTextId(text_id); diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleModel.cpp index fbab247f3..67b5ebd9b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleModel.cpp @@ -1,4 +1,7 @@ +// #include +// #include +// #include #include "schedule/include/ScheduleModel.h" #include "wearable_log.h" @@ -65,14 +68,25 @@ namespace OHOS return ScheduleItemData_[index].ContentStr.c_str(); } + uint8_t ScheduleModel::ScheduleItemDataOriginalDataIndexGet(uint8_t index) + { + return ScheduleItemData_[index].OriginalDataIndex; + } + void ScheduleModel::ScheduleOriginalDataSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleModel::ScheduleOriginalDataSetByApp,%d,%d", index, is_finish); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleOriginalDataSetByApp,%d,%d", index, is_finish); + uint8_t len = 0; ScheduleOriginalData_[index].date.assign(data->date); - ScheduleOriginalData_[index].topic.assign(data->topic); + + len = ((SCHEDULE_TOPIC_STR_MAX - 1 > data->topic.length()) ? data->topic.length() : SCHEDULE_TOPIC_STR_MAX - 1); + ScheduleOriginalData_[index].topic.assign(data->topic, 0, len); + ScheduleOriginalData_[index].time.assign(data->time); - ScheduleOriginalData_[index].content.assign(data->content); + + len = ((SCHEDULE_CONTENT_STR_MAX - 1 > data->content.length()) ? data->content.length() : SCHEDULE_CONTENT_STR_MAX - 1); + ScheduleOriginalData_[index].content.assign(data->content, 0, len); if(true == is_finish) { @@ -95,6 +109,11 @@ namespace OHOS ScheduleOriginalData_[i].time.assign(ScheduleOriginalData_[i + 1].time); ScheduleOriginalData_[i].content.assign(ScheduleOriginalData_[i + 1].content); } + + ScheduleOriginalData_[i].date.clear(); + ScheduleOriginalData_[i].topic.clear(); + ScheduleOriginalData_[i].time.clear(); + ScheduleOriginalData_[i].content.clear(); DataCount -= 1; ScheduleOriginalDataCountSet(DataCount); @@ -108,6 +127,7 @@ namespace OHOS uint8_t j = 0; memset(ScheduleItemData_, 0x0, sizeof(ScheduleListItemInfo) * SCHEDULE_DATA_COUNT_MAX*2); + ScheduleItemDataCountSet(0); for(i = 0, j = 0; i < DataCount; i++) { @@ -163,30 +183,119 @@ namespace OHOS } } - uint8_t ItemCount = j + 1; - ScheduleItemDataCountSet(ItemCount); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleModel::ScheduleOriginalDataToItemData,%d,%s", j, ScheduleItemData_[0].DateStr.c_str()); + if(0 != DataCount) + { + uint8_t ItemCount = j + 1; + ScheduleItemDataCountSet(ItemCount); + } + + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleModel::ScheduleOriginalDataToItemData,%d,%s", j, ScheduleItemData_[0].DateStr.c_str()); } + void ScheduleModel::DataStringToCharArray(void) + { + uint8_t DataCount = ScheduleOriginalDataCountGet(); + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:DataStringToCharArray,%d", __LINE__, DataCount); - // c func - void C_ScheduleSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish) + memset(C_ScheduleOriginalData_, 0x0, sizeof(C_ScheduleRevData) * SCHEDULE_DATA_COUNT_MAX); + + uint8_t i = 0; + for(i = 0; i < DataCount; i++) + { + memcpy(C_ScheduleOriginalData_[i].date, ScheduleOriginalData_[i].date.c_str(), SCHEDULE_DATE_STR_MAX - 1); + memcpy(C_ScheduleOriginalData_[i].topic, ScheduleOriginalData_[i].topic.c_str(), SCHEDULE_TOPIC_STR_MAX - 1); + memcpy(C_ScheduleOriginalData_[i].time, ScheduleOriginalData_[i].time.c_str(), SCHEDULE_TIME_STR_MAX - 1); + memcpy(C_ScheduleOriginalData_[i].content, ScheduleOriginalData_[i].content.c_str(), SCHEDULE_CONTENT_STR_MAX - 1); + } + } + + void ScheduleModel::DataCharArrayToString(uint8_t DataCount) { - ScheduleModel::GetInstance().ScheduleOriginalDataSetByApp(data, index, is_finish); + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:DataCharArrayToString,%d", __LINE__, DataCount); + + uint8_t i = 0; + for(i = 0; i < DataCount; i++) + { + ScheduleOriginalData_[i].date.assign(C_ScheduleOriginalData_[i].date); + ScheduleOriginalData_[i].topic.assign(C_ScheduleOriginalData_[i].topic); + ScheduleOriginalData_[i].time.assign(C_ScheduleOriginalData_[i].time); + ScheduleOriginalData_[i].content.assign(C_ScheduleOriginalData_[i].content); + } + ScheduleOriginalDataCountSet(DataCount); } - int C_ScheduleDataReadFromFile() + // int C_ScheduleDataReadFromFile(void) + int ScheduleModel::ScheduleDataReadFromFile(void) { + FILE *fp = fopen(SCHEDULE_DATA_FILE, "rb"); + if (fp == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:C_ScheduleDataReadFromFile", __LINE__); + return OHOS_FAILURE; + } + fseek(fp, 0, SEEK_END); + int len = ftell(fp); + fseek(fp, 0, SEEK_SET); + uint8_t DataCount = len / sizeof(C_ScheduleRevData); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:%d,%d", __LINE__, DataCount, len); + fread((char *)C_ScheduleOriginalData_, sizeof(C_ScheduleRevData), DataCount, fp); + fclose(fp); - return 0; + DataCharArrayToString(DataCount); + + ScheduleOriginalDataCountSet(DataCount); + ScheduleOriginalDataToItemData(DataCount); + + return OHOS_SUCCESS; } - int C_ScheduleDataWriteToFile() + // int C_ScheduleDataWriteToFile(void) + int ScheduleModel::ScheduleDataWriteToFile(void) { + uint8_t DataCount = ScheduleOriginalDataCountGet(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:ScheduleDataWriteToFile,%d", __LINE__, DataCount); + if(0 == DataCount) + { + return OHOS_FAILURE; + } + FILE *fp = fopen(SCHEDULE_DATA_FILE, "wb+"); + if (nullptr == fp) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:ScheduleDataWriteToFile fail", __LINE__); + return OHOS_FAILURE; + } - return 0; - } + DataStringToCharArray(); + + size_t ret = fwrite(C_ScheduleOriginalData_, sizeof(C_ScheduleRevData), DataCount, fp); + if (DataCount != ret) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:ScheduleDataWriteToFile fail", __LINE__); + } + fclose(fp); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:ScheduleDataWriteToFile success", __LINE__); + return OHOS_SUCCESS; + } } + + + // c func + void C_ScheduleSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish) + { + OHOS::ScheduleModel::GetInstance().ScheduleOriginalDataSetByApp(data, index, is_finish); + } + + int C_ScheduleDataReadFromFile(void) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:C_ScheduleDataReadFromFile", __LINE__); + return OHOS::ScheduleModel::GetInstance().ScheduleDataReadFromFile(); + } + + int C_ScheduleDataWriteToFile(void) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:C_ScheduleDataWriteToFile", __LINE__); + return OHOS::ScheduleModel::GetInstance().ScheduleDataWriteToFile(); + } diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/SchedulePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/SchedulePresenter.cpp index 458ef3891..a5dc54c97 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/SchedulePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/SchedulePresenter.cpp @@ -98,7 +98,8 @@ namespace OHOS if(0 == strcmp(view.GetViewId(), SCHEDULE_ViewId_DeleteOKButton_)) { ScheduleListItem * item = static_cast(&view); - ScheduleModel_->ScheduleOriginalDataSetByUI(item->GetViewIndex()); + uint8_t OriginalDataIndex = ScheduleModel_->ScheduleItemDataOriginalDataIndexGet(item->GetViewIndex()); + ScheduleModel_->ScheduleOriginalDataSetByUI(OriginalDataIndex); view_->ItemListContentUpdate(); view_->DisplayDataOrNoScreen(); return true; diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp index 25dce2b94..e5c711c88 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -101,12 +101,13 @@ bool is_first_pair(void) bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_end,char *title,char *data,bool is_end) { - OHOS::ScheduleRevData info_; + // OHOS::ScheduleRevData info_; + ScheduleRevData info_; info_.topic.clear(); info_.content.clear(); - info_.topic.append(title,strlen(title)+1); - info_.content.append(data,strlen(data)+1); + info_.topic.append(title,strlen(title)); + info_.content.append(data,strlen(data)); time_t currtime=timetamp_begin; struct tm *timeinfo; @@ -119,7 +120,7 @@ bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_e char day_buf[24]={0}; sprintf_s(day_buf,24,"%d/%d",m,d); info_.date.clear(); - info_.date.append(day_buf,strlen(day_buf)+1); + info_.date.append(day_buf,strlen(day_buf)); currtime=timetamp_end; timeinfo = localtime(&currtime); @@ -129,7 +130,7 @@ bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_e char time_buf[24]={0}; sprintf_s(time_buf,24,"%02d:%02d-%02d:%02d",h,min,h_,min_); info_.time.clear(); - info_.time.append(time_buf,strlen(time_buf)+1); + info_.time.append(time_buf,strlen(time_buf)); printf("///////////////////日程数据////////////////////\r\n"); printf("date:%s\r\n",info_.date.c_str()); @@ -139,7 +140,9 @@ bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_e printf("//////////////////////////////////////////////\r\n"); //printf("delete_before_file now day%d %d %d\r\n ",y,m,d); - OHOS::C_ScheduleSetByApp(&info_, id - 1, is_end); + // OHOS::C_ScheduleSetByApp(&info_, id - 1, is_end); + C_ScheduleSetByApp(&info_, id - 1, is_end); + if(is_end) printf("////////////////////结束///////////////////\r\n"); diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 2ace3f24a..1bbb96a7c 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -182,6 +182,8 @@ void uapi_save_time_of_day(void) void shutdown_reboot_prejobs_task(void) { + C_ScheduleDataWriteToFile(); + uapi_save_time_of_day(); //保存步数 do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SAVE_DATA,NULL); -- 2.17.1