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 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; }