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.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.