Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * This software is subject to the ANT+ Shared Source License
- * www.thisisant.com/swlicenses
- * Copyright (c) Dynastream Innovations, Inc. 2012
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- * 1) Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * 2) Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3) Neither the name of Dynastream nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior
- * written permission.
- *
- * The following actions are prohibited:
- * 1) Redistribution of source code containing the ANT+ Network
- * Key. The ANT+ Network Key is available to ANT+ Adopters.
- * Please refer to http://thisisant.com to become an ANT+
- * Adopter and access the key.
- *
- * 2) Reverse engineering, decompilation, and/or disassembly of
- * software provided in binary form under this license.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE HEREBY
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; DAMAGE TO ANY DEVICE, LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE. SOME STATES DO NOT ALLOW
- * THE EXCLUSION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE
- * ABOVE LIMITATIONS MAY NOT APPLY TO YOU.
- *
- */
- /**@file
- * @defgroup ant_bpwr_sensor_main ANT Bicycle Power sensor example
- * @{
- * @ingroup nrf_ant_bicycle_power
- *
- * @brief Example of ANT Bicycle Power profile display.
- *
- * Before compiling this example for NRF52, complete the following steps:
- * - Download the S212 SoftDevice from <a href="https://www.thisisant.com/developer/components/nrf52832" target="_blank">thisisant.com</a>.
- * - Extract the downloaded zip file and copy the S212 SoftDevice headers to <tt>\<InstallFolder\>/components/softdevice/s212/headers</tt>.
- * If you are using Keil packs, copy the files into a @c headers folder in your example folder.
- * - Make sure that @ref ANT_LICENSE_KEY in @c nrf_sdm.h is uncommented.
- */
- #include <stdio.h>
- #include "nrf.h"
- #include "bsp.h"
- #include "hardfault.h"
- #include "app_error.h"
- #include "app_timer.h"
- #include "nrf_pwr_mgmt.h"
- #include "nrf_sdh.h"
- #include "nrf_sdh_ant.h"
- #include "ant_key_manager.h"
- #include "diy_fec.h"
- #include "ant_state_indicator.h"
- #include "nrf_log.h"
- #include "nrf_log_ctrl.h"
- #include "nrf_log_default_backends.h"
- #include "ant_interface.h"
- #include "ant_search_config.h"
- #include "trainer_ctrl.h"
- #define APP_ANT_OBSERVER_PRIO 1
- static ant_diy_fec_profile_t m_ant_diy_fec;
- static const ant_channel_config_t m_diy_fec_channel_config =
- {
- .channel_number = DIY_FEC_CHANNEL_NUM,
- .channel_type = DIY_FEC_CHANNEL_TYPE,
- .ext_assign = DIY_FEC_EXT_ASSIGN,
- .rf_freq = DIY_FEC_ANTPLUS_RF_FREQ,
- .transmission_type = CHAN_ID_TRANS_TYPE,
- .device_type = 0x11,
- .device_number = CHAN_ID_DEV_NUM,
- .channel_period = DIY_FEC_MSG_PERIOD,
- .network_number = ANTPLUS_NETWORK_NUM,
- };
- NRF_SDH_ANT_OBSERVER(m_ant_observer, ANT_BPWR_ANT_OBSERVER_PRIO,
- ant_diy_fec_evt_handler, &m_ant_diy_fec);
- void local_ant_diy_fec_evt_handler(ant_diy_fec_profile_t * p_profile, ant_diy_fec_evt_t event)
- {
- nrf_pwr_mgmt_feed();
- switch (event)
- {
- case ANT_DIY_FEC_PAGE_80_UPDATED:
- /* fall through */
- case ANT_DIY_FEC_PAGE_81_UPDATED:
- NRF_LOG_INFO("Update %d\n",event);
- //ant_bpwr_simulator_one_iteration(&m_ant_bpwr_simulator, event);
- break;
- default:
- break;
- }
- }
- void bsp_evt_handler(bsp_event_t event)
- {
- switch (event)
- {
- case BSP_EVENT_KEY_0:
- // ant_bpwr_simulator_increment(&m_ant_bpwr_simulator);
- break;
- case BSP_EVENT_KEY_1:
- // ant_bpwr_simulator_decrement(&m_ant_bpwr_simulator);
- break;
- case BSP_EVENT_KEY_2:
- // ant_bpwr_calib_response(&m_ant_bpwr);
- break;
- default:
- break;
- }
- }
- /**
- * @brief Function for setup all thinks not directly associated with ANT stack/protocol.
- * @desc Initialization of: @n
- * - app_tarce for debug.
- * - app_timer, pre-setup for bsp.
- * - bsp for signaling LEDs and user buttons.
- */
- static void utils_setup(void)
- {
- ret_code_t err_code = NRF_LOG_INIT(NULL);
- APP_ERROR_CHECK(err_code);
- // Initialize and start a single continuous mode timer, which is used to update the event time
- // on the main data page.
- err_code = app_timer_init();
- APP_ERROR_CHECK(err_code);
- err_code = nrf_pwr_mgmt_init();
- APP_ERROR_CHECK(err_code);
- NRF_LOG_DEFAULT_BACKENDS_INIT();
- err_code = bsp_init(BSP_INIT_LED | BSP_INIT_BUTTONS,
- bsp_evt_handler);
- APP_ERROR_CHECK(err_code);
- // err_code = ant_state_indicator_init(m_ant_diy_fec.channel_number, DIY_FEC_CHANNEL_TYPE);
- // APP_ERROR_CHECK(err_code);
- }
- /**
- * @brief Function for ANT stack initialization.
- *
- * @details Initializes the SoftDevice and the ANT event interrupt.
- */
- static void softdevice_setup(void)
- {
- ret_code_t err_code = nrf_sdh_enable_request();
- APP_ERROR_CHECK(err_code);
- ASSERT(nrf_sdh_is_enabled());
- err_code = nrf_sdh_ant_enable();
- APP_ERROR_CHECK(err_code);
- err_code = ant_plus_key_set(ANTPLUS_NETWORK_NUM);
- APP_ERROR_CHECK(err_code);
- }
- /**
- * @brief Function for Bicycle Power profile initialization.
- *
- * @details Initializes the Bicycle Power profile and open ANT channel.
- */
- static void profile_setup(void)
- {
- /** @snippet [ANT BPWR TX Profile Setup] */
- ret_code_t err_code;
- NRF_LOG_INFO("profile_setup");
- #if 1
- err_code = ant_diy_fec_init(&m_ant_diy_fec,&m_diy_fec_channel_config);
- APP_ERROR_CHECK(err_code);
- // fill manufacturer's common data page.
- m_ant_diy_fec.page_80 = ANT_COMMON_page80(BPWR_HW_REVISION,
- BPWR_MANUFACTURER_ID,
- BPWR_MODEL_NUMBER);
- // fill product's common data page.
- m_ant_diy_fec.page_81 = ANT_COMMON_page81(BPWR_SW_REVISION_MAJOR,
- BPWR_SW_REVISION_MINOR,
- BPWR_SERIAL_NUMBER);
- err_code = ant_diy_fec_open(&m_ant_diy_fec);
- APP_ERROR_CHECK(err_code);
- #endif
- //err_code = ant_state_indicator_channel_opened();
- //APP_ERROR_CHECK(err_code);
- /** @snippet [ANT BPWR TX Profile Setup] */
- }
- /**@brief Function for application main entry, does not return.
- */
- int main(void)
- {
- utils_setup();
- NRF_LOG_INFO("DIY FEC main\n");
- trainer_ctrl_init();
- softdevice_setup();
- profile_setup();
- ant_search_uplink_setup();
- for (;;)
- {
- NRF_LOG_FLUSH();
- nrf_pwr_mgmt_run();
- //nrf_gpio_pin_toggle(led_pin1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement