uint16_t total_time; // 总时长
} SLEEP_T;
+ typedef struct
+ {
+ uint32_t timestamp; //时间戳
+ uint8_t stat; // 状态
+ } SLEEP_STAT_T;
+
#pragma pack (pop)
// bool save_nap_data(NAP_T *data);
void set_sleep_data(SLEEP_T *data);
// bool save_sleep_data(SLEEP_T *data);
bool read_sleep_data(SLEEP_T *data);
+ void read_wear_data(void);
bool read_nap_data(NAP_T *data);
// void clean_sleep_data(void);
// bool create_sleep_folder(void);
std::string get_sleep_asleep_time_str(void);
std::string get_sleep_wake_time_str(void);
+ std::string get_wear_status_str(void);
//void clean_sleep_file(void);
// 睡眠状态
enum class SLEEPSTATE
void custom_sleep_model_updata(void);
void update_sleep_data(uint32_t sleep_timestamp,uint32_t wake_timestamp,uint32_t totaltime);
void update_nap_data(uint32_t sleep_timestamp,uint32_t wake_timestamp,uint32_t totaltime);
+ void custom_read_wear_data(void);
#ifdef __cplusplus
#if __cplusplus
}
* @Author: penglei 1624952103@qq.com
* @Date: SLEPPNOTIFY24-06-26 19:36:48
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-11-08 20:05:21
+ * @LastEditTime: 2024-11-11 16:59:29
* @FilePath:
* /FD230/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
* @Description:
extern "C" int get_sleep_time_from_config_model(void);
extern "C" int get_wake_up_time_from_config_model();
+
+static uint32_t len = 0;
+static OHOS::SLEEP_STAT_T *wear_stat;
namespace OHOS
{
#define SLEPPNOTIFY 20
return S_ISREG(file_stat.st_mode); // 检查文件是否为普通文件
}
+ std::string get_wear_status_str(void)
+ {
+ std::string result;
+ std::string wear_status;
+ // 进行文件读取
+ do_custom_fileoperate_service_check_msg(
+ CUSTOM_FILEOPERATE_MSG_TYPE_WEAR_DATA_READ, nullptr, 0);
+ LOS_Msleep(100); // 等待文件系统准备
+
+ if(len == 0)
+ return result;
+
+ for(int i = 0; i < len/5; i++)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"data.timestamp : %d , data.stat : %d", wear_stat[i].timestamp,wear_stat[i].stat);
+ if(wear_stat[i].stat)
+ wear_status = "已配戴";
+ else
+ wear_status = "未配戴";
+
+ std::string timestr;
+ char labelTime[20] = {0};
+
+ if (uapi_get_TIME_STR(wear_stat[i].timestamp, labelTime, '.', ':', DATE_Y_M_D_H_M) != ERRCODE_SUCC)
+ {
+ timestr = "--";
+ }
+ else
+ {
+ timestr = labelTime;
+ }
+
+ result += wear_status + ":"+ timestr + "\n";
+ }
+ free(wear_stat);
+ return result; // 返回结果字符串
+ }
+
+
+
std::string get_sleep_asleep_time_str(void)
{
std::string timestr;
return timestr;
}
+ void read_wear_data(void)
+ {
+ uint32_t size = 0;
+ len = uapi_get_file_size("user/userdata/wear.bin");
+ if(!len)
+ return;
+
+ wear_stat = (SLEEP_STAT_T *)malloc(len);
+ FILE *fp;
+
+ fp = fopen("user/userdata/wear.bin", "rb");
+ if (fp == NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "wear file open failed");
+ free(wear_stat);
+ return;
+ }
+
+ size = fread(wear_stat, 1, len, fp);
+ if(size != len)
+ {
+ free(wear_stat);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "wear file read failed");
+ }
+ fclose(fp);
+ }
+
bool read_sleep_data(SLEEP_T *data)
{
char day[12] = {0};
#endif /* __cplusplus */
#endif /* __cplusplus */
-
-
void custom_read_sleep_data(void)
{
memset(&sleep_data, 0, sizeof(SLEEP_T));
read_nap_data(&nap_data);
}
+ void custom_read_wear_data(void)
+ {
+ read_wear_data();
+ }
+
void custom_sleep_model_updata(void)
{
OHOS::SleepModel::GetInstance().ReInitData();
nap_update_timestamp = nap_data.wake_up_timestamp;
}
+
#ifdef __cplusplus
#if __cplusplus
}
* @Author: penglei 1624952103@qq.com\r
* @Date: 2024-06-17 14:31:08\r
* @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2024-11-05 17:18:36\r
+ * @LastEditTime: 2024-11-11 17:08:33\r
* @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
* @Description: \r
* \r
uint8_t send_data=0;\r
\r
factorytest_mode_flag = 1;\r
+\r
ChargerEventPublish(TOPIC_EVENT_CHARGE_UNPLUG,0); //进入产测模式 关闭充电弹窗\r
uapi_dev_runtime_set_factory_test_status(1); //设置产测模式runtime\r
svr_ble_adv_factory_test_start_param(); //设置蓝牙广播 避免出现连接问题\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
+ BLE_TEST_CMD_COMMON_SUB_MODE_SWITCH_MODE,\r
+ 0x01,\r
+ send_data,\r
+ 1);\r
uapi_hfp_connect_();\r
LOS_Msleep(500);\r
uapi_a2dp_snk_connect_();\r
- factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
- BLE_TEST_CMD_COMMON_SUB_MODE_SWITCH_MODE,\r
- 0x01,\r
- send_data,\r
- 1);\r
} else if (testitem == 0x02)\r
{\r
\r
/*
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-10-02 14:12:12
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-11-04 17:36:14
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-11-11 15:03:39
* @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/include/notify/debug_output_notification.h
*/
#ifndef DEBUG_OUTPUT_NOTIFICATION_H
std::string get_battery_info(void);
std::string get_shutdown_info(void);
std::string get_sleep_time(void);
+ std::string get_wear_status(void);
std::string get_free_memory(void);
std::string get_nextday_log(void);
std::string get_heart_rate(void);
debugOutputItemInfo[index++] = {index, "uart_service_status"};
//Vote状态服务
debugOutputItemInfo[index++] = {index, "vote_service_status"};
+ // 佩戴状态
+ debugOutputItemInfo[index++] = {index, "wear_status"};
usedLen = index;
/* -------------------------------- Add data -------------------------------- */
for (uint8_t i = 0; i < usedLen; i++)
return result; // 返回结果字符串
}
+
+ // 获取佩戴状态
+ std::string DebugOutputViewEventListener::get_wear_status(void) {
+ return get_wear_status_str(); // 返回结果字符串
+ }
+
// 获取系统free内存
std::string DebugOutputViewEventListener::get_free_memory()
{
case 14:
str = get_current_vote_status();
break;
+ case 15:
+ str = get_wear_status();
+ break;
default:
str = "--";
break;
void cywee_custom_save_nap_data(void);
void cywee_reset_history_daily_data(void);
void cywee_check_acc(void);
+
+void cywee_custom_save_wear_data(void);
#pragma pack()
memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
csd.sensorType = CUSTOM_OFFBODY_DETECT;
csd.fData[0] = wearstatus;
+ wear_status = wearstatus;
CWM_CustomSensorInput(&csd);
// CWM_OS_dbgPrintf("111wearstatus : %d\r\n",wearstatus);
+
+ do_custom_fileoperate_service_check_msg(
+ CUSTOM_FILEOPERATE_MSG_TYPE_WEAR_DATA_SAVE, NULL, 0);
#endif
}
cywee_save_nap_data(sleep_time);
uapi_dev_runtime_set_sleep_storage_status(0);
}
-
\ No newline at end of file
+
+void cywee_custom_save_wear_data(void)
+{
+ SLEEP_STAT_T data;
+ uint32_t tm = 0;
+ uapi_get_timestampe_ss(&tm);
+ data.timestamp = tm;
+ data.stat = wear_status;
+ // CWM_OS_dbgPrintf("data.timestamp : %d , data.stat : %d\n", data.timestamp,data.stat);
+ uapi_save_file_data("user/userdata/wear.bin",&data,sizeof(SLEEP_STAT_T),"ab");
+}
void hx3695_hrs_cal_off(void)\r
{\r
uint16_t sample_rate = 25; /*config the data rate of chip alps2_fm ,uint is Hz*/\r
- uint32_t prf_clk_num = 32000/sample_rate*24/25; /*period in clk num, num = Fclk/fs */\r
+ uint32_t prf_clk_num = 32000/sample_rate; /*period in clk num, num = Fclk/fs */\r
uint8_t data_avg_num = 0;\r
hx3695_write_reg(0X2a, (uint8_t)prf_clk_num); // prf bit<7:0>\r
hx3695_write_reg(0X2b, (uint8_t)(prf_clk_num>>8)); // prf bit<15:8>\r
// printf("[%d] %d\r\n",__LINE__,mail.data[0]);
save_popup_windows_log_c(mail.data[0]);
break;
+
+ case CUSTOM_FILEOPERATE_MSG_TYPE_WEAR_DATA_READ:
+ custom_read_wear_data();
+ break;
+
+ case CUSTOM_FILEOPERATE_MSG_TYPE_WEAR_DATA_SAVE:
+ cywee_custom_save_wear_data();
+ break;
+
default:
PRINT("Unknown CUSTOM_FILE_OPERATE_MSG cmd 0x%02X \r\n", mail.cmd);
break;