Bluez: "Connect()" 메소드 반환과 "Connected" 신호의 차이점

Bluez: "Connect()" 메소드 반환과 "Connected" 신호의 차이점

Bluez API 문서에 따르면(장치 인터페이스) 이 메서드의 반환은 Connect()하나 이상의 프로필에 대한 성공적인 연결을 나타냅니다.

잘못된 연결()

(뛰어 넘다)

이 방법은 하나 이상의 프로필이 성공적으로 연결된 경우 성공을 나타냅니다.

다음과 같이 설명되는 속성 도 있습니다 Connected.

부울 연결 [읽기 전용]

원격 장치가 현재 연결되어 있는지 여부를 나타냅니다. PropertiesChanged 신호는 이 상태의 변경을 나타냅니다.

실제로는 Connect()메서드 반환과 속성이 설정되었음을 속성에 알리는 신호 도착 사이에 몇 초의 간격이 있는 것으로 보입니다.PropertiesChangedConnectedtrue

bluetoothctl을 실행할 때:

[bluetooth]# connect XX:XX:XX:XX:XX:XX
Attempting to connect to XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
Connection successful

다음 메시지가 D-Bus에 캡처됩니다.

메서드 호출 시간=1646854334.904791 보낸 사람=:1.521 -> 대상=org.bluez Sequence=50 경로=/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX;Interface=org.bluez.Device1;Member=Connect
신호 시간=1646854336.902736 보낸 사람=:1.128 -> 대상=(빈 대상) 시퀀스=10521 경로=/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX;Interface=org.freedesktop.DBus.Properties;Member=속성 변경됨
   문자열 "org.bluez.Device1"
   대량 [
      사전 항목(
         문자열 "연결됨"
         변형 부울 참
      )
   ]
   대량 [
   ]

메소드 반환 시간=1646854339.349113 보낸 사람=:1.128 -> 대상=:1.521 순서=10522 응답 순서=50

이는 우리에게 다음을 알려줍니다.

  • 속성이 signal() 에 의해 보고된 내용으로 변경되면 [CHG] Device XX:XX:XX:XX:XX:XX Connected: yes화면에 나타납니다 .Connectedtruetime=1646854336.902736
  • Connection successful이 메시지는 메소드가 ( )를 반환할 때 나타납니다 .Connect()time=1646854339.349113
  • 이러한 이벤트는 2.4초 간격으로 발생합니다.

문제는 이 두 이벤트의 차이점은 무엇이며 실제로 블루투스 장치가 연결되었음을 나타내는 이벤트는 무엇입니까?

(장치 연결을 끊을 때 Disconnect()메서드 반환과 신호 도착 사이에 몇 초의 간격이 있습니다 0.003).


환경: Linux 커널: 5.4-179, Bluez: 5.62-r3, Systemd 249.9: .

답변1

신호의 도착은 Connected하위 계층 링크의 설정을 나타냅니다(전방십자인대).

메소드의 반환은 Connect()최소한 하나의 항목이 있음을 나타냅니다.윤곽연결에 성공했습니다(상위 수준 연결).

관련 정보