This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

ANT+ sd_ant_channel_close reseting

Hi,

We are using nrf52832 for ANT and BLE for which we use SDK_17.0.2 and s332_nrf52_7.0.1

Our objective is to pair and un-pair ANT sensors. So far pairing multiple ANT sensors and snding the data via BLE works fine. But when we do try to un-pair sensors by closing the channel, the device does restarts.

For that we did try to use sd_ant_channel_close() function. We did use it in our event and in main while loop with a dalay as well. We did try with sd_ant_channel_unassign() function after closing the channel as well.

Is there some sequence that we are missing? Below is our channel init code. Thank you.

static void ANT_profile_HRM_setup(uint8_t ant_channel_no, uint32_t ant_device_no)
{
/** @snippet [ANT HRM RX Profile Setup] */
       
    uint32_t err_code = sd_ant_lib_config_set(ANT_LIB_CONFIG_MESG_OUT_INC_DEVICE_ID);
    APP_ERROR_CHECK(err_code);

        ant_channel_config_t channel_config =
    {
        .channel_number     = ant_channel_no,
        .channel_type       = CHANNEL_TYPE_SLAVE,
        .ext_assign         = HRM_EXT_ASSIGN,
        .rf_freq            = HRM_ANTPLUS_RF_FREQ,
        .transmission_type  = CHAN_ID_TRANS_TYPE,
        .device_type        = HRM_DEVICE_TYPE,
        .device_number      = ant_device_no,
        .channel_period     = HRM_MSG_PERIOD_1Hz,
        .network_number     = ANTPLUS_NETWORK_NUM,
    };

    const ant_search_config_t ant_search_config =
    {
        .channel_number        = ant_channel_no,
        .low_priority_timeout  = ANT_LOW_PRIORITY_TIMEOUT_DISABLE,
        .high_priority_timeout = ANT_HIGH_PRIORITY_SEARCH_DISABLE,
        .search_sharing_cycles = ANT_SEARCH_SHARING_CYCLES_DISABLE,
        .search_priority       = ANT_SEARCH_PRIORITY_DEFAULT,
        .waveform              = ANT_WAVEFORM_DEFAULT,
    };


    err_code = ant_hrm_disp_init(&m_ant_hrm, &channel_config, ant_tmp_evt_handler);
    APP_ERROR_CHECK(err_code);

        // Set search timeout
        err_code = ant_search_init(&ant_search_config);
        APP_ERROR_CHECK(err_code);

    err_code = sd_ant_channel_open(ant_channel_no);
    APP_ERROR_CHECK(err_code);


    err_code = ant_state_indicator_channel_opened();
    APP_ERROR_CHECK(err_code);

/** @snippet [ANT HRM RX Profile Setup] */
}

Best regards, Ram

Related