ret_code_t pm_init(void) { ret_code_t err_code; err_code = pdb_register(pdb_evt_handler); if (err_code != NRF_SUCCESS) { if (err_code != NRF_ERROR_INVALID_STATE) { err_code = NRF_ERROR_INTERNAL; } return err_code; } err_code = sm_register(sm_evt_handler); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } err_code = gcm_init(gcm_evt_handler); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } err_code = im_register(im_evt_handler); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } m_pm.pairing_flag_id = ble_conn_state_user_flag_acquire(); if (m_pm.pairing_flag_id == BLE_CONN_STATE_USER_FLAG_INVALID) { return NRF_ERROR_INTERNAL; } m_pm.bonding_flag_id = ble_conn_state_user_flag_acquire(); if (m_pm.bonding_flag_id == BLE_CONN_STATE_USER_FLAG_INVALID) { return NRF_ERROR_INTERNAL; } m_pm.initialized = true; return NRF_SUCCESS; }
ret_code_t im_register(im_evt_handler_t evt_handler) { VERIFY_PARAM_NOT_NULL(evt_handler); ret_code_t err_code = NRF_SUCCESS; if (!MODULE_INITIALIZED) { internal_state_reset(); m_im.conn_state_user_flag_id = ble_conn_state_user_flag_acquire(); if (m_im.conn_state_user_flag_id == BLE_CONN_STATE_USER_FLAG_INVALID) { err_code = NRF_ERROR_NO_MEM; } else { err_code = pdb_register(pdb_evt_handler); } } if (err_code == NRF_SUCCESS) { if ((m_im.n_registrants < MAX_REGISTRANTS)) { m_im.evt_handlers[m_im.n_registrants++] = evt_handler; } else { err_code = NRF_ERROR_NO_MEM; } } return err_code; }
ret_code_t gcm_init(gcm_evt_handler_t evt_handler) { VERIFY_PARAM_NOT_NULL(evt_handler); ret_code_t err_code; err_code = gscm_init(gscm_evt_handler); VERIFY_SUCCESS(err_code); err_code = gccm_init(gccm_evt_handler); VERIFY_SUCCESS(err_code); internal_state_reset(&m_gcm); m_gcm.evt_handler = evt_handler; err_code = im_register(im_evt_handler); VERIFY_SUCCESS(err_code); err_code = smd_register(smd_evt_handler); VERIFY_SUCCESS(err_code); m_gcm.flag_id_local_db_update_pending = ble_conn_state_user_flag_acquire(); m_gcm.flag_id_local_db_apply_pending = ble_conn_state_user_flag_acquire(); m_gcm.flag_id_service_changed_pending = ble_conn_state_user_flag_acquire(); m_gcm.flag_id_service_changed_sent = ble_conn_state_user_flag_acquire(); if ((m_gcm.flag_id_local_db_update_pending == BLE_CONN_STATE_USER_FLAG_INVALID) || (m_gcm.flag_id_local_db_apply_pending == BLE_CONN_STATE_USER_FLAG_INVALID) || (m_gcm.flag_id_service_changed_pending == BLE_CONN_STATE_USER_FLAG_INVALID) || (m_gcm.flag_id_service_changed_sent == BLE_CONN_STATE_USER_FLAG_INVALID)) { err_code = NRF_ERROR_INTERNAL; } return err_code; }
ret_code_t im_init(void) { NRF_PM_DEBUG_CHECK(!m_module_initialized); internal_state_reset(); m_conn_state_user_flag_id = ble_conn_state_user_flag_acquire(); if (m_conn_state_user_flag_id == BLE_CONN_STATE_USER_FLAG_INVALID) { return NRF_ERROR_INTERNAL; } #if (NRF_SD_BLE_API_VERSION == 2) ret_code_t ret_code = sd_ble_gap_address_get(&m_current_id_addr); if (ret_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } #endif m_module_initialized = true; return NRF_SUCCESS; }
ret_code_t pm_init(void) { ret_code_t err_code; err_code = pds_init(); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } err_code = pdb_init(); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } err_code = sm_init(); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } err_code = smd_init(); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } err_code = gcm_init(); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } err_code = gscm_init(); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } err_code = im_init(); if (err_code != NRF_SUCCESS) { return NRF_ERROR_INTERNAL; } internal_state_reset(); m_pairing_flag_id = ble_conn_state_user_flag_acquire(); if (m_pairing_flag_id == BLE_CONN_STATE_USER_FLAG_INVALID) { return NRF_ERROR_INTERNAL; } m_bonding_flag_id = ble_conn_state_user_flag_acquire(); if (m_bonding_flag_id == BLE_CONN_STATE_USER_FLAG_INVALID) { return NRF_ERROR_INTERNAL; } m_peer_rank_initialized = false; m_module_initialized = true; return NRF_SUCCESS; }