| nRF5 SDK v12.0.0 |

Choose documentation: | nRF5 SDK | S130 SoftDevice API | S132 SoftDevice API | S212 SoftDevice API | S332 SoftDevice API

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Modules | Data Structures | Macros | Typedefs | Enumerations | Functions
Bicycle Power profile
ANT+ profiles

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] | 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 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] | 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 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 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] | 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

enum ant_bpwr_evt_t

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).

enum ant_bpwr_page_t

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_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_profile | Pointer to the profile instance.
  [in] | p_ant_event | Event 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_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_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_profile | Pointer to the profile instance.
  [in] | p_ant_event | Event 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_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.