Skip to content

Commit a643591

Browse files
committed
another API rework: less abstraction leakage
1 parent ff05feb commit a643591

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

adafruit_ble/hid_server.py

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
# for __version__
3636
import adafruit_ble
3737

38-
from bleio import Attribute, Characteristic, Peripheral, UUID
38+
from bleio import Attribute, Characteristic, Descriptor, Peripheral, Service, UUID
3939
from .advertising import ServerAdvertisement
4040
from .device_information_service import DeviceInformationService
4141

@@ -215,74 +215,77 @@ def __init__(self, name=None, tx_power=0):
215215
self._periph, software_revision=adafruit_ble.__version__,
216216
manufacturer="Adafruit Industries")
217217

218-
service = self._periph.add_service(UUID(_HID_SERVICE_UUID_NUM))
218+
hid_service = Service.add_to_peripheral(UUID(_HID_SERVICE_UUID_NUM))
219219

220220
self._input_chars = {}
221221
for report_id in sorted(self._INPUT_REPORT_SIZES.keys()):
222-
input_char = service.add_characteristic(
223-
self._REPORT_UUID, properties=Characteristic.READ | Characteristic.NOTIFY,
222+
input_char = Characteristic.add_to_service(
223+
hid_service, self._REPORT_UUID,
224+
properties=Characteristic.READ | Characteristic.NOTIFY,
224225
read_perm=Attribute.ENCRYPT_NO_MITM, write_perm=Attribute.NO_ACCESS,
225226
max_length=self._INPUT_REPORT_SIZES[report_id], fixed_length=True)
226-
input_char.add_descriptor(
227-
self._REPORT_REF_DESCR_UUID,
227+
Descriptor.add_to_characteristic(
228+
input_char, self._REPORT_REF_DESCR_UUID,
228229
read_perm=Attribute.ENCRYPT_NO_MITM, write_perm=Attribute.NO_ACCESS,
229230
initial_value=struct.pack('<BB', report_id, _REPORT_TYPE_INPUT))
230231
self._input_chars[report_id] = input_char
231232

232233
self._output_chars = {}
233234
for report_id in sorted(self._OUTPUT_REPORT_SIZES.keys()):
234-
output_char = service.add_characteristic(
235-
self._REPORT_UUID,
235+
output_char = Characteristic.add_to_service(
236+
hid_service, self._REPORT_UUID,
236237
properties=(Characteristic.READ | Characteristic.WRITE |
237238
Characteristic.WRITE_NO_RESPONSE),
238239
read_perm=Attribute.ENCRYPT_NO_MITM, write_perm=Attribute.ENCRYPT_NO_MITM,
239240
max_length=self._OUTPUT_REPORT_SIZES[report_id], fixed_length=True)
240-
output_char.add_descriptor(
241-
self._REPORT_REF_DESCR_UUID,
241+
Descriptor.add_to_characteristic(
242+
output_char, self._REPORT_REF_DESCR_UUID,
242243
read_perm=Attribute.ENCRYPT_NO_MITM, write_perm=Attribute.NO_ACCESS,
243244
initial_value=struct.pack('<BB', report_id, _REPORT_TYPE_OUTPUT))
244245
self._output_chars[report_id] = output_char
245246

246247
# Protocol mode: boot or report. Make it read-only for now because
247248
# it can't be changed
248249

249-
service.add_characteristic(
250-
UUID(_PROTOCOL_MODE_UUID_NUM),
250+
Characteristic.add_to_service(
251+
hid_service, UUID(_PROTOCOL_MODE_UUID_NUM),
251252
properties=Characteristic.READ | Characteristic.WRITE_NO_RESPONSE,
252253
read_perm=Attribute.OPEN, write_perm=Attribute.OPEN,
253254
max_length=1, fixed_length=True,
254255
initial_value=_PROTOCOL_MODE_REPORT)
255256

256-
service.add_characteristic(
257-
UUID(_BOOT_KEYBOARD_INPUT_REPORT_UUID_NUM),
257+
Characteristic.add_to_service(
258+
hid_service, UUID(_BOOT_KEYBOARD_INPUT_REPORT_UUID_NUM),
258259
properties=Characteristic.READ | Characteristic.NOTIFY,
259260
read_perm=Attribute.ENCRYPT_NO_MITM, write_perm=Attribute.NO_ACCESS,
260261
max_length=self._INPUT_REPORT_SIZES[self.REPORT_ID_KEYBOARD], fixed_length=True)
261262

262-
service.add_characteristic(
263-
UUID(_BOOT_KEYBOARD_OUTPUT_REPORT_UUID_NUM),
263+
Characteristic.add_to_service(
264+
hid_service, UUID(_BOOT_KEYBOARD_OUTPUT_REPORT_UUID_NUM),
264265
properties=(Characteristic.READ | Characteristic.WRITE |
265266
Characteristic.WRITE_NO_RESPONSE),
266267
read_perm=Attribute.ENCRYPT_NO_MITM, write_perm=Attribute.ENCRYPT_NO_MITM,
267268
max_length=self._OUTPUT_REPORT_SIZES[self.REPORT_ID_KEYBOARD], fixed_length=True)
268269

269270
# This is the USB HID descriptor (not to be confused with a BLE Descriptor).
270-
service.add_characteristic(
271-
UUID(_REPORT_MAP_UUID_NUM), properties=Characteristic.READ,
271+
Characteristic.add_to_service(
272+
hid_service, UUID(_REPORT_MAP_UUID_NUM), properties=Characteristic.READ,
272273
read_perm=Attribute.ENCRYPT_NO_MITM, write_perm=Attribute.NO_ACCESS,
273274
max_length=len(self.HID_DESCRIPTOR), fixed_length=True,
274275
initial_value=self.HID_DESCRIPTOR)
275276

276277
# bcdHID (version), bCountryCode (0 not localized), Flags: RemoteWake, NormallyConnectable
277278
# bcd1.1, country = 0, flag = normal connect
278-
service.add_characteristic(
279-
UUID(_HID_INFORMATION_UUID_NUM), properties=Characteristic.READ,
279+
Characteristic.add_to_service(
280+
hid_service, UUID(_HID_INFORMATION_UUID_NUM),
281+
properties=Characteristic.READ,
280282
read_perm=Attribute.ENCRYPT_NO_MITM, write_perm=Attribute.NO_ACCESS,
281283
initial_value=b'\x01\x01\x00\x02')
282284

283285
# 0 = suspend; 1 = exit suspend
284-
service.add_characteristic(
285-
UUID(_HID_CONTROL_POINT_UUID_NUM), properties=Characteristic.WRITE_NO_RESPONSE,
286+
Characteristic.add_to_service(
287+
hid_service, UUID(_HID_CONTROL_POINT_UUID_NUM),
288+
properties=Characteristic.WRITE_NO_RESPONSE,
286289
read_perm=Attribute.NO_ACCESS, write_perm=Attribute.ENCRYPT_NO_MITM)
287290

288291
self._advertisement = ServerAdvertisement(self._periph, tx_power=tx_power,

adafruit_ble/uart_server.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* Author(s): Dan Halbert for Adafruit Industries
2929
3030
"""
31-
from bleio import Attribute, Characteristic, CharacteristicBuffer, Peripheral
31+
from bleio import Attribute, Characteristic, CharacteristicBuffer, Peripheral, Service
3232
from .advertising import ServerAdvertisement
3333
from .uart import NUS_SERVICE_UUID, NUS_RX_CHAR_UUID, NUS_TX_CHAR_UUID
3434

@@ -57,15 +57,15 @@ class UARTServer:
5757

5858
def __init__(self, *, timeout=1.0, buffer_size=64, name=None):
5959
self._periph = Peripheral(name)
60-
service = self._periph.add_service(NUS_SERVICE_UUID)
60+
service = Service.add_to_peripheral(self._periph, NUS_SERVICE_UUID)
6161

62-
self._read_char = service.add_characteristic(
63-
NUS_RX_CHAR_UUID,
62+
self._read_char = Characteristic.add_to_service(
63+
service, NUS_RX_CHAR_UUID,
6464
properties=Characteristic.WRITE | Characteristic.WRITE_NO_RESPONSE,
6565
read_perm=Attribute.NO_ACCESS, write_perm=Attribute.OPEN)
6666

67-
self._write_char = service.add_characteristic(
68-
NUS_TX_CHAR_UUID,
67+
self._write_char = Characteristic.add_to_service(
68+
service, NUS_TX_CHAR_UUID,
6969
properties=Characteristic.NOTIFY,
7070
read_perm=Attribute.OPEN, write_perm=Attribute.NO_ACCESS)
7171

0 commit comments

Comments
 (0)