#pragma once #include #include #include // #include "app_scheduler.h" #include "app_timer.h" #include "app_uart.h" #include "app_util_platform.h" #include "ble_advdata.h" #include "ble_advertising.h" #include "ble_conn_params.h" #include "ble_hci.h" #include "ble_nus.h" #include "bsp_btn_ble.h" #include "diskio_blkdev.h" #include "ff.h" #include "nordic_common.h" #include "nrf.h" #include "nrf_ble_gatt.h" #include "nrf_ble_qwr.h" #include "nrf_block_dev_sdc.h" #include "nrf_delay.h" #include "nrf_drv_pwm.h" #include "nrf_drv_saadc.h" #include "nrf_drv_spi.h" #include "nrf_drv_twi.h" #include "nrf_drv_wdt.h" #include "nrf_gpio.h" #include "nrf_log.h" #include "nrf_log_ctrl.h" #include "nrf_log_default_backends.h" #include "nrf_pwr_mgmt.h" #include "nrf_sdh.h" #include "nrf_sdh_ble.h" #include "nrf_sdh_soc.h" // #define APP_BLE_CONN_CFG_TAG 1 /**< A tag identifying the SoftDevice BLE configuration. */ // #define ZNORDIC_SCHED_INIT(EVENT_SIZE, QUEUE_SIZE) APP_SCHED_INIT(EVENT_SIZE, QUEUE_SIZE) /******************************************************************************* * UTILS * *******************************************************************************/ typedef struct tm ztm_t; void wd_init(); void wd_feed(); void znordic_init(); void znordic_init_without_wd(); void znordic_loop(); void znrf_gpio_cfg_output(uint32_t pin_number, nrf_gpio_pin_pull_t pull); int16_t znrf_adc_channel_read_val(uint16_t channel); bool znordic_rtc_has_setted(); void znordic_rtc_settime_s(uint32_t timestamp_s); uint32_t znordic_rtc_gettime_s(void); uint32_t znordic_getpower_on_s(void); // 获得上电时间 uint32_t znordic_getpower_on_ms(void); // 最小精度125ms uint32_t znordic_haspassed_ms(uint32_t last); void znordic_rtc_gettime(ztm_t* now); void znordic_rtc_settime(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t min, uint8_t sec); void znordic_force_flush_log(); const char* fmt(const char* fmt, ...); const char* hex2str(const uint8_t* data, uint16_t len); void nrf_log_backend_uart_tx_raw(char const* p_buffer, size_t len); /******************************************************************************* * LOG * *******************************************************************************/ #define ZLOGI(...) NRF_LOG_INFO(__VA_ARGS__) #define ZLOGE(...) NRF_LOG_ERROR(__VA_ARGS__) #define ZLOGW(...) NRF_LOG_WARNING(__VA_ARGS__) #define ZLOGD(...) NRF_LOG_DEBUG(__VA_ARGS__) #define ZLOGI_BLOCK(...) \ { \ NRF_LOG_INFO(__VA_ARGS__); \ znordic_force_flush_log(); \ } #define ZLOGE_BLOCK(...) \ { \ NRF_LOG_ERROR(__VA_ARGS__); \ znordic_force_flush_log(); \ } #define ZLOGW_BLOCK(...) \ { \ NRF_LOG_WARNING(__VA_ARGS__); \ znordic_force_flush_log(); \ } #define ZLOGD_BLOCK(...) \ { \ NRF_LOG_DEBUG(__VA_ARGS__); \ znordic_force_flush_log(); \ } #define ZARRAY_SIZE(array) (sizeof(array) / sizeof(array[0])) #define ZPIN(port, num) NRF_GPIO_PIN_MAP(port, num) #define ZERROR_CHECK(err_code) \ do { \ const uint32_t _zecode = (err_code); \ if (_zecode != NRF_SUCCESS) { \ ZLOGI("%s:%d ZERROR_CHECK(%s) fail:%d", __FILE__, __LINE__, #err_code, _zecode); \ APP_ERROR_CHECK(_zecode); \ } \ } while (0) #define ZASSERT(expr) \ do { \ if (!(expr)) { \ ZLOGI("%s:%d ZASSERT(%s) fail", __FILE__, __LINE__, #expr); \ APP_ERROR_CHECK_BOOL(false); \ } \ } while (0)