123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- #ifndef _AEM_WORKOUT_IF_H_
- #define _AEM_WORKOUT_IF_H_
- #include <stdint.h>
- #include <stdbool.h>
- #include "aem_sensor_if.h"
- #include "aem_core_if.h"
- #include "res_include.h"
- // #include "aem_workout_id_info.h"
- #define WORKOUT_TOP_LIST_MAX 11
- #pragma pack(push, 1)
- // 运动分类
- typedef enum
- {
- WORKOUT_CATEGORY_GENERAL, // 日常运动
- WORKOUT_CATEGORY_MAX,
- } workout_category_e;
- // 运动类型的ID
- typedef enum
- {
- WORKOUT_ID_BEGIN = 0,
- WORKOUT_OUTDOOR_RUNNING = 0, // 0.户外跑步
- WORKOUT_INDOOR_RUNNING, // 室内跑步
- WORKOUT_HIKE, // 户外徒步
- WORKOUT_OUTDOOR_CYCLE, // 户外骑行
- WORKOUT_INDOOR_CYCLE, // 室内骑行
- WORKOUT_POOL_SWIM, // 泳池游泳
- WORKOUT_OPEN_WATER, // 开放水域游泳
- WORKOUT_BADMINTON, // 羽毛球
- WORKOUT_YOGA, // 瑜伽
- WORKOUT_TENNIS, // 网球
- WORKOUT_ROPE, // 跳绳
- WORKOUT_ID_MAX,
- WORKOUT_ID_INVALID = 0xff,
- } workout_id_e;
- typedef enum
- {
- WORKOUT_FIELD_BEGIN = 0,
- WORKOUT_DURATION_FIELD = 0, // 运动时长
- WORKOUT_DISTANCE_FIELD, // 距离
- WORKOUT_CALORIE_FIELD, // 卡路里
- WORKOUT_RT_HR_FIELD, // 实时心率
- WORKOUT_MAX_HR_FIELD, // 最大心率
- WORKOUT_MIN_HR_FIELD, // 最小心率
- WORKOUT_RT_PACE_FIELD, // 实时配速
- WORKOUT_AVERAGE_PACE_FIELD, // 平均配速
- WORKOUT_SPEED_FIELD, // 速度
- WORKOUT_AVERAGE_SPEED_FIELD, // 平均速度
- WORKOUT_STEPS_FIELD, // 步数(步)
- WORKOUT_RT_STRIDE_FREQ_FIELD, // 实时步频
- WORKOUT_AVG_CADENCE_FIELD, // 平均步频
- WORKOUT_ALTITUDE_FIELD, // 海拔高度
- WORKOUT_MAX_ALTITUDE_FIELD, // 最高海拔
- WORKOUT_MIN_ALTITUDE_FIELD, // 最低海拔
- WORKOUT_CUMULATIVE_RISE_FIELD, // 累计上升
- WORKOUT_LAPS_FIELD, // 趟数
- WORKOUT_ROPES_FIELD, // 跳绳数
- WORKOUT_MAX_FIELD_UNKNOW,
- WORKOUT_PARAM_INVALID = 0xff,
- } workout_data_type_e;
- typedef enum
- {
- WORKOUT_RUN = 0,
- WORKOUT_PAUSE = 1,
- } workout_state_e;
- typedef enum
- {
- UNIT_STR_KCAL, // 千卡, kcal
- UNIT_STR_DISTANCE_M, // 距离, 米
- UNIT_STR_DISTANCE_YARD, // 距离, 码
- UNIT_STR_DISTANCE_KM, // 距离, 千米
- UNIT_STR_DISTANCE_MILE, // 距离, 英里
- UNIT_STR_PACE_KM, // 配速, /千米
- UNIT_STR_PACE_MILE, // 配速, /英里
- UNIT_STR_SPEED_KMH, // 速度, 千米/时
- UNIT_STR_SPEED_MMH, // 速度, 英里/时
- UNIT_STR_LAPS, // 游泳趟数
- UNIT_STR_ROPES, // 跳绳次数
- UNIT_STR_STEPS, // 步数
- UNIT_STR_SPM, // 步频
- UNIT_STR_BPM, // 心率
- } unit_type_e;
- // 单个运动的信息
- typedef struct
- {
- uint8_t id;
- uint8_t category_id;
- uint32_t name_id;
- uint32_t icon_id;
- uint32_t big_icon_id;
- uint32_t bk_color;
- void *icon;
- void *big_icon;
- res_string_id_e name_key;
- // attribs
- uint32_t attr_gps : 1; // 需要GPS定位
- uint32_t attr_pool : 1; // 需要设置泳池长度
- uint32_t attr_running : 1; // 跑步类运动
- uint32_t attr_cycle : 1; // 骑行类运动
- } workout_info_t;
- typedef enum
- {
- WORKOUT_OK = 0,
- WORKOUT_FAIL,
- WORKOUT_INVALID_PARAM,
- WORKOUT_TYPE_ALGO_NO_SUPPORT,
- WORKOUT_OUT_OF_MEMORY,
- WORKOUT_TAG_NOT_EXIST,
- } workout_error_e;
- // 运动开关设置
- typedef struct
- {
- uint8_t auto_start; // 自动识别, 0x00:关闭; 0x01:打开; 0xff:忽略
- uint8_t auto_pause; // 自动暂停, 0x00:关闭; 0x01:打开; 0xff:忽略
- uint8_t auto_stop; // 自动结束, 0x00:关闭; 0x01:打开; 0xff:忽略
- uint8_t hr_alarm_enable; // 心率报警值是否开启, 0x00:关闭; 0x01:开启; 0xff:忽略
- uint8_t hr_alarm_value; // 心率报警值
- } workout_switch_settings_t;
- typedef struct
- {
- uint8_t s_workout_toplist[11];
- workout_switch_settings_t switch_settings;
- uint8_t pool_length; // 泳池长度
- } aem_workout_settings_t;
- typedef enum
- {
- GOAL_SETTING_NO_GOAL = 0, // 无目标
- GOAL_SETTING_DURAION, // 运动时长
- GOAL_SETTING_DISTANCE, // 运动距离
- GOAL_SETTING_CALORIE, // 消耗
- GOAL_SETTING_COUNT, // 次数,跳绳等
- GOAL_SETTING_MAX_UNKNOW,
- } workout_goal_type_e;
- typedef enum
- {
- WORKOUT_REMIND_BEGIN = 0,
- WORKOUT_REMIND_NO_REMIND = 0, // 无提醒
- WORKOUT_REMIND_DURATION, // 时间
- WORKOUT_REMIND_DISTANCE, // 距离
- WORKOUT_REMIND_COUNT, // 次数,跳绳等
- WORKOUT_REMIND_MAX_UNKNOW,
- } workout_remind_type_e;
- typedef struct
- {
- uint16_t distance; // 距离, km
- uint16_t durMin; // minutes
- uint16_t count;
- workout_remind_type_e active_remind; // 选中提醒类型
- } workout_remind_setting_t;
- typedef struct
- {
- uint16_t calories;
- uint16_t distance;
- uint16_t durMin; // minutes
- uint16_t count;
- workout_goal_type_e active_goal;
- } workout_goal_settings_t;
- typedef struct
- {
- workout_id_e id;
- workout_goal_settings_t goal;
- workout_remind_setting_t remind;
- } workout_goal_remind_t;
- typedef struct
- {
- workout_id_e workout_id; // 运动类型
- workout_goal_settings_t goal; // 运动目标
- workout_remind_setting_t remind; // 运动提醒
- sports_status_e status; // 运动状态
- bool is_save; // 运动结束后是否保存运动记录
- bool gps_enable;
- uint16_t target_pace; // 目标配速
- } workout_state_t;
- typedef struct
- {
- workout_id_e workout_id; // 运动类型
- uint32_t start_time; // 开始时间
- uint32_t end_time; // 结束时间
- uint32_t sport_time; // 运动时长
- uint32_t paused_time;
- uint16_t active_durations; // 单位 秒
- uint32_t calories; // 单位 大卡
- uint32_t steps; // 重复次数:步数或次数, 或跳绳次数
- uint32_t distances; // 单位 米 //表示实际运动过程中的值,不包括暂停时的增量
- uint32_t smart_distances; // 智能陪跑距离
- workout_rt_hr_t hr;
- rt_speed_info_t speed; // 速度信息
- rt_pace_info_t pace; // 配速信息
- altitude_info_t altitude;
- rt_swim_info_t swim; // 游泳信息
- aem_gps_rt_info_t gps;
- uint8_t avg_step_frequency; // 平均步频
- uint8_t cur_step_frequency; // 当前步频
- uint8_t max_step_frequency; // 最大步频
- uint8_t avg_step_len; // 平均步幅
- uint8_t max_step_len; // 最大步幅
- bool gps_enable;
- } workout_rt_info_t;
- typedef struct
- {
- workout_id_e workout_id;
- uint32_t start_time;
- uint32_t duration;
- uint32_t distance;
- uint32_t ropes;
- uint8_t index; // 运动记录历史index
- } aem_wk_record_brief_t;
- typedef struct
- {
- uint32_t ai_distance;
- uint16_t ai_pace;
- bool enable;
- } ai_pacer_data_t;
- typedef struct
- {
- workout_id_e workout_id; // 运动ID
- uint32_t start_time; // 开始时间
- uint32_t end_time; // 结束时间
- workout_goal_settings_t goal; // 7Bytes
- ai_pacer_data_t ai_pacer; // 智能陪跑数据,7Bytes
- uint16_t duration; // 时长s
- uint16_t calorie; // 卡路里
- uint32_t distance; // 距离,单位米
- uint8_t hr_max; // 最高心率
- uint8_t hr_min; // 最低心率
- uint8_t hr_avg; // 平均心率
- uint16_t fast_pace; // 最快配速
- uint16_t avg_pace; // 平均配速
- uint32_t speed_max; // 最大速度,单位m
- uint32_t speed_avg; // 平均速度
- uint16_t steps; // 步数
- uint8_t avg_stride; // 平均步幅 cm
- uint8_t avg_stride_freq; // 平均步频,次/分
- int16_t altitude_avg; // 平均海拔
- int16_t altitude_max; // 最大海拔
- int16_t altitude_min; // 最小海拔
- uint16_t cumulative_rise; // 累计上升
- uint16_t cumulative_fall; // 累计下降
- uint16_t laps; // 趟数
- uint16_t ropes; // 跳绳次数
- uint8_t gps_enable;
- } workout_result_t;
- #pragma pack(pop)
- #define is_workout_goal_setting(a) ((GOAL_SETTING_DURAION <= (a)) && ((a) < GOAL_SETTING_MAX_UNKNOW))
- #define is_workout_remind_valid(a) ((WORKOUT_REMIND_BEGIN <= (a)) && ((a) < WORKOUT_REMIND_MAX_UNKNOW))
- #endif //_WORKOUT_IF_H_INCLUDED
|