diff mbox series

[BlueZ,v1] doc: Add initial SCO(7) documentation

Message ID 20250327203006.2936448-1-luiz.dentz@gmail.com (mailing list archive)
State Accepted
Commit 8ebb0ff1178591e49b1a6f340c8b1f846824fa54
Headers show
Series [BlueZ,v1] doc: Add initial SCO(7) documentation | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
tedd_an/BuildEll success Build ELL PASS
tedd_an/BluezMake success Bluez Make PASS
tedd_an/MakeCheck fail BlueZ Make Check FAIL:
tedd_an/MakeDistcheck fail Make Distcheck FAIL: Package cups was not found in the pkg-config search path. Perhaps you should add the directory containing `cups.pc' to the PKG_CONFIG_PATH environment variable No package 'cups' found ../../test-driver: line 107: 55105 Aborted (core dumped) "$@" > $log_file 2>&1 make[4]: *** [Makefile:11780: test-suite.log] Error 1 make[3]: *** [Makefile:11888: check-TESTS] Error 2 make[2]: *** [Makefile:12317: check-am] Error 2 make[1]: *** [Makefile:12319: check] Error 2 make: *** [Makefile:12240: distcheck] Error 1
tedd_an/CheckValgrind fail Check Valgrind FAIL: tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12907:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12907 | int main(int argc, char *argv[]) | ^~~~ ./test-driver: line 107: 75146 Aborted (core dumped) "$@" > $log_file 2>&1 make[3]: *** [Makefile:11780: test-suite.log] Error 1 make[2]: *** [Makefile:11888: check-TESTS] Error 2 make[1]: *** [Makefile:12317: check-am] Error 2 make: *** [Makefile:12319: check] Error 2
tedd_an/CheckSmatch success CheckSparse PASS
tedd_an/bluezmakeextell success Make External ELL PASS
tedd_an/ScanBuild success Scan Build PASS

Commit Message

Luiz Augusto von Dentz March 27, 2025, 8:30 p.m. UTC
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This adds initial documentation for SCO sockets.
---
 Makefile.am |   6 +-
 doc/sco.rst | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 263 insertions(+), 3 deletions(-)
 create mode 100644 doc/sco.rst

Comments

bluez.test.bot@gmail.com March 27, 2025, 9:32 p.m. UTC | #1
This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=947882

---Test result---

Test Summary:
CheckPatch                    PENDING   0.28 seconds
GitLint                       PENDING   0.37 seconds
BuildEll                      PASS      20.62 seconds
BluezMake                     PASS      1480.02 seconds
MakeCheck                     FAIL      13.79 seconds
MakeDistcheck                 FAIL      139.76 seconds
CheckValgrind                 FAIL      212.12 seconds
CheckSmatch                   PASS      282.66 seconds
bluezmakeextell               PASS      97.66 seconds
IncrementalBuild              PENDING   0.38 seconds
ScanBuild                     PASS      855.30 seconds

Details
##############################
Test: CheckPatch - PENDING
Desc: Run checkpatch.pl script
Output:

##############################
Test: GitLint - PENDING
Desc: Run gitlint
Output:

##############################
Test: MakeCheck - FAIL
Desc: Run Bluez Make Check
Output:

./test-driver: line 107: 32294 Aborted                 (core dumped) "$@" > $log_file 2>&1
make[3]: *** [Makefile:11780: test-suite.log] Error 1
make[2]: *** [Makefile:11888: check-TESTS] Error 2
make[1]: *** [Makefile:12317: check-am] Error 2
make: *** [Makefile:12319: check] Error 2
##############################
Test: MakeDistcheck - FAIL
Desc: Run Bluez Make Distcheck
Output:

Package cups was not found in the pkg-config search path.
Perhaps you should add the directory containing `cups.pc'
to the PKG_CONFIG_PATH environment variable
No package 'cups' found
../../test-driver: line 107: 55105 Aborted                 (core dumped) "$@" > $log_file 2>&1
make[4]: *** [Makefile:11780: test-suite.log] Error 1
make[3]: *** [Makefile:11888: check-TESTS] Error 2
make[2]: *** [Makefile:12317: check-am] Error 2
make[1]: *** [Makefile:12319: check] Error 2
make: *** [Makefile:12240: distcheck] Error 1
##############################
Test: CheckValgrind - FAIL
Desc: Run Bluez Make Check with Valgrind
Output:

