Re: [PATCH] device: Fix timeout=1 to remove the device immediately

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Tue, Jun 21, 2022 at 6:38 PM 王有万 <wangyouwan@xxxxxxxxxxxxx> wrote:
>
> thank you!
> This modification is consistent with my code
> https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=5ebc2b5a3e48dbe67a2d315979b096a1b4d1eb99
>
> Here are my steps, I found that it takes two times to remove the connected device
> When removing for the first time btd_adapter_remove_device(dev->adapter, dev) func will not be called
>
> [bluetooth]# connect 40:EF:4C:0C:11:F0
> Attempting to connect to 40:EF:4C:0C:11:F0
> [CHG] Device 40:EF:4C:0C:11:F0 Connected: yes
> Connection successful
> [CHG] Device 40:EF:4C:0C:11:F0 ServicesResolved: yes
> [UFO]# remove 40:EF:4C:0C:11:F0
> [CHG] Device 40:EF:4C:0C:11:F0 ServicesResolved: no
> Device has been removed
> [CHG] Device 40:EF:4C:0C:11:F0 Connected: no
> [bluetooth]# info 40:EF:4C:0C:11:F0
> Device 40:EF:4C:0C:11:F0 (public)
>         Name: UFO
>         Alias: UFO
>         Class: 0x00240418
>         Icon: audio-headphones
>         Paired: yes
>         Trusted: no
>         Blocked: no
>         Connected: no
>         LegacyPairing: no
>         UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)
>         UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
>         UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
>         UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
>         UUID: Handsfree                 (0000111e-0000-1000-8000-00805f9b34fb)
>         UUID: Phonebook Access Server   (0000112f-0000-1000-8000-00805f9b34fb)
> [bluetooth]#
>
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/device.c:btd_device_set_temporary() temporary 1
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37a84200: device 40:EF:4C:0C:11:F0 profile avrcp-controller state changed: connected -> disconnecting (0)
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avrcp.c:avrcp_disconnect() path /org/bluez/hci0/dev_40_EF_4C_0C_11_F0
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37aaeac0: device 40:EF:4C:0C:11:F0 profile audio-avrcp-target state changed: connected -> disconnected (0)
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37a84200: device 40:EF:4C:0C:11:F0 profile avrcp-controller state changed: disconnecting -> disconnected (0)
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avrcp.c:controller_destroy() 0x558c37a4e600
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avrcp.c:target_destroy() 0x558c37a47e20
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avctp.c:avctp_set_state() AVCTP Disconnected
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avctp.c:avctp_disconnected() AVCTP: closing uinput for 40:EF:4C:0C:11:F0
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37aaeb30: device 40:EF:4C:0C:11:F0 profile a2dp-sink state changed: connected -> disconnecting (0)
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/a2dp.c:a2dp_sink_disconnect() path /org/bluez/hci0/dev_40_EF_4C_0C_11_F0
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37a80790: device 40:EF:4C:0C:11:F0 profile Hands-Free Voice gateway state changed: connected -> disconnecting (0)
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37a869e0: device 40:EF:4C:0C:11:F0 profile Phone Book Access state changed: connected -> disconnecting (0)
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/adapter.c:remove_accept_list_complete() 40:EF:4C:0C:11:F0 removed from kernel accept list
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37a869e0: device 40:EF:4C:0C:11:F0 profile Phone Book Access state changed: disconnecting -> disconnected (0)
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37a869e0: ref=1
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37a80790: device 40:EF:4C:0C:11:F0 profile Hands-Free Voice gateway state changed: disconnecting -> disconnected (0)
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37a80790: ref=2
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:session_cb()
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_parse_resp() CLOSE request succeeded
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_sep_set_state() stream state changed: STREAMING -> CLOSING
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/a2dp.c:close_cfm() Source 0x558c37a73050: Close_Cfm
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_sep_set_state() stream state changed: CLOSING -> IDLE
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/transport.c:media_transport_remove_owner() Transport /org/bluez/hci0/dev_40_EF_4C_0C_11_F0/sep1/fd10 Owner :1.1779
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/transport.c:media_owner_free() Owner :1.1779
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/transport.c:transport_set_state() State changed /org/bluez/hci0/dev_40_EF_4C_0C_11_F0/sep1/fd10: TRANSPORT_STATE_ACTIVE -> TRANSPORT_STATE_IDLE
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/a2dp.c:a2dp_sep_unlock() SEP 0x558c37a73050 unlocked
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_unref() 0x558c37a61720: ref=1
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37aaeb30: device 40:EF:4C:0C:11:F0 profile a2dp-sink state changed: disconnecting -> disconnected (0)
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_unref() 0x558c37a61720: ref=0
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_ref() 0x558c37a61720: ref=1
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:set_disconnect_timer() timeout 0
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_ref() 0x558c37a61720: ref=2
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:connection_lost() Disconnected from 40:EF:4C:0C:11:F0
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/sink.c:sink_set_state() State changed /org/bluez/hci0/dev_40_EF_4C_0C_11_F0: SINK_STATE_PLAYING -> SINK_STATE_DISCONNECTED
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/a2dp.c:channel_remove() chan 0x558c37a4e530
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_unref() 0x558c37a61720: ref=1
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_unref() 0x558c37a61720: ref=0
> 6月 20 15:05:41 uos-PC bluetoothd[10094]: profiles/audio/avdtp.c:avdtp_free() 0x558c37a61720
> 6月 20 15:05:44 uos-PC bluetoothd[10094]: src/adapter.c:dev_disconnected() Device 40:EF:4C:0C:11:F0 disconnected, reason 2
> 6月 20 15:05:44 uos-PC bluetoothd[10094]: src/adapter.c:adapter_remove_connection()
> 6月 20 15:05:44 uos-PC bluetoothd[10094]: plugins/policy.c:disconnect_cb() reason 2
> 6月 20 15:05:44 uos-PC bluetoothd[10094]: src/adapter.c:bonding_attempt_complete() hci0 bdaddr 40:EF:4C:0C:11:F0 type 0 status 0xe
> 6月 20 15:05:44 uos-PC bluetoothd[10094]: src/device.c:device_bonding_complete() bonding (nil) status 0x0e
> 6月 20 15:05:44 uos-PC bluetoothd[10094]: src/device.c:device_bonding_failed() status 14
> 6月 20 15:05:44 uos-PC bluetoothd[10094]: src/adapter.c:resume_discovery()
>
>
> [bluetooth]# remove 40:EF:4C:0C:11:F0
>
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/device.c:device_remove() Removing device /org/bluez/hci0/dev_40_EF_4C_0C_11_F0
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37a84200: device 40:EF:4C:0C:11:F0 profile avrcp-controller state changed: disconnected -> unavailable (0)
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: profiles/audio/control.c:path_unregister() Unregistered interface org.bluez.MediaControl1 on path /org/bluez/hci0/dev_40_EF_4C_0C_11_F0
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37aaeac0: ref=1
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37a84200: ref=1
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37a84200: ref=0
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37aaeac0: device 40:EF:4C:0C:11:F0 profile audio-avrcp-target state changed: disconnected -> unavailable (0)
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37aaeac0: ref=0
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37aaeb30: device 40:EF:4C:0C:11:F0 profile a2dp-sink state changed: disconnected -> unavailable (0)
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37aaeb30: ref=2
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: profiles/audio/sink.c:sink_unregister() /org/bluez/hci0/dev_40_EF_4C_0C_11_F0
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37aaeb30: ref=1
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37aaeb30: ref=0
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37a80790: device 40:EF:4C:0C:11:F0 profile Hands-Free Voice gateway state changed: disconnected -> unavailable (0)
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37a80790: ref=1
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/profile.c:ext_device_remove() Hands-Free Voice gateway
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37a80790: ref=0
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:change_state() 0x558c37a869e0: device 40:EF:4C:0C:11:F0 profile Phone Book Access state changed: disconnected -> unavailable (0)
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/profile.c:ext_device_remove() Phone Book Access
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/service.c:btd_service_unref() 0x558c37a869e0: ref=0
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/device.c:btd_device_unref() Freeing device /org/bluez/hci0/dev_40_EF_4C_0C_11_F0
> 6月 20 15:08:32 uos-PC bluetoothd[10094]: src/device.c:device_free() 0x558c37a93860

