636 lines
36 KiB
C
636 lines
36 KiB
C
#ifndef _FTMS_DEFINE_H_
|
|
#define _FTMS_DEFINE_H_
|
|
|
|
/** @defgroup Fitness Machine Service define file
|
|
* @brief Fitness Machine Service define file
|
|
* @{
|
|
*/
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include "ftms_config.h"
|
|
|
|
/*============================================================================*
|
|
* Macros
|
|
*============================================================================*/
|
|
/** @defgroup FTMS_Common_Exported_Macros FTMS Common Exported Macros
|
|
* @{
|
|
*/
|
|
|
|
/** @details
|
|
*
|
|
*/
|
|
/** @brief service related UUIDs. */
|
|
|
|
#define GATT_UUID_FITNESS_MACHINE 0x1826
|
|
#define GATT_UUID_FITNESS_MACHINE_FEATURE 0x2ACC
|
|
#define GATT_UUID_TREADMILL_DATA 0x2ACD
|
|
#define GATT_UUID_CROSS_TRAINER_DATA 0x2ACE
|
|
#define GATT_UUID_STEP_CLIMBER_DATA 0x2ACF
|
|
#define GATT_UUID_STAIR_CLIMBER_DATA 0x2AD0
|
|
#define GATT_UUID_ROWER_DATA 0x2AD1
|
|
#define GATT_UUID_INDOOR_BIKE_DATA 0x2AD2
|
|
#define GATT_UUID_TRAINING_STATUS 0x2AD3
|
|
#define GATT_UUID_SUPPORT_SPEED_RANGE 0x2AD4
|
|
#define GATT_UUID_SUPPORT_INCLINATION_RANGE 0x2AD5
|
|
#define GATT_UUID_SUPPORT_RESISTANCE_LEVEL_RANGE 0x2AD6
|
|
#define GATT_UUID_SUPPORT_HEART_RATE_RANGE 0x2AD7
|
|
#define GATT_UUID_SUPPORT_POWER_RANGE 0x2AD8
|
|
#define GATT_UUID_FTMS_CONTROL_POINT 0x2AD9
|
|
#define GATT_UUID_FITNESS_MACHINE_STATUS 0x2ADA
|
|
|
|
/** @defgroup FTMS_Control_Point FTMS Control Point
|
|
* @brief Control Point
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup FTMS_Control_Point_OpCodes FTMS Control Point OpCodes
|
|
* @brief Control Point OpCodes
|
|
* @{
|
|
*/
|
|
|
|
#define FTMS_CP_OPCODE_REQUEST_CONTROL 0x00 /* Request Control */
|
|
#define FTMS_CP_OPCODE_RESET 0x01 /* Reset */
|
|
#define FTMS_CP_OPCODE_SET_TGT_SPEED 0x02 /* Set Target Speed */
|
|
#define FTMS_CP_OPCODE_SET_TGT_INCLINATION 0x03 /* Set Target Inclination */
|
|
#define FTMS_CP_OPCODE_SET_TGT_RESISTANCE_LEVEL 0x04 /* Set Target Resistance Level */
|
|
#define FTMS_CP_OPCODE_SET_TGT_POWER 0x05 /* Set Target Power */
|
|
#define FTMS_CP_OPCODE_SET_TGT_HEART_RATE 0x06 /* Set Target Heart Rate */
|
|
#define FTMS_CP_OPCODE_START_RESUME 0x07 /* Start or Resume */
|
|
#define FTMS_CP_OPCODE_STOP_PAUSE 0x08 /* Stop or Pause */
|
|
#define FTMS_CP_OPCODE_SET_TGT_EXPEND_ENERGY 0x09 /* Set Targeted Expended Energy */
|
|
#define FTMS_CP_OPCODE_SET_TGT_STEP_NUM 0x0A /* Set Targeted Number of Steps */
|
|
#define FTMS_CP_OPCODE_SET_TGT_STRIDE_NUM 0x0B /* Set Targeted Number of Strides */
|
|
#define FTMS_CP_OPCODE_SET_TGT_DISTANCE 0x0C /* Set Targeted Distance */
|
|
#define FTMS_CP_OPCODE_SET_TGT_TRAINING_TIME 0x0D /* Set Targeted Training Time */
|
|
#define FTMS_CP_OPCODE_SET_TGT_TWO_HR_ZONES_TIME 0x0E /* Set Targeted Time in Two Heart Rate Zones */
|
|
#define FTMS_CP_OPCODE_SET_TGT_THREE_HR_ZONES_TIME 0x0F /* Set Targeted Time in Three Heart Rate Zones */
|
|
#define FTMS_CP_OPCODE_SET_TGT_FIVE_HR_ZONES_TIME 0x10 /* Set Targeted Time in Five Heart Rate Zones */
|
|
#define FTMS_CP_OPCODE_SET_INDOOR_BIKE_SIMULATION_PARAM 0x11 /* Set Indoor Bike Simulation Parameters */
|
|
#define FTMS_CP_OPCODE_SET_WHEEL_CIRCUMFERENCE 0x12 /* Set Wheel Circumference */
|
|
#define FTMS_CP_OPCODE_SPIN_DOWN_CTRL 0x13 /* Spin Down Control */
|
|
#define FTMS_CP_OPCODE_SET_TGT_CADENCE 0x14 /* Set Targeted Cadence */
|
|
#define FTMS_CP_OPCODE_RESPONSE_CODE 0x80 /* Response Code */
|
|
#define FTMS_CP_OPCODE_RESERVED 0xFF /* Reserved for Future Use */
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Control_Point_Response_Codes FTMS Control Point Response Codes
|
|
* @brief Control Point Response Codes
|
|
* @{
|
|
*/
|
|
|
|
#define FTMS_CP_RSPCODE_RESERVED 0x00
|
|
#define FTMS_CP_RSPCODE_SUCCESS 0x01
|
|
#define FTMS_CP_RSPCODE_OPCODE_NOT_SUPPORT 0x02
|
|
#define FTMS_CP_RSPCODE_INVALID_PARAMETER 0x03
|
|
#define FTMS_CP_RSPCODE_OPERATION_FAILED 0x04
|
|
#define FTMS_CP_RSPCODE_CONTROL_NOT_PERMITTED 0x05
|
|
|
|
/** @} */
|
|
|
|
///@cond
|
|
/** @brief Judge FTMS Control Point operation is available or not. */
|
|
#define FTMS_CTL_PNT_OPERATE_ACTIVE(x) \
|
|
( (x == FTMS_CP_OPCODE_REQUEST_CONTROL) || \
|
|
(x == FTMS_CP_OPCODE_RESET) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_SPEED) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_INCLINATION) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_RESISTANCE_LEVEL) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_POWER) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_HEART_RATE) || \
|
|
(x == FTMS_CP_OPCODE_START_RESUME) || \
|
|
(x == FTMS_CP_OPCODE_STOP_PAUSE) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_EXPEND_ENERGY) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_STEP_NUM) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_STRIDE_NUM) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_DISTANCE) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_TRAINING_TIME) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_TWO_HR_ZONES_TIME) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_THREE_HR_ZONES_TIME) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_FIVE_HR_ZONES_TIME) || \
|
|
(x == FTMS_CP_OPCODE_SET_INDOOR_BIKE_SIMULATION_PARAM) || \
|
|
(x == FTMS_CP_OPCODE_SET_TGT_CADENCE) || \
|
|
(x == FTMS_CP_OPCODE_RESPONSE_CODE) )
|
|
///@endcond
|
|
|
|
/** @defgroup FTMS_Status_OpCodes FTMS Status OpCodes
|
|
* @brief Status OpCodes
|
|
* @{
|
|
*/
|
|
|
|
#define FTMS_STATUS_OP_RESERVED 0x00
|
|
#define FTMS_STATUS_OP_RESET 0x01 /* Reset */
|
|
#define FTMS_STATUS_OP_STOP_PAUSE_BY_USER 0x02 /* Fitness Machine Stopped or Paused by the User */
|
|
#define FTMS_STATUS_OP_STOP_BY_SAFETY_KEY 0x03 /* Fitness Machine Stopped by Safety Key */
|
|
#define FTMS_STATUS_OP_START_RESUME_BY_USER 0x04 /* Fitness Machine Started or Resumed by the User */
|
|
#define FTMS_STATUS_OP_TGT_SPEED_CHANGE 0x05 /* Target Speed Changed */
|
|
#define FTMS_STATUS_OP_TGT_INCLINE_CHANGE 0x06 /* Target Incline Changed */
|
|
#define FTMS_STATUS_OP_TGT_RESISTANCE_LEVEL_CHANGE 0x07 /* Target Resistance Level Changed */
|
|
#define FTMS_STATUS_OP_TGT_POWER_CHANGE 0x08 /* Target Power Changed */
|
|
#define FTMS_STATUS_OP_TGT_HR_CHANGE 0x09 /* Target Heart Rate Changed */
|
|
#define FTMS_STATUS_OP_TGT_EXPEND_ENERGY_CHANGE 0x0A /* Targeted Expended Energy Changed */
|
|
#define FTMS_STATUS_OP_TGT_STEP_NUM_CHANGE 0x0B /* Targeted Number of Steps Changed */
|
|
#define FTMS_STATUS_OP_TGT_STRIDE_NUM_CHANGE 0x0C /* Targeted Number of Strides Changed */
|
|
#define FTMS_STATUS_OP_TGT_DISTANCE_CHANGE 0x0D /* Targeted Distance Changed */
|
|
#define FTMS_STATUS_OP_TGT_TRAIN_TIME_CHANGE 0x0E /* Targeted Training Time Changed */
|
|
#define FTMS_STATUS_OP_TWO_HR_ZONE_TIME_CHANGE 0x0F /* Targeted Time in Two Heart Rate Zones Changed */
|
|
#define FTMS_STATUS_OP_THREE_HR_ZONE_TIME_CHANGE 0x10 /* Targeted Time in Three Heart Rate Zones Changed */
|
|
#define FTMS_STATUS_OP_FIVE_HR_ZONE_TIME_CHANGE 0x11 /* Targeted Time in Five Heart Rate Zones Changed */
|
|
#define FTMS_STATUS_OP_IB_SIMULATE_PARAM_CHANGE 0x12 /* Indoor Bike Simulation Parameters Changed */
|
|
#define FTMS_STATUS_OP_WHEEL_CIRCUMFERENCE_CHANGE 0x13 /* Wheel Circumference Changed */
|
|
#define FTMS_STATUS_OP_SPIN_DOWN_STATUS 0x14 /* Spin Down Status */
|
|
#define FTMS_STATUS_OP_TGT_CADENCE_CHANGE 0x15 /* Targeted Cadence Changed */
|
|
#define FTMS_STATUS_OP_CONTROL_PERMISSION_LOST 0xFF /* Control Permission Lost */
|
|
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Training_Status_Flags FTMS Training Status Flags
|
|
* @brief Training Status Flags
|
|
* @{
|
|
*/
|
|
|
|
#define FTMS_TS_STRING_PRESENT_MASK (1) /* Training Status String present */
|
|
#define FTMS_TS_EXTENDED_STRING_PRESENT_MASK (1<<1) /* Extended String present */
|
|
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Training_Status_Values FTMS Training Status Values
|
|
* @brief Training Status Values
|
|
* @{
|
|
*/
|
|
|
|
#define FTMS_TRAIN_STATUS_OTHER 0x00 /* Other */
|
|
#define FTMS_TRAIN_STATUS_IDLE 0x01 /* Idle */
|
|
#define FTMS_TRAIN_STATUS_WARMING_UP 0x02 /* Warming Up */
|
|
#define FTMS_TRAIN_STATUS_LOW_INTENSITY_INTERVAL 0x03 /* Low Intensity Interval */
|
|
#define FTMS_TRAIN_STATUS_HIGH_INTENSITY_INTERVAL 0x04 /* High Intensity Interval */
|
|
#define FTMS_TRAIN_STATUS_RECOVERY_INTERVAL 0x05 /* Recovery Interval */
|
|
#define FTMS_TRAIN_STATUS_ISOMETRIC 0x06 /* Isometric */
|
|
#define FTMS_TRAIN_STATUS_HEART_RATE_CTRL 0x07 /* Heart Rate Control */
|
|
#define FTMS_TRAIN_STATUS_FITNESS_TEST 0x08 /* Fitness Test */
|
|
#define FTMS_TRAIN_STATUS_SPEED_OUT_CTRL_REGION_LOW 0x09 /* Speed Outside of Control Region - Low */
|
|
#define FTMS_TRAIN_STATUS_SPEED_OUT_CTRL_REGION_HIGH 0x0A /* Speed Outside of Control Region - High */
|
|
#define FTMS_TRAIN_STATUS_COOL_DOWN 0x0B /* Cool Down */
|
|
#define FTMS_TRAIN_STATUS_WATT_CTRL 0x0C /* Watt Control */
|
|
#define FTMS_TRAIN_STATUS_MANUAL_MODE 0x0D /* Manual Mode (Quick Start) */
|
|
#define FTMS_TRAIN_STATUS_PRE_WORKOUT 0x0E /* Pre-Workout */
|
|
#define FTMS_TRAIN_STATUS_POST_WORKOUT 0x0F /* Post-Workout */
|
|
#define FTMS_TRAIN_STATUS_RESERVED 0xFF
|
|
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Feature_Field_Flag_Bit_Mask FTMS Feature Field Flag Bit Mask
|
|
* @brief FTMS feature field 'Flags' bit mask.
|
|
* @{
|
|
*/
|
|
|
|
#define FTMS_FEAT_AVERAGE_SPEED_SPT_MASK (1) /* Average Speed Supported */
|
|
#define FTMS_FEAT_CADENCE_SPT_MASK (1<<1) /* Cadence Supported */
|
|
#define FTMS_FEAT_TOTAL_DISTANCE_SPT_MASK (1<<2) /* Total Distance Supported */
|
|
#define FTMS_FEAT_INCLINATION_SPT_MASK (1<<3) /* Inclination Supported */
|
|
#define FTMS_FEAT_ELEVATION_GAIN_SPT_MASK (1<<4) /* Elevation Gain Supported */
|
|
#define FTMS_FEAT_PACE_SPT_MASK (1<<5) /* Pace Supported */
|
|
#define FTMS_FEAT_STEP_COUNT_SPT_MASK (1<<6) /* Step Count Supported */
|
|
#define FTMS_FEAT_RESISTANCE_LEVEL_SPT_MASK (1<<7) /* Resistance Level Supported */
|
|
#define FTMS_FEAT_STRIDE_COUNT_SPT_MASK (1<<8) /* Stride Count Supported */
|
|
#define FTMS_FEAT_EXPENDED_ENERGY_SPT_MASK (1<<9) /* Expended Energy Supported */
|
|
#define FTMS_FEAT_HR_MEASUREMENT_SPT_MASK (1<<10) /* Heart Rate Measurement Supported */
|
|
#define FTMS_FEAT_METABOLIC_EQUIVALENT_SPT_MASK (1<<11) /* Metabolic Equivalent Supported */
|
|
#define FTMS_FEAT_ELAPSED_TIME_SPT_MASK (1<<12) /* Elapsed Time Supported */
|
|
#define FTMS_FEAT_REMAIN_TIME_SPT_MASK (1<<13) /* Remaining Time Supported */
|
|
#define FTMS_FEAT_POWER_MEASUREMENT_SPT_MASK (1<<14) /* Power Measurement Supported */
|
|
#define FTMS_FEAT_BELT_FORCE_POWER_OUTPUT_SPT_MASK (1<<15) /* Force on Belt and Power Output Supported */
|
|
#define FTMS_FEAT_USER_DATA_RETENTION_SPT_MASK (1<<16) /* User Data Retention Supported */
|
|
#define FTMS_FEAT_ALL_FEATURE_SUPPORTED (0x1FFFF) /* FTMS Support all features */
|
|
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Target_Setting_Field_Flag_Bit_Mask FTMS Target Setting Field Flag Bit Mask
|
|
* @brief FTMS target setting field 'Flags' bit mask.
|
|
* @{
|
|
*/
|
|
|
|
#define FTMS_TGT_SET_SPEED_SPT_MASK (1) /* Speed Target Setting Supported */
|
|
#define FTMS_TGT_SET_INCLINATION_SPT_MASK (1<<1) /* Inclination Target Setting Supported */
|
|
#define FTMS_TGT_SET_RESISTANCE_SPT_MASK (1<<2) /* Resistance Target Setting Supported */
|
|
#define FTMS_TGT_SET_POWER_SPT_MASK (1<<3) /* Power Target Setting Supported */
|
|
#define FTMS_TGT_SET_HR_SPT_MASK (1<<4) /* Heart Rate Target Setting Supported */
|
|
#define FTMS_TGT_EXPENDED_ENERGY_CONFIG_SPT_MASK (1<<5) /* Targeted Expended Energy Configuration Supported */
|
|
#define FTMS_TGT_STEP_NUM_CONFIG_SPT_MASK (1<<6) /* Targeted Step Number Configuration Supported */
|
|
#define FTMS_TGT_STRIDE_NUM_CONFIG_SPT_MASK (1<<7) /* Targeted Stride Number Configuration Supported */
|
|
#define FTMS_TGT_DISTANCE_CONFIG_SPT_MASK (1<<8) /* Targeted Distance Configuration Supported */
|
|
#define FTMS_TGT_TRAINING_TIME_CONFIG_SPT_MASK (1<<9) /* Targeted Training Time Configuration Supported */
|
|
#define FTMS_TGT_TWO_HR_ZONES_TIME_CONFIG_SPT_MASK (1<<10) /* Targeted Time in Two Heart Rate Zones Configuration Supported */
|
|
#define FTMS_TGT_THREE_HR_ZONES_CONFIG_SPT_MASK (1<<11) /* Targeted Time in Three Heart Rate Zones Configuration Supported */
|
|
#define FTMS_TGT_FIVE_HR_ZONES_CONFIG_SPT_MASK (1<<12) /* Targeted Time in Five Heart Rate Zones Configuration Supported */
|
|
#define FTMS_INDOOR_BIKE_SIMULATION_PARAM_SPT_MASK (1<<13) /* Indoor Bike Simulation Parameters Supported */
|
|
#define FTMS_WHEEL_CIRCUMFERENCE_CONFIG_SPT_MASK (1<<14) /* Wheel Circumference Configuration Supported */
|
|
#define FTMS_SPIN_DOWN_CTL_SPT_MASK (1<<15) /* Spin Down Control Supported */
|
|
#define FTMS_TGT_CADENCE_CONFIG_SPT_MASK (1<<16) /* Targeted Cadence Configuration Supported */
|
|
#define FTMS_TGT_SET_ALL_FEATURE_SUPPORTED (0x1FFFF) /* FTMS Support all features */
|
|
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Treadmill_Data_Flag_Bit_Mask FTMS Treadmill Data Flag Bit Mask
|
|
* @brief FTMS treadmill data 'Flags' bit mask.
|
|
* @{
|
|
*/
|
|
#if FTMS_CHAR_TREADMILL_DATA_SUPPORT
|
|
#define FTMS_TM_MORE_DATA_MASK (1) /* More Data */
|
|
#define FTMS_TM_AVE_SPEED_PRESENT_MASK (1<<1) /* Average Speed Present */
|
|
#define FTMS_TM_TOTAL_DISTANCE_PRESENT_MASK (1<<2) /* Total Distance Present */
|
|
#define FTMS_TM_INCLINATION_RAMP_ANGLE_SET_PRESENT_MASK (1<<3) /* Inclination and Ramp Angle Setting Present */
|
|
#define FTMS_TM_ELEVATION_GAIN_PRESENT_MASK (1<<4) /* Elevation Gain Present */
|
|
#define FTMS_TM_INSTANTANEOUS_PACE_PRESENT_MASK (1<<5) /* Instantaneous Pace Present */
|
|
#define FTMS_TM_AVERAGE_PACE_PRESENT_MASK (1<<6) /* Average Pace Present */
|
|
#define FTMS_TM_EXPENDED_ENERGY_PRESENT_MASK (1<<7) /* Expended Energy Present */
|
|
#define FTMS_TM_HEART_RATE_PRESENT_MASK (1<<8) /* Heart Rate Present */
|
|
#define FTMS_TM_METABOLIC_EQUIVALENT_PRESENT_MASK (1<<9) /* Metabolic Equivalent Present */
|
|
#define FTMS_TM_ELAPSED_TIME_PRESENT_MASK (1<<10) /* Elapsed Time Present */
|
|
#define FTMS_TM_REMAIN_TIME_PRESENT_MASK (1<<11) /* Remaining Time Present */
|
|
#define FTMS_TM_BELT_FORCE_POWER_OUTPUT_PRESENT_MASK (1<<12) /* Force on Belt and Power Output Present */
|
|
#define FTMS_TM_SET_ALL_FEATURE_SUPPORT (0x1FFE) /* Support all treadmill data features */
|
|
#define FTMS_TM_NO_MORE_DATA_PRESENT (0xFFFE)
|
|
#endif
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Step_Climber_Data_Flag_Bit_Mask FTMS Step Climber Data Flag Bit Mask
|
|
* @brief FTMS step climber data 'Flags' bit mask.
|
|
* @{
|
|
*/
|
|
#if FTMS_CHAR_STEP_CLIMBER_DATA_SUPPORT
|
|
#define FTMS_STEPC_MORE_DATA_MASK (1) /* More Data */
|
|
#define FTMS_STEPC_STEP_PER_MINUTE_PRESENT_MASK (1<<1) /* Step per Minute present */
|
|
#define FTMS_STEPC_AVE_STEP_RATE_PRESENT_MASK (1<<2) /* Average Step Rate Present */
|
|
#define FTMS_STEPC_POSITIVE_ELEVATION_GAIN_PRESENT_MASK (1<<3) /* Positive Elevation Gain Present */
|
|
#define FTMS_STEPC_EXPEND_ENERGY_PRESENT_MASK (1<<4) /* Expended Energy Present */
|
|
#define FTMS_STEPC_HEART_RATE_PRESENT_MASK (1<<5) /* Heart Rate Present */
|
|
#define FTMS_STEPC_METABOLIC_EQUIVALENT_PRESENT_MASK (1<<6) /* Metabolic Equivalent Present */
|
|
#define FTMS_STEPC_ELAPSED_TIME_PRESENT_MASK (1<<7) /* Elapsed Time Present */
|
|
#define FTMS_STEPC_REMAIN_TIME_PRESENT_MASK (1<<8) /* Remaining Time Present */
|
|
#define FTMS_STEPC_SET_ALL_FEATURE_SUPPORT (0x01FE) /* Support all step climber data features */
|
|
#define FTMS_STEPC_NO_MORE_DATA_PRESENT (0xFFFE)
|
|
#endif
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Rower_Data_Flag_Bit_Mask FTMS Rower Data Flag Bit Mask
|
|
* @brief FTMS rower data 'Flags' bit mask.
|
|
* @{
|
|
*/
|
|
#if FTMS_CHAR_ROWER_DATA_SUPPORT
|
|
#define FTMS_RW_MORE_DATA_MASK (1) /* More Data */
|
|
#define FTMS_RW_AVE_STROKE_RATE_PRESENT_MASK (1<<1) /* Average Stroke Rate present */
|
|
#define FTMS_RW_TOTAL_DISTANCE_PRESENT_MASK (1<<2) /* Total Distance Present */
|
|
#define FTMS_RW_INSTANTANEOUS_PACE_PRESENT_MASK (1<<3) /* Instantaneous Pace Present */
|
|
#define FTMS_RW_AVE_PACE_PRESENT_MASK (1<<4) /* Average Pace Present */
|
|
#define FTMS_RW_INSTANTANEOUS_POWER_PRESENT_MASK (1<<5) /* Instantaneous Power Present */
|
|
#define FTMS_RW_AVE_POWER_PRESENT_MASK (1<<6) /* Average Power Present */
|
|
#define FTMS_RW_RESISTANCE_LEVEL_MASK (1<<7) /* Resistance Level */
|
|
#define FTMS_RW_EXPEND_ENERGY_PRESENT_MASK (1<<8) /* Expended Energy Present */
|
|
#define FTMS_RW_HEART_RATE_PRESENT_MASK (1<<9) /* Heart Rate Present */
|
|
#define FTMS_RW_METABOLIC_EQUIVALENT_PRESENT_MASK (1<<10) /* Metabolic Equivalent Present */
|
|
#define FTMS_RW_ELAPSED_TIME_PRESENT_MASK (1<<11) /* Elapsed Time Present */
|
|
#define FTMS_RW_REMAIN_TIME_PRESENT_MASK (1<<12) /* Remaining Time Present */
|
|
#define FTMS_RW_SET_ALL_FEATURE_SUPPORT (0x1FFE) /* Support all rower data features */
|
|
#define FTMS_RW_NO_MORE_DATA_PRESENT (0xFFFE)
|
|
#endif
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Indoor_Bike_Data_Flag_Bit_Mask FTMS Indoor Bike Data Flag Bit Mask
|
|
* @brief FTMS indoor bike data 'Flags' bit mask.
|
|
* @{
|
|
*/
|
|
#if FTMS_CHAR_INDOOR_BIKE_DATA_SUPPORT
|
|
#define FTMS_IB_MORE_DATA_MASK (1) /* More Data */
|
|
#define FTMS_IB_AVE_SPEED_PRESENT_MASK (1<<1) /* Average Speed present */
|
|
#define FTMS_IB_INSTANTANEOUS_CADENCE_MASK (1<<2) /* Instantaneous Cadence */
|
|
#define FTMS_IB_AVE_CADENCE_PRESENT_MASK (1<<3) /* Average Cadence present */
|
|
#define FTMS_IB_TOTAL_DISTANCE_PRESENT_MASK (1<<4) /* Total Distance Present */
|
|
#define FTMS_IB_RESISTANCE_LEVEL_PRESENT_MASK (1<<5) /* Resistance Level Present */
|
|
#define FTMS_IB_INSTANTANEOUS_POWER_PRESENT_MASK (1<<6) /* Instantaneous Power Present */
|
|
#define FTMS_IB_AVE_POWER_PRESENT_MASK (1<<7) /* Average Power Present */
|
|
#define FTMS_IB_EXPEND_ENERGY_PRESENT_MASK (1<<8) /* Expended Energy Present */
|
|
#define FTMS_IB_HEART_RATE_PRESENT_MASK (1<<9) /* Heart Rate Present */
|
|
#define FTMS_IB_METABOLIC_EQUIVALENT_PRESENT_MASK (1<<10) /* Metabolic Equivalent Present */
|
|
#define FTMS_IB_ELAPSED_TIME_PRESENT_MASK (1<<11) /* Elapsed Time Present */
|
|
#define FTMS_IB_REMAIN_TIME_PRESENT_MASK (1<<12) /* Remaining Time Present */
|
|
#define FTMS_IB_SET_ALL_FEATURE_SUPPORT (0x1FFE) /* Support all indoor bike data features */
|
|
#define FTMS_IB_NO_MORE_DATA_PRESENT (0xFFFE)
|
|
#endif
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Cross_Trainer_Data_Flag_Bit_Mask FTMS Cross Trainer Data Flag Bit Mask
|
|
* @brief FTMS cross trainer data 'Flags' bit mask.
|
|
* @{
|
|
*/
|
|
#if FTMS_CHAR_CROSS_TRAINER_DATA_SUPPORT
|
|
#define FTMS_CT_MORE_DATA_MASK (1) /* More Data */
|
|
#define FTMS_CT_AVE_SPEED_PRESENT_MASK (1<<1) /* Average Speed present */
|
|
#define FTMS_CT_TOTAL_DISTANCE_PRESENT_MASK (1<<2) /* Total Distance Present */
|
|
#define FTMS_CT_STEP_COUNT_PRESENT_MASK (1<<3) /* Step Count Present */
|
|
#define FTMS_CT_STRIDE_COUNT_PRESENT_MASK (1<<4) /* Stride Count Present */
|
|
#define FTMS_CT_ELEVATION_GAIN_PRESENT_MASK (1<<5) /* Elevation Gain Present */
|
|
#define FTMS_CT_INCLINATION_RAMP_ANGLE_SET_PRESENT_MASK (1<<6) /* Inclination and Ramp Angle Setting Present */
|
|
#define FTMS_CT_RESISTANCE_LEVEL_PRESENT_MASK (1<<7) /* Resistance Level Present */
|
|
#define FTMS_CT_INSTANTANEOUS_POWER_PRESENT_MASK (1<<8) /* Instantaneous Power Present */
|
|
#define FTMS_CT_AVE_POWER_PRESENT_MASK (1<<9) /* Average Power Present */
|
|
#define FTMS_CT_EXPEND_ENERGY_PRESENT_MASK (1<<10) /* Expended Energy Present */
|
|
#define FTMS_CT_HEART_RATE_PRESENT_MASK (1<<11) /* Heart Rate Present */
|
|
#define FTMS_CT_METABOLIC_EQUIVALENT_PRESENT_MASK (1<<12) /* Metabolic Equivalent Present */
|
|
#define FTMS_CT_ELAPSED_TIME_PRESENT_MASK (1<<13) /* Elapsed Time Present */
|
|
#define FTMS_CT_REMAIN_TIME_PRESENT_MASK (1<<14) /* Remaining Time Present */
|
|
#define FTMS_CT_MOVEMENT_DIRECTION_MASK (1<<15) /* Movement Direction, 0 is Forward, 1 is Backward */
|
|
#define FTMS_CT_SET_ALL_FEATURE_SUPPORT (0x00FFFE) /* Support all cross trainer data features */
|
|
#define FTMS_CT_NO_MORE_DATA_PRESENT (0xFFFFFE)
|
|
#endif
|
|
/** @} */
|
|
|
|
/** @defgroup FTMS_Stair_Climber_Data_Flag_Bit_Mask FTMS Stair Climber Data Flag Bit Mask
|
|
* @brief FTMS stair climber data 'Flags' bit mask.
|
|
* @{
|
|
*/
|
|
#if FTMS_CHAR_STAIR_CLIMBER_DATA_SUPPORT
|
|
#define FTMS_STAIRC_MORE_DATA_MASK (1) /* More Data */
|
|
#define FTMS_STAIRC_STEP_PER_MINUTE_PRESENT_MASK (1<<1) /* Step per Minute present */
|
|
#define FTMS_STAIRC_AVE_STEP_RATE_PRESENT_MASK (1<<2) /* Average Step Rate Present */
|
|
#define FTMS_STAIRC_POSITIVE_ELEVATION_GAIN_PRESENT_MASK (1<<3) /* Positive Elevation Gain Present */
|
|
#define FTMS_STAIRC_STRIDE_COUNT_PRESENT_MASK (1<<4) /* Stride Count Present */
|
|
#define FTMS_STAIRC_EXPEND_ENERGY_PRESENT_MASK (1<<5) /* Expended Energy Present */
|
|
#define FTMS_STAIRC_HEART_RATE_PRESENT_MASK (1<<6) /* Heart Rate Present */
|
|
#define FTMS_STAIRC_METABOLIC_EQUIVALENT_PRESENT_MASK (1<<7) /* Metabolic Equivalent Present */
|
|
#define FTMS_STAIRC_ELAPSED_TIME_PRESENT_MASK (1<<8) /* Elapsed Time Present */
|
|
#define FTMS_STAIRC_REMAIN_TIME_PRESENT_MASK (1<<9) /* Remaining Time Present */
|
|
#define FTMS_STAIRC_SET_ALL_FEATURE_SUPPORT (0x03FE) /* Support all indoor bike data features */
|
|
#define FTMS_STAIRC_NO_MORE_DATA_PRESENT (0xFFFE)
|
|
#endif
|
|
/** @} */
|
|
|
|
/** @} End of FTMS_Common_Exported_Macros */
|
|
|
|
/*============================================================================*
|
|
* Types
|
|
*============================================================================*/
|
|
/** @defgroup FTMS_Exported_Types FTMS Exported Types
|
|
* @brief
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief Fitness Machine Service parameter type
|
|
*/
|
|
|
|
typedef enum
|
|
{
|
|
FTMS_CTRL_RESERVED = 0x00,
|
|
FTMS_CTRL_STOP, /* Control point write to initiate stop procedure */
|
|
FTMS_CTRL_PAUSE /* Control point write to initiate pause procedure */
|
|
} T_FTMS_CTRL_INFO;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t fat_burn_zone_time; /* Targeted time in fat burn zone */
|
|
uint16_t fitness_zones_time; /* Targeted time in fitness zone */
|
|
} T_FTMS_TWO_ZONES_HR_TIME;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t light_zone_time; /* Targeted time in light zone */
|
|
uint16_t moderate_zone_time; /* Targeted time in moderate zone */
|
|
uint16_t hard_zone_time; /* Targeted time in hard zone */
|
|
} T_FTMS_THREE_ZONES_HR_TIME;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t very_light_zone_time; /* Targeted time in very light zone */
|
|
uint16_t light_zone_time; /* Targeted time in light zone */
|
|
uint16_t moderate_zone_time; /* Targeted time in moderate zone */
|
|
uint16_t hard_zone_time; /* Targeted time in hard zone */
|
|
uint16_t maximum_zone_time; /* Targeted time in maximum zone */
|
|
} T_FTMS_FIVE_ZONES_HR_TIME;
|
|
|
|
typedef struct
|
|
{
|
|
int16_t wind_speed; /* Wind speed: Meters Per Second (mps) with a resolution of 0.001 */
|
|
int16_t grade; /* Grade: Percentage with a resolution of 0.01 */
|
|
uint8_t rolling_resistance_coefficient; /* Crr(Coefficient of rolling resistance): Unitless with a resolution of 0.001 */
|
|
uint8_t wind_resistance_coefficient; /* Cw(Wind resistance coefficient): Kilogram per Meter(Kg/m) with a resolution of 0.01 */
|
|
} T_FTMS_INDOOR_BIKE_SIMULATION_PARAM;
|
|
|
|
typedef enum
|
|
{
|
|
FTMS_SD_CTRL_RESERVED = 0x00,
|
|
FTMS_SD_CTRL_START, /* Write to start spin down control procedure */
|
|
FTMS_SD_CTRL_IGNORE /* Write to ignore spin down control procedure */
|
|
} T_FTMS_SPIN_DOWN_CTRL_PARAM;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t target_speed_low; /* km/h with a resolution of 0.01 km/h */
|
|
uint16_t target_speed_high; /* km/h with a resolution of 0.01 km/h */
|
|
} T_FTMS_SPIN_DOWN_RESP_PARAM;
|
|
|
|
typedef enum
|
|
{
|
|
FTMS_SD_STATUS_RESERVED = 0x00, /* Reserved for Future Use */
|
|
FTMS_SD_REQ, /* Spin Down Requested */
|
|
FTMS_SD_SUCCESS, /* Success */
|
|
FTMS_SD_ERROR, /* Error */
|
|
FTMS_SD_STOP_PEDAL /* Stop Pedaling */
|
|
} T_FTMS_SPIN_DOWN_STATUS_VALUE;
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t features_field; /* Fitness Machine Features */
|
|
uint32_t target_setting_field; /* Target Setting Features */
|
|
} T_FTMS_FEATURE;
|
|
|
|
#if FTMS_CHAR_TRAINING_STATUS_SUPPORT
|
|
typedef struct
|
|
{
|
|
uint8_t flag; /* Training Status Flags */
|
|
uint8_t train_status; /* Training Status */
|
|
uint8_t *train_status_string; /* Training Status String (if present) */
|
|
} T_FTMS_TRAIN_STATUS;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_SUPPORT_SPEED_RANGE_SUPPORT
|
|
typedef struct
|
|
{
|
|
uint16_t min_speed; /* Kilometer per hour with a resolution of 0.01 */
|
|
uint16_t max_speed; /* Kilometer per hour with a resolution of 0.01 */
|
|
uint16_t min_speed_increment; /* Kilometer per hour with a resolution of 0.01 */
|
|
} T_FTMS_SUPPORT_SPEED_RANGE;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_SUPPORT_INCLINATION_RANGE_SUPPORT
|
|
typedef struct
|
|
{
|
|
int16_t min_inclination; /* Percent with a resolution of 0.1 */
|
|
int16_t max_inclination; /* Percent with a resolution of 0.1 */
|
|
uint16_t min_inclination_increment; /* Percent with a resolution of 0.1 */
|
|
} T_FTMS_SUPPORT_INCLINATION_RANGE;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_SUPPORT_RESISTANCE_LEVEL_RANGE_SUPPORT
|
|
typedef struct
|
|
{
|
|
int16_t min_resistance_level; /* Unitless with a resolution of 0.1 */
|
|
int16_t max_resistance_level; /* Unitless with a resolution of 0.1 */
|
|
uint16_t min_resistance_level_increment; /* Unitless with a resolution of 0.1 */
|
|
} T_FTMS_SUPPORT_RESISTANCE_LEVEL_RANGE;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_SUPPORT_POWER_RANGE_SUPPORT
|
|
typedef struct
|
|
{
|
|
int16_t min_power; /* Watt with a resolution of 1 */
|
|
int16_t max_power; /* Watt with a resolution of 1 */
|
|
uint16_t min_power_increment; /* Watt with a resolution of 1 */
|
|
} T_FTMS_SUPPORT_POWER_RANGE;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_SUPPORT_HR_RANGE_SUPPORT
|
|
typedef struct
|
|
{
|
|
uint8_t min_heart_rate; /* Beats per minute with a resolution of 1 */
|
|
uint8_t max_heart_rate; /* Beats per minute with a resolution of 1 */
|
|
uint8_t min_hr_increment; /* Beats per minute with a resolution of 1 */
|
|
} T_FTMS_SUPPORT_HR_RANGE;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_TREADMILL_DATA_SUPPORT
|
|
typedef struct
|
|
{
|
|
uint16_t instantaneous_speed; /* Kilometer per hour with a resolution of 0.01 */
|
|
uint16_t average_speed; /* Kilometer per hour with a resolution of 0.01 */
|
|
uint32_t total_distance; /* Meters with a resolution of 1 */
|
|
int16_t inclination; /* Percent with a resolution of 0.1 */
|
|
int16_t ramp_angle_set; /* Degree with a resolution of 0.1 */
|
|
uint16_t positive_elevation_gain; /* Meters with a resolution of 0.1 */
|
|
uint16_t negative_elevation_gain; /* Meters with a resolution of 0.1 */
|
|
uint8_t instantaneous_pace; /* Kilometer per hour with a resolution of 0.01 */
|
|
uint8_t average_pace; /* Kilometer per minute with a resolution of 0.1 */
|
|
uint16_t total_energy; /* Kilo Calorie with a resolution of 1 */
|
|
uint16_t energy_per_hour; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t energy_per_minute; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t heart_rate; /* Beats per minute with a resolution of 1 */
|
|
uint8_t metabolic_equivalent; /* Metabolic Equivalent with a resolution of 0.1 */
|
|
uint16_t elapsed_time; /* Second with a resolution of 1 */
|
|
uint16_t remain_time; /* Second with a resolution of 1 */
|
|
int16_t force_on_belt; /* Newton with a resolution of 1 */
|
|
int16_t power_output; /* Watts with a resolution of 1 */
|
|
} T_FTMS_TREADMILL_DATA;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_STEP_CLIMBER_DATA_SUPPORT
|
|
typedef struct
|
|
{
|
|
uint16_t floor; /* Unitless with a resolution of 1 */
|
|
uint16_t step_count; /* Unitless with a resolution of 1 */
|
|
uint16_t step_per_minute; /* Step/minute with a resolution of 1 */
|
|
uint16_t average_step_rate; /* Step/minute with a resolution of 1 */
|
|
uint16_t positive_elevation_gain; /* Meters with a resolution of 1 */
|
|
uint16_t total_energy; /* Kilo Calorie with a resolution of 1 */
|
|
uint16_t energy_per_hour; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t energy_per_minute; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t heart_rate; /* Beats per minute with a resolution of 1 */
|
|
uint8_t metabolic_equivalent; /* Metabolic Equivalent with a resolution of 0.1 */
|
|
uint16_t elapsed_time; /* Second with a resolution of 1 */
|
|
uint16_t remain_time; /* Second with a resolution of 1 */
|
|
} T_FTMS_STEP_CLIMBER_DATA;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_ROWER_DATA_SUPPORT
|
|
typedef struct
|
|
{
|
|
uint8_t stroke_rate; /* stroke/minute with a resolution of 0.5 */
|
|
uint16_t stroke_count; /* Unitless with a resolution of 1 */
|
|
uint8_t average_stroke_rate; /* 1/minute with a resolution of 0.5 */
|
|
uint32_t total_distance; /* Meters with a resolution of 1 (uint24) */
|
|
uint16_t instantaneous_pace; /* Second with a resolution of 1 */
|
|
uint16_t average_pace; /* Second with a resolution of 1 */
|
|
int16_t instantaneous_power; /* Watts with a resolution of 1 */
|
|
int16_t average_power; /* Watts with a resolution of 1 */
|
|
int16_t resistance_level; /* Unitless with a resolution of 1 */
|
|
uint16_t total_energy; /* Kilo Calorie with a resolution of 1 */
|
|
uint16_t energy_per_hour; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t energy_per_minute; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t heart_rate; /* Beats per minute with a resolution of 1 */
|
|
uint8_t metabolic_equivalent; /* Metabolic Equivalent with a resolution of 0.1 */
|
|
uint16_t elapsed_time; /* Second with a resolution of 1 */
|
|
uint16_t remain_time; /* Second with a resolution of 1 */
|
|
} T_FTMS_ROWER_DATA;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_INDOOR_BIKE_DATA_SUPPORT
|
|
typedef struct
|
|
{
|
|
uint16_t instantaneous_speed; /* Kilometer per hour with a resolution of 0.01 */
|
|
uint16_t average_speed; /* Kilometer per hour with a resolution of 0.01 */
|
|
uint16_t instantaneous_cadence; /* 1/minute with a resolution of 0.5 */
|
|
uint16_t average_cadence; /* 1/minute with a resolution of 0.5 */
|
|
uint32_t total_distance; /* Meters with a resolution of 1 (uint24) */
|
|
int16_t resistance_level; /* Unitless with a resolution of 1 */
|
|
int16_t instantaneous_power; /* Watts with a resolution of 1 */
|
|
int16_t average_power; /* Watts with a resolution of 1 */
|
|
uint16_t total_energy; /* Kilo Calorie with a resolution of 1 */
|
|
uint16_t energy_per_hour; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t energy_per_minute; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t heart_rate; /* Beats per minute with a resolution of 1 */
|
|
uint8_t metabolic_equivalent; /* Metabolic Equivalent with a resolution of 0.1 */
|
|
uint16_t elapsed_time; /* Second with a resolution of 1 */
|
|
uint16_t remain_time; /* Second with a resolution of 1 */
|
|
} T_FTMS_INDOOR_BIKE_DATA;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_CROSS_TRAINER_DATA_SUPPORT
|
|
typedef struct
|
|
{
|
|
uint16_t instantaneous_speed; /* Kilometer per hour with a resolution of 0.01 */
|
|
uint16_t average_speed; /* Kilometer per hour with a resolution of 0.01 */
|
|
uint32_t total_distance; /* Meters with a resolution of 1 (uint24) */
|
|
uint16_t step_per_minute; /* Step/minute with a resolution of 1 */
|
|
uint16_t average_step_rate; /* Step/minute with a resolution of 1 */
|
|
uint16_t stride_count; /* Unitless with a resolution of 0.1 */
|
|
uint16_t positive_elevation_gain; /* Meters with a resolution of 1 */
|
|
uint16_t negative_elevation_gain; /* Meters with a resolution of 1 */
|
|
int16_t inclination; /* Percent with a resolution of 0.1 */
|
|
int16_t ramp_angle_set; /* Degree with a resolution of 0.1 */
|
|
int16_t resistance_level; /* Unitless with a resolution of 0.1 */
|
|
int16_t instantaneous_power; /* Watts with a resolution of 1 */
|
|
int16_t average_power; /* Watts with a resolution of 1 */
|
|
uint16_t total_energy; /* Kilo Calorie with a resolution of 1 */
|
|
uint16_t energy_per_hour; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t energy_per_minute; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t heart_rate; /* Beats per minute with a resolution of 1 */
|
|
uint8_t metabolic_equivalent; /* Metabolic Equivalent with a resolution of 0.1 */
|
|
uint16_t elapsed_time; /* Second with a resolution of 1 */
|
|
uint16_t remain_time; /* Second with a resolution of 1 */
|
|
} T_FTMS_CROSS_TRAINER_DATA;
|
|
#endif
|
|
|
|
#if FTMS_CHAR_STAIR_CLIMBER_DATA_SUPPORT
|
|
typedef struct
|
|
{
|
|
uint16_t floors; /* Unitless with a resolution of 1 */
|
|
uint16_t step_per_minute; /* Step/minute with a resolution of 1 */
|
|
uint16_t average_step_rate; /* Step/minute with a resolution of 1 */
|
|
uint16_t positive_elevation_gain; /* Meters with a resolution of 1 */
|
|
uint16_t stride_count; /* Unitless with a resolution of 1 */
|
|
uint16_t total_energy; /* Kilo Calorie with a resolution of 1 */
|
|
uint16_t energy_per_hour; /* Kilo Calorie with a resolution of 1 */
|
|
uint16_t energy_per_minute; /* Kilo Calorie with a resolution of 1 */
|
|
uint8_t heart_rate; /* Beats per minute with a resolution of 1 */
|
|
uint8_t metabolic_equivalent; /* Metabolic Equivalent with a resolution of 0.1 */
|
|
uint16_t elapsed_time; /* Second with a resolution of 1 */
|
|
uint16_t remain_time; /* Second with a resolution of 1 */
|
|
} T_FTMS_STAIR_CLIMBER_DATA;
|
|
#endif
|
|
|
|
/** End of UDS_Exported_Types
|
|
* @}
|
|
*/
|
|
|
|
/** @} End of FTMS_DEFINE */
|
|
|
|
#endif /* _FTMS_DEFINE_H_ */
|