connectivity/bluetooth/api/audio/shell/bap_broadcast_assistant.html · connectivity/bluetooth/api/audio/shell/bap_broadcast_assistant.rst 공식 원문 ↗

Zephyr 3.7.0 · Connectivity · Bluetooth · Audio Shell

BAP Broadcast Assistant shell

Phone·laptop이 저전력 device의 broadcast scan을 대신하고 BASS receive state를 관리합니다.

Official pathconnectivity/bluetooth/api/audio/shell/bap_broadcast_assistant.html
Source fileconnectivity/bluetooth/api/audio/shell/bap_broadcast_assistant.rst
Source versionZephyr 3.7.0
TranslationFull · reviewed

본문 기준: Zephyr 3.7.0 LTS3 · 이후 유지보수 패치는 별도입니다.

Part 1

요약·해설

Discovery, scan request, source 추가·수정과 encrypted broadcast code 전달을 설명합니다.

Role

Broadcast Assistant

Service

BASS

Examples

7

Transfer

PAST optional

Part 2

접을 수 있는 영어 원문 전체

영어 원문 전체 펼치기
원문 SHA-256 E7DC8AD59262C8B0006827B8392587F9B131C94B7A1FCB1075829C6837F1FDDC
Bluetooth: Broadcast Audio Profile Broadcast Assistant
######################################################

This document describes how to run the BAP Broadcast Assistant functionality.
Note that in the examples below, some lines of debug have been
removed to make this shorter and provide a better overview.

The Broadcast Assistant is responsible for offloading scan for a resource
restricted device, such that scanning does not drain the battery. The Broadcast
Assistant shall support scanning for periodic advertisements and may optionally
support the periodic advertisements synchronization transfer (PAST) protocol.

The Broadcast Assistant will typically be phones or laptops.
The Broadcast Assistant scans for periodic advertisements and transfer
information to the server.

It is necessary to have
:kconfig:option:`CONFIG_BT_BAP_BROADCAST_ASSISTANT_LOG_LEVEL_DBG` enabled for
using the Broadcast Assistant interactively.

When the Bluetooth stack has been initialized (:code:`bt init`),
and a device has been connected, the Broadcast Assistant can discover BASS on
the connected device calling :code:`bap_broadcast_assistant discover`, which
will start a discovery for the BASS UUIDs and store the handles, and
subscribe to all notifications.

.. code-block:: console

   uart:~$ bap_broadcast_assistant --help
   bap_broadcast_assistant - Bluetooth BAP broadcast assistant client shell
                           commands
   Subcommands:
   discover          : Discover BASS on the server
   scan_start        : Start scanning for broadcasters
   scan_stop         : Stop scanning for BISs
   add_src           : Add a source <address: XX:XX:XX:XX:XX:XX> <type:
                        public/random> <adv_sid> <sync_pa> <broadcast_id>
                        [<pa_interval>] [<sync_bis>] [<metadata>]
   add_broadcast_id  : Add a source by broadcast ID <broadcast_id> <sync_pa>
                        [<sync_bis>] [<metadata>]
   add_pa_sync       : Add a PA sync as a source <sync_pa> <broadcast_id>
                        [bis_index [bis_index [bix_index [...]]]]>
   mod_src           : Set sync <src_id> <sync_pa> [<pa_interval> | "unknown"] [<sync_bis>]
                        [<metadata>]
   broadcast_code    : Send a string-based broadcast code of up to 16 bytes
                        <src_id> <broadcast code>
   rem_src           : Remove a source <src_id>
   read_state        : Remove a source <index>

Example usage
*************

Setup
=====

.. code-block:: console

   uart:~$ bt init
   uart:~$ bap init
   uart:~$ bt connect xx:xx:xx:xx:xx:xx public

When connected
==============

Start scanning for periodic advertisements for a server:
--------------------------------------------------------

.. note::
   The Broadcast Assistant will not actually start scanning for periodic
   advertisements, as that feature is still, at the time of writing, not
   implemented.

