// 训练数据相关配置
void AnalysisData(cywee_activity_result_t *cyweeInfo); /*解析传输过来的数据*/
void AnalysisExtraData(cywee_activity_result_extre_info_t *cyweeInfo); /*解析运动额外数据*/
+ void AnalysisHeartData(uint8_t hrs); /*解析运动心率数据*/
SportData *GetSportdata(); /*获取训练数据*/
void SetIntensity(int heart); /*设置训练强度*/
UIResourceTextId GetIntensity(); /*获取训练强度STR*/
TraingModel::GetInstance()->AnalysisExtraData(cyweeInfo_ext);
delete cyweeInfo_ext; // 释放内存
}
+ if(request->msgId == TOPIC_EVENT_HEARTRATE_UPDATA)
+ {
+ uint8_t heart = *((u_int8_t*)(request->data)); // 进行类型转换
+ TraingModel::GetInstance()->AnalysisHeartData(heart);
+ }
if (request->msgId == TOPIC_EVENT_BLE_TRAINING)
{
training_ble *traingbleInfo = new training_ble();
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::~TraingModel()");
TraingUnsubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE); // 取消订阅
TraingUnsubscribeTopic(TOPIC_EVENT_BLE_TRAINING);
+ TraingUnsubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);
TraingUnsubscribeTopic(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE);
}
TraingModel *TraingModel::GetInstance(void)
{
TraingSubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE); // 进行消息订阅
TraingSubscribeTopic(TOPIC_EVENT_BLE_TRAINING);
+ TraingSubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);
TraingSubscribeTopic(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE);
}
/*设置运动类型*/
sportdata->spc = sportdata->pc;
}
- sportdata->heart = cyweeInfo->hrs;
- SetIntensity(sportdata->heart); // 设置训练强度
+
// 计算平均心率
if (sportdata->heart > 50)
sportdata->cdc = cyweeInfo->avg_step_freq;
sportdata->std = cyweeInfo->avg_step_len * 100; // 前者cm 后者m
}
+ /*分析运动心率数据*/
+ void TraingModel::AnalysisHeartData(u_int8_t hrs)
+ {
+ sportdata->heart = hrs;
+ SetIntensity(sportdata->heart); // 设置训练强度
+ }
/*打印函数*/
void TraingModel::printf_data(SportData *data)
float step_length;//步幅
int pace;//配速
int BMR_calories;//基础卡路里
- int hrs;//心率
+ // int hrs;//心率
int duration;//持续时间
int MHR_zone;//心率区间
}cywee_activity_result_t;
switch (c_activity_result_t.activity_mode)
{
case SPORT_ACTIVE_MODE_NORMAL:
- PRINT("normal mode activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d],hrs[%d]\n",
+ PRINT("normal mode activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
- c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.hrs);
+ c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_TREADMILL:
PRINT("CYWEE_MSG_TYPE_TREADMILL_UPDATE\r\n");
memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d],hrs[%d]\n",
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
- c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.hrs);
+ c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
PRINT("CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE\r\n");
memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("outdoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d],hrs[%d]\n",
+ PRINT("outdoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
- c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.hrs);
+ c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
PRINT("CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE\r\n");
memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("indoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d],hrs[%d]\n",
+ PRINT("indoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
- c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.hrs);
+ c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
PRINT("CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE\r\n");
memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d],hrs[%d]\n",
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories,
- c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.hrs);
+ c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
case SPORT_ACTIVE_MODE_FREE_TRAINING:
PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE\r\n");
memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("free training activit_mode[%d], calories[%d],MHR_zone[%d],hrs[%d]\n",
- c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.MHR_zone,c_activity_result_t.hrs);
+ PRINT("free training activit_mode[%d], calories[%d],MHR_zone[%d]\n",
+ c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.MHR_zone);
CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
break;
default:
#include "sys/time.h"
#include "time.h"
#include "ConfigModelC.h"
+#include "battery_hal.h"
#define AP_ENABLE_DML_SDO_LISTEN
CustomSensorData csd;
-static uint8_t hrs = 0;
+// static uint8_t hrs = 0;
uint8_t hrs_mode_state = 0;
void cywee_hrs_update(int hrs_data)
{
- hrs = hrs_data;
- CWM_OS_dbgPrintf("hrs : %d\r\n",hrs);
+ // hrs = hrs_data;
+ CWM_OS_dbgPrintf("hrs_data : %d\r\n",hrs_data);
memset(&csd, 0, sizeof(CUSTOM_HEARTRATE));
csd.sensorType = CUSTOM_HEARTRATE;
- csd.fData[0] = hrs;
+ csd.fData[0] = hrs_data;
CWM_CustomSensorInput(&csd);
}
void cywee_wearstatus_update(int wearstatus)
{
+#if 1
memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
csd.sensorType = CUSTOM_OFFBODY_DETECT;
csd.fData[0] = wearstatus;
CWM_CustomSensorInput(&csd);
CWM_OS_dbgPrintf("111wearstatus : %d\r\n",wearstatus);
+
+ if(uapi_dev_runtime_get_sleep_monitoring_status())
+ {
+ SLEEP_FLAG_T sleep_flag_t;
+ sleep_flag_t.stat = 16 + wearstatus;
+ uapi_get_timestampe_ss(&sleep_flag_t.timestamp);
+ uapi_save_sleep_flag(&sleep_flag_t,sizeof(SLEEP_FLAG_T));
+ }
+#endif
}
//0:resume , 1:pause
cywee_inactivity_result_t c_inactivity_result_t;
cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t;
cywee_activity_result_extre_info_t c_activity_result_extre_info_t;
-
+ SLEEP_FLAG_T sleep_flag_t;
switch (sensorEVT->sensorType) {
case IDX_ACCEL:
gxyz_t.x = sensorEVT->fData[0];
if ((int)sensorEVT->fData[1] == 2)
{
#if defined(SUPPORT_POWER_MANAGER)
- CWM_OS_dbgPrintf("[cwyee] turn_off_screen");
+
+ if(!uapi_dev_runtime_get_mmc_status_flag()) //非指南针界面 才开启翻腕灭屏
+ {
+ CWM_OS_dbgPrintf("[cwyee] turn_off_screen \n");
mmi_screen_on_off_by_flip_wrist(false);
+ }
#endif
}else if ((int)sensorEVT->fData[1] == 1)
{
#if defined(SUPPORT_POWER_MANAGER)
- CWM_OS_dbgPrintf("[cwyee] turn_on_screen");
+ CWM_OS_dbgPrintf("[cwyee] turn_on_screen \n");
mmi_screen_on_off_by_flip_wrist(true);
#endif
}
{
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_TEST);
hrs_mode_state = 1;
- hrs = 0;//运动开始,清零心率
+ // hrs = 0;//运动开始,清零心率
}
else
{
/*保存睡眠状态*/
if(c_inactivity_result_t.status >= 6 && c_inactivity_result_t.status <= 13)
{
- SLEEP_FLAG_T sleep_flag_t = {0,0};
- uapi_get_timestampe_ss(sleep_flag_t.timestamp);
+ uapi_get_timestampe_ss(&sleep_flag_t.timestamp);
sleep_flag_t.stat = c_inactivity_result_t.status;
uapi_save_sleep_flag(&sleep_flag_t,sizeof(SLEEP_FLAG_T));
}
c_activity_result_t.calories = (int)sensorEVT->fData[1];
c_activity_result_t.duration = (int)sensorEVT->fData[5];
c_activity_result_t.MHR_zone = (int)sensorEVT->fData[6];
- c_activity_result_t.hrs = hrs;
- hrs = 0; //每次上报完 清除心率值
+ // c_activity_result_t.hrs = hrs;
+ // hrs = 0; //每次上报完 清除心率值
cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
}else if((int)sensorEVT->fData[0] == 102)
c_activity_result_t.step_frequency = (int)sensorEVT->fData[5];
c_activity_result_t.step_length = (float)sensorEVT->fData[6];
c_activity_result_t.pace = (int)(sensorEVT->fData[7] * 60);
- c_activity_result_t.hrs = hrs;
- hrs = 0; //每次上报完 清除心率值
+ // c_activity_result_t.hrs = hrs;
+ // hrs = 0; //每次上报完 清除心率值
cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
CustomEventPublish(TOPIC_EVENT_STEPDATA_UPDATE,&stepcount,sizeof(int));
}
uapi_get_timestampe_ss(&abs_static_timestampe);
if((abs_static_timestampe - asleep_timestampe) >= 60 * 90)
{
+ sleep_flag_t.stat = 15;
+ sleep_flag_t.timestamp = abs_static_timestampe;
+ uapi_save_sleep_flag(&sleep_flag_t,sizeof(SLEEP_FLAG_T));
uapi_dev_runtime_set_absolute_static_status(1);
cywee_get_sleep_data(1);
}
cywee_set_user_info();
cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
+
+ cywee_oncharging_update(get_charge_stat()); //初始化时检查充电状态
//cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
//cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
#include "mmc_customer.h"
#include "custom_utils.h"
+#include "custom_runtime.h"
/***
* 其他cmd在Header里定义,对外开放
*/
// MMC_LOG("MAG_SERVICE_CMD_TIMER_CHECK\r\n");
mmc5603_check();
}else if (mail.comm.app == MAG_SERVICE_CMD_START_CHECK){
+ uapi_dev_runtime_set_mmc_status(1);
mmc5603_start();
LOS_Mdelay(20);
mag_service_running_stat = true;
// uapi_pm_add_sleep_veto(PM_ID_SCREEN);
mag_service_timer_start_check(MAG_CHECK_MS);
}else if (mail.comm.app == MAG_SERVICE_CMD_STOP_CHECK){
+ uapi_dev_runtime_set_mmc_status(0);
SavePara_infile();
mag_service_running_stat = false;
osTimerStop(g_mag_service_timer);
uint8_t checkres_status;//校验文件状态
uint8_t repair_download_status;//升级下载状态
uint8_t hrs_passivity_status;//获取被动心率检测状态
+ uint8_t mmc_status; //是否为指南针页面
} runtime_status_t;
uint8_t uapi_dev_runtime_get_hrs_passivity_flag(void)
{
return g_runtime.hrs_passivity_status;
-}
\ No newline at end of file
+}
+
+// 设置是否为指南针页面状态
+void uapi_dev_runtime_set_mmc_status(uint8_t status)
+{
+ g_runtime.mmc_status = status;
+}
+// 获取指南针页面状态
+uint8_t uapi_dev_runtime_get_mmc_status_flag(void)
+{
+ return g_runtime.mmc_status;
+}
// 获取被动心率检测状态
uint8_t uapi_dev_runtime_get_hrs_passivity_flag(void);
+void uapi_dev_runtime_set_mmc_status(uint8_t status);
+// 获取指南针页面状态
+uint8_t uapi_dev_runtime_get_mmc_status_flag(void);
+
#ifdef __cplusplus
#if __cplusplus
}