/**@brief Function for application main entry. Does not return. */ int main(void) { // ANT event message buffer. static ANT_MESSAGE ant_message_buffer; // Enable SoftDevice. uint32_t err_code; #if defined(S212) || defined(S332) err_code = sd_softdevice_enable(NRF_CLOCK_LFCLKSRC_XTAL_50_PPM, softdevice_assert_callback, ANT_LICENSE_KEY); #else err_code = sd_softdevice_enable(NRF_CLOCK_LFCLKSRC_XTAL_50_PPM, softdevice_assert_callback); #endif APP_ERROR_CHECK(err_code); // Set application IRQ to lowest priority. err_code = sd_nvic_SetPriority(SD_EVT_IRQn, NRF_APP_PRIORITY_LOW); APP_ERROR_CHECK(err_code); // Enable application IRQ (triggered from protocol). err_code = sd_nvic_EnableIRQ(SD_EVT_IRQn); APP_ERROR_CHECK(err_code); // Configure ant stack regards used channels. err_code = ant_stack_static_config(); APP_ERROR_CHECK(err_code); // Setup channel ant_channel_tx_broadcast_setup(); uint8_t event; uint8_t ant_channel; // Main loop. for (;;) { // Put CPU in sleep if possible. err_code = sd_app_evt_wait(); APP_ERROR_CHECK(err_code); // Extract and process all pending ANT events as long as there are any left. do { // Fetch the event. err_code = sd_ant_event_get(&ant_channel, &event, ant_message_buffer.aucMessage); if (err_code == NRF_SUCCESS) { // Handle event channel_event_handle(event, &ant_message_buffer); } } while (err_code == NRF_SUCCESS); } }
/**@brief Function for application main entry. Does not return. */ int main(void) { // ANT event message buffer. static uint8_t event_message_buffer[ANT_EVENT_MSG_BUFFER_MIN_SIZE]; // Configure pins LED0 and LED1 as outputs. nrf_gpio_range_cfg_output(LED_START, LED_STOP); // Set LED0 and LED1 high to indicate that the application is running. NRF_GPIO->OUTSET = (1 << LED0) | (1 << LED1); // Enable SoftDevice. uint32_t err_code; err_code = sd_softdevice_enable(NRF_CLOCK_LFCLKSRC_XTAL_50_PPM, softdevice_assert_callback); APP_ERROR_CHECK(err_code); // Set application IRQ to lowest priority. err_code = sd_nvic_SetPriority(PROTOCOL_EVENT_IRQn, NRF_APP_PRIORITY_LOW); APP_ERROR_CHECK(err_code); // Enable application IRQ (triggered from protocol). err_code = sd_nvic_EnableIRQ(PROTOCOL_EVENT_IRQn); APP_ERROR_CHECK(err_code); // Setup Channel_0 as a RX Slave. ant_channel_rx_broadcast_setup(); // Set LED0 and LED1 low to indicate that stack is enabled. NRF_GPIO->OUTCLR = (1 << LED0) | (1 << LED1); uint8_t event; uint8_t ant_channel; // Main loop. // Extract events from the stack below when // availabe and process them in the main loop. for (;;) { // Light up LED1 to indicate that CPU is going to sleep nrf_gpio_pin_set(LED1); // Put CPU in sleep if possible err_code = sd_app_event_wait(); APP_ERROR_CHECK(err_code); // Turn off LED on GPIO 9 to indicate that CPU is going out of sleep nrf_gpio_pin_clear(LED1); // Extract and process all pending ANT events as long as there are any left. do { // Fetch the event. err_code = sd_ant_event_get(&ant_channel, &event, event_message_buffer); if (err_code == NRF_SUCCESS) { // Handle event. switch (event) { case EVENT_RX: channel_event_handle(event_message_buffer); break; default: break; } } } while (err_code == NRF_SUCCESS); } }
/**@brief Function for application main entry. Does not return. */ int main(void) { // ANT event message buffer. static uint8_t event_message_buffer[ANT_EVENT_MSG_BUFFER_MIN_SIZE]; // Enable SoftDevice. uint32_t err_code; err_code = sd_softdevice_enable(NRF_CLOCK_LFCLKSRC_XTAL_50_PPM, softdevice_assert_callback); APP_ERROR_CHECK(err_code); APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_MAX_TIMERS, APP_TIMER_OP_QUEUE_SIZE, NULL); err_code = bsp_init(BSP_INIT_LED, APP_TIMER_TICKS(100, APP_TIMER_PRESCALER), NULL); APP_ERROR_CHECK(err_code); // Set application IRQ to lowest priority. err_code = sd_nvic_SetPriority(SD_EVT_IRQn, NRF_APP_PRIORITY_LOW); APP_ERROR_CHECK(err_code); // Enable application IRQ (triggered from protocol). err_code = sd_nvic_EnableIRQ(SD_EVT_IRQn); APP_ERROR_CHECK(err_code); // Setup Channel_0 as a RX Slave. ant_channel_rx_broadcast_setup(); uint8_t event; uint8_t ant_channel; // Main loop. // Extract events from the stack below when // availabe and process them in the main loop. for (;;) { // Use BSP_INDICATE_ALERT_0 to indicate sleep state err_code = bsp_indication_set(BSP_INDICATE_ALERT_0); APP_ERROR_CHECK(err_code); // Put CPU in sleep if possible err_code = sd_app_evt_wait(); APP_ERROR_CHECK(err_code); err_code = bsp_indication_set(BSP_INDICATE_ALERT_OFF); APP_ERROR_CHECK(err_code); // Extract and process all pending ANT events as long as there are any left. do { // Fetch the event. err_code = sd_ant_event_get(&ant_channel, &event, event_message_buffer); if (err_code == NRF_SUCCESS) { // Handle event. switch (event) { case EVENT_RX: channel_event_handle(event_message_buffer); break; default: break; } } } while (err_code == NRF_SUCCESS); } }