avrcp.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. *
  4. * BlueZ - Bluetooth protocol stack for Linux
  5. *
  6. * Copyright (C) 2006-2010 Nokia Corporation
  7. * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
  8. *
  9. *
  10. */
  11. /* player attributes */
  12. #define AVRCP_ATTRIBUTE_ILEGAL 0x00
  13. #define AVRCP_ATTRIBUTE_EQUALIZER 0x01
  14. #define AVRCP_ATTRIBUTE_REPEAT_MODE 0x02
  15. #define AVRCP_ATTRIBUTE_SHUFFLE 0x03
  16. #define AVRCP_ATTRIBUTE_SCAN 0x04
  17. #define AVRCP_ATTRIBUTE_LAST AVRCP_ATTRIBUTE_SCAN
  18. /* equalizer values */
  19. #define AVRCP_EQUALIZER_OFF 0x01
  20. #define AVRCP_EQUALIZER_ON 0x02
  21. /* repeat mode values */
  22. #define AVRCP_REPEAT_MODE_OFF 0x01
  23. #define AVRCP_REPEAT_MODE_SINGLE 0x02
  24. #define AVRCP_REPEAT_MODE_ALL 0x03
  25. #define AVRCP_REPEAT_MODE_GROUP 0x04
  26. /* shuffle values */
  27. #define AVRCP_SHUFFLE_OFF 0x01
  28. #define AVRCP_SHUFFLE_ALL 0x02
  29. #define AVRCP_SHUFFLE_GROUP 0x03
  30. /* scan values */
  31. #define AVRCP_SCAN_OFF 0x01
  32. #define AVRCP_SCAN_ALL 0x02
  33. #define AVRCP_SCAN_GROUP 0x03
  34. /* media attributes */
  35. #define AVRCP_MEDIA_ATTRIBUTE_ILLEGAL 0x00
  36. #define AVRCP_MEDIA_ATTRIBUTE_TITLE 0x01
  37. #define AVRCP_MEDIA_ATTRIBUTE_ARTIST 0x02
  38. #define AVRCP_MEDIA_ATTRIBUTE_ALBUM 0x03
  39. #define AVRCP_MEDIA_ATTRIBUTE_TRACK 0x04
  40. #define AVRCP_MEDIA_ATTRIBUTE_N_TRACKS 0x05
  41. #define AVRCP_MEDIA_ATTRIBUTE_GENRE 0x06
  42. #define AVRCP_MEDIA_ATTRIBUTE_DURATION 0x07
  43. #define AVRCP_MEDIA_ATTRIBUTE_LAST AVRCP_MEDIA_ATTRIBUTE_DURATION
  44. /* play status */
  45. #define AVRCP_PLAY_STATUS_STOPPED 0x00
  46. #define AVRCP_PLAY_STATUS_PLAYING 0x01
  47. #define AVRCP_PLAY_STATUS_PAUSED 0x02
  48. #define AVRCP_PLAY_STATUS_FWD_SEEK 0x03
  49. #define AVRCP_PLAY_STATUS_REV_SEEK 0x04
  50. #define AVRCP_PLAY_STATUS_ERROR 0xFF
  51. /* Notification events */
  52. #define AVRCP_EVENT_STATUS_CHANGED 0x01
  53. #define AVRCP_EVENT_TRACK_CHANGED 0x02
  54. #define AVRCP_EVENT_TRACK_REACHED_END 0x03
  55. #define AVRCP_EVENT_TRACK_REACHED_START 0x04
  56. #define AVRCP_EVENT_PLAYBACK_POS_CHANGED 0x05
  57. #define AVRCP_EVENT_SETTINGS_CHANGED 0x08
  58. #define AVRCP_EVENT_AVAILABLE_PLAYERS_CHANGED 0x0a
  59. #define AVRCP_EVENT_ADDRESSED_PLAYER_CHANGED 0x0b
  60. #define AVRCP_EVENT_UIDS_CHANGED 0x0c
  61. #define AVRCP_EVENT_VOLUME_CHANGED 0x0d
  62. #define AVRCP_EVENT_LAST AVRCP_EVENT_VOLUME_CHANGED
  63. struct avrcp_player_cb {
  64. GList *(*list_settings)(void *user_data);
  65. const char *(*get_setting)(const char *key, void *user_data);
  66. int (*set_setting)(const char *key, const char *value,
  67. void *user_data);
  68. uint64_t (*get_uid)(void *user_data);
  69. const char *(*get_metadata)(const char *key, void *user_data);
  70. GList *(*list_metadata)(void *user_data);
  71. const char *(*get_status)(void *user_data);
  72. uint32_t (*get_position)(void *user_data);
  73. uint32_t (*get_duration)(void *user_data);
  74. const char *(*get_name)(void *user_data);
  75. void (*set_volume)(int8_t volume, struct btd_device *dev,
  76. void *user_data);
  77. bool (*play)(void *user_data);
  78. bool (*stop)(void *user_data);
  79. bool (*pause)(void *user_data);
  80. bool (*next)(void *user_data);
  81. bool (*previous)(void *user_data);
  82. };
  83. int avrcp_set_volume(struct btd_device *dev, int8_t volume, bool notify);
  84. struct avrcp_player *avrcp_register_player(struct btd_adapter *adapter,
  85. struct avrcp_player_cb *cb,
  86. void *user_data,
  87. GDestroyNotify destroy);
  88. void avrcp_unregister_player(struct avrcp_player *player);
  89. void avrcp_player_event(struct avrcp_player *player, uint8_t id,
  90. const void *data);
  91. size_t avrcp_handle_vendor_reject(uint8_t *code, uint8_t *operands);
  92. size_t avrcp_browsing_general_reject(uint8_t *operands);
  93. struct avrcp_player *avrcp_get_target_player_by_device(struct btd_device *dev);