Coverage for src / bluetooth_sig / gatt / services / generic_media_control.py: 100%

6 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-03 16:41 +0000

1"""GenericMediaControl Service implementation.""" 

2 

3from __future__ import annotations 

4 

5from typing import ClassVar 

6 

7from ..characteristics.registry import CharacteristicName 

8from .base import BaseGattService 

9 

10 

11class GenericMediaControlService(BaseGattService): 

12 """Generic Media Control Service implementation (0x1849). 

13 

14 A generic instance of the Media Control Service that provides 

15 a standardised interface across media players. 

16 """ 

17 

18 service_characteristics: ClassVar[dict[CharacteristicName, bool]] = { 

19 CharacteristicName.MEDIA_PLAYER_NAME: True, 

20 CharacteristicName.MEDIA_STATE: True, 

21 CharacteristicName.TRACK_CHANGED: True, 

22 CharacteristicName.TRACK_TITLE: True, 

23 CharacteristicName.TRACK_DURATION: True, 

24 CharacteristicName.TRACK_POSITION: True, 

25 CharacteristicName.CONTENT_CONTROL_ID: True, 

26 CharacteristicName.MEDIA_CONTROL_POINT: False, 

27 CharacteristicName.MEDIA_CONTROL_POINT_OPCODES_SUPPORTED: False, 

28 CharacteristicName.MEDIA_PLAYER_ICON_OBJECT_ID: False, 

29 CharacteristicName.MEDIA_PLAYER_ICON_URL: False, 

30 CharacteristicName.PLAYBACK_SPEED: False, 

31 CharacteristicName.SEEKING_SPEED: False, 

32 CharacteristicName.CURRENT_TRACK_SEGMENTS_OBJECT_ID: False, 

33 CharacteristicName.CURRENT_TRACK_OBJECT_ID: False, 

34 CharacteristicName.NEXT_TRACK_OBJECT_ID: False, 

35 CharacteristicName.PARENT_GROUP_OBJECT_ID: False, 

36 CharacteristicName.CURRENT_GROUP_OBJECT_ID: False, 

37 CharacteristicName.PLAYING_ORDER: False, 

38 CharacteristicName.PLAYING_ORDERS_SUPPORTED: False, 

39 CharacteristicName.SEARCH_CONTROL_POINT: False, 

40 CharacteristicName.SEARCH_RESULTS_OBJECT_ID: False, 

41 }