123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529 |
- #ifndef _AEM_SENSOR_IF_H_
- #define _AEM_SENSOR_IF_H_
- #include <stddef.h>
- #include <stdbool.h>
- #include <stdint.h>
- #define KM_TO_MI 0.6213712 /* 公里转英里 */
- #define MI_TO_KM 1.609344 /* 英里转公里 */
- #define CONVERT_KM_MI_COEFFICIENT 0.00062137 // 注意此系数是米转英里
- #define DAY_ACTVITY_MAX_COUNT 100
- #define HOUR_ACTIVITY_MAX_COUNT 10
- #define DAY_HR_MAX_COUNT 200
- #pragma pack(push, 1)
- typedef enum
- {
- HISTORY_REPORT_REASON_OLNY_UPDATE_BUF,
- HISTORY_REPORT_REASON_TIME_CHANGE,
- HISTORY_REPORT_REASON_POWER_OFF
- } event_report_t;
- typedef struct
- {
- uint8_t enable;
- uint8_t start_hour;
- uint8_t start_min;
- uint8_t end_hour;
- uint8_t end_min;
- uint8_t interval_time_min;
- } aem_setting_auto_meas_t;
- typedef aem_setting_auto_meas_t aem_setting_hr_auto_meas_t;
- typedef aem_setting_auto_meas_t aem_setting_bp_auto_meas_t;
- typedef aem_setting_auto_meas_t aem_setting_spo2_auto_meas_t;
- typedef aem_setting_auto_meas_t aem_setting_btemp_auto_meas_t;
- typedef struct
- {
- uint32_t step;
- uint32_t calories;
- uint32_t distance;
- } aem_step_info_t;
- typedef struct
- {
- uint8_t hr;
- uint8_t signalquality;
- } aem_rt_hr_info_t;
- typedef struct
- {
- uint8_t spo2_value;
- uint8_t signalquality;
- } aem_rt_spo2_info_t;
- typedef struct
- {
- uint8_t stress;
- } aem_rt_stress_info_t;
- typedef struct
- {
- uint8_t enable;
- uint8_t hr_remind_h;
- uint8_t hr_remind_l;
- } aem_hr_remind_t;
- typedef enum
- {
- MAG_ACCURACY_UNRELIABLE,
- MAG_ACCURACY_LOW,
- MAG_ACCURACY_MEDIUM,
- MAG_ACCURACY_HIGH,
- } aem_mag_accuracy_e;
- typedef struct
- {
- float x;
- float y;
- float z;
- } aem_acc_raw_data_t;
- typedef enum
- {
- PPG_HR,
- PPG_SPO2,
- } ppg_type_e;
- typedef enum
- {
- AEM_PPG_OPEN,
- AEM_PPG_CLOSE,
- } ppg_op_e;
- typedef enum
- {
- SENSOR_START,
- SENSOR_PASUE,
- SENSOR_STOP,
- } sensor_op_e;
- typedef struct
- {
- ppg_type_e type;
- ppg_op_e op;
- } ppgsensor_op_t;
- typedef struct
- {
- uint8_t version;
- uint8_t enable;
- uint8_t siesta_enable;
- uint8_t start_hour;
- uint8_t start_min;
- uint8_t end_hour;
- uint8_t end_min;
- } aem_setting_sedentary_t;
- typedef enum
- {
- NORMAL_STATUS,
- CHARGING_STATUS,
- LOWER_STATUS,
- SHUTDOWN_STATUS,
- CHARGING_COMPLETE_STATUS,
- } charger_status_e;
- // ar alert type(長時間動作類型)(0 : 未知(unknown), 1 : 走路(walk), 2 : 跑步(run), 3 : 騎車(ride), 4 : 划船機(rowing), 5 : 橢圓機(elliptical)) "
- typedef enum
- {
- AUTO_RECOGNITION_UNKNOWN = 0,
- AUTO_RECOGNITION_WALKING,
- AUTO_RECOGNITION_RUNNING,
- AUTO_RECOGNITION_BIKING,
- AUTO_RECOGNITION_ROWING,
- AUTO_RECOGNITION_ELLIPTICALMACHINE,
- AUTO_RECOGNITION_NUM,
- } workout_auto_recognition_e;
- typedef struct
- {
- uint8_t level;
- charger_status_e charger_status;
- } aem_battery_info_t;
- #define AEM_SLEEP_STAGE_DATA_MAX_CNT (200)
- typedef struct
- {
- // 入睡时间
- uint16_t fall_year;
- uint8_t fall_month;
- uint8_t fall_day;
- uint8_t fall_hour;
- uint8_t fall_minute;
- // 起床时间
- uint16_t getup_year;
- uint8_t getup_month;
- uint8_t getup_day;
- uint8_t getup_hour;
- uint8_t getup_minute;
- uint16_t total_time_mins; // 睡眠总时长
- uint16_t wake_mins; // 总清醒时长, 单位:分
- uint16_t doze_mins; // 总浅眠时长
- uint16_t rem_mins; // 总REM时长
- uint16_t deep_mins; // 总深眠时长
- uint8_t wake_count; // 清醒次数
- uint8_t doze_count; // 浅眠次数
- uint8_t rem_count; // 眼动次数
- uint8_t deep_count; // 深眠次数
- uint8_t sleep_score; // 睡眠得分
- } aem_sleep_summary_info_t;
- typedef enum
- {
- AEM_SLEEP_STATE_AWAKE = 1,
- AEM_SLEEP_STATE_REM,
- AEM_SLEEP_STATE_DOZE,
- AEM_SLEEP_STATE_DEEP,
- } aem_sleep_state_e;
- typedef struct
- {
- uint8_t stage; // 阶段 1:醒着 2:浅睡 3:深睡 4:快速眼动
- uint8_t duration; // 持续时长
- } aem_sleep_stage_t;
- typedef struct
- {
- uint16_t item_count;
- aem_sleep_stage_t data[AEM_SLEEP_STAGE_DATA_MAX_CNT];
- } aem_sleep_stage_data_t;
- typedef struct
- {
- aem_sleep_summary_info_t summary;
- aem_sleep_stage_data_t stage;
- } aem_rt_sleep_info_t;
- #define HEALTH_STRESS_MAX 100
- #define PRESS_MAX_LEVEL 4
- typedef enum
- {
- AEM_TWIST_SCREEN_OFF,
- AEM_TWIST_SCREEN_ON,
- AEM_TWIST_NO_ACTION,
- AEM_TWIST_MAX,
- } twist_evt_t;
- typedef enum
- {
- AEM_SLEEP_DEEP,
- AEM_SLEEP_RESTLESS,
- AEM_SLEEP_AWARE,
- AEM_SLEEP_INVIALD,
- AEM_SLEEP_MAX,
- } sleep_state_e;
- typedef enum
- {
- HANDS_WAKEUP_OFF,
- HANDS_WAKEUP_ON,
- } hands_wakeup_type_t;
- typedef struct
- {
- hands_wakeup_type_t status;
- } aem_hands_wakeup_t;
- typedef struct
- {
- uint8_t active_kcal;
- uint8_t resting_kcal;
- } activity_kcal_t;
- typedef struct
- {
- uint8_t activity_type;
- uint8_t time_minute;
- } activity_intensity_t;
- typedef struct
- {
- uint32_t timestamp;
- uint32_t steps;
- uint32_t calories;
- uint32_t stand;
- uint32_t times;
- uint32_t distance; // 距离m
- } aem_rt_activity_info_t;
- typedef struct
- {
- uint16_t steps;
- uint16_t calories;
- uint16_t distance;
- } activity_data_item_t;
- typedef enum
- {
- ACTIVITY_NO_REMIND = 0,
- ACTIVITY_REMIND_CALORIES,
- ACTIVITY_REMIND_STEP,
- ACTIVITY_REMIND_TIMES,
- } activity_remind_type_e;
- typedef struct
- {
- uint16_t steps;
- uint16_t calories;
- uint16_t times;
- } aem_activity_goal_t;
- typedef struct
- {
- uint16_t year;
- uint8_t mon;
- uint8_t day;
- aem_activity_goal_t goal;
- bool is_step_completed;
- bool is_calories_completed;
- bool is_times_completed;
- } activity_remind_state_t;
- typedef struct
- {
- activity_remind_type_e remind_type;
- uint8_t active_flag;
- uint32_t value;
- } activity_remind_t;
- typedef struct
- {
- uint16_t steps;
- uint16_t distances;
- uint16_t total_kcal;
- uint16_t dur_secs;
- } act_every_xmin_t;
- typedef struct
- {
- uint8_t current_resting_hr;
- uint8_t yesterday_resting_hr;
- } hr_resting_result_t;
- typedef struct
- {
- uint8_t cur_heart_rate;
- uint8_t max_heart_rate;
- uint8_t min_heart_rate;
- uint8_t avg_heart_rate;
- } workout_rt_hr_t;
- typedef struct
- {
- uint16_t cur_speed;
- uint16_t avg_speed;
- uint16_t max_speed;
- } rt_speed_info_t;
- typedef struct
- {
- uint16_t cur_km_pace; // 当前公里配速 s/km
- uint16_t max_km_pace; // 最快配速s/km,值最小公里配速最快
- uint16_t avg_km_pace; // 平均配速s/km
- } rt_pace_info_t;
- typedef enum
- {
- POSTURE_MEDLEY = 0, // 混合泳
- POSTURE_FREESTYLE, // 自由泳
- POSTURE_BREASTSTROKE, // 蛙泳
- POSTURE_BACKSTROKE, // 其他(仰泳)
- POSTURE_BUTTERFLYSTROKE, // 其他(蝶泳)
- POSTURE_OTHERS, // 其他
- POSTURE_ALL,
- } swim_posture_e;
- // 运动游泳数据
- typedef struct
- {
- uint8_t laps; // 趟数
- uint8_t posture; // 泳姿
- uint16_t distance; // 距离
- uint16_t strokes; // 划水次数
- uint16_t swim_time; // 游泳时长
- uint16_t swolf; // 50米的游泳时长+50米的划水次数
- uint32_t calories; // 卡路里
- uint16_t pace; // 配速 s/100m
- uint16_t ave_pace; // 平均配速 s/100m
- uint8_t frequency; // 频率
- } workout_swim_info_t;
- typedef struct
- {
- /* uint32_t strokes_frq; // 划水频率
- uint8_t main_posture; // 主泳姿
- uint8_t laps; // 趟数
- uint16_t last_swolf; // 最近一趟swolf
- uint16_t avg_swolf; // 平均
- uint16_t avg_pace; // 平均
- uint16_t strokes; // 划水次数
- uint16_t total_rest_time; // 总休息时间 */
- float total_distance; // meters
- float total_calories; // Kcal
- float strokes;
- float laps;
- float swim_time;
- float stroke_freq;
- float is_pause;
- } rt_swim_info_t;
- typedef struct
- {
- int16_t cur_altitude;
- int16_t avg_altitude;
- int16_t max_altitude;
- int16_t min_altitude;
- uint16_t cumulative_rise; // 累计上升 m
- uint16_t cumulative_fall; // 累计下降 m
- } altitude_info_t;
- typedef struct
- {
- int16_t cur_altitude;
- int16_t avg_altitude;
- int16_t max_altitude;
- int16_t min_altitude;
- } wk_altitude_info_t;
- typedef struct
- {
- float altitude;
- } rt_altitude_t;
- typedef struct
- {
- float orientation;
- } aem_rt_magnetism_info_t;
- typedef struct
- {
- float altitude;
- uint32_t air_pressure;
- } aem_rt_barometer_info_t;
- typedef enum
- {
- SPORT_IDLE = 0,
- SPORT_START,
- SPORT_PAUSE,
- SPORT_CONTINUE,
- SPORT_STOP,
- SPORT_MAX_UNKNOW,
- } sports_status_e;
- typedef struct
- {
- uint8_t ver;
- uint8_t is_on;
- uint8_t warn_value;
- } sports_hr_warning_t;
- typedef struct
- {
- uint32_t steps;
- uint32_t calories;
- uint32_t distance; // 距离 单位m
- uint32_t times; // 当天运动时长,s
- } activity_rt_info_t;
- typedef struct
- {
- uint32_t steps;
- uint32_t durations;
- uint32_t total_kcal;
- uint32_t distances;
- } activity_data_t;
- typedef enum
- {
- GESTURE_NONE = 0,
- GESTURE_WRIST_RAISE, // 抬腕
- GESTURE_PALMING, // 翻腕
- GESTURE_COVER_HAND, // TP捂手灭屏
- } gesture_status_type_e;
- typedef struct
- {
- uint32_t pressure_value;
- int16_t altitude_value;
- } aem_baro_data_t;
- typedef struct
- {
- double lat;
- double lon;
- bool valid;
- } aem_gps_info_t;
- #pragma pack(pop)
- typedef struct
- {
- uint32_t sleeping_hr_cnt;
- uint32_t sleeping_hr_sum;
- uint8_t last_sleeping_hr;
- } aem_hr_sleeping_t;
- #define MIN_HR_NUM 5
- typedef struct
- {
- uint32_t resting_hr_cnt;
- uint32_t resting_hr_sum;
- uint8_t avg_hr_f;
- uint8_t min_heart_rate[MIN_HR_NUM];
- hr_resting_result_t hr_strategy_resting_hr_result;
- aem_hr_sleeping_t hr_strategy_sleeping_hr_result;
- } hr_algo_resting_t;
- typedef enum
- {
- WORKOUT_GPS_STATE_CLOSED = 0,
- WORKOUT_GPS_STATE_SEARCHING,
- WORKOUT_GPS_STATE_LOCATE,
- WORKOUT_GPS_STATE_FAIL,
- WORKOUT_GPS_STATE_ERROR,
- WORKOUT_GPS_STATE_AGPS,
- WORKOUT_GPS_STATE_MOVE_TO_OPEN,
- WORKOUT_GPS_STATE_MAX
- } workout_gps_state_e;
- typedef enum
- {
- WORKOUT_GPS_SIGNAL_NONE = 0,
- WORKOUT_GPS_SIGNAL_LEVEL_1,
- WORKOUT_GPS_SIGNAL_LEVEL_2,
- WORKOUT_GPS_SIGNAL_LEVEL_3,
- WORKOUT_GPS_SIGNAL_LEVEL_4,
- WORKOUT_GPS_SIGNAL_LEVEL_5,
- WORKOUT_GPS_SIGNAL_LEVEL_MAX,
- } workout_gps_signal_e;
- typedef struct
- {
- aem_gps_info_t info;
- workout_gps_signal_e signal;
- workout_gps_state_e state;
- } aem_gps_rt_info_t;
- typedef struct
- {
- workout_gps_state_e state;
- uint8_t signal;
- } workout_gps_state_info_t;
- #define is_sports_status_valid(a) ((SPORT_IDLE <= (a)) && ((a) < SPORT_MAX_UNKNOW))
- #define is_workout_type_valid(a) ((WORKOUT_ID_BEGIN <= (a)) && ((a) < WORKOUT_ID_MAX))
- #endif
|