tools/mgmt-tester.c: In function ‘main’:
tools/mgmt-tester.c:12907:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12907 | int main(int argc, char *argv[])
      |     ^~~~
./test-driver: line 107: 75146 Aborted                 (core dumped) "$@" > $log_file 2>&1
make[3]: *** [Makefile:11780: test-suite.log] Error 1
make[2]: *** [Makefile:11888: check-TESTS] Error 2
make[1]: *** [Makefile:12317: check-am] Error 2
make: *** [Makefile:12319: check] Error 2
##############################
Test: IncrementalBuild - PENDING
Desc: Incremental build with the patches in the series
Output:



---
Regards,
Linux Bluetooth
patchwork-bot+bluetooth@kernel.org March 28, 2025, 6 p.m. UTC | #2
Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Thu, 27 Mar 2025 16:30:06 -0400 you wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> 
> This adds initial documentation for SCO sockets.
> ---
>  Makefile.am |   6 +-
>  doc/sco.rst | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 263 insertions(+), 3 deletions(-)
>  create mode 100644 doc/sco.rst

Here is the summary with links:
  - [BlueZ,v1] doc: Add initial SCO(7) documentation
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=8ebb0ff11785

You are awesome, thank you!
diff mbox series

Patch

diff --git a/Makefile.am b/Makefile.am
index 0821530e68df..dc9a27e8069b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -356,7 +356,7 @@  CLEANFILES += $(builtin_files)
 
 if MANPAGES
 man_MANS += src/bluetoothd.8
-man_MANS += doc/hci.7 doc/l2cap.7 doc/rfcomm.7
+man_MANS += doc/hci.7 doc/l2cap.7 doc/rfcomm.7 doc/sco.7
 man_MANS += doc/org.bluez.Adapter.5 doc/org.bluez.Device.5 \
 		doc/org.bluez.DeviceSet.5 doc/org.bluez.AgentManager.5 \
 		doc/org.bluez.Agent.5 doc/org.bluez.ProfileManager.5 \
@@ -390,7 +390,7 @@  man_MANS += doc/org.bluez.obex.Client.5 doc/org.bluez.obex.Session.5 \
 		doc/org.bluez.obex.Image.5
 endif
 manual_pages += src/bluetoothd.8
-manual_pages += doc/hci.7 doc/l2cap.7 doc/rfcomm.7
+manual_pages += doc/hci.7 doc/l2cap.7 doc/rfcomm.7 doc/sco.7
 manual_pages += doc/org.bluez.Adapter.5 doc/org.bluez.Device.5 \
 		doc/org.bluez.DeviceSet.5 doc/org.bluez.AgentManager.5 \
 		doc/org.bluez.Agent.5 doc/org.bluez.ProfileManager.5 \
@@ -469,7 +469,7 @@  EXTRA_DIST += doc/mgmt-api.txt \
 		doc/health-api.txt \
 		doc/sap-api.txt
 
-EXTRA_DIST += doc/hci.rst doc/l2cap.rst doc/rfcomm.rst
+EXTRA_DIST += doc/hci.rst doc/l2cap.rst doc/rfcomm.rst doc/sco.rst
 
 EXTRA_DIST += doc/org.bluez.Adapter.rst doc/org.bluez.Device.rst \
 		doc/org.bluez.DeviceSet.rst doc/org.bluez.AgentManager.rst \
