#include "znordic.h" // #include #include #include #include // #include "aproject_config/config.h" #include "app_basic_service/device_version_info_mgr.h" #include "app_basic_service/zapp.h" #include "zble_module.h" #include "zdatachannel_service.h" #include "one_conduction_main.h" // ZDATACHANNEL_DEF(m_zhrs, 2 /*优先级*/, 1 /*client num*/); // 蓝牙服务 /** * @brief 蓝牙消息解析 */ void zdatachannel_data_handler(zdatachannel_evt_t *p_evt) { if (p_evt->type == ZDATACHANNEL_EVT_RX_DATA) { one_conduction_process_rx_packet((uint8_t *)p_evt->params.rx_data.p_data, p_evt->params.rx_data.length); } } void on_service_init(void) { ZLOGI("init zdatachannel service"); zdatachannel_init_t zdatachannle_init; memset(&zdatachannle_init, 0, sizeof(zdatachannle_init)); zdatachannle_init.data_handler = zdatachannel_data_handler; ZERROR_CHECK(zdatachannel_init(&m_zhrs, &zdatachannle_init)); } /*lint -save -e14 */ /** * Function is implemented as weak so that it can be overwritten by custom application error handler * when needed. */ void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info) { __disable_irq(); NRF_LOG_FINAL_FLUSH(); switch (id) { case NRF_FAULT_ID_SDK_ASSERT: { assert_info_t *p_info = (assert_info_t *)info; NRF_LOG_ERROR("ASSERTION FAILED at %s:%u", p_info->p_file_name, p_info->line_num); break; } case NRF_FAULT_ID_SDK_ERROR: { error_info_t *p_info = (error_info_t *)info; NRF_LOG_ERROR("ERROR %u [%s] at %s:%u\r\nPC at: 0x%08x", p_info->err_code, nrf_strerror_get(p_info->err_code), p_info->p_file_name, p_info->line_num, pc); NRF_LOG_ERROR("End of error report"); break; } default: NRF_LOG_ERROR("UNKNOWN FAULT at 0x%08X", pc); break; } NRF_BREAKPOINT_COND; // On assert, the system can only recover with a reset. NRF_LOG_WARNING("System reset"); NVIC_SystemReset(); } int main() { zapp_early_init(); znordic_init_without_wd(); zapp_init(); /******************************************************************************* * 蓝牙服务初始化 * *******************************************************************************/ static zble_module_cfg_t cfg; cfg.deviceName = device_info_read_sn_str(); cfg.on_service_init = on_service_init; zble_module_init(&cfg); /******************************************************************************* * 设备控制服务初始化 * *******************************************************************************/ one_conduction_main(); /******************************************************************************* * LOOP * *******************************************************************************/ zapp_start_schedule(); znordic_loop(); }