Bicycle Power profile

nRF5 SDK v14.2.0

This module implements the Bicycle Power profile. More...

Modules

Bicycle Power Profile configuration
Bicycle Power profile pages
This module implements functions for the BPWR data pages.
Bicycle Power profile utilities
This module implements utilities for the Bicycle Power profile.

Data Structures

struct ant_bpwr_sens_config_t
Bicycle Power Sensor configuration structure. More...
struct ant_bpwr_disp_config_t
Bicycle Power Display configuration structure. More...
struct ant_bpwr_profile_s
Bicycle Power profile structure. More...
struct ant_bpwr_sens_cb_t
Bicycle Power Sensor control block. More...
struct ant_bpwr_disp_cb_t
Bicycle Power Sensor RX control block. More...

Macros

#define BPWR_DEVICE_TYPE 0x0Bu
Device type reserved for ANT+ Bicycle Power.
#define BPWR_ANTPLUS_RF_FREQ 0x39u
Frequency, decimal 57 (2457 MHz).
#define BPWR_MSG_PERIOD 8182u
Message period, decimal 8182 (4.0049 Hz).
#define BPWR_EXT_ASSIGN 0x00
ANT ext assign (see Ext. Assign Channel Parameters in ant_parameters.h: ANT Stack Parameters ).
#define BPWR_DISP_CHANNEL_TYPE CHANNEL_TYPE_SLAVE
Display Bicycle Power channel type.
#define BPWR_SENS_CHANNEL_TYPE CHANNEL_TYPE_MASTER
Sensor Bicycle Power channel type.
#define BPWR_CALIBRATION_TIMOUT_S 5u
Time-out for responding to calibration callback (s).
#define BPWR_DISP_CHANNEL_CONFIG_DEF (NAME,CHANNEL_NUMBER,TRANSMISSION_TYPE,DEVICE_NUMBER,NETWORK_NUMBER)
Initialize an ANT channel configuration structure for the Bicycle Power profile (Display). More...
#define BPWR_DISP_CHANNEL_CONFIG (NAME)   & CONCAT_2 (NAME, _channel_bpwr_disp_config)
#define BPWR_SENS_CHANNEL_CONFIG_DEF (NAME,CHANNEL_NUMBER,TRANSMISSION_TYPE,DEVICE_NUMBER,NETWORK_NUMBER)
Initialize an ANT channel configuration structure for the Bicycle Power profile (Sensor). More...
#define BPWR_SENS_CHANNEL_CONFIG (NAME)   & CONCAT_2 (NAME, _channel_bpwr_sens_config)
#define BPWR_DISP_PROFILE_CONFIG_DEF (NAME,EVT_HANDLER)
Initialize an ANT profile configuration structure for the BPWR profile (Display). More...
#define BPWR_DISP_PROFILE_CONFIG (NAME)   & CONCAT_2 (NAME, _profile_bpwr_disp_config)
#define BPWR_SENS_PROFILE_CONFIG_DEF (NAME,TORQUE_USED,CALIB_HANDLER,EVT_HANDLER)
Initialize an ANT profile configuration structure for the BPWR profile (Sensor). More...
#define BPWR_SENS_PROFILE_CONFIG (NAME)   &NAME##_profile_bpwr_sens_config

Typedefs

typedef struct ant_bpwr_profile_s ant_bpwr_profile_t
typedef void(* ant_bpwr_evt_handler_t )( ant_bpwr_profile_t *, ant_bpwr_evt_t )
BPWR event handler type.
typedef void(* ant_bpwr_calib_handler_t )( ant_bpwr_profile_t *, ant_bpwr_page1_data_t *)
BPWR Sensor calibration request handler type.

Enumerations

enum ant_bpwr_torque_t {
TORQUE_NONE = 0,
TORQUE_WHEEL = 1,
TORQUE_CRANK = 2
}
Configuration values for the Bicycle Power torque page.
enum ant_bpwr_page_t {
ANT_BPWR_PAGE_1 = 1,
ANT_BPWR_PAGE_16 = 16,
ANT_BPWR_PAGE_17 = 17,
ANT_BPWR_PAGE_18 = 18,
ANT_BPWR_PAGE_80 = ANT_COMMON_PAGE_80,
ANT_BPWR_PAGE_81 = ANT_COMMON_PAGE_81
}
Bicycle Power page number type. More...
enum ant_bpwr_evt_t {
ANT_BPWR_PAGE_1_UPDATED = ANT_BPWR_PAGE_1,
ANT_BPWR_PAGE_16_UPDATED = ANT_BPWR_PAGE_16,
ANT_BPWR_PAGE_17_UPDATED = ANT_BPWR_PAGE_17,
ANT_BPWR_PAGE_18_UPDATED = ANT_BPWR_PAGE_18,
ANT_BPWR_PAGE_80_UPDATED = ANT_BPWR_PAGE_80,
ANT_BPWR_PAGE_81_UPDATED = ANT_BPWR_PAGE_81,
ANT_BPWR_CALIB_TIMEOUT ,
ANT_BPWR_CALIB_REQUEST_TX_FAILED
}
BPWR profile event type. More...

Functions

ret_code_t ant_bpwr_disp_init ( ant_bpwr_profile_t *p_profile, ant_channel_config_t const *p_channel_config, ant_bpwr_disp_config_t const *p_disp_config)
Function for initializing the ANT Bicycle Power Display profile instance. More...
ret_code_t ant_bpwr_sens_init ( ant_bpwr_profile_t *p_profile, ant_channel_config_t const *p_channel_config, ant_bpwr_sens_config_t const *p_sens_config)
Function for initializing the ANT Bicycle Power Sensor profile instance. More...
ret_code_t ant_bpwr_disp_open ( ant_bpwr_profile_t *p_profile)
Function for opening the profile instance channel for ANT BPWR Display. More...
ret_code_t ant_bpwr_sens_open ( ant_bpwr_profile_t *p_profile)
Function for opening the profile instance channel for ANT BPWR Sensor. More...
void ant_bpwr_sens_evt_handler ( ant_evt_t *p_ant_evt, void *p_context)
Function for handling the Sensor ANT events. More...
void ant_bpwr_disp_evt_handler ( ant_evt_t *p_ant_evt, void *p_context)
Function for handling the Display ANT events. More...

Defines for accessing ant_bpwr_profile_t member variables

#define BPWR_PROFILE_calibration_id page_1.calibration_id
#define BPWR_PROFILE_auto_zero_status page_1.auto_zero_status
#define BPWR_PROFILE_general_calib_data page_1.data.general_calib
#define BPWR_PROFILE_custom_calib_data page_1.data.custom_calib
#define BPWR_PROFILE_instantaneous_cadence common.instantaneous_cadence
#define BPWR_PROFILE_pedal_power page_16.pedal_power.items
#define BPWR_PROFILE_power_update_event_count page_16.update_event_count
#define BPWR_PROFILE_accumulated_power page_16.accumulated_power
#define BPWR_PROFILE_instantaneous_power page_16.instantaneous_power
#define BPWR_PROFILE_wheel_update_event_count page_17.update_event_count
#define BPWR_PROFILE_wheel_tick page_17.tick
#define BPWR_PROFILE_wheel_period page_17.period
#define BPWR_PROFILE_wheel_accumulated_torque page_17.accumulated_torque
#define BPWR_PROFILE_crank_update_event_count page_18.update_event_count
#define BPWR_PROFILE_crank_tick page_18.tick
#define BPWR_PROFILE_crank_period page_18.period
#define BPWR_PROFILE_crank_accumulated_torque page_18.accumulated_torque
#define BPWR_PROFILE_manuf_id page_80.manuf_id
#define BPWR_PROFILE_hw_revision page_80.hw_revision
#define BPWR_PROFILE_manufacturer_id page_80.manufacturer_id
#define BPWR_PROFILE_model_number page_80.model_number
#define BPWR_PROFILE_sw_revision_minor page_81.sw_revision_minor
#define BPWR_PROFILE_sw_revision_major page_81.sw_revision_major
#define BPWR_PROFILE_serial_number page_81.serial_number

Functions: Sensor calibration API

void ant_bpwr_calib_response ( ant_bpwr_profile_t *p_profile)
Function for initializing the response for a calibration request. More...

Functions: Display calibration API

uint32_t ant_bpwr_calib_request ( ant_bpwr_profile_t *p_profile, ant_bpwr_page1_data_t *p_page_1)
Function for initializing the calibration request process from the Bicycle Power Display side. More...

Detailed Description

This module implements the Bicycle Power profile.

Macro Definition Documentation

