uint32_t ut_start(uint32_t rf_channel, uint8_t rf_address[5])
{
    uint32_t        err_code;
    
    if (m_timeslot_session_open)
    {
        return NRF_ERROR_INVALID_STATE;
    }
    
    m_uesb_config.rf_channel = rf_channel;
    memcpy(m_uesb_config.rx_address_p0, rf_address, 5);
    
    m_blocked_cancelled_count  = 0;

    err_code = sd_radio_session_open(radio_callback);
    if (err_code != NRF_SUCCESS)
    {
        return err_code;
    }

    err_code = sd_radio_request(&m_timeslot_req_earliest);
    if (err_code != NRF_SUCCESS)
    {
        return err_code;
    }
    
    m_timeslot_session_open = true;
    
    return NRF_SUCCESS;
}
void timeslot_handler_init(nrf_clock_lfclksrc_t lfclksrc)
{
    if (g_framework_initialized)
    {
        /* may happen with serial interface, can safely skip redundant inits */
        return;
    }
    uint32_t error;


    switch (lfclksrc)
    {
        case NRF_CLOCK_LFCLKSRC_XTAL_100_PPM:
            g_lfclk_ppm = 100;
            break;
        case NRF_CLOCK_LFCLKSRC_XTAL_150_PPM:
            g_lfclk_ppm = 150;
            break;
        case NRF_CLOCK_LFCLKSRC_XTAL_20_PPM:
            g_lfclk_ppm = 20;
            break;
        case NRF_CLOCK_LFCLKSRC_XTAL_250_PPM:
            g_lfclk_ppm = 250;
            break;
        case NRF_CLOCK_LFCLKSRC_XTAL_30_PPM:
            g_lfclk_ppm = 30;
            break;
        case NRF_CLOCK_LFCLKSRC_XTAL_500_PPM:
            g_lfclk_ppm = 500;
            break;
        case NRF_CLOCK_LFCLKSRC_XTAL_50_PPM:
            g_lfclk_ppm = 50;
            break;
        case NRF_CLOCK_LFCLKSRC_XTAL_75_PPM:
            g_lfclk_ppm = 75;
            break;
        default:
            g_lfclk_ppm = 250;
    }


    g_is_in_callback = false;
    g_framework_initialized = true;

    error = sd_nvic_EnableIRQ(SD_EVT_IRQn);
    APP_ERROR_CHECK(error);

    error = sd_radio_session_open(&radio_signal_callback);
    APP_ERROR_CHECK(error);

    timer_init();
    g_start_time_ref = NRF_RTC0->COUNTER;
    g_timeslot_length = TIMESLOT_SLOT_LENGTH;
    timeslot_order_earliest(g_timeslot_length, true);
}
void app_beacon_scanner_start(void)
{
    NRF_GPIO->DIRSET = (1UL << 18) | (1UL << 19);

    m_beacon_scanner.keep_running = true;
    m_beacon_scanner.is_running   = true;

    sd_radio_session_open(m_timeslot_callback);
    
    sd_radio_request(m_reqeust_earliest(NRF_RADIO_PRIORITY_NORMAL));
}
Example #4
0
btle_status_codes_t btle_scan_init (IRQn_Type irq)
{
  uint32_t err_code = NRF_SUCCESS;
  btle_status_codes_t status = BTLE_STATUS_CODE_SUCCESS;

  nrf_report_disp_init (irq);
  
  err_code = sd_radio_session_open (radio_cb);
  if (err_code != NRF_SUCCESS)
  {
    status = BTLE_STATUS_CODE_COMMAND_DISALLOWED;
  }
  
  return status;
}
Example #5
0
void timeslot_handler_init(void)
{
    uint32_t error;

    g_is_in_callback = false;
    g_framework_initialized = true;

    error = sd_nvic_EnableIRQ(SD_EVT_IRQn);
    APP_ERROR_CHECK(error);

    error = sd_radio_session_open(&radio_signal_callback);
    APP_ERROR_CHECK(error);
    g_start_time_ref = NRF_RTC0->COUNTER;
    g_timeslot_length = TIMESLOT_SLOT_LENGTH;
    timeslot_order_earliest(g_timeslot_length, true);
}
void app_beacon_start(void)
{
    m_beacon.keep_running = true;
    m_beacon.is_running   = true;

    uint32_t err_code = sd_radio_session_open(m_timeslot_callback);
    if ((err_code != NRF_SUCCESS) && (m_beacon.error_handler != NULL))
    {
        m_beacon.error_handler(err_code);
    }
    
    err_code = m_request_earliest(NRF_RADIO_PRIORITY_NORMAL);
    if ((err_code != NRF_SUCCESS) && (m_beacon.error_handler != NULL))
    {
        m_beacon.error_handler(err_code);
    }
}
void timeslot_start(void)
{
  sd_radio_session_open(timeslot_callback);
  sd_radio_request(&timeslot_request);
}