bumble 0.0.208__py3-none-any.whl → 0.0.210__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bumble/_version.py +2 -2
- bumble/a2dp.py +7 -7
- bumble/apps/auracast.py +37 -29
- bumble/apps/bench.py +9 -7
- bumble/apps/console.py +1 -1
- bumble/apps/lea_unicast/app.py +6 -2
- bumble/apps/pair.py +4 -3
- bumble/apps/player/player.py +3 -3
- bumble/apps/rfcomm_bridge.py +1 -1
- bumble/apps/speaker/speaker.py +4 -2
- bumble/att.py +12 -5
- bumble/avc.py +5 -5
- bumble/avdtp.py +9 -10
- bumble/avrcp.py +18 -19
- bumble/bridge.py +2 -2
- bumble/controller.py +13 -15
- bumble/core.py +61 -60
- bumble/device.py +193 -162
- bumble/drivers/__init__.py +2 -2
- bumble/gap.py +1 -1
- bumble/gatt.py +16 -0
- bumble/gatt_adapters.py +3 -3
- bumble/gatt_client.py +27 -21
- bumble/gatt_server.py +9 -10
- bumble/hci.py +109 -90
- bumble/hfp.py +3 -3
- bumble/hid.py +4 -3
- bumble/host.py +30 -19
- bumble/keys.py +3 -3
- bumble/l2cap.py +21 -19
- bumble/link.py +5 -6
- bumble/pairing.py +3 -3
- bumble/pandora/__init__.py +5 -5
- bumble/pandora/host.py +30 -23
- bumble/pandora/l2cap.py +2 -2
- bumble/pandora/security.py +17 -19
- bumble/pandora/utils.py +2 -2
- bumble/profiles/aics.py +6 -6
- bumble/profiles/ancs.py +513 -0
- bumble/profiles/ascs.py +17 -10
- bumble/profiles/asha.py +5 -5
- bumble/profiles/bass.py +1 -1
- bumble/profiles/csip.py +10 -10
- bumble/profiles/gatt_service.py +12 -12
- bumble/profiles/hap.py +16 -16
- bumble/profiles/mcp.py +26 -24
- bumble/profiles/pacs.py +6 -6
- bumble/profiles/pbp.py +1 -1
- bumble/profiles/vcs.py +6 -4
- bumble/profiles/vocs.py +3 -3
- bumble/rfcomm.py +8 -8
- bumble/sdp.py +1 -1
- bumble/smp.py +39 -33
- bumble/transport/__init__.py +24 -19
- bumble/transport/android_emulator.py +8 -4
- bumble/transport/android_netsim.py +8 -5
- bumble/transport/common.py +5 -1
- bumble/transport/file.py +1 -1
- bumble/transport/hci_socket.py +1 -1
- bumble/transport/pty.py +1 -1
- bumble/transport/pyusb.py +3 -3
- bumble/transport/serial.py +1 -1
- bumble/transport/tcp_client.py +1 -1
- bumble/transport/tcp_server.py +1 -1
- bumble/transport/udp.py +1 -1
- bumble/transport/unix.py +1 -1
- bumble/transport/usb.py +1 -3
- bumble/transport/vhci.py +2 -2
- bumble/transport/ws_client.py +6 -1
- bumble/transport/ws_server.py +1 -1
- bumble/utils.py +89 -76
- {bumble-0.0.208.dist-info → bumble-0.0.210.dist-info}/METADATA +3 -2
- {bumble-0.0.208.dist-info → bumble-0.0.210.dist-info}/RECORD +77 -76
- {bumble-0.0.208.dist-info → bumble-0.0.210.dist-info}/WHEEL +1 -1
- {bumble-0.0.208.dist-info → bumble-0.0.210.dist-info}/entry_points.txt +0 -0
- {bumble-0.0.208.dist-info → bumble-0.0.210.dist-info/licenses}/LICENSE +0 -0
- {bumble-0.0.208.dist-info → bumble-0.0.210.dist-info}/top_level.txt +0 -0
bumble/bridge.py
CHANGED
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
# -----------------------------------------------------------------------------
|
|
18
18
|
import logging
|
|
19
19
|
|
|
20
|
-
from .hci import HCI_Packet
|
|
21
|
-
from .helpers import PacketTracer
|
|
20
|
+
from bumble.hci import HCI_Packet
|
|
21
|
+
from bumble.helpers import PacketTracer
|
|
22
22
|
|
|
23
23
|
# -----------------------------------------------------------------------------
|
|
24
24
|
# Logging
|
bumble/controller.py
CHANGED
|
@@ -25,10 +25,7 @@ import random
|
|
|
25
25
|
import struct
|
|
26
26
|
from bumble.colors import color
|
|
27
27
|
from bumble.core import (
|
|
28
|
-
|
|
29
|
-
BT_PERIPHERAL_ROLE,
|
|
30
|
-
BT_LE_TRANSPORT,
|
|
31
|
-
BT_BR_EDR_TRANSPORT,
|
|
28
|
+
PhysicalTransport,
|
|
32
29
|
)
|
|
33
30
|
|
|
34
31
|
from bumble.hci import (
|
|
@@ -47,6 +44,7 @@ from bumble.hci import (
|
|
|
47
44
|
HCI_REMOTE_USER_TERMINATED_CONNECTION_ERROR,
|
|
48
45
|
HCI_VERSION_BLUETOOTH_CORE_5_0,
|
|
49
46
|
Address,
|
|
47
|
+
Role,
|
|
50
48
|
HCI_AclDataPacket,
|
|
51
49
|
HCI_AclDataPacketAssembler,
|
|
52
50
|
HCI_Command_Complete_Event,
|
|
@@ -98,7 +96,7 @@ class CisLink:
|
|
|
98
96
|
class Connection:
|
|
99
97
|
controller: Controller
|
|
100
98
|
handle: int
|
|
101
|
-
role:
|
|
99
|
+
role: Role
|
|
102
100
|
peer_address: Address
|
|
103
101
|
link: Any
|
|
104
102
|
transport: int
|
|
@@ -390,10 +388,10 @@ class Controller:
|
|
|
390
388
|
connection = Connection(
|
|
391
389
|
controller=self,
|
|
392
390
|
handle=connection_handle,
|
|
393
|
-
role=
|
|
391
|
+
role=Role.PERIPHERAL,
|
|
394
392
|
peer_address=peer_address,
|
|
395
393
|
link=self.link,
|
|
396
|
-
transport=
|
|
394
|
+
transport=PhysicalTransport.LE,
|
|
397
395
|
link_type=HCI_Connection_Complete_Event.ACL_LINK_TYPE,
|
|
398
396
|
)
|
|
399
397
|
self.peripheral_connections[peer_address] = connection
|
|
@@ -450,10 +448,10 @@ class Controller:
|
|
|
450
448
|
connection = Connection(
|
|
451
449
|
controller=self,
|
|
452
450
|
handle=connection_handle,
|
|
453
|
-
role=
|
|
451
|
+
role=Role.CENTRAL,
|
|
454
452
|
peer_address=peer_address,
|
|
455
453
|
link=self.link,
|
|
456
|
-
transport=
|
|
454
|
+
transport=PhysicalTransport.LE,
|
|
457
455
|
link_type=HCI_Connection_Complete_Event.ACL_LINK_TYPE,
|
|
458
456
|
)
|
|
459
457
|
self.central_connections[peer_address] = connection
|
|
@@ -469,7 +467,7 @@ class Controller:
|
|
|
469
467
|
HCI_LE_Connection_Complete_Event(
|
|
470
468
|
status=status,
|
|
471
469
|
connection_handle=connection.handle if connection else 0,
|
|
472
|
-
role=
|
|
470
|
+
role=Role.CENTRAL,
|
|
473
471
|
peer_address_type=le_create_connection_command.peer_address_type,
|
|
474
472
|
peer_address=le_create_connection_command.peer_address,
|
|
475
473
|
connection_interval=le_create_connection_command.connection_interval_min,
|
|
@@ -531,7 +529,7 @@ class Controller:
|
|
|
531
529
|
|
|
532
530
|
def on_link_acl_data(self, sender_address, transport, data):
|
|
533
531
|
# Look for the connection to which this data belongs
|
|
534
|
-
if transport ==
|
|
532
|
+
if transport == PhysicalTransport.LE:
|
|
535
533
|
connection = self.find_le_connection_by_address(sender_address)
|
|
536
534
|
else:
|
|
537
535
|
connection = self.find_classic_connection_by_address(sender_address)
|
|
@@ -693,10 +691,10 @@ class Controller:
|
|
|
693
691
|
controller=self,
|
|
694
692
|
handle=connection_handle,
|
|
695
693
|
# Role doesn't matter in Classic because they are managed by HCI_Role_Change and HCI_Role_Discovery
|
|
696
|
-
role=
|
|
694
|
+
role=Role.CENTRAL,
|
|
697
695
|
peer_address=peer_address,
|
|
698
696
|
link=self.link,
|
|
699
|
-
transport=
|
|
697
|
+
transport=PhysicalTransport.BR_EDR,
|
|
700
698
|
link_type=HCI_Connection_Complete_Event.ACL_LINK_TYPE,
|
|
701
699
|
)
|
|
702
700
|
self.classic_connections[peer_address] = connection
|
|
@@ -761,10 +759,10 @@ class Controller:
|
|
|
761
759
|
controller=self,
|
|
762
760
|
handle=connection_handle,
|
|
763
761
|
# Role doesn't matter in SCO.
|
|
764
|
-
role=
|
|
762
|
+
role=Role.CENTRAL,
|
|
765
763
|
peer_address=peer_address,
|
|
766
764
|
link=self.link,
|
|
767
|
-
transport=
|
|
765
|
+
transport=PhysicalTransport.BR_EDR,
|
|
768
766
|
link_type=link_type,
|
|
769
767
|
)
|
|
770
768
|
self.classic_connections[peer_address] = connection
|
bumble/core.py
CHANGED
|
@@ -23,7 +23,7 @@ from typing import cast, overload, Literal, Union, Optional
|
|
|
23
23
|
from typing_extensions import Self
|
|
24
24
|
|
|
25
25
|
from bumble.company_ids import COMPANY_IDENTIFIERS
|
|
26
|
-
from bumble
|
|
26
|
+
from bumble import utils
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
# -----------------------------------------------------------------------------
|
|
@@ -31,11 +31,12 @@ from bumble.utils import OpenIntEnum
|
|
|
31
31
|
# -----------------------------------------------------------------------------
|
|
32
32
|
# fmt: off
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
class PhysicalTransport(enum.IntEnum):
|
|
35
|
+
BR_EDR = 0
|
|
36
|
+
LE = 1
|
|
36
37
|
|
|
37
|
-
BT_BR_EDR_TRANSPORT =
|
|
38
|
-
BT_LE_TRANSPORT =
|
|
38
|
+
BT_BR_EDR_TRANSPORT = PhysicalTransport.BR_EDR
|
|
39
|
+
BT_LE_TRANSPORT = PhysicalTransport.LE
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
# fmt: on
|
|
@@ -729,7 +730,7 @@ class DeviceClass:
|
|
|
729
730
|
# Appearance
|
|
730
731
|
# -----------------------------------------------------------------------------
|
|
731
732
|
class Appearance:
|
|
732
|
-
class Category(OpenIntEnum):
|
|
733
|
+
class Category(utils.OpenIntEnum):
|
|
733
734
|
UNKNOWN = 0x0000
|
|
734
735
|
PHONE = 0x0001
|
|
735
736
|
COMPUTER = 0x0002
|
|
@@ -783,13 +784,13 @@ class Appearance:
|
|
|
783
784
|
SPIROMETER = 0x0037
|
|
784
785
|
OUTDOOR_SPORTS_ACTIVITY = 0x0051
|
|
785
786
|
|
|
786
|
-
class UnknownSubcategory(OpenIntEnum):
|
|
787
|
+
class UnknownSubcategory(utils.OpenIntEnum):
|
|
787
788
|
GENERIC_UNKNOWN = 0x00
|
|
788
789
|
|
|
789
|
-
class PhoneSubcategory(OpenIntEnum):
|
|
790
|
+
class PhoneSubcategory(utils.OpenIntEnum):
|
|
790
791
|
GENERIC_PHONE = 0x00
|
|
791
792
|
|
|
792
|
-
class ComputerSubcategory(OpenIntEnum):
|
|
793
|
+
class ComputerSubcategory(utils.OpenIntEnum):
|
|
793
794
|
GENERIC_COMPUTER = 0x00
|
|
794
795
|
DESKTOP_WORKSTATION = 0x01
|
|
795
796
|
SERVER_CLASS_COMPUTER = 0x02
|
|
@@ -807,49 +808,49 @@ class Appearance:
|
|
|
807
808
|
MINI_PC = 0x0E
|
|
808
809
|
STICK_PC = 0x0F
|
|
809
810
|
|
|
810
|
-
class WatchSubcategory(OpenIntEnum):
|
|
811
|
+
class WatchSubcategory(utils.OpenIntEnum):
|
|
811
812
|
GENENERIC_WATCH = 0x00
|
|
812
813
|
SPORTS_WATCH = 0x01
|
|
813
814
|
SMARTWATCH = 0x02
|
|
814
815
|
|
|
815
|
-
class ClockSubcategory(OpenIntEnum):
|
|
816
|
+
class ClockSubcategory(utils.OpenIntEnum):
|
|
816
817
|
GENERIC_CLOCK = 0x00
|
|
817
818
|
|
|
818
|
-
class DisplaySubcategory(OpenIntEnum):
|
|
819
|
+
class DisplaySubcategory(utils.OpenIntEnum):
|
|
819
820
|
GENERIC_DISPLAY = 0x00
|
|
820
821
|
|
|
821
|
-
class RemoteControlSubcategory(OpenIntEnum):
|
|
822
|
+
class RemoteControlSubcategory(utils.OpenIntEnum):
|
|
822
823
|
GENERIC_REMOTE_CONTROL = 0x00
|
|
823
824
|
|
|
824
|
-
class EyeglassesSubcategory(OpenIntEnum):
|
|
825
|
+
class EyeglassesSubcategory(utils.OpenIntEnum):
|
|
825
826
|
GENERIC_EYEGLASSES = 0x00
|
|
826
827
|
|
|
827
|
-
class TagSubcategory(OpenIntEnum):
|
|
828
|
+
class TagSubcategory(utils.OpenIntEnum):
|
|
828
829
|
GENERIC_TAG = 0x00
|
|
829
830
|
|
|
830
|
-
class KeyringSubcategory(OpenIntEnum):
|
|
831
|
+
class KeyringSubcategory(utils.OpenIntEnum):
|
|
831
832
|
GENERIC_KEYRING = 0x00
|
|
832
833
|
|
|
833
|
-
class MediaPlayerSubcategory(OpenIntEnum):
|
|
834
|
+
class MediaPlayerSubcategory(utils.OpenIntEnum):
|
|
834
835
|
GENERIC_MEDIA_PLAYER = 0x00
|
|
835
836
|
|
|
836
|
-
class BarcodeScannerSubcategory(OpenIntEnum):
|
|
837
|
+
class BarcodeScannerSubcategory(utils.OpenIntEnum):
|
|
837
838
|
GENERIC_BARCODE_SCANNER = 0x00
|
|
838
839
|
|
|
839
|
-
class ThermometerSubcategory(OpenIntEnum):
|
|
840
|
+
class ThermometerSubcategory(utils.OpenIntEnum):
|
|
840
841
|
GENERIC_THERMOMETER = 0x00
|
|
841
842
|
EAR_THERMOMETER = 0x01
|
|
842
843
|
|
|
843
|
-
class HeartRateSensorSubcategory(OpenIntEnum):
|
|
844
|
+
class HeartRateSensorSubcategory(utils.OpenIntEnum):
|
|
844
845
|
GENERIC_HEART_RATE_SENSOR = 0x00
|
|
845
846
|
HEART_RATE_BELT = 0x01
|
|
846
847
|
|
|
847
|
-
class BloodPressureSubcategory(OpenIntEnum):
|
|
848
|
+
class BloodPressureSubcategory(utils.OpenIntEnum):
|
|
848
849
|
GENERIC_BLOOD_PRESSURE = 0x00
|
|
849
850
|
ARM_BLOOD_PRESSURE = 0x01
|
|
850
851
|
WRIST_BLOOD_PRESSURE = 0x02
|
|
851
852
|
|
|
852
|
-
class HumanInterfaceDeviceSubcategory(OpenIntEnum):
|
|
853
|
+
class HumanInterfaceDeviceSubcategory(utils.OpenIntEnum):
|
|
853
854
|
GENERIC_HUMAN_INTERFACE_DEVICE = 0x00
|
|
854
855
|
KEYBOARD = 0x01
|
|
855
856
|
MOUSE = 0x02
|
|
@@ -862,16 +863,16 @@ class Appearance:
|
|
|
862
863
|
TOUCHPAD = 0x09
|
|
863
864
|
PRESENTATION_REMOTE = 0x0A
|
|
864
865
|
|
|
865
|
-
class GlucoseMeterSubcategory(OpenIntEnum):
|
|
866
|
+
class GlucoseMeterSubcategory(utils.OpenIntEnum):
|
|
866
867
|
GENERIC_GLUCOSE_METER = 0x00
|
|
867
868
|
|
|
868
|
-
class RunningWalkingSensorSubcategory(OpenIntEnum):
|
|
869
|
+
class RunningWalkingSensorSubcategory(utils.OpenIntEnum):
|
|
869
870
|
GENERIC_RUNNING_WALKING_SENSOR = 0x00
|
|
870
871
|
IN_SHOE_RUNNING_WALKING_SENSOR = 0x01
|
|
871
872
|
ON_SHOW_RUNNING_WALKING_SENSOR = 0x02
|
|
872
873
|
ON_HIP_RUNNING_WALKING_SENSOR = 0x03
|
|
873
874
|
|
|
874
|
-
class CyclingSubcategory(OpenIntEnum):
|
|
875
|
+
class CyclingSubcategory(utils.OpenIntEnum):
|
|
875
876
|
GENERIC_CYCLING = 0x00
|
|
876
877
|
CYCLING_COMPUTER = 0x01
|
|
877
878
|
SPEED_SENSOR = 0x02
|
|
@@ -879,7 +880,7 @@ class Appearance:
|
|
|
879
880
|
POWER_SENSOR = 0x04
|
|
880
881
|
SPEED_AND_CADENCE_SENSOR = 0x05
|
|
881
882
|
|
|
882
|
-
class ControlDeviceSubcategory(OpenIntEnum):
|
|
883
|
+
class ControlDeviceSubcategory(utils.OpenIntEnum):
|
|
883
884
|
GENERIC_CONTROL_DEVICE = 0x00
|
|
884
885
|
SWITCH = 0x01
|
|
885
886
|
MULTI_SWITCH = 0x02
|
|
@@ -894,13 +895,13 @@ class Appearance:
|
|
|
894
895
|
ENERGY_HARVESTING_SWITCH = 0x0B
|
|
895
896
|
PUSH_BUTTON = 0x0C
|
|
896
897
|
|
|
897
|
-
class NetworkDeviceSubcategory(OpenIntEnum):
|
|
898
|
+
class NetworkDeviceSubcategory(utils.OpenIntEnum):
|
|
898
899
|
GENERIC_NETWORK_DEVICE = 0x00
|
|
899
900
|
ACCESS_POINT = 0x01
|
|
900
901
|
MESH_DEVICE = 0x02
|
|
901
902
|
MESH_NETWORK_PROXY = 0x03
|
|
902
903
|
|
|
903
|
-
class SensorSubcategory(OpenIntEnum):
|
|
904
|
+
class SensorSubcategory(utils.OpenIntEnum):
|
|
904
905
|
GENERIC_SENSOR = 0x00
|
|
905
906
|
MOTION_SENSOR = 0x01
|
|
906
907
|
AIR_QUALITY_SENSOR = 0x02
|
|
@@ -928,7 +929,7 @@ class Appearance:
|
|
|
928
929
|
FLAME_DETECTOR = 0x18
|
|
929
930
|
VEHICLE_TIRE_PRESSURE_SENSOR = 0x19
|
|
930
931
|
|
|
931
|
-
class LightFixturesSubcategory(OpenIntEnum):
|
|
932
|
+
class LightFixturesSubcategory(utils.OpenIntEnum):
|
|
932
933
|
GENERIC_LIGHT_FIXTURES = 0x00
|
|
933
934
|
WALL_LIGHT = 0x01
|
|
934
935
|
CEILING_LIGHT = 0x02
|
|
@@ -956,7 +957,7 @@ class Appearance:
|
|
|
956
957
|
LOW_BAY_LIGHT = 0x18
|
|
957
958
|
HIGH_BAY_LIGHT = 0x19
|
|
958
959
|
|
|
959
|
-
class FanSubcategory(OpenIntEnum):
|
|
960
|
+
class FanSubcategory(utils.OpenIntEnum):
|
|
960
961
|
GENERIC_FAN = 0x00
|
|
961
962
|
CEILING_FAN = 0x01
|
|
962
963
|
AXIAL_FAN = 0x02
|
|
@@ -965,7 +966,7 @@ class Appearance:
|
|
|
965
966
|
DESK_FAN = 0x05
|
|
966
967
|
WALL_FAN = 0x06
|
|
967
968
|
|
|
968
|
-
class HvacSubcategory(OpenIntEnum):
|
|
969
|
+
class HvacSubcategory(utils.OpenIntEnum):
|
|
969
970
|
GENERIC_HVAC = 0x00
|
|
970
971
|
THERMOSTAT = 0x01
|
|
971
972
|
HUMIDIFIER = 0x02
|
|
@@ -979,13 +980,13 @@ class Appearance:
|
|
|
979
980
|
FAN_HEATER = 0x0A
|
|
980
981
|
AIR_CURTAIN = 0x0B
|
|
981
982
|
|
|
982
|
-
class AirConditioningSubcategory(OpenIntEnum):
|
|
983
|
+
class AirConditioningSubcategory(utils.OpenIntEnum):
|
|
983
984
|
GENERIC_AIR_CONDITIONING = 0x00
|
|
984
985
|
|
|
985
|
-
class HumidifierSubcategory(OpenIntEnum):
|
|
986
|
+
class HumidifierSubcategory(utils.OpenIntEnum):
|
|
986
987
|
GENERIC_HUMIDIFIER = 0x00
|
|
987
988
|
|
|
988
|
-
class HeatingSubcategory(OpenIntEnum):
|
|
989
|
+
class HeatingSubcategory(utils.OpenIntEnum):
|
|
989
990
|
GENERIC_HEATING = 0x00
|
|
990
991
|
RADIATOR = 0x01
|
|
991
992
|
BOILER = 0x02
|
|
@@ -995,7 +996,7 @@ class Appearance:
|
|
|
995
996
|
FAN_HEATER = 0x06
|
|
996
997
|
AIR_CURTAIN = 0x07
|
|
997
998
|
|
|
998
|
-
class AccessControlSubcategory(OpenIntEnum):
|
|
999
|
+
class AccessControlSubcategory(utils.OpenIntEnum):
|
|
999
1000
|
GENERIC_ACCESS_CONTROL = 0x00
|
|
1000
1001
|
ACCESS_DOOR = 0x01
|
|
1001
1002
|
GARAGE_DOOR = 0x02
|
|
@@ -1007,7 +1008,7 @@ class Appearance:
|
|
|
1007
1008
|
DOOR_LOCK = 0x08
|
|
1008
1009
|
LOCKER = 0x09
|
|
1009
1010
|
|
|
1010
|
-
class MotorizedDeviceSubcategory(OpenIntEnum):
|
|
1011
|
+
class MotorizedDeviceSubcategory(utils.OpenIntEnum):
|
|
1011
1012
|
GENERIC_MOTORIZED_DEVICE = 0x00
|
|
1012
1013
|
MOTORIZED_GATE = 0x01
|
|
1013
1014
|
AWNING = 0x02
|
|
@@ -1015,7 +1016,7 @@ class Appearance:
|
|
|
1015
1016
|
CURTAINS = 0x04
|
|
1016
1017
|
SCREEN = 0x05
|
|
1017
1018
|
|
|
1018
|
-
class PowerDeviceSubcategory(OpenIntEnum):
|
|
1019
|
+
class PowerDeviceSubcategory(utils.OpenIntEnum):
|
|
1019
1020
|
GENERIC_POWER_DEVICE = 0x00
|
|
1020
1021
|
POWER_OUTLET = 0x01
|
|
1021
1022
|
POWER_STRIP = 0x02
|
|
@@ -1027,7 +1028,7 @@ class Appearance:
|
|
|
1027
1028
|
CHARGE_CASE = 0x08
|
|
1028
1029
|
POWER_BANK = 0x09
|
|
1029
1030
|
|
|
1030
|
-
class LightSourceSubcategory(OpenIntEnum):
|
|
1031
|
+
class LightSourceSubcategory(utils.OpenIntEnum):
|
|
1031
1032
|
GENERIC_LIGHT_SOURCE = 0x00
|
|
1032
1033
|
INCANDESCENT_LIGHT_BULB = 0x01
|
|
1033
1034
|
LED_LAMP = 0x02
|
|
@@ -1038,7 +1039,7 @@ class Appearance:
|
|
|
1038
1039
|
LOW_VOLTAGE_HALOGEN = 0x07
|
|
1039
1040
|
ORGANIC_LIGHT_EMITTING_DIODE = 0x08
|
|
1040
1041
|
|
|
1041
|
-
class WindowCoveringSubcategory(OpenIntEnum):
|
|
1042
|
+
class WindowCoveringSubcategory(utils.OpenIntEnum):
|
|
1042
1043
|
GENERIC_WINDOW_COVERING = 0x00
|
|
1043
1044
|
WINDOW_SHADES = 0x01
|
|
1044
1045
|
WINDOW_BLINDS = 0x02
|
|
@@ -1047,7 +1048,7 @@ class Appearance:
|
|
|
1047
1048
|
EXTERIOR_SHUTTER = 0x05
|
|
1048
1049
|
EXTERIOR_SCREEN = 0x06
|
|
1049
1050
|
|
|
1050
|
-
class AudioSinkSubcategory(OpenIntEnum):
|
|
1051
|
+
class AudioSinkSubcategory(utils.OpenIntEnum):
|
|
1051
1052
|
GENERIC_AUDIO_SINK = 0x00
|
|
1052
1053
|
STANDALONE_SPEAKER = 0x01
|
|
1053
1054
|
SOUNDBAR = 0x02
|
|
@@ -1055,7 +1056,7 @@ class Appearance:
|
|
|
1055
1056
|
STANDMOUNTED_SPEAKER = 0x04
|
|
1056
1057
|
SPEAKERPHONE = 0x05
|
|
1057
1058
|
|
|
1058
|
-
class AudioSourceSubcategory(OpenIntEnum):
|
|
1059
|
+
class AudioSourceSubcategory(utils.OpenIntEnum):
|
|
1059
1060
|
GENERIC_AUDIO_SOURCE = 0x00
|
|
1060
1061
|
MICROPHONE = 0x01
|
|
1061
1062
|
ALARM = 0x02
|
|
@@ -1067,7 +1068,7 @@ class Appearance:
|
|
|
1067
1068
|
BROADCASTING_ROOM = 0x08
|
|
1068
1069
|
AUDITORIUM = 0x09
|
|
1069
1070
|
|
|
1070
|
-
class MotorizedVehicleSubcategory(OpenIntEnum):
|
|
1071
|
+
class MotorizedVehicleSubcategory(utils.OpenIntEnum):
|
|
1071
1072
|
GENERIC_MOTORIZED_VEHICLE = 0x00
|
|
1072
1073
|
CAR = 0x01
|
|
1073
1074
|
LARGE_GOODS_VEHICLE = 0x02
|
|
@@ -1085,7 +1086,7 @@ class Appearance:
|
|
|
1085
1086
|
CAMPER_CARAVAN = 0x0E
|
|
1086
1087
|
RECREATIONAL_VEHICLE_MOTOR_HOME = 0x0F
|
|
1087
1088
|
|
|
1088
|
-
class DomesticApplianceSubcategory(OpenIntEnum):
|
|
1089
|
+
class DomesticApplianceSubcategory(utils.OpenIntEnum):
|
|
1089
1090
|
GENERIC_DOMESTIC_APPLIANCE = 0x00
|
|
1090
1091
|
REFRIGERATOR = 0x01
|
|
1091
1092
|
FREEZER = 0x02
|
|
@@ -1103,21 +1104,21 @@ class Appearance:
|
|
|
1103
1104
|
RICE_COOKER = 0x0E
|
|
1104
1105
|
CLOTHES_STEAMER = 0x0F
|
|
1105
1106
|
|
|
1106
|
-
class WearableAudioDeviceSubcategory(OpenIntEnum):
|
|
1107
|
+
class WearableAudioDeviceSubcategory(utils.OpenIntEnum):
|
|
1107
1108
|
GENERIC_WEARABLE_AUDIO_DEVICE = 0x00
|
|
1108
1109
|
EARBUD = 0x01
|
|
1109
1110
|
HEADSET = 0x02
|
|
1110
1111
|
HEADPHONES = 0x03
|
|
1111
1112
|
NECK_BAND = 0x04
|
|
1112
1113
|
|
|
1113
|
-
class AircraftSubcategory(OpenIntEnum):
|
|
1114
|
+
class AircraftSubcategory(utils.OpenIntEnum):
|
|
1114
1115
|
GENERIC_AIRCRAFT = 0x00
|
|
1115
1116
|
LIGHT_AIRCRAFT = 0x01
|
|
1116
1117
|
MICROLIGHT = 0x02
|
|
1117
1118
|
PARAGLIDER = 0x03
|
|
1118
1119
|
LARGE_PASSENGER_AIRCRAFT = 0x04
|
|
1119
1120
|
|
|
1120
|
-
class AvEquipmentSubcategory(OpenIntEnum):
|
|
1121
|
+
class AvEquipmentSubcategory(utils.OpenIntEnum):
|
|
1121
1122
|
GENERIC_AV_EQUIPMENT = 0x00
|
|
1122
1123
|
AMPLIFIER = 0x01
|
|
1123
1124
|
RECEIVER = 0x02
|
|
@@ -1130,65 +1131,65 @@ class Appearance:
|
|
|
1130
1131
|
OPTICAL_DISC_PLAYER = 0x09
|
|
1131
1132
|
SET_TOP_BOX = 0x0A
|
|
1132
1133
|
|
|
1133
|
-
class DisplayEquipmentSubcategory(OpenIntEnum):
|
|
1134
|
+
class DisplayEquipmentSubcategory(utils.OpenIntEnum):
|
|
1134
1135
|
GENERIC_DISPLAY_EQUIPMENT = 0x00
|
|
1135
1136
|
TELEVISION = 0x01
|
|
1136
1137
|
MONITOR = 0x02
|
|
1137
1138
|
PROJECTOR = 0x03
|
|
1138
1139
|
|
|
1139
|
-
class HearingAidSubcategory(OpenIntEnum):
|
|
1140
|
+
class HearingAidSubcategory(utils.OpenIntEnum):
|
|
1140
1141
|
GENERIC_HEARING_AID = 0x00
|
|
1141
1142
|
IN_EAR_HEARING_AID = 0x01
|
|
1142
1143
|
BEHIND_EAR_HEARING_AID = 0x02
|
|
1143
1144
|
COCHLEAR_IMPLANT = 0x03
|
|
1144
1145
|
|
|
1145
|
-
class GamingSubcategory(OpenIntEnum):
|
|
1146
|
+
class GamingSubcategory(utils.OpenIntEnum):
|
|
1146
1147
|
GENERIC_GAMING = 0x00
|
|
1147
1148
|
HOME_VIDEO_GAME_CONSOLE = 0x01
|
|
1148
1149
|
PORTABLE_HANDHELD_CONSOLE = 0x02
|
|
1149
1150
|
|
|
1150
|
-
class SignageSubcategory(OpenIntEnum):
|
|
1151
|
+
class SignageSubcategory(utils.OpenIntEnum):
|
|
1151
1152
|
GENERIC_SIGNAGE = 0x00
|
|
1152
1153
|
DIGITAL_SIGNAGE = 0x01
|
|
1153
1154
|
ELECTRONIC_LABEL = 0x02
|
|
1154
1155
|
|
|
1155
|
-
class PulseOximeterSubcategory(OpenIntEnum):
|
|
1156
|
+
class PulseOximeterSubcategory(utils.OpenIntEnum):
|
|
1156
1157
|
GENERIC_PULSE_OXIMETER = 0x00
|
|
1157
1158
|
FINGERTIP_PULSE_OXIMETER = 0x01
|
|
1158
1159
|
WRIST_WORN_PULSE_OXIMETER = 0x02
|
|
1159
1160
|
|
|
1160
|
-
class WeightScaleSubcategory(OpenIntEnum):
|
|
1161
|
+
class WeightScaleSubcategory(utils.OpenIntEnum):
|
|
1161
1162
|
GENERIC_WEIGHT_SCALE = 0x00
|
|
1162
1163
|
|
|
1163
|
-
class PersonalMobilityDeviceSubcategory(OpenIntEnum):
|
|
1164
|
+
class PersonalMobilityDeviceSubcategory(utils.OpenIntEnum):
|
|
1164
1165
|
GENERIC_PERSONAL_MOBILITY_DEVICE = 0x00
|
|
1165
1166
|
POWERED_WHEELCHAIR = 0x01
|
|
1166
1167
|
MOBILITY_SCOOTER = 0x02
|
|
1167
1168
|
|
|
1168
|
-
class ContinuousGlucoseMonitorSubcategory(OpenIntEnum):
|
|
1169
|
+
class ContinuousGlucoseMonitorSubcategory(utils.OpenIntEnum):
|
|
1169
1170
|
GENERIC_CONTINUOUS_GLUCOSE_MONITOR = 0x00
|
|
1170
1171
|
|
|
1171
|
-
class InsulinPumpSubcategory(OpenIntEnum):
|
|
1172
|
+
class InsulinPumpSubcategory(utils.OpenIntEnum):
|
|
1172
1173
|
GENERIC_INSULIN_PUMP = 0x00
|
|
1173
1174
|
INSULIN_PUMP_DURABLE_PUMP = 0x01
|
|
1174
1175
|
INSULIN_PUMP_PATCH_PUMP = 0x02
|
|
1175
1176
|
INSULIN_PEN = 0x03
|
|
1176
1177
|
|
|
1177
|
-
class MedicationDeliverySubcategory(OpenIntEnum):
|
|
1178
|
+
class MedicationDeliverySubcategory(utils.OpenIntEnum):
|
|
1178
1179
|
GENERIC_MEDICATION_DELIVERY = 0x00
|
|
1179
1180
|
|
|
1180
|
-
class SpirometerSubcategory(OpenIntEnum):
|
|
1181
|
+
class SpirometerSubcategory(utils.OpenIntEnum):
|
|
1181
1182
|
GENERIC_SPIROMETER = 0x00
|
|
1182
1183
|
HANDHELD_SPIROMETER = 0x01
|
|
1183
1184
|
|
|
1184
|
-
class OutdoorSportsActivitySubcategory(OpenIntEnum):
|
|
1185
|
+
class OutdoorSportsActivitySubcategory(utils.OpenIntEnum):
|
|
1185
1186
|
GENERIC_OUTDOOR_SPORTS_ACTIVITY = 0x00
|
|
1186
1187
|
LOCATION_DISPLAY = 0x01
|
|
1187
1188
|
LOCATION_AND_NAVIGATION_DISPLAY = 0x02
|
|
1188
1189
|
LOCATION_POD = 0x03
|
|
1189
1190
|
LOCATION_AND_NAVIGATION_POD = 0x04
|
|
1190
1191
|
|
|
1191
|
-
class _OpenSubcategory(OpenIntEnum):
|
|
1192
|
+
class _OpenSubcategory(utils.OpenIntEnum):
|
|
1192
1193
|
GENERIC = 0x00
|
|
1193
1194
|
|
|
1194
1195
|
SUBCATEGORY_CLASSES = {
|
|
@@ -1295,7 +1296,7 @@ class AdvertisingData:
|
|
|
1295
1296
|
# fmt: off
|
|
1296
1297
|
# pylint: disable=line-too-long
|
|
1297
1298
|
|
|
1298
|
-
class Type(OpenIntEnum):
|
|
1299
|
+
class Type(utils.OpenIntEnum):
|
|
1299
1300
|
FLAGS = 0x01
|
|
1300
1301
|
INCOMPLETE_LIST_OF_16_BIT_SERVICE_CLASS_UUIDS = 0x02
|
|
1301
1302
|
COMPLETE_LIST_OF_16_BIT_SERVICE_CLASS_UUIDS = 0x03
|