1 /* 2 * Copyright 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #pragma once 18 19 #include <vector> 20 21 // AVRCP packets pulled from wireshark 22 namespace { 23 24 // AVRCP Get Capabilities Request packet 25 std::vector<uint8_t> get_capabilities_request = { 26 0x01, 0x48, 0x00, 0x00, 0x19, 0x58, 0x10, 0x00, 0x00, 0x01, 0x03}; 27 28 // AVRCP Get Capabilities Request packet with Company ID 29 std::vector<uint8_t> get_capabilities_request_company_id = { 30 0x01, 0x48, 0x00, 0x00, 0x19, 0x58, 0x10, 0x00, 0x00, 0x01, 0x02}; 31 32 // AVRCP Get Capabilities Request packet with Unknown 33 std::vector<uint8_t> get_capabilities_request_unknown = { 34 0x01, 0x48, 0x00, 0x00, 0x19, 0x58, 0x10, 0x00, 0x00, 0x01, 0x7f}; 35 36 // AVRCP Get Capabilities Response to Company ID request 37 std::vector<uint8_t> get_capabilities_response_company_id = { 38 0x0c, 0x48, 0x00, 0x00, 0x19, 0x58, 0x10, 0x00, 0x00, 39 0x08, 0x02, 0x02, 0x00, 0x19, 0x58, 0x00, 0x23, 0x45}; 40 41 // AVRCP Get Capabilities Response to Events Supported request 42 std::vector<uint8_t> get_capabilities_response_events_supported = { 43 0x0c, 0x48, 0x00, 0x00, 0x19, 0x58, 0x10, 0x00, 44 0x00, 0x05, 0x03, 0x03, 0x01, 0x02, 0x05}; 45 46 // AVRCP Get Element Attributes request for current playing song and attribute 47 // Title 48 std::vector<uint8_t> get_element_attributes_request_partial = { 49 0x01, 0x48, 0x00, 0x00, 0x19, 0x58, 0x20, 0x00, 0x00, 0x0d, 0x00, 0x00, 50 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01}; 51 52 // AVRCP Get Element Attributes request for current playing song and attributes 53 // Title, Artist, Album, Media Number, Playing Time, Total Number of Media, and 54 // Genre 55 std::vector<uint8_t> get_element_attributes_request_full = { 56 0x01, 0x48, 0x00, 0x00, 0x19, 0x58, 0x20, 0x00, 0x00, 0x25, 0x00, 0x00, 57 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 58 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 59 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06}; 60 61 62 // AVRCP Get Element Attributes request for current playing song and attributes 63 // Title, Artist, Album, Media Number, Playing Time, Total Number of Media, 64 // Genre, and Cover Art 65 std::vector<uint8_t> get_element_attributes_request_full_cover_art = { 66 0x01, 0x48, 0x00, 0x00, 0x19, 0x58, 0x20, 0x00, 0x00, 0x29, 0x00, 0x00, 67 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 68 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 69 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 70 0x00, 0x00, 0x08}; 71 72 // AVRCP Get Element Attributes response with attribute values as follows 73 // Title: "Test Song" 74 // Artist: "Test Artist" 75 // Album: "Test Album" 76 // Track Number: "1" 77 // Number of Tracks: "2" 78 // Genre: "Test Genre" 79 // Duration: "1000" 80 std::vector<uint8_t> get_elements_attributes_response_full = { 81 0x0c, 0x48, 0x00, 0x00, 0x19, 0x58, 0x20, 0x00, 0x00, 0x67, 0x07, 0x00, 82 0x00, 0x00, 0x01, 0x00, 0x6a, 0x00, 0x09, 0x54, 0x65, 0x73, 0x74, 0x20, 83 0x53, 0x6f, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x0b, 84 0x54, 0x65, 0x73, 0x74, 0x20, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x00, 85 0x00, 0x00, 0x03, 0x00, 0x6a, 0x00, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x20, 86 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x6a, 0x00, 87 0x01, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 0x6a, 0x00, 0x01, 0x32, 0x00, 88 0x00, 0x00, 0x06, 0x00, 0x6a, 0x00, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x20, 89 0x47, 0x65, 0x6e, 0x72, 0x65, 0x00, 0x00, 0x00, 0x07, 0x00, 0x6a, 0x00, 90 0x04, 0x31, 0x30, 0x30, 0x30}; 91 92 // AVRCP Get Play Status Request 93 std::vector<uint8_t> get_play_status_request = {0x01, 0x48, 0x00, 0x00, 0x19, 94 0x58, 0x30, 0x00, 0x00, 0x00}; 95 96 // AVRCP Get Play Status Response 97 std::vector<uint8_t> get_play_status_response = { 98 0x0c, 0x48, 0x00, 0x00, 0x19, 0x58, 0x30, 0x00, 0x00, 0x09, 99 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00}; 100 101 // AVRCP Pass Through Command Play Pushed Request 102 std::vector<uint8_t> pass_through_command_play_pushed = {0x00, 0x48, 0x7c, 0x44, 103 0x00}; 104 105 // AVRCP Pass Through Command Play Pushed Response 106 std::vector<uint8_t> pass_through_command_play_released = {0x09, 0x48, 0x7c, 107 0xc4, 0x00}; 108 109 // AVRCP Register Playback Status Notification 110 std::vector<uint8_t> register_play_status_notification = { 111 0x03, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 112 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x05}; 113 114 // AVRCP Register Volume Changed Notification 115 std::vector<uint8_t> register_volume_changed_notification = { 116 0x03, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 117 0x00, 0x05, 0x0d, 0x00, 0x00, 0x00, 0x00}; 118 119 // AVRCP Register Notification without any parameter 120 std::vector<uint8_t> register_notification_invalid = {0x03, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 121 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}; 122 123 // AVRCP Interim Playback Status Notification 124 std::vector<uint8_t> interim_play_status_notification = { 125 0x0f, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 0x00, 0x02, 0x01, 0x00}; 126 127 // AVRCP Interim Track Changed Notification 128 std::vector<uint8_t> interim_track_changed_notification = { 129 0x0f, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 0x00, 0x09, 130 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 131 132 // AVRCP Changed Playback Position Notification 133 std::vector<uint8_t> changed_play_pos_notification = { 134 0x0d, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 135 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00}; 136 137 // AVRCP Interim Now Playing Changed Notification 138 std::vector<uint8_t> interim_now_playing_notification = { 139 0x0f, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 0x00, 0x01, 0x09}; 140 141 // AVRCP Interim Available Players Changed Notification 142 std::vector<uint8_t> interim_available_players_notification = { 143 0x0f, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 0x00, 0x01, 0x0a}; 144 145 // AVRCP Interim Addressed Player Changed Notification with active 146 // player ID 1 147 std::vector<uint8_t> interim_addressed_player_notification = { 148 0x0f, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 149 0x00, 0x05, 0x0b, 0x00, 0x01, 0x00, 0x00}; 150 151 // AVRCP Interim UIDs Changed Notification 152 std::vector<uint8_t> interim_uids_notificaiton = {0x0f, 0x48, 0x00, 0x00, 0x19, 153 0x58, 0x31, 0x00, 0x00, 0x03, 154 0x0c, 0x00, 0x00}; 155 156 // AVRCP Interim Volume Changed Notification with volume at 55% (0x47) 157 std::vector<uint8_t> interim_volume_changed_notification = { 158 0x0f, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 0x00, 0x02, 0x0d, 0x47}; 159 160 // AVRCP Rejected Volume Changed Notification with volume at 0% 161 std::vector<uint8_t> rejected_volume_changed_notification = { 162 0x0a, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 0x00, 0x02, 0x0d, 0x00}; 163 164 // AVRCP Changed Volume Changed Notification with volume at 55% (0x47) 165 std::vector<uint8_t> changed_volume_changed_notification = { 166 0x0d, 0x48, 0x00, 0x00, 0x19, 0x58, 0x31, 0x00, 0x00, 0x02, 0x0d, 0x47}; 167 168 // AVRCP Reject List Player Application Settings Response 169 std::vector<uint8_t> reject_player_app_settings_response = { 170 0x0a, 0x48, 0x00, 0x00, 0x19, 0x58, 0x11, 0x00, 0x00, 0x01, 0x00}; 171 172 // AVRCP Browse General Reject packet for invalid PDU ID 173 std::vector<uint8_t> general_reject_invalid_command_packet = {0xa0, 0x00, 0x01, 174 0x00}; 175 176 // AVRCP Browse Get Folder Items Request packet for media players with 177 // the following data: 178 // scope = 0x00 (Media Player List) 179 // start_item = 0x00 180 // end_item = 0x03 181 // attributes_requested: all 182 std::vector<uint8_t> get_folder_items_request = {0x71, 0x00, 0x0a, 0x00, 0x00, 183 0x00, 0x00, 0x00, 0x00, 0x00, 184 0x00, 0x03, 0x00}; 185 186 // AVRCP Browse Get Folder Items Request packet for media players with 187 // the following data: 188 // scope = 0x01 (VFS) 189 // start_item = 0x00 190 // end_item = 0x09 191 // attributes_requested: none 192 std::vector<uint8_t> get_folder_items_request_no_attrs = { 193 0x71, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 194 0x00, 0x00, 0x00, 0x00, 0x09, 0xff}; 195 196 // AVRCP Browse Get Folder Items Request packet for media players with 197 // the following data: 198 // scope = 0x01 (VFS) 199 // start_item = 0x00 200 // end_item = 0x09 201 // attributes_requested: Title 202 std::vector<uint8_t> get_folder_items_request_title = { 203 0x71, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 204 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x1}; 205 206 // AVRCP Browse Get Folder Items Request packet for vfs with 207 // the following data: 208 // scope = 0x01 (VFS) 209 // start_item = 0x00 210 // end_item = 0x05 211 // attributes_requested: TITLE 212 std::vector<uint8_t> get_folder_items_request_vfs = { 213 0x71, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 214 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x01}; 215 216 // AVRCP Browse Get Folder Items Request packet for now playing with 217 // the following data: 218 // scope = 0x03 (Now Playing) 219 // start_item = 0x00 220 // end_item = 0x05 221 // attributes_requested: All Items 222 std::vector<uint8_t> get_folder_items_request_now_playing = {0x71, 0x00, 0x0a, 0x03, 0x00, 0x00, 0x00, 223 0x00, 0x00, 0x00, 0x00, 0x05, 0x00}; 224 225 // AVRCP Browse Get Folder Items Response packet with range out of bounds error 226 std::vector<uint8_t> get_folder_items_error_response = {0x71, 0x00, 0x01, 0x0b}; 227 228 // AVRCP Browse Get Folder Items Response packet for media players 229 // Contains one media player with the following fields: 230 // id = 0x0001 231 // name = "com.google.android.music" 232 // browsing_supported = true 233 std::vector<uint8_t> get_folder_items_media_player_response = { 234 0x71, 0x00, 0x3c, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x34, 235 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 236 0x00, 0x00, 0xb7, 0x01, 0x0c, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 237 0x00, 0x00, 0x00, 0x6a, 0x00, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 238 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 239 0x69, 0x64, 0x2e, 0x6d, 0x75, 0x73, 0x69, 0x63}; 240 241 // AVRCP Browse Get Folder Items Response packet with one folder 242 // with the following fields: 243 // uid = 0x0000000000000001 244 // type = 0x00 (Mixed); 245 // name = "Test Folder" 246 // is_playable = true 247 std::vector<uint8_t> get_folder_items_folder_response = { 248 0x71, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x19, 0x00, 249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x6a, 0x00, 250 0x0b, 0x54, 0x65, 0x73, 0x74, 0x20, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72}; 251 252 // AVRCP Browse Get Folder Items Response packet with one song 253 // with the following fields: 254 // uid = 0x0000000000000002 255 // name = "Test Title" 256 // attribute[TITLE] = "Test Title" 257 std::vector<uint8_t> get_folder_items_song_response = { 258 0x71, 0x00, 0x32, 0x04, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x2a, 259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x6a, 260 0x00, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x20, 0x54, 0x69, 0x74, 0x6c, 261 0x65, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x6a, 0x00, 0x0a, 0x54, 262 0x65, 0x73, 0x74, 0x20, 0x54, 0x69, 0x74, 0x6c, 0x65}; 263 264 // AVRCP Browse Change Path Request down to folder with UID 0x0000000000000002 265 std::vector<uint8_t> change_path_request = {0x72, 0x00, 0x0b, 0x00, 0x00, 266 0x01, 0x00, 0x00, 0x00, 0x00, 267 0x00, 0x00, 0x00, 0x02}; 268 269 // AVRCP Browse Change Path Request up 270 std::vector<uint8_t> change_path_up_request = {0x72, 0x00, 0x0b, 0x00, 0x00, 271 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 272 0xFF, 0xFF, 0xFF, 0xFF}; 273 274 // AVRCP Browse Change Path Response with two items in current folder 275 std::vector<uint8_t> change_path_response = {0x72, 0x00, 0x05, 0x04, 276 0x00, 0x00, 0x00, 0x02}; 277 278 // AVRCP Browse Change Path Response with an error of invalid direction 279 std::vector<uint8_t> change_path_error_response = {0x72, 0x00, 0x01, 0x07}; 280 281 // AVRCP Get Item Attributes request with all attributes requested 282 // with the following fields: 283 // scope = 0x03 (Now Playing List) 284 // uid_counter = 0x0000 285 // uid = 0x0000000000000001 286 std::vector<uint8_t> get_item_attributes_request_all_attributes = { 287 0x73, 0x00, 0x28, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 288 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 289 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 290 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07}; 291 292 // AVRCP Get Item Attributes request with all attributes requested 293 // with the following fields: 294 // scope = 0x03 (Now Playing List) 295 // uid_counter = 0x0000 296 // uid = 0x0000000000000001 297 // attributes = Title, Artist, Album, Media Number, Playing Time, 298 // Total Number of Media, Genre, and Cover Art 299 std::vector<uint8_t> get_item_attributes_request_all_attributes_with_cover_art = { 300 0x73, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 301 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 302 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 303 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 304 0x00, 0x00, 0x08}; 305 306 // AVRCP Get Item Attributes request with all attributes requested 307 // with the following fields: 308 // scope = 0x03 (Now Playing List) 309 // uid_counter = 0x0001 310 // uid = 0x0000000000000001 311 std::vector<uint8_t> get_item_attributes_request_all_attributes_invalid = { 312 0x73, 0x00, 0x28, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 313 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 314 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 315 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07}; 316 317 // AVRCP Get Item Attributes Response with the following attributes: 318 // title = "Test Song" 319 // artist = "Test Artist" 320 // album = "Test Album" 321 std::vector<uint8_t> get_item_attributes_song_response = { 322 0x73, 0x00, 0x38, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x6a, 0x00, 323 0x09, 0x54, 0x65, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6e, 0x67, 0x00, 0x00, 324 0x00, 0x02, 0x00, 0x6a, 0x00, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x20, 0x41, 325 0x72, 0x74, 0x69, 0x73, 0x74, 0x00, 0x00, 0x00, 0x03, 0x00, 0x6a, 0x00, 326 0x0a, 0x54, 0x65, 0x73, 0x74, 0x20, 0x41, 0x6c, 0x62, 0x75, 0x6d}; 327 328 // AVRCP Set Addressed Player Request with player_id = 0 329 std::vector<uint8_t> set_addressed_player_request = { 330 0x00, 0x48, 0x00, 0x00, 0x19, 0x58, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00}; 331 332 // AVRCP Set Addressed Player Request with player_id = 1 333 std::vector<uint8_t> set_addressed_player_id_1_request = { 334 0x00, 0x48, 0x00, 0x00, 0x19, 0x58, 0x60, 0x00, 0x00, 0x02, 0x00, 0x01}; 335 336 // AVRCP Set Addressed Player Response with status success 337 std::vector<uint8_t> set_addressed_player_response = { 338 0x09, 0x48, 0x00, 0x00, 0x19, 0x58, 0x60, 0x00, 0x00, 0x01, 0x04}; 339 340 // AVRCP Set Browsed Player Request with player_id = 2 341 std::vector<uint8_t> set_browsed_player_request = {0x70, 0x00, 0x02, 0x00, 342 0x02}; 343 344 // AVRCP Set Browsed Player Request with player_id = 0 345 std::vector<uint8_t> set_browsed_player_id_0_request = {0x70, 0x00, 0x02, 0x00, 346 0x00}; 347 348 // AVRCP Set Browsed Player Response with num items = 4 and depth = 0 349 std::vector<uint8_t> set_browsed_player_response = { 350 0x70, 0x00, 0x0a, 0x04, 0x00, 0x00, 0x00, 351 0x00, 0x00, 0x04, 0x00, 0x6a, 0x00}; 352 353 // AVRCP Get Total Number of Items Request with Scope = Media Player List 354 std::vector<uint8_t> get_total_number_of_items_request_media_players = { 355 0x75, 0x00, 0x01, 0x00}; 356 357 // AVRCP Get Total Number of Items Request with Scope = VFS 358 std::vector<uint8_t> get_total_number_of_items_request_vfs = {0x75, 0x00, 0x01, 359 0x01}; 360 361 // AVRCP Get Total Number of Items Request with Scope = Now Playing List 362 std::vector<uint8_t> get_total_number_of_items_request_now_playing = { 363 0x75, 0x00, 0x01, 0x03}; 364 365 // AVRCP Get Total number of Items Response with 5 items in folder 366 std::vector<uint8_t> get_total_number_of_items_response = { 367 0x75, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05}; 368 369 // AVRCP Play Item Request with scope = Now Playing and 370 // UID = 0x0000000000000003 371 std::vector<uint8_t> play_item_request = { 372 0x00, 0x48, 0x00, 0x00, 0x19, 0x58, 0x74, 0x00, 0x00, 0x0b, 0x03, 373 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00}; 374 375 // AVRCP Play Item Response 376 std::vector<uint8_t> play_item_response = {0x09, 0x48, 0x00, 0x00, 0x19, 0x58, 377 0x74, 0x00, 0x00, 0x01, 0x04}; 378 379 // AVRCP Set Absolute Volume Request with volume at 56% (0x48) 380 std::vector<uint8_t> set_absolute_volume_request = { 381 0x00, 0x48, 0x00, 0x00, 0x19, 0x58, 0x50, 0x00, 0x00, 0x01, 0x48}; 382 383 // AVRCP Set Absolute Volume Response with voume at 52% (0x43) 384 std::vector<uint8_t> set_absolute_volume_response = { 385 0x09, 0x48, 0x00, 0x00, 0x19, 0x58, 0x50, 0x00, 0x00, 0x01, 0x43}; 386 387 // Invalid Packets 388 // Short Vendor Packet 389 std::vector<uint8_t> short_vendor_packet = {0x01, 0x48, 0x00, 0x00, 0x19, 0x58, 0x10, 0x00, 0x00, 0x01}; 390 391 // Short Get Capabilities Request Packet 392 std::vector<uint8_t> short_get_capabilities_request = {0x01, 0x48, 0x00, 0x00, 0x19, 0x58, 0x10, 0x00, 0x00, 0x00}; 393 394 // Short Get Element Attributes Request Packet 395 std::vector<uint8_t> short_get_element_attributes_request = {0x01, 0x48, 0x00, 0x00, 0x19, 396 0x58, 0x20, 0x00, 0x00, 0x00}; 397 398 // Short Play Item Request Packet 399 std::vector<uint8_t> short_play_item_request = {0x00, 0x48, 0x00, 0x00, 0x19, 0x58, 0x74, 0x00, 0x00, 0x00}; 400 401 // Short Set Addressed Player Request Packet 402 std::vector<uint8_t> short_set_addressed_player_request = {0x00, 0x48, 0x00, 0x00, 0x19, 0x58, 0x60, 0x00, 0x00, 0x00}; 403 404 // Short Browse Packet 405 std::vector<uint8_t> short_browse_packet = {0x71, 0x00, 0x0a}; 406 407 // Short Get Folder Items Request Packet 408 std::vector<uint8_t> short_get_folder_items_request = {0x71, 0x00, 0x00}; 409 410 // Short Get Total Number of Items Request Packet 411 std::vector<uint8_t> short_get_total_number_of_items_request = {0x75, 0x00, 0x00}; 412 413 // Short Change Path Request Packet 414 std::vector<uint8_t> short_change_path_request = {0x72, 0x00, 0x00}; 415 416 // Short Get Item Attributes Request Packet 417 std::vector<uint8_t> short_get_item_attributes_request = {0x73, 0x00, 0x00}; 418 419 } // namespace 420