#ifndef MESSAGE_MODEL_H
#define MESSAGE_MODEL_H
+#include "bletest.h"
+#include "message/include/MessagePresenter.h"
#include <cstdint>
#include <map>
-#include "AppViewIDs.h"
-#include "components/ui_label_ext.h"
-#include "ui_resource_string.h"
-#include "UiConfig.h"
-#include "MessagePresenter.h"
-#include "message/include/MessageAdapter.h"
-#include "bletest.h"
#include <vector>
-namespace OHOS
-{
- // 消息数据结构体
- struct MessageData
- {
- bool isRead; // 消息是否已读
- std::string labelTitle; // 消息标题
- std::string labelDetails; // 消息详情
- std::string labelTime; // 消息时间
- uint32 timestamp; // 消息时间戳
- };
+namespace OHOS {
+// 消息数据结构体
+struct MessageData {
+ bool isRead; // 消息是否已读
+ std::string labelTitle; // 消息标题
+ std::string labelDetails; // 消息详情
+ std::string labelTime; // 消息时间
+ uint32_t timestamp; // 消息时间戳
+};
+
+// 消息模型类
+class MessageModel {
+public:
+ MessageModel();
+ ~MessageModel();
+ void Init();
- // 消息模型类
- class MessageModel
- {
- public:
- MessageModel();
- ~MessageModel();
- void Init();
+ static MessageModel &GetInstance();
+ void InitMessageListItems(); // 初始化消息列表项
+ const MessageListItem *GetMessageListItems() const; // 获取消息列表项
+ uint8_t GetMessageCount() const; // 获取消息数量
+ void AddMessageData(ancs_data_info_t *messageInfo); // 增加消息项
+ bool LoadMessagesFromStorage(); // 初始化信息数组 {开机调用一次}
+ bool SaveMessagesToStorage(); // 保存信息数组 {关机时候调用}
+ bool SetMessageAsRead(); // 设置当前项已读
+ void SetCurrentIndex(uint8_t index); // 设置当前下标
+ uint8_t GetCurrentIndex(); // 获取当前下标
+ MessageData *GetCurrentMessageData(); // 获取当前项
+ bool DeleteCurrentMessage(); // 删除当前项
+ bool ClearAllMessages(); // 删除所有数据
+ MessageData *GetNewMessage(); // 获取最新信息
+ void SetPopupViewState(bool state); // 设置弹出视图状态
+ bool GetPopupViewState(); // 获取弹出视图状态
+ bool HasDataVector(); // 判断数组是否存在数据
+ void UpdateMessageView();
- static MessageModel &GetInstance();
- void InitMessageListItems(); // 初始化消息列表项
- const MessageListItem *GetMessageListItems() const; // 获取消息列表项
- uint8_t GetMessageCount() const; // 获取消息数量
- void AddMessageData(ancs_data_info_t *messageInfo); // 增加消息项
- bool LoadMessagesFromStorage(); // 初始化信息数组 {开机调用一次}
- bool SaveMessagesToStorage(); // 保存信息数组 {关机时候调用}
- bool SetMessageAsRead(); // 设置当前项已读
- void SetCurrentIndex(uint8_t index); // 设置当前下标
- uint8_t GetCurrentIndex(); // 获取当前下标
- MessageData *GetCurrentMessageData(); // 获取当前项
- bool DeleteCurrentMessage(); // 删除当前项
- bool ClearAllMessages(); // 删除所有数据
- MessageData *GetNewMessage(); // 获取最新信息
- void SetPopupViewState(bool state); // 设置弹出视图状态
- bool GetPopupViewState(); // 获取弹出视图状态
- bool HasDataVector(); // 判断数组是否存在数据
- void UpdateMessageView();
+ void at_message_test();
- private:
- MessageModel &operator=(const MessageModel &);
+private:
+ MessageModel &operator=(const MessageModel &);
- uint16_t numberOfItems; // 项数
- static const uint16_t MaxMessageListCount = 10; // 消息列表最大数量
- MessageListItem Messages[MaxMessageListCount] = {0, false, nullptr, nullptr, nullptr}; // 消息列表
- uint8_t currentIndex_; // 选择的项
- std::vector<MessageData> MessageVector;
+ uint16_t numberOfItems; // 项数
+ static const uint16_t MaxMessageListCount = 10; // 消息列表最大数量
+ MessageListItem Messages[MaxMessageListCount] = {0, false, nullptr, nullptr,
+ nullptr}; // 消息列表
+ uint8_t currentIndex_; // 选择的项
+ std::vector<MessageData> MessageVector;
- bool popupViewState_{false}; // 弹出视图状态
- };
-}
+ bool popupViewState_{false}; // 弹出视图状态
+};
+} // namespace OHOS
#endif
#define MESSAGE_JSON_DIR "user/userdata/message/"
#define PRINTFDATA 0
-#include "notification_manager.h"
-#include "msg_center.h"
#include "message_notification.h"
+#include "msg_center.h"
+#include "notification_manager.h"
extern "C" errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time,
char date_separator, char time_separator,
// #include "msg_center_customerC.h"
-
void show_notify_messgae() {
- printf("show_notify_messgae\n");
- OHOS::NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_THREE);
- OHOS::NotificationManager::GetInstance()->ShowNotify(OHOS::CreateMessageView, TOPIC_EVENT_MESSAGENOTE, true);
+ printf("show_notify_messgae\n");
+ OHOS::NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_THREE);
+ OHOS::NotificationManager::GetInstance()->ShowNotify(
+ OHOS::CreateMessageView, TOPIC_EVENT_MESSAGENOTE, true);
}
#ifdef __cplusplus
broadcastApi->Release((IUnknown *)broadcastApi);
}
-// 存储消息更新的定时器
-static uint32_t messageTimestamp = 0;
-
-static void Notify(void *args, const Topic topic, Request *request) {
- UNUSED(args);
- UNUSED(topic);
-
- if (request == NULL) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Received NULL request");
- return;
- }
-
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Received request %d", request->msgId);
-
- if (request->msgId == TOPIC_EVENT_MESSAGE_UPDATA) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Processing TOPIC_EVENT_MESSAGE_UPDATA");
-
- if (request->data == NULL) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Received NULL data");
- return;
- }
-
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Received request %d", request->msgId);
- ancs_data_info_t *messageInfo = (ancs_data_info_t *)request->data;
- ancs_data_info_t messageInfo_;
-
- messageInfo_.title = (char*)malloc(messageInfo->titlelen + 1);
- if (messageInfo_.title == NULL) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to allocate memory for title");
- return;
- }
- memcpy(messageInfo_.title, messageInfo->title, messageInfo->titlelen);
- messageInfo_.title[messageInfo->titlelen] = '\0';
-
-
- messageInfo_.msg = (char*)malloc(messageInfo->msglen + 1);
- if (messageInfo_.msg == NULL) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to allocate memory for message");
- free(messageInfo_.title); // Free previously allocated title
- return;
- }
- memcpy(messageInfo_.msg, messageInfo->msg, messageInfo->msglen);
- messageInfo_.msg[messageInfo->msglen] = '\0';
-
-
- messageInfo_.appid = messageInfo->appid;
- messageInfo_.uid = messageInfo->uid;
- messageInfo_.time = messageInfo->time;
- messageInfo_.read = 0;
-
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "message_data %p %p\r\n", messageInfo_.title, messageInfo_.msg);
-
-
- MessageModel::GetInstance().AddMessageData(&messageInfo_);
-
-
- uint32_t currentTimestamp = OHOS::TraingModel::GetInstance()->get_current_time();
- if (currentTimestamp - messageTimestamp <= 1) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageTimestamp too short");
- free(messageInfo_.title);
- free(messageInfo_.msg);
- return;
- }
- messageTimestamp = currentTimestamp;
-
-
- if (uapi_dev_runtime_get_train_status() ||
- uapi_dev_runtime_get_saveele_status() ||
- uapi_dev_runtime_get_respiratory_training_status()) {
-
- free(messageInfo_.title);
- free(messageInfo_.msg);
- return;
- }
+// 存储消息更新的定时器
+static uint32_t messageTimestamp = 0;
+
+static void Notify(void *args, const Topic topic, Request *request) {
+ UNUSED(args);
+ UNUSED(topic);
+
+ if (request == NULL) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Received NULL request");
+ return;
+ }
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Received request %d", request->msgId);
+
+ if (request->msgId == TOPIC_EVENT_MESSAGE_UPDATA) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Processing TOPIC_EVENT_MESSAGE_UPDATA");
+
+ if (request->data == NULL) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Received NULL data");
+ return;
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Received request %d",
+ request->msgId);
+ ancs_data_info_t *messageInfo = (ancs_data_info_t *)request->data;
+ ancs_data_info_t messageInfo_;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageInfo");
- CustomEventPublish(TOPIC_EVENT_MESSAGENOTE, NULL, 0);
+ messageInfo_.title = (char *)malloc(messageInfo->titlelen + 1);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageInfo.title");
+ if (messageInfo_.title == NULL) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Failed to allocate memory for title");
+ return;
+ }
- // show_notify_messgae();
+ memcpy(messageInfo_.title, messageInfo->title, messageInfo->titlelen);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy");
+ messageInfo_.title[messageInfo->titlelen] = '\0';
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "messageInfo.title[messageInfo->titlelen]");
+ messageInfo_.msg = (char *)malloc(messageInfo->msglen + 1);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageInfo_.msg");
+ if (messageInfo_.msg == NULL) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Failed to allocate memory for message");
+ free(messageInfo_.title); // Free previously allocated title
+ return;
+ }
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message popup sent");
+ memcpy(messageInfo_.msg, messageInfo->msg, messageInfo->msglen);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "messageInfo.msg[messageInfo->msglen]");
+ messageInfo_.msg[messageInfo->msglen] = '\0';
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "messageInfo_.msg[messageInfo->msglen end");
+
+ messageInfo_.appid = messageInfo->appid;
+ messageInfo_.uid = messageInfo->uid;
+ messageInfo_.time = messageInfo->time;
+ messageInfo_.read = 0;
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "message_data %p %p\r\n",
+ messageInfo_.title, messageInfo_.msg);
+
+ MessageModel::GetInstance().AddMessageData(&messageInfo_);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddMessageData");
+
+ uint32_t currentTimestamp =
+ OHOS::TraingModel::GetInstance()->get_current_time();
+ if (currentTimestamp - messageTimestamp <= 1) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageTimestamp too short");
+ free(messageInfo_.title);
+ free(messageInfo_.msg);
+ return;
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "get_current_time end");
+ messageTimestamp = currentTimestamp;
- free(messageInfo_.title);
- free(messageInfo_.msg);
- }
+ if (uapi_dev_runtime_get_train_status() ||
+ uapi_dev_runtime_get_saveele_status() ||
+ uapi_dev_runtime_get_respiratory_training_status()) {
+
+ free(messageInfo_.title);
+ free(messageInfo_.msg);
+ return;
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "status end");
+
+ CustomEventPublish(TOPIC_EVENT_MESSAGENOTE, NULL, 0);
+
+ // show_notify_messgae();
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message popup sent");
+
+ free(messageInfo_.title);
+ free(messageInfo_.msg);
+ }
}
void saveancsdata() {
// printf("saveancs\r\n");
static MessageModel instance;
return instance;
}
+
+void MessageModel::at_message_test() {
+ // Initialize timestamp
+ uint32_t timestamp = 0;
+ if (uapi_get_timestampe_ss(×tamp) != ERRCODE_SUCC) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get timestamp");
+ return;
+ }
+
+ ancs_data_info_t data;
+ const char *title = "title"; // Assuming title and msg are defined elsewhere
+ const char *msg = "message";
+
+ data.title = (char *)malloc(strlen(title) + 1);
+ data.msg = (char *)malloc(strlen(msg) + 1);
+
+ if (data.title == NULL || data.msg == NULL) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Memory allocation failed");
+ free(data.title); // Free previously allocated memory
+ free(data.msg);
+ return;
+ }
+
+ strcpy(data.title, title);
+ strcpy(data.msg, msg);
+
+ data.appid = 0;
+ data.uid = 0;
+ data.time = timestamp;
+ data.read = 0;
+ data.hasCode = 1;
+
+ data.msglen = strlen(msg);
+ data.titlelen = strlen(title);
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "message_data %s %s\r\n", data.title,
+ data.msg);
+
+ CustomEventPublish(TOPIC_EVENT_MESSAGE_UPDATA, (uint8_t *)&data,
+ sizeof(ancs_data_info_t));
+
+ // free(data.title);
+ // free(data.msg);
+
+ // Simulate message push notification (if needed)
+ // OHOS::NotificationManager::GetInstance()->ShowNotify(
+ // OHOS::CreateMessageView, TOPIC_EVENT_MESSAGENOTE, true);
+}
+
void MessageModel ::Init() {
MessageSubscribeTopic(TOPIC_EVENT_MESSAGE_UPDATA); // 进行消息订阅
}
uint8_t MessageModel::GetCurrentIndex() { return currentIndex_; }
// 增加消息项[添加数组项]
-void MessageModel::AddMessageData(ancs_data_info_t *messageInfo) {
- if (messageInfo == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageInfo is null");
- return;
- }
-
- // 创建并填充 MessageData
- MessageData data;
- data.isRead = messageInfo->read;
- data.labelDetails = messageInfo->msg ? messageInfo->msg : "";
- data.labelTitle = messageInfo->title ? messageInfo->title : "";
- data.timestamp = messageInfo->time;
-
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
- "AddMessageData data.isRead is %d, data.labelDetails is %s, "
- "data.labelTitle is %s, data.timestamp is %u",
- data.isRead, data.labelDetails.c_str(), data.labelTitle.c_str(),
- data.timestamp);
-
- // 处理时间字符串
- char labelTime[20];
- if (uapi_get_TIME_STR(data.timestamp, labelTime, '.', ':', DATE_Y_M_D_H_M) != ERRCODE_SUCC) {
- data.labelTime = "--"; // 默认值
- } else {
- data.labelTime = labelTime; // 直接使用 labelTime
- }
-
- // 添加数据到消息向量
- MessageVector.push_back(data);
-
- // 删除多余的数据
- if (MessageVector.size() > MaxMessageListCount) {
- MessageVector.erase(MessageVector.begin(),
- MessageVector.begin() + (MessageVector.size() - MaxMessageListCount));
- }
-
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageInfo add is ok");
+void MessageModel::AddMessageData(ancs_data_info_t *messageInfo) {
+ if (messageInfo == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageInfo is null");
+ return;
+ }
+
+ // 创建并填充 MessageData
+ MessageData data;
+ data.isRead = messageInfo->read;
+ data.labelDetails = messageInfo->msg ? messageInfo->msg : "";
+ data.labelTitle = messageInfo->title ? messageInfo->title : "";
+ data.timestamp = messageInfo->time;
+
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "AddMessageData data.isRead is %d, data.labelDetails is %s, "
+ "data.labelTitle is %s, data.timestamp is %u",
+ data.isRead, data.labelDetails.c_str(), data.labelTitle.c_str(),
+ data.timestamp);
+
+ // 处理时间字符串
+ char labelTime[20];
+ if (uapi_get_TIME_STR(data.timestamp, labelTime, '.', ':', DATE_Y_M_D_H_M) !=
+ ERRCODE_SUCC) {
+ data.labelTime = "--"; // 默认值
+ } else {
+ data.labelTime = labelTime; // 直接使用 labelTime
+ }
+
+ // 添加数据到消息向量
+ MessageVector.push_back(data);
+
+ // 删除多余的数据
+ if (MessageVector.size() > MaxMessageListCount) {
+ MessageVector.erase(MessageVector.begin(),
+ MessageVector.begin() +
+ (MessageVector.size() - MaxMessageListCount));
+ }
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageInfo add is ok");
}
+
+
+
// 获取目前的项
MessageData *MessageModel::GetCurrentMessageData() {
if (currentIndex_ < MessageVector.size()) {