Lines Matching refs:dev
104 static void device_free(struct audio_device *dev)
106 struct dev_priv *priv = dev->priv;
108 if (dev->conn)
109 dbus_connection_unref(dev->conn);
111 btd_device_unref(dev->btd_dev);
115 audio_device_cancel_authorization(dev, NULL, NULL);
127 device_remove_disconnect_watch(dev->btd_dev,
132 g_free(dev->path);
133 g_free(dev);
153 struct audio_device *dev = user_data;
155 dev->priv->control_timer = 0;
157 if (dev->control)
158 avrcp_connect(dev);
163 static gboolean device_set_control_timer(struct audio_device *dev)
165 struct dev_priv *priv = dev->priv;
167 if (!dev->control)
175 dev);
180 static void device_remove_control_timer(struct audio_device *dev)
182 if (dev->priv->control_timer)
183 g_source_remove(dev->priv->control_timer);
184 dev->priv->control_timer = 0;
187 static void device_remove_avdtp_timer(struct audio_device *dev)
189 if (dev->priv->avdtp_timer)
190 g_source_remove(dev->priv->avdtp_timer);
191 dev->priv->avdtp_timer = 0;
194 static void device_remove_headset_timer(struct audio_device *dev)
196 if (dev->priv->headset_timer)
197 g_source_remove(dev->priv->headset_timer);
198 dev->priv->headset_timer = 0;
204 struct audio_device *dev = user_data;
205 struct dev_priv *priv = dev->priv;
215 device_remove_control_timer(dev);
216 device_remove_avdtp_timer(dev);
217 device_remove_headset_timer(dev);
219 if (dev->control)
220 avrcp_disconnect(dev);
222 if (dev->sink && priv->sink_state != SINK_STATE_DISCONNECTED)
223 sink_shutdown(dev->sink);
225 headset_shutdown(dev);
230 static void device_set_state(struct audio_device *dev, audio_state_t new_state)
232 struct dev_priv *priv = dev->priv;
244 device_remove_disconnect_watch(dev->btd_dev,
249 priv->dc_id = device_add_disconnect_watch(dev->btd_dev,
250 disconnect_cb, dev, NULL);
252 if (dev->priv->state == new_state) {
258 dev->priv->state = new_state;
265 g_dbus_send_message(dev->conn, reply);
279 g_dbus_send_message(dev->conn, reply);
282 emit_property_changed(dev->conn, dev->path,
289 struct audio_device *dev = user_data;
291 dev->priv->avdtp_timer = 0;
293 if (dev->sink) {
294 struct avdtp *session = avdtp_get(&dev->src, &dev->dst);
299 sink_setup_stream(dev->sink, session);
306 static gboolean device_set_avdtp_timer(struct audio_device *dev)
308 struct dev_priv *priv = dev->priv;
310 if (!dev->sink)
318 dev);
325 struct audio_device *dev = user_data;
326 struct dev_priv *priv = dev->priv;
328 dev->priv->headset_timer = 0;
330 if (dev->headset == NULL)
333 if (headset_config_stream(dev, FALSE, NULL, NULL) == 0) {
337 device_set_state(dev, AUDIO_STATE_CONNECTED);
343 static gboolean device_set_headset_timer(struct audio_device *dev)
345 struct dev_priv *priv = dev->priv;
347 if (!dev->headset)
354 headset_connect_timeout, dev);
359 static void device_avdtp_cb(struct audio_device *dev, struct avdtp *session,
364 if (!dev->sink || !dev->control)
369 device_set_control_timer(dev);
371 avrcp_connect(dev);
375 static void device_sink_cb(struct audio_device *dev,
380 struct dev_priv *priv = dev->priv;
382 if (!dev->sink)
389 if (dev->control) {
390 device_remove_control_timer(dev);
391 avrcp_disconnect(dev);
395 headset_shutdown(dev);
399 device_set_state(dev, AUDIO_STATE_DISCONNECTED);
405 device_set_state(dev, AUDIO_STATE_CONNECTED);
412 device_remove_avdtp_timer(dev);
414 device_set_state(dev, AUDIO_STATE_CONNECTING);
420 android_set_high_priority(&dev->dst);
422 if (dev->auto_connect) {
423 if (!dev->headset)
424 device_set_state(dev, AUDIO_STATE_CONNECTED);
426 device_set_headset_timer(dev);
430 device_set_state(dev, AUDIO_STATE_CONNECTED);
433 device_set_state(dev, AUDIO_STATE_CONNECTED);
440 static void device_avctp_cb(struct audio_device *dev,
445 if (!dev->control)
448 dev->priv->avctp_state = new_state;
454 device_remove_control_timer(dev);
461 static void device_headset_cb(struct audio_device *dev,
466 struct dev_priv *priv = dev->priv;
468 if (!dev->headset)
475 device_remove_avdtp_timer(dev);
476 if (priv->sink_state != SINK_STATE_DISCONNECTED && dev->sink &&
478 sink_shutdown(dev->sink);
482 device_set_state(dev, AUDIO_STATE_DISCONNECTED);
486 device_set_state(dev, AUDIO_STATE_CONNECTED);
489 device_remove_headset_timer(dev);
491 device_set_state(dev, AUDIO_STATE_CONNECTING);
498 if (dev->auto_connect) {
499 if (!dev->sink)
500 device_set_state(dev, AUDIO_STATE_CONNECTED);
502 device_set_avdtp_timer(dev);
505 device_set_state(dev, AUDIO_STATE_CONNECTED);
508 device_set_state(dev, AUDIO_STATE_CONNECTED);
520 struct audio_device *dev = data;
521 struct dev_priv *priv = dev->priv;
528 dev->auto_connect = TRUE;
530 if (dev->headset)
531 headset_config_stream(dev, FALSE, NULL, NULL);
533 if (priv->state != AUDIO_STATE_CONNECTING && dev->sink) {
534 struct avdtp *session = avdtp_get(&dev->src, &dev->dst);
540 sink_setup_stream(dev->sink, session);
557 struct audio_device *dev = data;
558 struct dev_priv *priv = dev->priv;
568 if (dev->control) {
569 device_remove_control_timer(dev);
570 avrcp_disconnect(dev);
573 if (dev->sink && priv->sink_state != SINK_STATE_DISCONNECTED)
574 sink_shutdown(dev->sink);
576 headset_shutdown(dev);
634 struct audio_device *dev;
639 dev = g_new0(struct audio_device, 1);
641 dev->btd_dev = btd_device_ref(device);
642 dev->path = g_strdup(path);
643 bacpy(&dev->dst, dst);
644 bacpy(&dev->src, src);
645 dev->conn = dbus_connection_ref(conn);
646 dev->priv = g_new0(struct dev_priv, 1);
647 dev->priv->state = AUDIO_STATE_DISCONNECTED;
649 if (!g_dbus_register_interface(dev->conn, dev->path,
652 dev, NULL)) {
654 dev->path);
655 device_free(dev);
660 dev->path);
674 return dev;
677 dev,
681 if ((dev->sink || dev->source) &&
682 avdtp_is_connected(&dev->src, &dev->dst))
684 if (dev->headset && headset_is_active(dev))
686 } else if (!strcmp(interface, AUDIO_SINK_INTERFACE) && dev->sink &&
687 avdtp_is_connected(&dev->src, &dev->dst))
689 else if (!strcmp(interface, AUDIO_SOURCE_INTERFACE) && dev->source &&
690 avdtp_is_connected(&dev->src, &dev->dst))
692 else if (!strcmp(interface, AUDIO_HEADSET_INTERFACE) && dev->headset &&
693 headset_is_active(dev))
695 else if (!strcmp(interface, AUDIO_CONTROL_INTERFACE) && dev->control &&
696 control_is_active(dev))
698 else if (!strcmp(interface, AUDIO_GATEWAY_INTERFACE) && dev->gateway &&
699 gateway_is_connected(dev))
737 struct audio_device *dev = user_data;
738 struct dev_priv *priv = dev->priv;
754 struct audio_device *dev = user_data;
755 struct dev_priv *priv = dev->priv;
759 auth_cb(NULL, dev);
764 static gboolean audio_device_is_connected(struct audio_device *dev)
766 if (dev->headset) {
767 headset_state_t state = headset_get_state(dev);
775 if (dev->sink) {
776 sink_state_t state = sink_get_state(dev);
783 if (dev->source) {
784 source_state_t state = source_get_state(dev);
794 int audio_device_request_authorization(struct audio_device *dev,
798 struct dev_priv *priv = dev->priv;
813 if (priv->authorized || audio_device_is_connected(dev)) {
814 priv->auth_idle_id = g_idle_add(auth_idle_cb, dev);
818 err = btd_request_authorization(&dev->src, &dev->dst, uuid, auth_cb,
819 dev);
828 int audio_device_cancel_authorization(struct audio_device *dev,
831 struct dev_priv *priv = dev->priv;
854 btd_cancel_authorization(&dev->src, &dev->dst);
860 void audio_device_set_authorized(struct audio_device *dev, gboolean auth)
862 struct dev_priv *priv = dev->priv;