static void sim_state_watch(enum ofono_sim_state new_state, void *data) { struct ofono_modem *modem = data; DBusConnection *conn = ofono_dbus_get_connection(); if (new_state != OFONO_SIM_STATE_READY) { if (modems == NULL) return; modems = g_list_remove(modems, modem); if (modems != NULL) return; bt_unregister_profile(conn, HFP_AG_EXT_PROFILE_PATH); return; } if (__ofono_modem_find_atom(modem, OFONO_ATOM_TYPE_VOICECALL) == NULL) return; modems = g_list_append(modems, modem); if (modems->next != NULL) return; bt_register_profile(conn, HFP_AG_UUID, HFP_VERSION_1_5, "hfp_ag", HFP_AG_EXT_PROFILE_PATH, NULL, 0); }
static void hfp_exit(void) { DBusConnection *conn = ofono_dbus_get_connection(); bt_unregister_profile(conn, HFP_EXT_PROFILE_PATH); g_dbus_unregister_interface(conn, HFP_EXT_PROFILE_PATH, BLUEZ_PROFILE_INTERFACE); ofono_handsfree_card_driver_unregister(&hfp16_hf_driver); ofono_modem_driver_unregister(&hfp_driver); g_dbus_client_unref(bluez); ofono_handsfree_audio_unref(); }