mirror of git://git.sysmocom.de/ofono
hfp_hf_bluez5: Add registering Audio Card
This patch registers the Handsfree Audio Card when the service level connection is established.
This commit is contained in:
parent
c7a3f3990a
commit
4ef4d620e4
|
@ -46,6 +46,7 @@
|
||||||
#include <ofono/netreg.h>
|
#include <ofono/netreg.h>
|
||||||
#include <ofono/voicecall.h>
|
#include <ofono/voicecall.h>
|
||||||
#include <ofono/call-volume.h>
|
#include <ofono/call-volume.h>
|
||||||
|
#include <ofono/handsfree-audio.h>
|
||||||
#include <ofono/handsfree.h>
|
#include <ofono/handsfree.h>
|
||||||
|
|
||||||
#include <drivers/hfpmodem/slc.h>
|
#include <drivers/hfpmodem/slc.h>
|
||||||
|
@ -61,6 +62,7 @@
|
||||||
struct hfp {
|
struct hfp {
|
||||||
struct hfp_slc_info info;
|
struct hfp_slc_info info;
|
||||||
DBusMessage *msg;
|
DBusMessage *msg;
|
||||||
|
struct ofono_handsfree_card *card;
|
||||||
};
|
};
|
||||||
|
|
||||||
static GDBusClient *bluez = NULL;
|
static GDBusClient *bluez = NULL;
|
||||||
|
@ -88,6 +90,8 @@ static void slc_established(gpointer userdata)
|
||||||
hfp->msg = NULL;
|
hfp->msg = NULL;
|
||||||
|
|
||||||
ofono_info("Service level connection established");
|
ofono_info("Service level connection established");
|
||||||
|
|
||||||
|
ofono_handsfree_card_register(hfp->card);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void slc_failed(gpointer userdata)
|
static void slc_failed(gpointer userdata)
|
||||||
|
@ -315,8 +319,11 @@ static DBusMessage *profile_new_connection(DBusConnection *conn,
|
||||||
{
|
{
|
||||||
struct hfp *hfp;
|
struct hfp *hfp;
|
||||||
struct ofono_modem *modem;
|
struct ofono_modem *modem;
|
||||||
|
struct sockaddr_rc saddr;
|
||||||
|
socklen_t optlen;
|
||||||
DBusMessageIter entry;
|
DBusMessageIter entry;
|
||||||
const char *device;
|
const char *device;
|
||||||
|
char remote[18];
|
||||||
int fd, err;
|
int fd, err;
|
||||||
|
|
||||||
DBG("Profile handler NewConnection");
|
DBG("Profile handler NewConnection");
|
||||||
|
@ -353,8 +360,22 @@ static DBusMessage *profile_new_connection(DBusConnection *conn,
|
||||||
"Not enough resources");
|
"Not enough resources");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(&saddr, 0, sizeof(saddr));
|
||||||
|
optlen = sizeof(saddr);
|
||||||
|
|
||||||
|
if (getpeername(fd, (struct sockaddr *) &saddr, &optlen) < 0) {
|
||||||
|
err = errno;
|
||||||
|
ofono_error("RFCOMM getpeername(): %s (%d)", strerror(err),
|
||||||
|
err);
|
||||||
|
close(fd);
|
||||||
|
goto invalid;
|
||||||
|
}
|
||||||
|
|
||||||
|
bt_ba2str(&saddr.rc_bdaddr, remote);
|
||||||
|
|
||||||
hfp = ofono_modem_get_data(modem);
|
hfp = ofono_modem_get_data(modem);
|
||||||
hfp->msg = dbus_message_ref(msg);
|
hfp->msg = dbus_message_ref(msg);
|
||||||
|
hfp->card = ofono_handsfree_card_create(remote, NULL);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue