hfp_hf_bluez5: Add support for Enabling/Disabling the modem

Now that we have the support for sending the correct messages
to BlueZ, we are able to dynamically power up/down the HFP modem.

We add another property to the modem to be able to get the D-Bus
object path that represents the remote device.
This commit is contained in:
Vinicius Costa Gomes 2013-02-01 20:33:09 -03:00 committed by Denis Kenzior
parent a2b698dc40
commit 233b1ecca4
1 changed files with 37 additions and 2 deletions

View File

@ -180,6 +180,7 @@ static struct ofono_modem *modem_register(const char *device,
return NULL;
ofono_modem_set_string(modem, "Remote", device_address);
ofono_modem_set_string(modem, "DevicePath", device);
ofono_modem_set_name(modem, alias);
ofono_modem_register(modem);
@ -219,19 +220,53 @@ static void hfp_remove(struct ofono_modem *modem)
ofono_modem_set_data(modem, NULL);
}
static void connect_cb(gboolean success, gpointer user_data)
{
struct ofono_modem *modem = user_data;
if (success)
return;
ofono_modem_set_powered(modem, FALSE);
}
/* power up hardware */
static int hfp_enable(struct ofono_modem *modem)
{
const char *path;
DBG("%p", modem);
return 0;
path = ofono_modem_get_string(modem, "DevicePath");
/*
* We call Device1.ConnectProfile() with our UUID, and we hope for the
* NewConnection() method to be called, if ConnectProfile() fails we
* force the modem to powered off
*/
bt_connect_profile(ofono_dbus_get_connection(), path, HFP_AG_UUID,
connect_cb, modem);
return -EINPROGRESS;
}
static int hfp_disable(struct ofono_modem *modem)
{
const char *path;
DBG("%p", modem);
return 0;
path = ofono_modem_get_string(modem, "DevicePath");
/*
* We call Device1.DisconnectProfile() for the connection to be
* dropped, which will cause the profile RequestDisconnection() method
* to be called which will bring the modem down
*/
bt_disconnect_profile(ofono_dbus_get_connection(), path, HFP_AG_UUID,
NULL, NULL);
return -EINPROGRESS;
}
static void hfp_pre_sim(struct ofono_modem *modem)