From: penglei <1624952103@qq.com> Date: Thu, 27 Jun 2024 07:25:07 +0000 (+0800) Subject: 优化精简运动模式与睡眠模式消息发送 X-Git-Tag: release_V1.2.70_20241020_135402~943^2~1^2~3 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=fb7a1af770a905a58e50686a3a62d5916343ea11;p=mirrors%2FFD230.git 优化精简运动模式与睡眠模式消息发送 --- diff --git a/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h b/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h index 7f0757d1c..69c556481 100644 --- a/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h +++ b/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h @@ -49,7 +49,9 @@ typedef enum { TOPIC_EVENT_HFP_WATCH_TO_PHONE, #ifdef CYWEE_SPORT TOPIC_EVENT_ACTIVITY_UPDATE, + TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, TOPIC_EVENT_INACTIVITY_UPDATE, + TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE, TOPIC_EVENT_BLE_TRAINING, TOPIC_EVENT_BLE_TRANSMIT, #endif diff --git a/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c b/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c index c8194eb57..c6190ac19 100644 --- a/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c +++ b/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c @@ -30,7 +30,9 @@ static const TopicToCore topicToCoreArray[] = { {TOPIC_EVENT_HEARTRATE_UPDATA, A_CORE_MASK, 1}, #ifdef CYWEE_SPORT {TOPIC_EVENT_ACTIVITY_UPDATE, A_CORE_MASK, 1}, + {TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, A_CORE_MASK, 1}, {TOPIC_EVENT_INACTIVITY_UPDATE, A_CORE_MASK, 1}, + {TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE, A_CORE_MASK, 1}, {TOPIC_EVENT_BLE_TRAINING,A_CORE_MASK,1}, {TOPIC_EVENT_BLE_TRANSMIT,A_CORE_MASK,1}, diff --git a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp index 14e37f644..22a1d2842 100644 --- a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp @@ -63,8 +63,10 @@ const PriorityMapper PRI_MAPPER[] = { {TOPIC_EVENT_ON_TIME,PRIORITY_TWO}, {TOPIC_EVENT_NEXTDAY_UPDATE, PRIORITY_TWO}, {TOPIC_EVENT_ACTIVITY_UPDATE,PRIORITY_TWO}, + {TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE,PRIORITY_TWO}, {TOPIC_EVENT_STEPDATA_UPDATE,PRIORITY_TWO}, {TOPIC_EVENT_INACTIVITY_UPDATE,PRIORITY_TWO}, + {TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE,PRIORITY_TWO}, {TOPIC_EVENT_BLE_TRAINING,PRIORITY_TWO}, {TOPIC_EVENT_BLE_TRANSMIT,PRIORITY_TWO}, #ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION @@ -139,7 +141,9 @@ void MsgCenterSubscribe() MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_WATCH_TO_PHONE); #ifdef CYWEE_SPORT MsgCenterSubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE); + MsgCenterSubscribeTopic(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE); MsgCenterSubscribeTopic(TOPIC_EVENT_INACTIVITY_UPDATE); + MsgCenterSubscribeTopic(TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE); MsgCenterSubscribeTopic(TOPIC_EVENT_BLE_TRAINING); MsgCenterSubscribeTopic(TOPIC_EVENT_BLE_TRANSMIT); @@ -960,12 +964,16 @@ void MsgCenterNotifyActivityProc(const Topic topic, Request* req) if(c_activity_result_t->distance!=0) set_distance_data(c_activity_result_t->distance); - if(c_activity_result_t->MHR>=2) + if(c_activity_result_t->MHR_zone>=2) set_fat_time_data(); +} - +void MsgCenterNotifyActivityExtraInfoProc(const Topic topic, Request* req) +{ + unused(topic); } + void MsgCenterNotifyInactivityProc(const Topic topic, Request *req) { WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyInactivityProc !"); @@ -988,9 +996,9 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req) return; } - WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "cywee_Inactivity_Info->sedentary_status = %d, stand_freq = %d", cywee_Inactivity_Info->sedentary_status, cywee_Inactivity_Info->stand_freq); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "cywee_Inactivity_Info->sedentary_status = %d, stand_freq = %d", cywee_Inactivity_Info->status, cywee_Inactivity_Info->stand_freq); WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "cywee_Inactivity_Info->output_number = %d", cywee_Inactivity_Info->output_number); - if(cywee_Inactivity_Info->sedentary_status==9) + if(cywee_Inactivity_Info->status==9) { set_stand_falg(); } @@ -999,7 +1007,7 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req) switch (cywee_Inactivity_Info->output_number) { case INACTIVITY_MODE_SEDENTARY_OUTPUT: - if(cywee_Inactivity_Info->sedentary_status == 1) + if(cywee_Inactivity_Info->status == 1) { //NotificationManager::GetInstance()->ShowNotify(showSedentaryReminderNotify, (uint16_t)topic, true); //根据久坐间隔时间和是否在设置的提醒时间段内判断是否弹出久坐视图 @@ -1017,6 +1025,12 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req) free(cywee_Inactivity_Info); cywee_Inactivity_Info = NULL; } + +void MsgCenterNotifyInactivityAccumulateTimeProc(const Topic topic, Request* req) +{ + unused(topic); +} + //APP运动相关 void MsgCenterNotifybleAPPtraining(const Topic topic, Request* req) { @@ -1081,7 +1095,9 @@ static MsgCenterNotifyTable g_msgCenterNotifyTable[] = { {TOPIC_EVENT_HFP_PHONE_TO_WATCH, MsgCenterNotifyHfpWatchProc}, #ifdef CYWEE_SPORT {TOPIC_EVENT_ACTIVITY_UPDATE, MsgCenterNotifyActivityProc}, + {TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, MsgCenterNotifyActivityExtraInfoProc}, {TOPIC_EVENT_INACTIVITY_UPDATE, MsgCenterNotifyInactivityProc}, + {TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE, MsgCenterNotifyInactivityAccumulateTimeProc}, {TOPIC_EVENT_BLE_TRAINING, MsgCenterNotifybleAPPtraining}, {TOPIC_EVENT_BLE_TRANSMIT, MsgCenterNotifybleTransmit}, diff --git a/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h b/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h index 870ceaf76..f9d8d538d 100644 --- a/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h +++ b/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h @@ -450,50 +450,59 @@ typedef struct #pragma pack(1) typedef struct { - int activity_mode; - int steps; - int distance; - int calories; - int step_frequency; - int step_length; - int pace; - int avg_step_freq; - int avg_step_len; - int avg_pace; - int max_step_freq; - int max_pace; - int hrs; - int duration; - int MHR; + int activity_mode;//模式 + int steps;//步数 + int distance;//距离 + int calories;//卡路里 + int step_frequency;//步频 + int step_length;//步幅 + int pace;//配速 + int BMR_calories;//基础卡路里 + int hrs;//心率 + int duration;//持续时间 + int MHR_zone;//心率区间 }cywee_activity_result_t; +typedef struct +{ + int avg_step_freq;//平均步频 + int avg_step_len;//平均步长 + int avg_pace;//平均配速 + int max_step_freq;//最大步频 + int max_pace;//最大配速 + int activity_zone;//活动程度区间 0低度 1中度 2高度 + int ativity_zone_moderate_duration;//中度活动时间 + int ativity_zone_high_duration;//高度活动时间 + int MHR_zone;//心率区间 + int distance_motion;//体感距离 +}cywee_activity_result_extre_info_t; + typedef struct { int output_number; - int sedentary_status; - int sleep_status; - int nap_status; - int stand_freq; + int status;//状态 + int stand_freq;//站立次数 int month; int day; int hour; int minute; - int total_sleep_time; - int total_nap_time; - int total_mild_sleep_time; - int total_deep_sleep_time; - int total_wake_time; - int total_rem_sleep_time; }cywee_inactivity_result_t; - +typedef struct +{ + int total_time;//总共睡眠时间 + int total_mild_sleep_time;//总共浅睡时间 + int total_deep_sleep_time;//总共深睡时间 + int total_wake_time;//总共清醒时间 + int total_rem_sleep_time;//动眼 +}cywee_inactivity_accumulate_time_t; #pragma pack() typedef enum{ CYWEE_MSG_TYPE_ACTIVITY_UPDATE, CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE, CYWEE_MSG_TYPE_INACTIVITY_UPDATE, - CYWEE_MSG_TYPE_INACTIVITY_EXTRA_INFO_UPDATE, + CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE, } cywee_msg_type_t; extern void get_gsonsen_xyz(gsenson_t *t); diff --git a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c index 824b2b40d..0c117f868 100644 --- a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c +++ b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c @@ -62,124 +62,123 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen PRINT("cywee_msg_callback\r\n"); cywee_activity_result_t c_activity_result_t; cywee_inactivity_result_t c_inactivity_result_t; + cywee_activity_result_extre_info_t c_activity_result_extre_info_t; + cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t; if (msg_type == CYWEE_MSG_TYPE_ACTIVITY_UPDATE) { memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t)); switch (c_activity_result_t.activity_mode) { - case SPORT_ACTIVE_MODE_NORMAL: - PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d],hrs[%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); - 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[%d], pace[%d],hrs[%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); - 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("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d],hrs[%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); - 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("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d],hrs[%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); - 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[%d], pace[%d],hrs[%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); - 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("activit_mode[%d], calories[%d],hrs[%d]\n", - c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.hrs); - CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t)); - break; + case SPORT_ACTIVE_MODE_NORMAL: + PRINT("normal mode activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d],hrs[%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); + 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[%d], pace[%d],hrs[%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); + 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[%d], pace[%d],hrs[%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); + 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[%d], pace[%d],hrs[%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); + 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[%d], pace[%d],hrs[%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); + CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t)); + break; - // 额外信息 - case SPORT_ACTIVE_MODE_EXTRA_INFO: - PRINT("CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE\r\n"); - memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t)); - PRINT("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d]\n", - c_activity_result_t.avg_step_freq, c_activity_result_t.avg_step_len, c_activity_result_t.avg_pace, c_activity_result_t.max_step_freq, c_activity_result_t.max_pace); - CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t)); - break; - default: - 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); + CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t)); + break; + default: + break; } - } + } + else if (msg_type == CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE) + { + PRINT("CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE\r\n"); + memcpy(&c_activity_result_extre_info_t, msg_data, sizeof(cywee_activity_result_extre_info_t)); + PRINT("avg_step_freq[%d],avg_step_len[%d],avg_pace[%d],max_step_freq[%d],max_pace[%d],activity_zone[%d],ativity_zone_moderate_duration[%d],ativity_zone_high_duration[%d],MHR_zone[%d],distance_motion[%d]\n", + c_activity_result_extre_info_t.avg_step_freq, c_activity_result_extre_info_t.avg_step_len, + c_activity_result_extre_info_t.avg_pace,c_activity_result_extre_info_t.max_step_freq, + c_activity_result_extre_info_t.max_pace,c_activity_result_extre_info_t.activity_zone, + c_activity_result_extre_info_t.ativity_zone_moderate_duration, + c_activity_result_extre_info_t.ativity_zone_high_duration, + c_activity_result_extre_info_t.MHR_zone, + c_activity_result_extre_info_t.distance_motion); + CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t)); + + } else if (msg_type == CYWEE_MSG_TYPE_INACTIVITY_UPDATE) { memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t)); switch (c_inactivity_result_t.output_number) { - // 久坐 - case INACTIVITY_MODE_SEDENTARY_OUTPUT: - memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t)); - PRINT("sedentary status[%d], stand freq[%d]\n", - c_inactivity_result_t.sedentary_status,c_inactivity_result_t.stand_freq); - CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t)); - break; + // 久坐 + case INACTIVITY_MODE_SEDENTARY_OUTPUT: + memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t)); + PRINT("sedentary status[%d], stand freq[%d], day[%d], hour[%d], min[%d]\n", + c_inactivity_result_t.status,c_inactivity_result_t.stand_freq,c_inactivity_result_t.day,c_inactivity_result_t.hour,c_inactivity_result_t.minute); + CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t)); + break; - // 睡眠 - case INACTIVITY_MODE_SLEEPING_OUTPUT: - memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t)); - PRINT("sleep status[%d], month[%d], day[%d], hour[%d], min[%d]\n", - c_inactivity_result_t.sleep_status, - c_inactivity_result_t.month, c_inactivity_result_t.day, - c_inactivity_result_t.hour, c_inactivity_result_t.minute, - sizeof(cywee_inactivity_result_t)); - CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t)); - break; + // 睡眠 + case INACTIVITY_MODE_SLEEPING_OUTPUT: + memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t)); + PRINT("sleep status[%d], month[%d], day[%d], hour[%d], min[%d]\n", + c_inactivity_result_t.status,c_inactivity_result_t.month, c_inactivity_result_t.day, + c_inactivity_result_t.hour, c_inactivity_result_t.minute); + CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t)); + break; + // 小睡 + case INACTIVITY_MODE_NAP_OUTPUT: + memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t)); + PRINT("nap status[%d], month[%d], day[%d], hour[%d], min[%d]\n", + c_inactivity_result_t.status, c_inactivity_result_t.month, + c_inactivity_result_t.day, c_inactivity_result_t.hour, c_inactivity_result_t.minute); + CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t)); + break; + } + } + else if (msg_type == CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE) + { // 睡眠累计 - case INACTIVITY_MODE_SLEEPING_ACCUMULATE_TIME_OUTPUT: - memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t)); - PRINT("total sleep time[%d], total nap time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n", - c_inactivity_result_t.total_sleep_time, c_inactivity_result_t.total_mild_sleep_time, - c_inactivity_result_t.total_deep_sleep_time, c_inactivity_result_t.total_wake_time, - c_inactivity_result_t.total_rem_sleep_time,c_inactivity_result_t.stand_freq); - CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t)); - break; - - // 小睡 - case INACTIVITY_MODE_NAP_OUTPUT: - memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t)); - PRINT("nap status[%d], month[%d], day[%d], hour[%d], min[%d]\n", - c_inactivity_result_t.nap_status, c_inactivity_result_t.month, - c_inactivity_result_t.day, c_inactivity_result_t.hour, c_inactivity_result_t.minute); - CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t)); - break; + memcpy(&c_inactivity_accumulate_time_t, msg_data, sizeof(cywee_inactivity_accumulate_time_t)); + PRINT("total sleep time[%d], total mild sleep time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n", + c_inactivity_accumulate_time_t.total_time, c_inactivity_accumulate_time_t.total_mild_sleep_time, + c_inactivity_accumulate_time_t.total_deep_sleep_time, c_inactivity_accumulate_time_t.total_wake_time, + c_inactivity_accumulate_time_t.total_rem_sleep_time); + CustomEventPublish(TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE, &c_inactivity_accumulate_time_t, sizeof(cywee_inactivity_accumulate_time_t)); - // 小睡累计 - case INACTIVITY_MODE_NAP_ACCUMULATE_TIME_OUTPUT: - memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t)); - PRINT("total nap time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n", - c_inactivity_result_t.total_nap_time, c_inactivity_result_t.total_mild_sleep_time, - c_inactivity_result_t.total_deep_sleep_time, c_inactivity_result_t.total_wake_time, - c_inactivity_result_t.total_rem_sleep_time,c_inactivity_result_t.stand_freq); - CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t)); - break; - } } + else PRINT("Unknown sensor message type"); } diff --git a/code/sdk/drivers/peripheral/cywee/src/main_dml.c b/code/sdk/drivers/peripheral/cywee/src/main_dml.c index 6af8472b4..b09064450 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main_dml.c +++ b/code/sdk/drivers/peripheral/cywee/src/main_dml.c @@ -32,8 +32,6 @@ static int16 right_falg=-1; SettingControl_t scl; -cywee_activity_result_t c_activity_result_t; -cywee_inactivity_result_t c_inactivity_result_t; static uint8_t cywee_installized = 0 ; CustomSensorData csd; @@ -480,6 +478,11 @@ void gsensor_get_n_data(uint8_t cnt,gsenson_t t[]) //static int flag=32; void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) { cywee_msg_callback_t cywee_func; + cywee_activity_result_t c_activity_result_t; + 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; + switch (sensorEVT->sensorType) { case IDX_ACCEL: gxyz_t.x = sensorEVT->fData[0]; @@ -608,20 +611,18 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) { CWM_OS_dbgPrintf("IDX_ALGO_INACTIVITY_OUTPUT\n"); if((int)sensorEVT->fData[0] == 20) { - CWM_OS_dbgPrintf("inactivity_mode_number[%d], sedentary status[%d], stand freq[%d], day[%d], hour[%d], min[%d]\n", - (int)sensorEVT->fData[15], - (int)sensorEVT->fData[2], - (int)sensorEVT->fData[3], - (int)sensorEVT->fData[8], - (int)sensorEVT->fData[9], - (int)sensorEVT->fData[10]); + memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t)); + c_inactivity_result_t.output_number = (int)sensorEVT->fData[0]; - c_inactivity_result_t.output_number = (int)sensorEVT->fData[0]; - c_inactivity_result_t.sedentary_status = (int)sensorEVT->fData[2]; + + c_inactivity_result_t.status = (int)sensorEVT->fData[2]; c_inactivity_result_t.stand_freq = (int)sensorEVT->fData[3]; + c_inactivity_result_t.day = (int)sensorEVT->fData[8]; + c_inactivity_result_t.hour = (int)sensorEVT->fData[9]; + c_inactivity_result_t.minute = (int)sensorEVT->fData[10]; - if(c_inactivity_result_t.sedentary_status == 1) + if(c_inactivity_result_t.status == 1) { sedentary_interval_count++; if(sedentary_interval_count == sedentary_interval) @@ -630,115 +631,92 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) { cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t)); } } - else if(c_inactivity_result_t.sedentary_status != 3) + else if(c_inactivity_result_t.status != 3) { sedentary_interval_count = 0; cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t)); } }else if((int)sensorEVT->fData[0] == 21){ - CWM_OS_dbgPrintf("inactivity_mode_number[%d], sleep status[%d], month[%d], day[%d], hour[%d], min[%d]\n", - (int)sensorEVT->fData[15], - (int)sensorEVT->fData[2], - (int)sensorEVT->fData[3], - (int)sensorEVT->fData[4], - (int)sensorEVT->fData[5], - (int)sensorEVT->fData[6]); + memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t)); + c_inactivity_result_t.output_number = (int)sensorEVT->fData[0]; - c_inactivity_result_t.sleep_status = (int)sensorEVT->fData[2]; + c_inactivity_result_t.status = (int)sensorEVT->fData[2]; c_inactivity_result_t.month = (int)sensorEVT->fData[3]; c_inactivity_result_t.day = (int)sensorEVT->fData[4]; c_inactivity_result_t.hour = (int)sensorEVT->fData[5]; c_inactivity_result_t.minute = (int)sensorEVT->fData[6]; + cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t)); }else if((int)sensorEVT->fData[0] == 31){ - CWM_OS_dbgPrintf("inactivity_mode_number[%d], total sleep time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n", - (int)sensorEVT->fData[15], - (int)sensorEVT->fData[1], - (int)sensorEVT->fData[2], - (int)sensorEVT->fData[3], - (int)sensorEVT->fData[4], - (int)sensorEVT->fData[5]); - memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t)); - c_inactivity_result_t.output_number = (int)sensorEVT->fData[0]; - c_inactivity_result_t.total_sleep_time = (int)sensorEVT->fData[1]; - c_inactivity_result_t.total_mild_sleep_time = (int)sensorEVT->fData[2]; - c_inactivity_result_t.total_deep_sleep_time = (int)sensorEVT->fData[3]; - c_inactivity_result_t.total_wake_time = (int)sensorEVT->fData[4]; - c_inactivity_result_t.total_rem_sleep_time = (int)sensorEVT->fData[5]; - cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t)); + + memset(&c_inactivity_accumulate_time_t,0,sizeof(cywee_inactivity_accumulate_time_t)); + + c_inactivity_accumulate_time_t.total_time = (int)sensorEVT->fData[1]; + c_inactivity_accumulate_time_t.total_mild_sleep_time = (int)sensorEVT->fData[2]; + c_inactivity_accumulate_time_t.total_deep_sleep_time = (int)sensorEVT->fData[3]; + c_inactivity_accumulate_time_t.total_wake_time = (int)sensorEVT->fData[4]; + c_inactivity_accumulate_time_t.total_rem_sleep_time = (int)sensorEVT->fData[5]; + + cywee_func(CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE,&c_inactivity_accumulate_time_t,sizeof(cywee_inactivity_accumulate_time_t)); }else if((int)sensorEVT->fData[0] == 22){ - CWM_OS_dbgPrintf("inactivity_mode_number[%d], nap status[%d], month[%d], day[%d], hour[%d], min[%d]\n", - (int)sensorEVT->fData[15], - (int)sensorEVT->fData[2], - (int)sensorEVT->fData[3], - (int)sensorEVT->fData[4], - (int)sensorEVT->fData[5], - (int)sensorEVT->fData[6]); + memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t)); + c_inactivity_result_t.output_number = (int)sensorEVT->fData[0]; - c_inactivity_result_t.nap_status = (int)sensorEVT->fData[2]; + c_inactivity_result_t.status = (int)sensorEVT->fData[2]; c_inactivity_result_t.month = (int)sensorEVT->fData[3]; c_inactivity_result_t.day = (int)sensorEVT->fData[4]; c_inactivity_result_t.hour = (int)sensorEVT->fData[5]; c_inactivity_result_t.minute = (int)sensorEVT->fData[6]; + cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t)); }else if((int)sensorEVT->fData[0] == 32){ - CWM_OS_dbgPrintf("inactivity_mode_number[%d], total nap time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n", - (int)sensorEVT->fData[15], - (int)sensorEVT->fData[1], - (int)sensorEVT->fData[2], - (int)sensorEVT->fData[3], - (int)sensorEVT->fData[4], - (int)sensorEVT->fData[5]); - memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t)); - c_inactivity_result_t.output_number = (int)sensorEVT->fData[0]; - c_inactivity_result_t.total_nap_time = (int)sensorEVT->fData[1]; - c_inactivity_result_t.total_mild_sleep_time = (int)sensorEVT->fData[2]; - c_inactivity_result_t.total_deep_sleep_time = (int)sensorEVT->fData[3]; - c_inactivity_result_t.total_wake_time = (int)sensorEVT->fData[4]; - c_inactivity_result_t.total_rem_sleep_time = (int)sensorEVT->fData[5]; - cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t)); + + memset(&c_inactivity_accumulate_time_t,0,sizeof(cywee_inactivity_accumulate_time_t)); + + c_inactivity_accumulate_time_t.total_time = (int)sensorEVT->fData[1]; + c_inactivity_accumulate_time_t.total_mild_sleep_time = (int)sensorEVT->fData[2]; + c_inactivity_accumulate_time_t.total_deep_sleep_time = (int)sensorEVT->fData[3]; + c_inactivity_accumulate_time_t.total_wake_time = (int)sensorEVT->fData[4]; + c_inactivity_accumulate_time_t.total_rem_sleep_time = (int)sensorEVT->fData[5]; + + cywee_func(CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE,&c_inactivity_accumulate_time_t,sizeof(cywee_inactivity_accumulate_time_t)); } break; case IDX_ALGO_ACTIVITY_OUTPUT: cywee_func = cywee_get_send_msg_callback_func(); if((int)sensorEVT->fData[0] == 100) { - CWM_OS_dbgPrintf("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d]\n", - (int)sensorEVT->fData[1], - (int)sensorEVT->fData[2], - (int)sensorEVT->fData[3], - (int)sensorEVT->fData[4], - (int)sensorEVT->fData[5]); + memset(&c_activity_result_extre_info_t,0,sizeof(cywee_activity_result_extre_info_t)); - memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t)); - c_activity_result_t.activity_mode = (int)sensorEVT->fData[0]; - c_activity_result_t.avg_step_freq = (int)sensorEVT->fData[1]; - c_activity_result_t.avg_step_len = (int)sensorEVT->fData[2]; - c_activity_result_t.avg_pace = (int)sensorEVT->fData[3]; - c_activity_result_t.max_step_freq = (int)sensorEVT->fData[4]; - c_activity_result_t.max_pace = (int)sensorEVT->fData[5]; - c_activity_result_t.hrs = hrs; - cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t)); + c_activity_result_extre_info_t.avg_step_freq = (int)sensorEVT->fData[1]; + c_activity_result_extre_info_t.avg_step_len = (int)sensorEVT->fData[2]; + c_activity_result_extre_info_t.avg_pace = (int)sensorEVT->fData[3]; + c_activity_result_extre_info_t.max_step_freq = (int)sensorEVT->fData[4]; + c_activity_result_extre_info_t.max_pace = (int)sensorEVT->fData[5]; + c_activity_result_extre_info_t.activity_zone = (int)sensorEVT->fData[10]; + c_activity_result_extre_info_t.ativity_zone_moderate_duration = (int)sensorEVT->fData[11]; + c_activity_result_extre_info_t.ativity_zone_high_duration = (int)sensorEVT->fData[12]; + c_activity_result_extre_info_t.MHR_zone = (int)sensorEVT->fData[13]; + c_activity_result_extre_info_t.distance_motion = (int)sensorEVT->fData[14]; + + cywee_func(CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,&c_activity_result_extre_info_t,sizeof(cywee_activity_result_extre_info_t)); }else if((int)sensorEVT->fData[0] == 5001) { - CWM_OS_dbgPrintf("Free_Training : calories[%d], duration[%d], MHR_zone[%d]\n", - (int)sensorEVT->fData[1], - (int)sensorEVT->fData[5], - (int)sensorEVT->fData[6]); - memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t)); + c_activity_result_t.activity_mode = (int)sensorEVT->fData[0]; c_activity_result_t.calories = (int)sensorEVT->fData[1]; c_activity_result_t.duration = (int)sensorEVT->fData[5]; - c_activity_result_t.MHR = (int)sensorEVT->fData[6]; + c_activity_result_t.MHR_zone = (int)sensorEVT->fData[6]; c_activity_result_t.hrs = hrs; + cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t)); }else if((int)sensorEVT->fData[0] == 102) @@ -748,16 +726,6 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) { CustomEventPublish(TOPIC_EVENT_AR_ALERT_TYPE_UPDATE,&ar_alert_type,sizeof(int)); }else{ - CWM_OS_dbgPrintf("activity_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d]\n", - (int)sensorEVT->fData[0], - (int)sensorEVT->fData[1], - (int)sensorEVT->fData[2], - (int)sensorEVT->fData[3], - (int)sensorEVT->fData[5], - (int)sensorEVT->fData[6], - (int)sensorEVT->fData[7], - (int)sensorEVT->fData[8], - (int)sensorEVT->fData[14]); stepcount = (int)sensorEVT->fData[1] + history_step; memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t)); c_activity_result_t.activity_mode = (int)sensorEVT->fData[0]; diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 84cdd162b..362be0b37 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -1818,6 +1818,7 @@ uint32_t uapi_calendar_recover_date(void) { #if 1 restore_time(); + do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL); return ERRCODE_SUCC; #else calendar_t date;