/**@brief Function for encoding BSC message. * * @param[in] p_profile Pointer to the profile instance. * @param[out] p_message_payload Pointer to the message payload structure. * * @note Assume to be called each time when Tx window will occur. */ static void sens_message_encode(ant_bsc_profile_t * p_profile, uint8_t * p_message_payload) { ant_bsc_message_layout_t * p_bsc_message_payload = (ant_bsc_message_layout_t *)p_message_payload; ant_bsc_evt_t bsc_sens_event; if (p_profile->_cb.p_sens_cb->device_type == BSC_COMBINED_DEVICE_TYPE) { LOG_BSC("%-30s \"Combined Speed & Cadence Page\"\n\r", "BSC TX Page:"); ant_bsc_combined_page_0_encode(p_bsc_message_payload->combined.page_payload, &(p_profile->page_comb_0)); bsc_sens_event = (ant_bsc_evt_t) ANT_BSC_COMB_PAGE_0_UPDATED; } else { p_bsc_message_payload->speed_or_cadence.page_number = next_page_number_get(p_profile); p_bsc_message_payload->speed_or_cadence.toggle_bit = p_profile->_cb.p_sens_cb->toggle_bit; LOG_BSC("%-30s %u\n\r", "BSC TX Page number:", p_bsc_message_payload->speed_or_cadence.page_number); ant_bsc_page_0_encode(p_bsc_message_payload->speed_or_cadence.page_payload, &(p_profile->page_0)); bsc_sens_event = (ant_bsc_evt_t) p_bsc_message_payload->speed_or_cadence.page_number; switch(p_bsc_message_payload->speed_or_cadence.page_number) { case ANT_BSC_PAGE_0: // No implementation needed break; case ANT_BSC_PAGE_1: ant_bsc_page_1_encode(p_bsc_message_payload->speed_or_cadence.page_payload, &(p_profile->page_1)); break; case ANT_BSC_PAGE_2: ant_bsc_page_2_encode(p_bsc_message_payload->speed_or_cadence.page_payload, &(p_profile->page_2)); break; case ANT_BSC_PAGE_3: ant_bsc_page_3_encode(p_bsc_message_payload->speed_or_cadence.page_payload, &(p_profile->page_3)); break; case ANT_BSC_PAGE_4: ant_bsc_page_4_encode(p_bsc_message_payload->speed_or_cadence.page_payload, &(p_profile->page_4)); break; case ANT_BSC_PAGE_5: ant_bsc_page_5_encode(p_bsc_message_payload->speed_or_cadence.page_payload, &(p_profile->page_5)); break; default: // No implementation needed break; } } LOG_BSC("\r\n"); p_profile->evt_handler(p_profile, bsc_sens_event); }
/**@brief Function for encoding SDM message. * * @param[in] p_profile Pointer to the profile instance. * @param[in] p_message_payload Pointer to the message payload. * * @note Assume to be call each time when Tx window will occur. */ static void sens_message_encode(ant_sdm_profile_t * p_profile, uint8_t * p_message_payload) { ant_sdm_message_layout_t * p_sdm_message_payload = (ant_sdm_message_layout_t *)p_message_payload; p_sdm_message_payload->page_number = next_page_number_get(p_profile); LOG_SDM("SDM Page number %u\n\r", p_sdm_message_payload->page_number); switch (p_sdm_message_payload->page_number) { case ANT_SDM_PAGE_1: ant_sdm_page_1_encode(p_sdm_message_payload->page_payload, &(p_profile->page_1), &(p_profile->common)); ant_sdm_speed_encode(p_sdm_message_payload->page_payload, &(p_profile->common)); break; case ANT_SDM_PAGE_2: ant_sdm_page_2_encode(p_sdm_message_payload->page_payload, &(p_profile->page_2)); ant_sdm_speed_encode(p_sdm_message_payload->page_payload, &(p_profile->common)); break; case ANT_SDM_PAGE_3: ant_sdm_page_2_encode(p_sdm_message_payload->page_payload, &(p_profile->page_2)); ant_sdm_page_3_encode(p_sdm_message_payload->page_payload, &(p_profile->page_3)); ant_sdm_speed_encode(p_sdm_message_payload->page_payload, &(p_profile->common)); break; case ANT_SDM_PAGE_16: ant_sdm_page_16_encode(p_sdm_message_payload->page_payload, &(p_profile->common)); break; case ANT_SDM_PAGE_22: ant_sdm_page_22_encode(p_sdm_message_payload->page_payload, &(p_profile->page_22)); break; case ANT_SDM_PAGE_80: ant_common_page_80_encode(p_sdm_message_payload->page_payload, &(p_profile->page_80)); break; case ANT_SDM_PAGE_81: ant_common_page_81_encode(p_sdm_message_payload->page_payload, &(p_profile->page_81)); break; default: LOG_SDM("\r\n"); return; } LOG_SDM("\r\n"); p_profile->evt_handler(p_profile, (ant_sdm_evt_t)p_sdm_message_payload->page_number); }
/**@brief Function for encoding Bicycle Power Sensor message. * * @note Assume to be call each time when Tx window will occur. */ static void sens_message_encode(ant_bpwr_profile_t * p_profile, uint8_t * p_message_payload) { ant_bpwr_message_layout_t * p_bpwr_message_payload = (ant_bpwr_message_layout_t *)p_message_payload; p_bpwr_message_payload->page_number = next_page_number_get(p_profile); LOG_BPWR("B-PWR tx page: %u\r\n", p_bpwr_message_payload->page_number); switch (p_bpwr_message_payload->page_number) { case ANT_BPWR_PAGE_1: ant_bpwr_page_1_encode(p_bpwr_message_payload->page_payload, &(p_profile->page_1)); break; case ANT_BPWR_PAGE_16: ant_bpwr_page_16_encode(p_bpwr_message_payload->page_payload, &(p_profile->page_16)); ant_bpwr_cadence_encode(p_bpwr_message_payload->page_payload, &(p_profile->common)); break; case ANT_BPWR_PAGE_17: ant_bpwr_page_17_encode(p_bpwr_message_payload->page_payload, &(p_profile->page_17)); ant_bpwr_cadence_encode(p_bpwr_message_payload->page_payload, &(p_profile->common)); break; case ANT_BPWR_PAGE_18: ant_bpwr_page_18_encode(p_bpwr_message_payload->page_payload, &(p_profile->page_18)); ant_bpwr_cadence_encode(p_bpwr_message_payload->page_payload, &(p_profile->common)); break; case ANT_COMMON_PAGE_80: ant_common_page_80_encode(p_bpwr_message_payload->page_payload, &(p_profile->page_80)); break; case ANT_COMMON_PAGE_81: ant_common_page_81_encode(p_bpwr_message_payload->page_payload, &(p_profile->page_81)); break; default: return; } LOG_BPWR("\r\n"); p_profile->evt_handler(p_profile, (ant_bpwr_evt_t)p_bpwr_message_payload->page_number); }
/**@brief Function for encoding HRM message. * * @note Assume to be call each time when Tx window will occur. */ static void sens_message_encode(ant_hrm_profile_t * p_profile, uint8_t * p_message_payload) { ant_hrm_message_layout_t * p_hrm_message_payload = (ant_hrm_message_layout_t *)p_message_payload; ant_hrm_sens_cb_t * p_hrm_cb = p_profile->_cb.p_sens_cb; p_hrm_message_payload->page_number = next_page_number_get(p_profile); p_hrm_message_payload->toggle_bit = p_hrm_cb->toggle_bit; LOG_HRM("HRM TX Page number: %u\n\r", p_hrm_message_payload->page_number); ant_hrm_page_0_encode(p_hrm_message_payload->page_payload, &(p_profile->page_0)); // Page 0 is present in each message switch (p_hrm_message_payload->page_number) { case ANT_HRM_PAGE_0: // No implementation needed break; case ANT_HRM_PAGE_1: ant_hrm_page_1_encode(p_hrm_message_payload->page_payload, &(p_profile->page_1)); break; case ANT_HRM_PAGE_2: ant_hrm_page_2_encode(p_hrm_message_payload->page_payload, &(p_profile->page_2)); break; case ANT_HRM_PAGE_3: ant_hrm_page_3_encode(p_hrm_message_payload->page_payload, &(p_profile->page_3)); break; case ANT_HRM_PAGE_4: ant_hrm_page_4_encode(p_hrm_message_payload->page_payload, &(p_profile->page_4)); break; default: LOG_HRM("\r\n"); return; } LOG_HRM("\r\n"); p_profile->evt_handler(p_profile, (ant_hrm_evt_t)p_hrm_message_payload->page_number); }