How about the following fix:

https://patchwork.kernel.org/project/bluetooth/patch/20220622190053.2605233-1-luiz.dentz@xxxxxxxxx/

> ------------------ Original ------------------
> From:  "Luiz Augusto von Dentz"<luiz.dentz@xxxxxxxxx>;
> Date:  Wed, Jun 22, 2022 02:39 AM
> To:  "Youwan Wang"<wangyouwan@xxxxxxxxxxxxx>;
> Cc:  "linux-bluetooth@xxxxxxxxxxxxxxx"<linux-bluetooth@xxxxxxxxxxxxxxx>;
> Subject:  Re: [PATCH] device: Fix timeout=1 to remove the device immediately
>
> Hi Youwan,
>
> On Tue, Jun 21, 2022 at 6:55 AM Youwan Wang <wangyouwan@xxxxxxxxxxxxx> wrote:
> >
> >  When I use bluetoothctl to remove a device,
> >  I find that the device has not been deleted.
> >
> >  static void set_temporary_timer(device, 0)
> >  {
> >      ......
> >         if (!timeout)
> >                 return;
> >    ......
> >   }
> >
> >   Now I want to delete the connected device
> >     when call remove.
> >   I don't know whether this modification is
> >     feasible, please give me some suggestions.
> > ---
> >  src/device.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/src/device.c b/src/device.c
> > index 7b451e458..d38ad74fc 100644
> > --- a/src/device.c
> > +++ b/src/device.c
> > @@ -3159,7 +3159,7 @@ void device_remove_connection(struct btd_device *device, uint8_t bdaddr_type)
> >                                                 DEVICE_INTERFACE, "Connected");
> >
> >         if (remove_device)
> > -               set_temporary_timer(device, 0);
> > +               set_temporary_timer(device, 1);
> >  }
>
> Don't think this is right, in fact the original code could have been
> clearer since all we want is to call clear_temporary_timeout thus why
> we passed 0, perhaps you are after the following fix:
>
> https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=5ebc2b5a3e48dbe67a2d315979b096a1b4d1eb99
>
> >  guint device_add_disconnect_watch(struct btd_device *device,
> > --
> > 2.20.1
> >
> >
> >
>
>
> --
> Luiz Augusto von Dentz



-- 
Luiz Augusto von Dentz




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux