nRF5 SDK v12.1.0
Modules | Data Structures | Macros | Typedefs | Enumerations | Functions
Bicycle Power profile

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)   &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)   &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)   &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_bpwr_profile_t *p_profile, ant_evt_t *p_ant_event)
 Function for handling the Sensor ANT events. More...
 
void ant_bpwr_disp_evt_handler (ant_bpwr_profile_t *p_profile, ant_evt_t *p_ant_event)
 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 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]NAMEName of related instance.
[in]CHANNEL_NUMBERNumber of the channel assigned to the profile instance.
[in]TRANSMISSION_TYPEType of transmission assigned to the profile instance.
[in]DEVICE_NUMBERNumber of the device assigned to the profile instance.
[in]NETWORK_NUMBERNumber of the network assigned to the profile instance.
#define BPWR_DISP_PROFILE_CONFIG_DEF (   NAME,
  EVT_HANDLER 
)
Value:
static ant_bpwr_disp_cb_t NAME##_bpwr_disp_cb; \
static const ant_bpwr_disp_config_t NAME##_profile_bpwr_disp_config = \
{ \
.p_cb = &NAME##_bpwr_disp_cb, \
.evt_handler = (EVT_HANDLER), \
}

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

Parameters
[in]NAMEName of related instance.
[in]EVT_HANDLEREvent 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 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]NAMEName of related instance.
[in]CHANNEL_NUMBERNumber of the channel assigned to the profile instance.
[in]TRANSMISSION_TYPEType of transmission assigned to the profile instance.
[in]DEVICE_NUMBERNumber of the device assigned to the profile instance.
[in]NETWORK_NUMBERNumber 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 NAME##_bpwr_sens_cb; \
static const ant_bpwr_sens_config_t NAME##_profile_bpwr_sens_config = \
{ \
.torque_use = (TORQUE_USED), \
.calib_handler = (CALIB_HANDLER), \
.p_cb = &NAME##_bpwr_sens_cb, \
.evt_handler = (EVT_HANDLER), \
}

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

Parameters
[in]NAMEName of related instance.
[in]TORQUE_USEDDetermines whether the torque page is included.
[in]CALIB_HANDLEREvent handler to be called for handling calibration requests.
[in]EVT_HANDLEREvent 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_profilePointer to the profile instance.
[in]p_page_1Pointer 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_profilePointer to the profile instance.
void ant_bpwr_disp_evt_handler ( ant_bpwr_profile_t p_profile,
ant_evt_t p_ant_event 
)

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_profilePointer to the profile instance.
[in]p_ant_eventEvent received from the ANT stack.
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_profilePointer to the profile instance.
[in]p_channel_configPointer to the ANT channel configuration structure.
[in]p_disp_configPointer to the Bicycle Power Display configuration structure.
Return values
NRF_SUCCESSIf 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_profilePointer to the profile instance.
Return values
NRF_SUCCESSIf the channel was successfully opened. Otherwise, an error code is returned.
void ant_bpwr_sens_evt_handler ( ant_bpwr_profile_t p_profile,
ant_evt_t p_ant_event 
)

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_profilePointer to the profile instance.
[in]p_ant_eventEvent received from the ANT stack.
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_profilePointer to the profile instance.
[in]p_channel_configPointer to the ANT channel configuration structure.
[in]p_sens_configPointer to the Bicycle Power Sensor configuration structure.
Return values
NRF_SUCCESSIf 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_profilePointer to the profile instance.
Return values
NRF_SUCCESSIf the channel was successfully opened. Otherwise, an error code is returned.

Documentation feedback | Developer Zone | Subscribe | Updated