Package: guix-patches;
Reported by: Demis Balbach <db <at> minikn.xyz>
Date: Mon, 13 Dec 2021 19:21:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Ludovic Courtès <ludo <at> gnu.org> Cc: tracker <at> debbugs.gnu.org Subject: bug#52470: closed ([PATCH] services: bluetooth: Add missing config parameters) Date: Wed, 09 Mar 2022 22:44:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Wed, 09 Mar 2022 23:43:15 +0100 with message-id <87y21i21do.fsf_-_ <at> gnu.org> and subject line Re: bug#52470: [PATCH] services: bluetooth: Add missing config parameters has caused the debbugs.gnu.org bug report #52470, regarding [PATCH] services: bluetooth: Add missing config parameters to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 52470: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=52470 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Demis Balbach <db <at> minikn.xyz> To: guix-patches <at> gnu.org Cc: Demis Balbach <db <at> minikn.xyz> Subject: [PATCH] services: bluetooth: Add missing config parameters Date: Mon, 13 Dec 2021 20:20:14 +0100--- gnu/services/desktop.scm | 332 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 328 insertions(+), 4 deletions(-) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 64d0e85301..23b730d7d4 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -402,14 +402,338 @@ (define-record-type* <bluetooth-configuration> bluetooth-configuration make-bluetooth-configuration bluetooth-configuration? (bluez bluetooth-configuration-bluez (default bluez)) - (auto-enable? bluetooth-configuration-auto-enable? (default #f))) + + ;;; [General] + (name bluetooth-configuration-name (default "BlueZ")) + (class bluetooth-configuration-class (default "0x000000")) + (discoverable-timeout + bluetooth-configuration-discoverable-timeout (default 180)) + (always-pairable? bluetooth-configuration-always-pairable? (default #f)) + (pairable-timeout bluetooth-configuration-pairable-timeout (default 0)) + (device-id bluetooth-configuration-device-id (default "")) + (reverse-service-discovery? + bluetooth-configuration-reverse-service-discovery (default #t)) + (name-resolving? bluetooth-configuration-name-resolving? (default #t)) + (debug-keys? bluetooth-configuration-debug-keys? (default #f)) + + ;;; Possible values: + ;;; 'dual, 'bredr, 'le + (controller-mode bluetooth-configuration-controller-mode (default 'dual)) + + ;;; Possible values: + ;;; 'off, 'single, 'multiple + (multi-profile bluetooth-configuration-multi-profile (default 'off)) + (fast-connectable? bluetooth-configuration-fast-connectable? (default #f)) + + ;;; Possible values: + ;;; for LE mode: 'off, 'network/on, 'device + ;;; for Dual mode: 'off, 'network/on', 'device, 'limited-network, 'limited-device + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n68 + (privacy bluetooth-configuration-privacy (default 'off)) + + ;;; Possible values: + ;;; 'never, 'confirm, 'always + (just-works-repairing + bluetooth-configuration-just-works-repairing (default 'never)) + (temporary-timeout bluetooth-configuration-temporary-timeout (default 30)) + (refresh-discovery? bluetooth-configuration-refresh-discovery (default #t)) + + ;;; Possible values: 'true, 'false, <UUID> + ;;; Possible UUIDs: + ;;; d4992530-b9ec-469f-ab01-6c481c47da1c (BlueZ Experimental Debug) + ;;; 671b10b5-42c0-4696-9227-eb28d1b049d6 (BlueZ Experimental Simultaneous Central and Peripheral) + ;;; 15c0a148-c273-11ea-b3de-0242ac130004 (BlueZ Experimental LL privacy) + ;;; 330859bc-7506-492d-9370-9a6f0614037f (BlueZ Experimental Bluetooth Quality Report) + ;;; a6695ace-ee7f-4fb9-881a-5fac66c629af (BlueZ Experimental Offload Codecs) + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n110 + (experimental bluetooth-configuration-experimental (default 'false)) + (remote-name-request-retry-delay + bluetooth-configuration-remote-name-request-retry-delay (default 300)) + + ;;; [BR] + (page-scan-type bluetooth-configuration-page-scan-type (default -1)) + (page-scan-interval bluetooth-configuration-page-scan-interval (default -1)) + (page-scan-window bluetooth-configuration-page-scan-window (default 'nil)) + (inquiry-scan-type bluetooth-configuration-inquiry-scan-type (default 'nil)) + (inquiry-scan-interval bluetooth-configuration-inquiry-scan-interval (default -1)) + (inquiry-scan-window bluetooth-configuration-inquiry-scan-window (default 'nil)) + (link-supervision-timeout bluetooth-configuration-link-supervision-timeout (default -1)) + (page-timeout bluetooth-configuration-page-timeout (default -1)) + (min-sniff-interval bluetooth-configuration-min-sniff-interval (default -1)) + (max-sniff-interval bluetooth-configuration-max-sniff-interval (default -1)) + + ;;; [LE] + (min-advertisement-interval + bluetooth-configuration-min-advertisement-interval (default -1)) + (max-advertisement-interval + bluetooth-configuration-max-advertisement-interval (default -1)) + (multi-advertisement-rotation-interval + bluetooth-configuration-multi-advertisement-rotation-interval (default -1)) + (scan-interval-auto-connect + bluetooth-configuration-scan-interval-auto-connect (default 'nil)) + (scan-window-auto-connect + bluetooth-configuration-scan-window-auto-connect (default 'nil)) + (scan-interval-suspend + bluetooth-configuration-scan-interval-suspend (default 'nil)) + (scan-window-suspend + bluetooth-configuration-scan-window-suspend (default 'nil)) + (scan-interval-discovery + bluetooth-configuration-scan-interval-discovery (default 'nil)) + (scan-window-discovery + bluetooth-configuration-scan-window-discovery (default 'nil)) + (scan-interval-adv-monitor + bluetooth-configuration-scan-interval-adv-monitor (default 'nil)) + (scan-window-adv-monitor + bluetooth-configuration-scan-window-adv-monitor (default 'nil)) + (scan-interval-connect + bluetooth-configuration-scan-interval-connect (default 'nil)) + (scan-window-connect + bluetooth-configuration-scan-window-connect (default 'nil)) + (min-connection-interval + bluetooth-configuration-min-connection-interval (default -1)) + (max-connection-interval + bluetooth-configuration-max-connection-interval (default -1)) + (connection-latency + bluetooth-configuration-connection-latency (default -1)) + (connection-supervision-timeout + bluetooth-configuration-connection-supervision-timeout (default -1)) + (autoconnect-timeout + bluetooth-configuration-autoconnect-timeout (default -1)) + (adv-mon-allowlist-scan-duration + bluetooth-configuration-adv-mon-allowlist-scan-duration (default 300)) + (adv-mon-no-filter-scan-duration + bluetooth-configuration-adv-mon-no-filter-scan-duration (default 500)) + (enable-adv-mon-interleave-scan + bluetooth-configuration-enable-adv-mon-interleave-scan (default 1)) + + ;;; [GATT] + ;;; Possible values: 'yes, 'no, 'always + (cache bluetooth-configuration-cache (default 'always)) + + ;;; Possible values: 7 ... 16, 0 (don't care) + (key-size bluetooth-configuration-key-size (default 0)) + + ;;; Possible values: 23 ... 517 + (exchange-mtu bluetooth-configuration-exchange-mtu (default 517)) + + ;;; Possible values: 1 ... 5 + (att-channels bluetooth-configuration-att-channels (default 3)) + + ;;; [AVDTP] + ;;; Possible values: 'basic, 'ertm + (session-mode bluetooth-configuration-session-mode (default 'basic)) + + ;;; Possible values: 'basic, 'streaming + (stream-mode bluetooth-configuration-stream-mode (default 'basic)) + + ;;; [Policy] + (reconnect-uuids bluetooth-configuration-reconnect-uuids (default '())) + (reconnect-attempts bluetooth-configuration-reconnect-attempts (default 7)) + (reconnect-intervals bluetooth-configuration-reconnect-intervals + (default (list 1 2 4 8 16 32 64))) + (auto-enable? bluetooth-configuration-auto-enable? (default #f)) + (resume-delay bluetooth-configuration-resume-delay (default 2)) + + ;;; [AdvMon] + ;;; Possible values: + ;;; "0x00", "0xFF", + ;;; "N = 0x00" ... "N = 0xFF" + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n286 + (rssi-sampling-period bluetooth-configuration-rssi-sampling-period + (default "0xFF"))) (define (bluetooth-configuration-file config) "Return a configuration file for the systemd bluetooth service, as a string." (string-append - "[Policy]\n" - "AutoEnable=" (bool (bluetooth-configuration-auto-enable? - config)))) + "[General]" + "\nName = " (bluetooth-configuration-name config) + "\nClass = " (bluetooth-configuration-class config) + "\nDiscoverableTimeout = " (number->string + (bluetooth-configuration-discoverable-timeout + config)) + "\nAlwaysPairable = " (bool (bluetooth-configuration-always-pairable? + config)) + "\nPairableTimeout = " (number->string + (bluetooth-configuration-pairable-timeout + config)) + (if (not (string-null? (bluetooth-configuration-device-id config))) + (string-append "\nDeviceID = " (bluetooth-configuration-device-id config)) + "") + "\nReverseServiceDiscovery = " (bool + (bluetooth-configuration-reverse-service-discovery + config)) + "\nNameResolving = " (bool (bluetooth-configuration-name-resolving? config)) + "\nDebugKeys = " (bool (bluetooth-configuration-debug-keys? config)) + "\nControllerMode = " (symbol->string + (bluetooth-configuration-controller-mode config)) + "\nMultiProfile = " (symbol->string (bluetooth-configuration-multi-profile + config)) + "\nFastConnectable = " (bool (bluetooth-configuration-fast-connectable? config)) + "\nPrivacy = " (symbol->string (bluetooth-configuration-privacy config)) + "\nJustWorksRepairing = " (symbol->string + (bluetooth-configuration-just-works-repairing config)) + "\nTemporaryTimeout = " (number->string + (bluetooth-configuration-temporary-timeout config)) + "\nRefreshDiscovery = " (bool (bluetooth-configuration-refresh-discovery config)) + "\nExperimental = " (symbol->string (bluetooth-configuration-experimental config)) + "\nRemoteNameRequestRetryDelay = " (number->string + (bluetooth-configuration-remote-name-request-retry-delay + config)) + "\n[BR]" + (if (not (eq? -1 (bluetooth-configuration-page-scan-type config))) + (string-append + "\nPageScanType = " + (number->string (bluetooth-configuration-page-scan-type config))) "") + (if (not (eq? -1 (bluetooth-configuration-page-scan-interval config))) + (string-append + "\nPageScanInterval = " + (number->string (bluetooth-configuration-page-scan-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-page-scan-window config))) + (string-append + "\nPageScanWindow = " + (number->string (bluetooth-configuration-page-scan-window config))) "") + (if (not (eq? -1 (bluetooth-configuration-inquiry-scan-type config))) + (string-append + "\nInquiryScanType = " + (number->string (bluetooth-configuration-inquiry-scan-type config))) "") + (if (not (eq? -1 (bluetooth-configuration-inquiry-scan-interval config))) + (string-append + "\nInquiryScanInterval = " + (number->string (bluetooth-configuration-inquiry-scan-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-inquiry-scan-window config))) + (string-append + "\nInquiryScanWindow = " + (number->string (bluetooth-configuration-inquiry-scan-window config))) "") + (if (not (eq? -1 (bluetooth-configuration-link-supervision-timeout config))) + (string-append + "\nLinkSupervisionTimeout = " + (number->string (bluetooth-configuration-link-supervision-timeout config))) "") + (if (not (eq? -1 (bluetooth-configuration-page-timeout config))) + (string-append + "\nPageTimeout = " + (number->string (bluetooth-configuration-page-timeout config))) "") + (if (not (eq? -1 (bluetooth-configuration-min-sniff-interval config))) + (string-append + "\nMinSniffInterval = " + (number->string (bluetooth-configuration-min-sniff-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-max-sniff-interval config))) + (string-append + "\nMaxSniffInterval = " + (number->string (bluetooth-configuration-max-sniff-interval config))) "") + + "\n[LE]" + (if (not (eq? -1 (bluetooth-configuration-min-advertisement-interval config))) + (string-append + "\nMinAdvertisementInterval = " + (number->string (bluetooth-configuration-min-advertisement-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-max-advertisement-interval config))) + (string-append + "\nMaxAdvertisementInterval = " + (number->string (bluetooth-configuration-max-advertisement-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-multi-advertisement-rotation-interval config))) + (string-append + "\nMultiAdvertisementRotationInterval = " + (number->string + (bluetooth-configuration-multi-advertisement-rotation-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-auto-connect config))) + (string-append + "\nScanIntervalAutoConnect = " + (number->string (bluetooth-configuration-scan-interval-auto-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-auto-connect config))) + (string-append + "\nScanWindowAutoConnect = " + (number->string (bluetooth-configuration-scan-window-auto-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-suspend config))) + (string-append + "\nScanIntervalSuspend = " + (number->string (bluetooth-configuration-scan-interval-suspend config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-suspend config))) + (string-append + "\nScanWindowSuspend = " + (number->string (bluetooth-configuration-scan-window-suspend config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-discovery config))) + (string-append + "\nScanIntervalDiscovery = " + (number->string (bluetooth-configuration-scan-interval-discovery config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-discovery config))) + (string-append + "\nScanWindowDiscovery = " + (number->string (bluetooth-configuration-scan-window-discovery config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-adv-monitor config))) + (string-append + "\nScanIntervalAdvMonitor = " + (number->string (bluetooth-configuration-scan-interval-adv-monitor config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-adv-monitor config))) + (string-append + "\nScanWindowAdvMonitor = " + (number->string (bluetooth-configuration-scan-window-adv-monitor config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-connect config))) + (string-append + "\nScanIntervalConnect = " + (number->string (bluetooth-configuration-scan-interval-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-connect config))) + (string-append + "\nScanWindowConnect = " + (number->string (bluetooth-configuration-scan-window-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-min-connection-interval config))) + (string-append + "\nMinConnectionInterval = " + (number->string (bluetooth-configuration-min-connection-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-max-connection-interval config))) + (string-append + "\nMaxConnectionInterval = " + (number->string (bluetooth-configuration-max-connection-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-connection-latency config))) + (string-append + "\nConnectionLatency = " + (number->string (bluetooth-configuration-connection-latency config))) "") + (if (not (eq? -1 (bluetooth-configuration-connection-supervision-timeout config))) + (string-append + "\nConnectionSupervisionTimeout = " + (number->string (bluetooth-configuration-connection-supervision-timeout config))) "") + (if (not (eq? -1 (bluetooth-configuration-autoconnect-timeout config))) + (string-append + "\nAutoconnecttimeout = " + (number->string (bluetooth-configuration-autoconnect-timeout config))) "") + + "\nAdvMonAllowlistScanDuration = " (number->string + (bluetooth-configuration-adv-mon-allowlist-scan-duration + config)) + "\nAdvMonNoFilterScanDuration = " (number->string + (bluetooth-configuration-adv-mon-no-filter-scan-duration + config)) + "\nEnableAdvMonInterleaveScan = " (number->string + (bluetooth-configuration-enable-adv-mon-interleave-scan + config)) + + "\n[GATT]" + "\nCache = " (symbol->string (bluetooth-configuration-cache config)) + "\nKeySize = " (number->string (bluetooth-configuration-key-size config)) + "\nExchangeMTU = " (number->string (bluetooth-configuration-exchange-mtu config)) + "\nChannels = " (number->string (bluetooth-configuration-att-channels config)) + + "\n[AVDTP]" + "\nSessionMode = " (symbol->string (bluetooth-configuration-session-mode config)) + "\nStreamMode = " (symbol->string (bluetooth-configuration-stream-mode config)) + + "\n[Policy]" + (if (not (eq? '() (bluetooth-configuration-reconnect-uuids config))) + (string-append + "\nReconnectUUIDs = " + (string-join (bluetooth-configuration-reconnect-uuids config) ",")) "") + "\nReconnectAttempts = " (number->string + (bluetooth-configuration-reconnect-attempts config)) + "\nReconnectIntervals = " (string-join + (map number->string + (bluetooth-configuration-reconnect-intervals + config)) + ",") + "\nAutoEnable = " (bool (bluetooth-configuration-auto-enable? + config)) + "\nResumeDelay = " (number->string (bluetooth-configuration-resume-delay config)) + + "\n[AdvMon]" + "\nRSSISamplingPeriod = " (bluetooth-configuration-rssi-sampling-period config))) (define (bluetooth-directory config) (computed-file "etc-bluetooth" -- 2.34.0
[Message part 3 (message/rfc822, inline)]
From: Ludovic Courtès <ludo <at> gnu.org> To: Demis Balbach <db <at> minikn.xyz> Cc: Josselin Poiret <dev <at> jpoiret.xyz>, Liliana Marie Prikler <liliana.prikler <at> gmail.com>, 52470-done <at> debbugs.gnu.org Subject: Re: bug#52470: [PATCH] services: bluetooth: Add missing config parameters Date: Wed, 09 Mar 2022 23:43:15 +0100Hi Demis, Demis Balbach <db <at> minikn.xyz> skribis: > --- > doc/guix.texi | 443 ++++++++++++++++++++++++++++++++++++++- > gnu/services/desktop.scm | 375 ++++++++++++++++++++++++++++++++- > 2 files changed, 813 insertions(+), 5 deletions(-) Great job! I haven’t tested it with actual Bluetooth hardware but it LGTM, so I went ahead and committed it. Apologies for the delay! The documentation work is much welcome. Perhaps it would be interesting to add a short example of ‘bluetooth-configuration’ with a sentence explaining what it does—it’s often easier to get started with an example. Anyway, thank you for the hard work, and thanks Liliana and Josselin for reviewing! Ludo’.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.