diff --git a/doc/sco.rst b/doc/sco.rst
new file mode 100644
index 000000000000..27072330d6ce
--- /dev/null
+++ b/doc/sco.rst
@@ -0,0 +1,260 @@ 
+===
+sco
+===
+-------------
+SCO transport
+-------------
+
+:Version: BlueZ
+:Copyright: Free use of this software is granted under the terms of the GNU
+            Lesser General Public Licenses (LGPL).
+:Date: March 2025
+:Manual section: 7
+:Manual group: Linux System Administration
+
+SYNOPSIS
+========
+
+.. code-block::
+
+    #include <sys/socket.h>
+    #include <bluetooth/bluetooth.h>
+    #include <bluetooth/sco.h>
+
+    sco_socket = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_SCO);
+
+DESCRIPTION
+===========
+
+The SCO logical transport, is a symmetric, point-to-point transport between the
+Central and a specific Peripheral. The SCO logical transport reserves slots and
+can therefore be considered as a circuit-switched connection between the Central
+and the Peripheral.
+
+In addition to the reserved slots, when eSCO is supported, a retransmission
+window follows immediately after. Together, the reserved slots and the
+retransmission window form the complete eSCO window.
+
+SOCKET ADDRESS
+==============
+
+.. code-block::
+
+    struct sockaddr_sco {
+        sa_family_t     sco_family;
+        bdaddr_t        sco_bdaddr;
+    };
+
+Example:
+
+.. code-block::
+
+    struct sockaddr_sco addr;
+
+    memset(&addr, 0, sizeof(addr));
+    addr.sco_family = AF_BLUETOOTH;
+    bacpy(&addr.sco_bdaddr, bdaddr);
+
+SOCKET OPTIONS
+==============
+
+The socket options listed below can be set by using **setsockopt(2)** and read
+with **getsockopt(2)** with the socket level set to SOL_BLUETOOTH.
+
+BT_SECURITY (since Linux 2.6.30)
+--------------------------------
+
+Channel security level, possible values:
+
+.. csv-table::
+    :header: "Value", "Security Level", "Link Key Type", "Encryption"
+    :widths: auto
+
+    **BT_SECURITY_SDP**, 0 (SDP Only), None, Not required
+    **BT_SECURITY_LOW**, 1 (Low), Unauthenticated, Not required
+    **BT_SECURITY_MEDIUM**, 2 (Medium - default), Unauthenticated, Desired
+    **BT_SECURITY_HIGH**, 3 (High), Authenticated, Required
+    **BT_SECURITY_FIPS** (since Linux 3.15), 4 (Secure Only), Authenticated (P-256 based Secure Simple Pairing and Secure Authentication), Required
+
+Example:
+
+.. code-block::
+
+    int level = BT_SECURITY_HIGH;
+    int err = setsockopt(sco_socket, SOL_BLUETOOTH, BT_SECURITY, &level,
+                         sizeof(level));
+    if (err == -1) {
+        perror("setsockopt");
+        return 1;
+    }
+
+BT_DEFER_SETUP (since Linux 2.6.30)
+-----------------------------------
+
+Channel defer connection setup, this control if the connection procedure
+needs to be authorized by userspace before responding which allows
+authorization at profile level, possible values:
+
+.. csv-table::
+    :header: "Value", "Description", "Authorization"
+    :widths: auto
+
+    **0**, Disable (default), Not required
+    **1**, Enable, Required
+
+Example:
+
+.. code-block::
+
+    int defer_setup = 1;
+    int err = setsockopt(sco_socket, SOL_BLUETOOTH, BT_DEFER_SETUP,
+                         &defer_setup, sizeof(defer_setup));
+    if (err == -1) {
+        perror("setsockopt");
+        return err;
+    }
+
+    err = listen(sco_socket, 5);
+    if (err) {
+        perror("listen");
+        return err;
+    }
+
+    struct sockaddr_sco remote_addr = {0};
+    socklen_t addr_len = sizeof(remote_addr);
+    int new_socket = accept(sco_socket, (struct sockaddr*)&remote_addr,
+                            &addr_len);
+    if (new_socket < 0) {
+        perror("accept");
+        return new_socket;
+    }
+
+    /* To complete the connection setup of new_socket read 1 byte */
+    char c;
+    struct pollfd pfd;
+
+    memset(&pfd, 0, sizeof(pfd));
+    pfd.fd = new_socket;
+    pfd.events = POLLOUT;
+
+    err = poll(&pfd, 1, 0);
+    if (err) {
+        perror("poll");
+        return err;
+    }
+
+    if (!(pfd.revents & POLLOUT)) {
+        err = read(sk, &c, 1);
+        if (err < 0) {
+            perror("read");
+            return err;
+        }
+    }
+
+BT_VOICE (since Linux 3.11)
+-----------------------------
+
+Transport voice settings, possible values:
+
+.. code-block::
+
+    struct bt_voice {
+        uint16_t setting;
+    };
+
+.. csv-table::
+    :header: "Define", "Value", "Description"
+    :widths: auto
+
+    **BT_VOICE_TRANSPARENT**, 0x0003, Transparent output
+    **BT_VOICE_CVSD_16BIT**, 0x0060, C-VSD output PCM 16-bit input
+    **BT_VOICE_TRANSPARENT_16BIT**, 0x0063, Transparent output PCM 16-bit input
+
+Example:
+
+.. code-block::
+
+    struct bt_voice voice;
+
+    memset(&voice, 0, sizeof(voice));
+    voice.setting = BT_VOICE_TRANSPARENT;
+    int err = setsockopt(sco_socket, SOL_BLUETOOTH, BT_VOICE, &voice,
+                         sizeof(voice));
+    if (err == -1) {
+        perror("setsockopt");
+        return 1;
+    }
+
+BT_PHY (since Linux 5.10)
+-------------------------
+
+Transport supported PHY(s), possible values:
+
+.. csv-table::
+    :header: "Define", "Value", "Description"
+    :widths: auto
+
+    **BT_PHY_BR_1M_1SLOT**, BIT 0, BR 1Mbps 1SLOT
+    **BT_PHY_BR_1M_3SLOT**, BIT 1, BR 1Mbps 3SLOT
+    **BT_PHY_BR_2M_1SLOT**, BIT 3, EDR 2Mbps 1SLOT
+    **BT_PHY_BR_2M_3SLOT**, BIT 4, EDR 2Mbps 3SLOT
+    **BT_PHY_BR_3M_1SLOT**, BIT 6, EDR 3Mbps 1SLOT
+    **BT_PHY_BR_3M_3SLOT**, BIT 7, EDR 3Mbps 3SLOT
+
+BT_CODEC (since Linux 5.14)
+---------------------------
+
+Transport codec offload, possible values:
+
+.. code-block::
+
+    struct bt_codec {
+        uint8_t id;
+        uint16_t cid;
+        uint16_t vid;
+        uint8_t data_path_id;
+        uint8_t num_caps;
+        struct codec_caps {
+            uint8_t len;
+            uint8_t data[];
+        } caps[];
+    } __attribute__((packed));
+
+    struct bt_codecs {
+        uint8_t num_codecs;
+        struct bt_codec codecs[];
+    } __attribute__((packed));
+
+Example:
+
+.. code-block::
+
+    char buffer[sizeof(struct bt_codecs) + sizeof(struct bt_codec)];
+    struct bt_codec *codecs = (void *)buffer;
+
+    memset(codecs, 0, sizeof(codecs));
+    codec->num_codecs = 1;
+    codecs->codecs[0].id = 0x05;
+    codecs->codecs[0].data_path_id = 1;
+
+    int err = setsockopt(sco_socket, SOL_BLUETOOTH, BT_CODEC, codecs,
+                         sizeof(buffer));
+    if (err == -1) {
+        perror("setsockopt");
+        return 1;
+    }
+
+RESOURCES
+=========
+
+http://www.bluez.org
+
+REPORTING BUGS
+==============
+
+linux-bluetooth@vger.kernel.org
+
+SEE ALSO
+========
+
+socket(7), scotest(1)