.. code-block:: console

   uart:~$ bap_broadcast_assistant discover
   BASS discover done with 1 recv states
   uart:~$ bap_broadcast_assistant scan_start true
   BASS scan start successful
   Found broadcaster with ID 0x05BD38 and addr 1E:4D:0A:AA:6E:49 (random) and sid 0x00

Adding a source to the receive state with add_src:
--------------------------------------------------

.. code-block:: console

   uart:~$ bap_broadcast_assistant add_src 11:22:33:44:55:66 public 5 1 1
   BASS recv state: src_id 0, addr 11:22:33:44:55:66 (public), sid 5, sync_state 1, encrypt_state 000000000000000000000000000000000
        [0]: BIS sync 0, metadata_len 0


Adding a source to the receive state with add_broadcast_id (recommended):
-------------------------------------------------------------------------

.. code-block:: console

   uart:~$ bap_broadcast_assistant add_broadcast_id 0x05BD38 true
   [DEVICE]: 1E:4D:0A:AA:6E:49 (random), AD evt type 5, RSSI -28 Broadcast Audio Source C:0 S:0 D:0 SR:0 E:1 Prim: LE 1M, Secn: LE 2M, Interval: 0x03c0 (1200000 us), SID: 0x0
   Found BAP broadcast source with address 1E:4D:0A:AA:6E:49 (random) and ID 0x05BD38
   BASS recv state: src_id 0, addr 1E:4D:0A:AA:6E:49 (random), sid 0, sync_state 0, encrypt_state 0
         [0]: BIS sync 0x0000, metadata_len 0
   BASS add source successful
   BASS recv state: src_id 0, addr 1E:4D:0A:AA:6E:49 (random), sid 0, sync_state 2, encrypt_state 0
         [0]: BIS sync 0x0000, metadata_len 0
   BASS recv state: src_id 0, addr 1E:4D:0A:AA:6E:49 (random), sid 0, sync_state 2, encrypt_state 0
         [0]: BIS sync 0x0000, metadata_len 4
                  Metadata length 2, type 2, data: 0100


Modifying a receive state:
--------------------------

.. code-block:: console

   uart:~$ bap_broadcast_assistant mod_src 0 true 0x03c0 0x02
   BASS modify source successful
   BASS recv state: src_id 0, addr 1E:4D:0A:AA:6E:49 (random), sid 0, sync_state 2, encrypt_state 0
         [0]: BIS sync 0x0001, metadata_len 4
                  Metadata length 2, type 2, data: 0100

Supplying a broadcast code:
---------------------------

.. code-block:: console

   uart:~$ bap_broadcast_assistant broadcast_code 0 secretCode
   Sending broadcast code:
   00000000: 73 65 63 72 65 74 43 6f 64 65 00 00 00 00 00 00 |secretCo de....|
   uart:~$ BASS broadcast code successful

Part 3

한국어 전문 번역

BAP Broadcast Assistant

Broadcast Assistant는 resource가 제한된 device 대신 scan해 battery 소모를 줄입니다. Periodic advertising scan은 필수이고 PAST(Periodic Advertising Synchronization Transfer)는 선택적으로 지원합니다. 일반적으로 phone이나 laptop이 이 role을 맡아 periodic advertising을 scan하고 server에 정보를 전달합니다.

Interactive 사용에는 CONFIG_BT_BAP_BROADCAST_ASSISTANT_LOG_LEVEL_DBG가 필요합니다. Bluetooth stack 초기화와 연결 뒤 discover를 실행하면 remote BASS UUID를 발견하고 handle을 저장하며 모든 notification을 subscribe합니다. 예제는 이해를 돕기 위해 일부 debug line을 생략한 공식 출력입니다.

uart:~$ bap_broadcast_assistant --help
bap_broadcast_assistant - Bluetooth BAP broadcast assistant client shell
                        commands
Subcommands:
discover          : Discover BASS on the server
scan_start        : Start scanning for broadcasters
scan_stop         : Stop scanning for BISs
add_src           : Add a source <address: XX:XX:XX:XX:XX:XX> <type:
                     public/random> <adv_sid> <sync_pa> <broadcast_id>
                     [<pa_interval>] [<sync_bis>] [<metadata>]
