[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/bluetooth 4a40ee6 24/57: adds GATT UUIDs and a rudiment
From: |
Stefan Monnier |
Subject: |
[elpa] externals/bluetooth 4a40ee6 24/57: adds GATT UUIDs and a rudimentary display function |
Date: |
Thu, 7 Nov 2019 23:28:52 -0500 (EST) |
branch: externals/bluetooth
commit 4a40ee63d99bc5cedd328f99a983c2ed43136d2d
Author: Raffael Stocker <address@hidden>
Commit: Raffael Stocker <address@hidden>
adds GATT UUIDs and a rudimentary display function
---
bluetooth.el | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 128 insertions(+), 15 deletions(-)
diff --git a/bluetooth.el b/bluetooth.el
index dfadbd7..d7aacf9 100644
--- a/bluetooth.el
+++ b/bluetooth.el
@@ -520,8 +520,10 @@ This function only uses the first adapter reported by
Bluez."
;;; Application layer
(defconst bluetooth--service-class-uuid-alist
- '((#x1000 . ("ServiceDiscoveryServerServiceClassID" "Bluetooth Core
Specification"))
- (#x1001 . ("BrowseGroupDescriptorServiceClassID" "Bluetooth Core
Specification"))
+ '((#x1000 . ("ServiceDiscoveryServerServiceClassID"
+ "Bluetooth Core Specification"))
+ (#x1001 . ("BrowseGroupDescriptorServiceClassID"
+ "Bluetooth Core Specification"))
(#x1101 . ("SerialPort" "Serial Port Profile (SPP)"))
(#x1102 . ("LANAccessUsingPPP" "LAN Access Profile"))
(#x1103 . ("DialupNetworking" "Dial-up Networking Profile (DUN)"))
@@ -533,15 +535,22 @@ This function only uses the first adapter reported by
Bluez."
(#x1109 . ("CordlessTelephony" "Cordless Telephony Profile (CTP)"))
(#x110A . ("AudioSource" "Advanced Audio Distribution Profile (A2DP)"))
(#x110B . ("AudioSink" "Advanced Audio Distribution Profile (A2DP)"))
- (#x110C . ("A/V_RemoteControlTarget" "Audio/Video Remote Control Profile
(AVRCP)"))
- (#x110D . ("AdvancedAudioDistribution" "Advanced Audio Distribution
Profile (A2DP)"))
- (#x110E . ("A/V_RemoteControl" "Audio/Video Remote Control Profile
(AVRCP)"))
- (#x110F . ("A/V_RemoteControlController" "Audio/Video Remote Control
Profile (AVRCP)"))
+ (#x110C . ("A/V_RemoteControlTarget"
+ "Audio/Video Remote Control Profile (AVRCP)"))
+ (#x110D . ("AdvancedAudioDistribution"
+ "Advanced Audio Distribution Profile (A2DP)"))
+ (#x110E . ("A/V_RemoteControl"
+ "Audio/Video Remote Control Profile (AVRCP)"))
+ (#x110F . ("A/V_RemoteControlController"
+ "Audio/Video Remote Control Profile (AVRCP)"))
(#x1110 . ("Intercom" "Intercom Profile (ICP)"))
(#x1111 . ("Fax" "Fax Profile (FAX)"))
(#x1112 . ("Headset - Audio Gateway (AG)" "Headset Profile (HSP)"))
- (#x1113 . ("WAP" "Interoperability Requirements for Bluetooth technology
as a WAP, Bluetooth SIG "))
- (#x1114 . ("WAP_CLIENT" "Interoperability Requirements for Bluetooth
technology as a WAP, Bluetooth SIG "))
+ (#x1113 . ("WAP" (concat "Interoperability Requirements for Bluetooth"
+ " technology as a WAP, Bluetooth SIG")))
+ (#x1114 . ("WAP_CLIENT"
+ (concat "Interoperability Requirements for"
+ " Bluetooth technology as a WAP, Bluetooth SIG")))
(#x1115 . ("PANU" "Personal Area Networking Profile (PAN)"))
(#x1116 . ("NAP" "Personal Area Networking Profile (PAN)"))
(#x1117 . ("GN" "Personal Area Networking Profile (PAN)"))
@@ -553,12 +562,14 @@ This function only uses the first adapter reported by
Bluez."
(#x111D . ("ImagingReferencedObjects" "Basic Imaging Profile (BIP)"))
(#x111E . ("Handsfree" "Hands-Free Profile (HFP)"))
(#x111F . ("HandsfreeAudioGateway" "Hands-free Profile (HFP)"))
- (#x1120 . ("DirectPrintingReferenceObjectsService" "Basic Printing Profile
(BPP)"))
+ (#x1120 . ("DirectPrintingReferenceObjectsService"
+ "Basic Printing Profile (BPP)"))
(#x1121 . ("ReflectedUI" "Basic Printing Profile (BPP)"))
(#x1122 . ("BasicPrinting" "Basic Printing Profile (BPP)"))
(#x1123 . ("PrintingStatus" "Basic Printing Profile (BPP)"))
(#x1124 . ("HumanInterfaceDeviceService" "Human Interface Device (HID)"))
- (#x1125 . ("HardcopyCableReplacement" "Hardcopy Cable Replacement Profile
(HCRP)"))
+ (#x1125 . ("HardcopyCableReplacement"
+ "Hardcopy Cable Replacement Profile (HCRP)"))
(#x1126 . ("HCR_Print" "Hardcopy Cable Replacement Profile (HCRP)"))
(#x1127 . ("HCR_Scan" "Hardcopy Cable Replacement Profile (HCRP)"))
(#x1128 . ("Common_ISDN_Access" "Common ISDN Access Profile (CIP)"))
@@ -571,14 +582,17 @@ This function only uses the first adapter reported by
Bluez."
(#x1133 . ("Message Notification Server" "Message Access Profile (MAP)"))
(#x1134 . ("Message Access Profile" "Message Access Profile (MAP)"))
(#x1135 . ("GNSS" "Global Navigation Satellite System Profile (GNSS)"))
- (#x1136 . ("GNSS_Server" "Global Navigation Satellite System Profile
(GNSS)"))
+ (#x1136 . ("GNSS_Server"
+ "Global Navigation Satellite System Profile (GNSS)"))
(#x1137 . ("3D Display" "3D Synchronization Profile (3DSP)"))
(#x1138 . ("3D Glasses" "3D Synchronization Profile (3DSP)"))
(#x1139 . ("3D Synchronization" "3D Synchronization Profile (3DSP)"))
(#x113A . ("MPS Profile UUID" "Multi-Profile Specification (MPS)"))
(#x113B . ("MPS SC UUID" "Multi-Profile Specification (MPS)"))
- (#x113C . ("CTN Access Service" "Calendar, Task, and Notes (CTN)
Profile"))
- (#x113D . ("CTN Notification Service" "Calendar Tasks and Notes (CTN)
Profile"))
+ (#x113C . ("CTN Access Service"
+ "Calendar, Task, and Notes (CTN) Profile"))
+ (#x113D . ("CTN Notification Service"
+ "Calendar Tasks and Notes (CTN) Profile"))
(#x113E . ("CTN Profile" "Calendar Tasks and Notes (CTN) Profile"))
(#x1200 . ("PnPInformation" "Device Identification (DID)"))
(#x1201 . ("GenericNetworking" "N/A"))
@@ -598,6 +612,80 @@ This function only uses the first adapter reported by
Bluez."
(#x1402 . ("HDP Sink" "Health Device Profile (HDP)")))
"Bluetooth service class UUIDs.")
+(defconst bluetooth--gatt-service-uuid-alist
+ '((#x1800 . ("Generic Access" "org.bluetooth.service.generic_access" "GSS"))
+ (#x1811 . ("Alert Notification Service"
+ "org.bluetooth.service.alert_notification" "GSS"))
+ (#x1815 . ("Automation IO" "org.bluetooth.service.automation_io" "GSS"))
+ (#x180F . ("Battery Service" "org.bluetooth.service.battery_service"
+ "GSS"))
+ (#x183B . ("Binary Sensor" "GATT Service UUID" "BSS"))
+ (#x1810 . ("Blood Pressure" "org.bluetooth.service.blood_pressure" "GSS"))
+ (#x181B . ("Body Composition" "org.bluetooth.service.body_composition"
+ "GSS"))
+ (#x181E . ("Bond Management Service"
+ "org.bluetooth.service.bond_management" "GSS"))
+ (#x181F . ("Continuous Glucose Monitoring"
+ "org.bluetooth.service.continuous_glucose_monitoring" "GSS"))
+ (#x1805 . ("Current Time Service" "org.bluetooth.service.current_time"
+ "GSS"))
+ (#x1818 . ("Cycling Power" "org.bluetooth.service.cycling_power" "GSS"))
+ (#x1816 . ("Cycling Speed and Cadence"
+ "org.bluetooth.service.cycling_speed_and_cadence" "GSS"))
+ (#x180A . ("Device Information" "org.bluetooth.service.device_information"
+ "GSS"))
+ (#x183C . ("Emergency Configuration" "GATT Service UUID" "EMCS"))
+ (#x181A . ("Environmental Sensing"
+ "org.bluetooth.service.environmental_sensing" "GSS"))
+ (#x1826 . ("Fitness Machine" "org.bluetooth.service.fitness_machine"
+ "GSS"))
+ (#x1801 . ("Generic Attribute" "org.bluetooth.service.generic_attribute"
+ "GSS"))
+ (#x1808 . ("Glucose" "org.bluetooth.service.glucose" "GSS"))
+ (#x1809 . ("Health Thermometer" "org.bluetooth.service.health_thermometer"
+ "GSS"))
+ (#x180D . ("Heart Rate" "org.bluetooth.service.heart_rate" "GSS"))
+ (#x1823 . ("HTTP Proxy" "org.bluetooth.service.http_proxy" "GSS"))
+ (#x1812 . ("Human Interface Device"
+ "org.bluetooth.service.human_interface_device" "GSS"))
+ (#x1802 . ("Immediate Alert" "org.bluetooth.service.immediate_alert"
+ "GSS"))
+ (#x1821 . ("Indoor Positioning" "org.bluetooth.service.indoor_positioning"
+ "GSS"))
+ (#x183A . ("Insulin Delivery" "org.bluetooth.service.insulin_delivery"
+ "GSS"))
+ (#x1820 . ("Internet Protocol Support Service"
+ "org.bluetooth.service.internet_protocol_support" "GSS"))
+ (#x1803 . ("Link Loss" "org.bluetooth.service.link_loss" "GSS"))
+ (#x1819 . ("Location and Navigation"
+ "org.bluetooth.service.location_and_navigation" "GSS"))
+ (#x1827 . ("Mesh Provisioning Service"
+ "org.bluetooth.service.mesh_provisioning" "GSS"))
+ (#x1828 . ("Mesh Proxy Service" "org.bluetooth.service.mesh_proxy" "GSS"))
+ (#x1807 . ("Next DST Change Service"
+ "org.bluetooth.service.next_dst_change" "GSS"))
+ (#x1825 . ("Object Transfer Service"
+ "org.bluetooth.service.object_transfer" "GSS"))
+ (#x180E . ("Phone Alert Status Service"
+ "org.bluetooth.service.phone_alert_status" "GSS"))
+ (#x1822 . ("Pulse Oximeter Service" "org.bluetooth.service.pulse_oximeter"
+ "GSS"))
+ (#x1829 . ("Reconnection Configuration"
+ "org.bluetooth.service.reconnection_configuration" "GSS"))
+ (#x1806 . ("Reference Time Update Service"
+ "org.bluetooth.service.reference_time_update" "GSS"))
+ (#x1814 . ("Running Speed and Cadence"
+ "org.bluetooth.service.running_speed_and_cadence" "GSS"))
+ (#x1813 . ("Scan Parameters" "org.bluetooth.service.scan_parameters"
+ "GSS"))
+ (#x1824 . ("Transport Discovery"
+ "org.bluetooth.service.transport_discovery" "GSS"))
+ (#x1804 . ("Tx Power" "org.bluetooth.service.tx_power" "GSS"))
+ (#x181C . ("User Data" "org.bluetooth.service.user_data" "GSS"))
+ (#x181D . ("Weight Scale" "org.bluetooth.service.weight_scale" "GSS")))
+ "Bluetooth GATT service UUIDs.")
+
+
(defconst bluetooth--base-uuid "0000-1000-8000-00805f9b34fb"
"Bluetooth base UUID.")
@@ -607,8 +695,33 @@ This function only uses the first adapter reported by
Bluez."
"-" (eval bluetooth--base-uuid) eos))))
(save-match-data
(when (string-match uuid-re uuid)
- (alist-get (string-to-number (match-string 1 uuid) 16)
- bluetooth--service-class-uuid-alist)))))
+ (let ((service-id (string-to-number (match-string 1 uuid) 16)))
+ (if (>= service-id #x1800)
+ (subseq (alist-get service-id
+ bluetooth--gatt-service-uuid-alist)
+ 0 2)
+ (alist-get service-id bluetooth--service-class-uuid-alist)))))))
+
+(defun bluetooth--show-device-info (device)
+ "Show information about DEVICE in a temp buffer"
+ (bluetooth--with-alias device
+ (with-current-buffer-window
+ (concat "*" alias "*") nil nil
+ (insert "Alias:\t\t" alias "\n")
+ (insert "Address:\t" (bluetooth--call-method
+ (car (last (split-string device "/"))) :device
+ #'dbus-get-property "Address")
+ "\n")
+ (let ((uuids (bluetooth--call-method
+ (car (last (split-string device "/"))) :device
+ #'dbus-get-property "UUIDs")))
+ (insert "\nService classes:\n")
+ (dolist (id uuids)
+ (insert (mapconcat #'identity
+ (or (bluetooth--parse-service-class-uuid id)
+ (list id))
+ " -- ")
+ "\n"))))))
(provide 'bluetooth)
- [elpa] externals/bluetooth a883d60 10/57: fixes spurious error on clean-up, (continued)
- [elpa] externals/bluetooth a883d60 10/57: fixes spurious error on clean-up, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth e6ca72d 06/57: corrects docstrings and Readme.org, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth dd28c81 11/57: turns defvar into defconst where possible, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 00497ca 03/57: adds bluetooth.el and .gitignore, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 0cac7d9 09/57: makes status display in mode line buffer-local, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 58dd9f9 12/57: adds 'Maintainer' header and cleans up 'Package-Requires', Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 2560749 15/57: adds Imenu integration, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth cc33d79 14/57: corrects project name in LICENSE, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 3743458 17/57: corrects list redisplay when mode is restarted, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 8cac69d 26/57: checks list-id for nil to avoid errors at actions w/o list item, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 4a40ee6 24/57: adds GATT UUIDs and a rudimentary display function,
Stefan Monnier <=
- [elpa] externals/bluetooth f33cb12 02/57: Add LICENSE, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth ee4e582 30/57: fixes compiler warnings about unused parameters, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 3365413 33/57: corrects the major mode check in `list-bluetooth-devices', Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth b47bddc 36/57: switches device-info buffer to special mode, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 42a9487 35/57: moves `hl-line-mode' to end of init so hl is shown at startup, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 325febd 16/57: adds Imenu integration to Readme feature list, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth f0e5047 18/57: removes unnecessary quotes before lambdas and corrects indentation, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 738347b 19/57: adds TAGS to .gitignore, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 28e9eb2 21/57: wraps @body in progn in bluetooth--maybe-cancel-reject, Stefan Monnier, 2019/11/07
- [elpa] externals/bluetooth 4133a10 13/57: makes mode idempotent, Stefan Monnier, 2019/11/07