handsfree-audio: Keep track whether defer_setup is enabled
authorVinicius Costa Gomes <vinicius.gomes@openbossa.org>
Mon, 15 Apr 2013 13:54:52 +0000 (10:54 -0300)
committerDenis Kenzior <denkenz@gmail.com>
Mon, 15 Apr 2013 12:07:23 +0000 (07:07 -0500)
'defer_setup' will be one of the inputs when enabling or disabling
support for wideband speech codecs, we will only enable wideband
speech support if the kernel supports deferred setup.

So, we have to have this information available, in this case it means
a global variable.

src/handsfree-audio.c

index 7f5b33c..fc3d15b 100644 (file)
@@ -66,6 +66,7 @@ static GSList *card_list = 0;
 static guint sco_watch = 0;
 static GSList *drivers = 0;
 static ofono_bool_t has_wideband = FALSE;
+static int defer_setup = 1;
 
 static void send_new_connection(const char *card, int fd, uint8_t codec)
 {
@@ -159,7 +160,7 @@ static int sco_init(void)
 {
        GIOChannel *sco_io;
        struct sockaddr_sco saddr;
-       int sk, defer_setup = 1;
+       int sk;
 
        sk = socket(PF_BLUETOOTH, SOCK_SEQPACKET | O_NONBLOCK | SOCK_CLOEXEC,
                                                                BTPROTO_SCO);
@@ -177,9 +178,11 @@ static int sco_init(void)
        }
 
        if (setsockopt(sk, SOL_BLUETOOTH, BT_DEFER_SETUP,
-                               &defer_setup, sizeof(defer_setup)) < 0)
+                               &defer_setup, sizeof(defer_setup)) < 0) {
+               defer_setup = 0;
                ofono_warn("Can't enable deferred setup: %s (%d)",
                                                strerror(errno), errno);
+       }
 
        if (listen(sk, 5) < 0) {
                close(sk);