#define BPWR_DISP_CHANNEL_CONFIG_DEF ( NAME,
CHANNEL_NUMBER,
TRANSMISSION_TYPE,
DEVICE_NUMBER,
NETWORK_NUMBER
)
Value:
static const ant_channel_config_t CONCAT_2 (NAME, _channel_bpwr_disp_config) = \
{ \
.channel_number = (CHANNEL_NUMBER), \
.channel_type = BPWR_DISP_CHANNEL_TYPE , \
.ext_assign = BPWR_EXT_ASSIGN , \
.rf_freq = BPWR_ANTPLUS_RF_FREQ , \
.transmission_type = (TRANSMISSION_TYPE), \
.device_type = BPWR_DEVICE_TYPE , \
.device_number = (DEVICE_NUMBER), \
.channel_period = BPWR_MSG_PERIOD , \
.network_number = (NETWORK_NUMBER), \
}

Initialize an ANT channel configuration structure for the Bicycle Power profile (Display).

Parameters
[in] NAME Name of related instance.
[in] CHANNEL_NUMBER Number of the channel assigned to the profile instance.
[in] TRANSMISSION_TYPE Type of transmission assigned to the profile instance.
[in] DEVICE_NUMBER Number of the device assigned to the profile instance.
[in] NETWORK_NUMBER Number of the network assigned to the profile instance.
#define BPWR_DISP_PROFILE_CONFIG_DEF ( NAME,
EVT_HANDLER
)
Value:
static ant_bpwr_disp_cb_t CONCAT_2 (NAME, _bpwr_disp_cb); \
static const ant_bpwr_disp_config_t CONCAT_2 (NAME, _profile_bpwr_disp_config) = \
{ \
.p_cb = & CONCAT_2 (NAME, _bpwr_disp_cb), \
.evt_handler = (EVT_HANDLER), \
}

Initialize an ANT profile configuration structure for the BPWR profile (Display).

Parameters
[in] NAME Name of related instance.
[in] EVT_HANDLER Event handler to be called for handling events in the BPWR profile.
#define BPWR_SENS_CHANNEL_CONFIG_DEF ( NAME,
CHANNEL_NUMBER,
TRANSMISSION_TYPE,
DEVICE_NUMBER,
NETWORK_NUMBER
)
Value:
static const ant_channel_config_t CONCAT_2 (NAME, _channel_bpwr_sens_config) = \
{ \
.channel_number = (CHANNEL_NUMBER), \
.channel_type = BPWR_SENS_CHANNEL_TYPE , \
.ext_assign = BPWR_EXT_ASSIGN , \
.rf_freq = BPWR_ANTPLUS_RF_FREQ , \
.transmission_type = (TRANSMISSION_TYPE), \
.device_type = BPWR_DEVICE_TYPE , \
.device_number = (DEVICE_NUMBER), \
.channel_period = BPWR_MSG_PERIOD , \
.network_number = (NETWORK_NUMBER), \
}

Initialize an ANT channel configuration structure for the Bicycle Power profile (Sensor).

Parameters
[in] NAME Name of related instance.
[in] CHANNEL_NUMBER Number of the channel assigned to the profile instance.
[in] TRANSMISSION_TYPE Type of transmission assigned to the profile instance.
[in] DEVICE_NUMBER Number of the device assigned to the profile instance.
[in] NETWORK_NUMBER Number of the network assigned to the profile instance.
#define BPWR_SENS_PROFILE_CONFIG_DEF ( NAME,
TORQUE_USED,
CALIB_HANDLER,
EVT_HANDLER
)
Value:
static ant_bpwr_sens_cb_t CONCAT_2 (NAME, _bpwr_sens_cb); \
static const ant_bpwr_sens_config_t CONCAT_2 (NAME, _profile_bpwr_sens_config) = \
{ \
.torque_use = (TORQUE_USED), \
.calib_handler = (CALIB_HANDLER), \
.p_cb = & CONCAT_2 (NAME, _bpwr_sens_cb), \
.evt_handler = (EVT_HANDLER), \
}

Initialize an ANT profile configuration structure for the BPWR profile (Sensor).

Parameters
[in] NAME Name of related instance.
[in] TORQUE_USED Determines whether the torque page is included.
[in] CALIB_HANDLER Event handler to be called for handling calibration requests.
[in] EVT_HANDLER Event handler to be called for handling events in the BPWR profile.

Enumeration Type Documentation

BPWR profile event type.

Enumerator
ANT_BPWR_PAGE_1_UPDATED

Data page 1 and speed have been updated (Display) or sent (Sensor).

ANT_BPWR_PAGE_16_UPDATED

Data page 16 and speed have been updated (Display) or sent (Sensor).

ANT_BPWR_PAGE_17_UPDATED

Data page 17 and speed have been updated (Display) or sent (Sensor).

ANT_BPWR_PAGE_18_UPDATED

Data page 18 has been updated (Display) or sent (Sensor).

ANT_BPWR_PAGE_80_UPDATED

Data page 80 has been updated (Display) or sent (Sensor).

ANT_BPWR_PAGE_81_UPDATED

Data page 81 has been updated (Display) or sent (Sensor).

ANT_BPWR_CALIB_TIMEOUT

Request of calibration time-out occurred (Display).

ANT_BPWR_CALIB_REQUEST_TX_FAILED

Calibration request did not reach the destination (Display).

Bicycle Power page number type.

Enumerator
ANT_BPWR_PAGE_1

Calibration data page.

ANT_BPWR_PAGE_16

Standard power-only main data page.

ANT_BPWR_PAGE_17

Standard wheel torque main data page.

ANT_BPWR_PAGE_18

Standard crank torque main data page.

Function Documentation

uint32_t ant_bpwr_calib_request ( ant_bpwr_profile_t * p_profile ,
ant_bpwr_page1_data_t * p_page_1
)

Function for initializing the calibration request process from the Bicycle Power Display side.

This function requests a transfer to the Sensor and starts watching for the calibration response. If a calibration response has already been requested, the function ignores the new request and returns NRF_SUCCESS.

Parameters
[in] p_profile Pointer to the profile instance.
[in] p_page_1 Pointer to the prepared page 1.
Returns
Values returned by the sd_ant_acknowledge_message_tx SVC callback.
void ant_bpwr_calib_response ( ant_bpwr_profile_t * p_profile )

Function for initializing the response for a calibration request.

This function should be used to signal the status of the calibration procedure to the ANT profile layer .

Parameters
[in] p_profile Pointer to the profile instance.
void ant_bpwr_disp_evt_handler ( ant_evt_t * p_ant_evt ,
void * p_context
)

Function for handling the Display ANT events.

This function handles all events from the ANT stack that are of interest to the Bicycle Power Display profile.

Parameters
[in] p_ant_evt Event received from the ANT stack.
[in] p_context Pointer to the profile instance.
ret_code_t ant_bpwr_disp_init ( ant_bpwr_profile_t * p_profile ,
ant_channel_config_t const * p_channel_config ,
ant_bpwr_disp_config_t const * p_disp_config
)

Function for initializing the ANT Bicycle Power Display profile instance.

Parameters
[in] p_profile Pointer to the profile instance.
[in] p_channel_config Pointer to the ANT channel configuration structure.
[in] p_disp_config Pointer to the Bicycle Power Display configuration structure.
Return values
NRF_SUCCESS If initialization was successful. Otherwise, an error code is returned.
ret_code_t ant_bpwr_disp_open ( ant_bpwr_profile_t * p_profile )

Function for opening the profile instance channel for ANT BPWR Display.

Before calling this function, pages should be configured.

Parameters
[in] p_profile Pointer to the profile instance.
Return values
NRF_SUCCESS If the channel was successfully opened. Otherwise, an error code is returned.
void ant_bpwr_sens_evt_handler ( ant_evt_t * p_ant_evt ,
void * p_context
)

Function for handling the Sensor ANT events.

This function handles all events from the ANT stack that are of interest to the Bicycle Power Display profile.

Parameters
[in] p_ant_evt Event received from the ANT stack.
[in] p_context Pointer to the profile instance.
ret_code_t ant_bpwr_sens_init ( ant_bpwr_profile_t * p_profile ,
ant_channel_config_t const * p_channel_config ,
ant_bpwr_sens_config_t const * p_sens_config
)

Function for initializing the ANT Bicycle Power Sensor profile instance.

Parameters
[in] p_profile Pointer to the profile instance.
[in] p_channel_config Pointer to the ANT channel configuration structure.
[in] p_sens_config Pointer to the Bicycle Power Sensor configuration structure.
Return values
NRF_SUCCESS If initialization was successful. Otherwise, an error code is returned.
ret_code_t ant_bpwr_sens_open ( ant_bpwr_profile_t * p_profile )

Function for opening the profile instance channel for ANT BPWR Sensor.

Before calling this function, pages should be configured.

Parameters
[in] p_profile Pointer to the profile instance.
Return values
NRF_SUCCESS If the channel was successfully opened. Otherwise, an error code is returned.