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