add_broadcast_id  : Add a source by broadcast ID <broadcast_id> <sync_pa>
                     [<sync_bis>] [<metadata>]
add_pa_sync       : Add a PA sync as a source <sync_pa> <broadcast_id>
                     [bis_index [bis_index [bix_index [...]]]]>
mod_src           : Set sync <src_id> <sync_pa> [<pa_interval> | "unknown"] [<sync_bis>]
                     [<metadata>]
broadcast_code    : Send a string-based broadcast code of up to 16 bytes
                     <src_id> <broadcast code>
rem_src           : Remove a source <src_id>
read_state        : Remove a source <index>

사용 예제

초기화와 연결

uart:~$ bt init
uart:~$ bap init
uart:~$ bt connect xx:xx:xx:xx:xx:xx public

Periodic advertising scan 요청

uart:~$ bap_broadcast_assistant discover
BASS discover done with 1 recv states
uart:~$ bap_broadcast_assistant scan_start true
BASS scan start successful
Found broadcaster with ID 0x05BD38 and addr 1E:4D:0A:AA:6E:49 (random) and sid 0x00

add_src로 receive state에 source 추가

Address·type·advertising SID·PA sync 여부·broadcast ID를 직접 지정합니다.

uart:~$ bap_broadcast_assistant add_src 11:22:33:44:55:66 public 5 1 1
BASS recv state: src_id 0, addr 11:22:33:44:55:66 (public), sid 5, sync_state 1, encrypt_state 000000000000000000000000000000000
     [0]: BIS sync 0, metadata_len 0

add_broadcast_id로 추가

권장 방식입니다. Broadcast ID를 이용해 source를 찾아 address·SID·PA interval을 얻고 BASS receive state를 추가합니다.

uart:~$ bap_broadcast_assistant add_broadcast_id 0x05BD38 true
[DEVICE]: 1E:4D:0A:AA:6E:49 (random), AD evt type 5, RSSI -28 Broadcast Audio Source C:0 S:0 D:0 SR:0 E:1 Prim: LE 1M, Secn: LE 2M, Interval: 0x03c0 (1200000 us), SID: 0x0
Found BAP broadcast source with address 1E:4D:0A:AA:6E:49 (random) and ID 0x05BD38
BASS recv state: src_id 0, addr 1E:4D:0A:AA:6E:49 (random), sid 0, sync_state 0, encrypt_state 0
      [0]: BIS sync 0x0000, metadata_len 0
BASS add source successful
BASS recv state: src_id 0, addr 1E:4D:0A:AA:6E:49 (random), sid 0, sync_state 2, encrypt_state 0
      [0]: BIS sync 0x0000, metadata_len 0
BASS recv state: src_id 0, addr 1E:4D:0A:AA:6E:49 (random), sid 0, sync_state 2, encrypt_state 0
      [0]: BIS sync 0x0000, metadata_len 4
               Metadata length 2, type 2, data: 0100

Receive state 수정

Source ID, PA sync, interval, BIS sync mask와 metadata를 변경합니다.

uart:~$ bap_broadcast_assistant mod_src 0 true 0x03c0 0x02
BASS modify source successful
BASS recv state: src_id 0, addr 1E:4D:0A:AA:6E:49 (random), sid 0, sync_state 2, encrypt_state 0
      [0]: BIS sync 0x0001, metadata_len 4
               Metadata length 2, type 2, data: 0100

Broadcast code 제공

암호화 source에 최대 16 byte 문자열 broadcast code를 보냅니다. 짧은 문자열의 나머지는 0으로 채웁니다.

uart:~$ bap_broadcast_assistant broadcast_code 0 secretCode
Sending broadcast code:
00000000: 73 65 63 72 65 74 43 6f 64 65 00 00 00 00 00 00 |secretCo de....|
uart:~$ BASS broadcast code successful

Source

출처

영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.