1 /* 2 * Copyright (C) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef BT_DEF_H 17 #define BT_DEF_H 18 19 #include <string> 20 #include <vector> 21 22 namespace OHOS { 23 namespace bluetooth { 24 // Defined here are various status codes 25 /********************************************* 26 * 27 * Interface Return Value Macro Define 28 * 29 *********************************************/ 30 constexpr int RET_NO_ERROR = 0; 31 constexpr int RET_NO_SUPPORT = -1; 32 constexpr int RET_BAD_PARAM = -2; 33 constexpr int RET_BAD_STATUS = -3; 34 constexpr int RET_NO_SPACE = -4; 35 36 /********************************************* 37 * 38 * Bluetooth UUID Macro Define 39 * 40 *********************************************/ 41 const std::string BLUETOOTH_UUID_BASE_UUID = "00000000-0000-1000-8000-00805F9B34FB"; 42 const std::string BLUETOOTH_UUID_A2DP_SINK = "0000110B-0000-1000-8000-00805F9B34FB"; 43 const std::string BLUETOOTH_UUID_A2DP_SRC = "0000110A-0000-1000-8000-00805F9B34FB"; 44 const std::string BLUETOOTH_UUID_GATT = "00001801-0000-1000-8000-00805F9B34FB"; 45 const std::string BLUETOOTH_UUID_AVRCP_CT = "0000110E-0000-1000-8000-00805F9B34FB"; 46 const std::string BLUETOOTH_UUID_AVRCP_TG = "0000110C-0000-1000-8000-00805F9B34FB"; 47 const std::string BLUETOOTH_UUID_HFP_AG = "0000111F-0000-1000-8000-00805F9B34FB"; 48 const std::string BLUETOOTH_UUID_HFP_HF = "0000111E-0000-1000-8000-00805F9B34FB"; 49 const std::string BLUETOOTH_UUID_PBAP_PCE = "0000112E-0000-1000-8000-00805F9B34FB"; 50 const std::string BLUETOOTH_UUID_PBAP_PSE = "0000112F-0000-1000-8000-00805F9B34FB"; 51 const std::string BLUETOOTH_UUID_SPP = "00001101-0000-1000-8000-00805F9B34FB"; 52 const std::string BLUETOOTH_UUID_PNP = "00001200-0000-1000-8000-00805F9B34FB"; 53 const std::string BLUETOOTH_UUID_HID_HOST = "00001124-0000-1000-8000-00805F9B34FB"; 54 const std::string BLUETOOTH_UUID_PAN = "00001116-0000-1000-8000-00805F9B34FB"; 55 const std::string BLUETOOTH_UUID_OPP = "00001105-0000-1000-8000-00805F9B34FB"; 56 57 /********************************************* 58 * 59 * Adapter Macro Define 60 * 61 *********************************************/ 62 /** 63 * @brief bt transport define 64 * use to GetRemoteDevice(),GetPairedDevices()... 65 */ 66 enum BTTransport { 67 ADAPTER_BREDR = 0, 68 ADAPTER_BLE, 69 }; 70 /** 71 * @brief bt adapter/profile state define 72 * use to GetBtConnectionState(),GetBtProfileConnState(),... 73 */ 74 enum BTStateID { 75 STATE_TURNING_ON, 76 STATE_TURN_ON, 77 STATE_TURNING_OFF, 78 STATE_TURN_OFF, 79 }; 80 /** 81 * @brief connect state define 82 * use to ConnectionState()... 83 */ 84 enum class BTConnectState : int { 85 CONNECTING, 86 CONNECTED, 87 DISCONNECTING, 88 DISCONNECTED, 89 }; 90 /** 91 * @brief access permission define 92 * use to 93 * Get/SetPhonebookPermission(),Get/SetMessagePermission() 94 */ 95 enum class BTPermissionType : int { 96 ACCESS_UNKNOWN, 97 ACCESS_ALLOWED, 98 ACCESS_FORBIDDEN, 99 }; 100 /** 101 * @brief connection strategy define 102 * use to 103 * SetConnectionStrategy(),GetConnectionStrategy() 104 */ 105 enum class BTStrategyType : int { 106 CONNECTION_UNKNOWN, 107 CONNECTION_ALLOWED, 108 CONNECTION_FORBIDDEN, 109 }; 110 /** 111 * @brief profile id define 112 * use to 113 * GetBtProfileConnState(),GetProfileList() 114 */ 115 const uint32_t PROFILE_ID_GATT_CLIENT = 0x00000001; 116 const uint32_t PROFILE_ID_GATT_SERVER = 0x00000002; 117 const uint32_t PROFILE_ID_A2DP_SRC = 0x00000004; 118 const uint32_t PROFILE_ID_A2DP_SINK = 0x00000008; 119 const uint32_t PROFILE_ID_AVRCP_CT = 0x00000010; 120 const uint32_t PROFILE_ID_AVRCP_TG = 0x00000020; 121 const uint32_t PROFILE_ID_HFP_AG = 0x00000040; 122 const uint32_t PROFILE_ID_HFP_HF = 0x00000080; 123 const uint32_t PROFILE_ID_MAP_MCE = 0x00000100; 124 const uint32_t PROFILE_ID_MAP_MSE = 0x00000200; 125 const uint32_t PROFILE_ID_PBAP_PCE = 0x00000400; 126 const uint32_t PROFILE_ID_PBAP_PSE = 0x00000800; 127 const uint32_t PROFILE_ID_SPP = 0x00001000; 128 const uint32_t PROFILE_ID_DI = 0x00002000; 129 const uint32_t PROFILE_ID_HID_HOST = 0x00004000; 130 const uint32_t PROFILE_ID_PAN = 0x00008000; 131 const uint32_t PROFILE_ID_OPP = 0x00010000; 132 133 /** 134 * @brief default value 135 * use to 136 * initialize mac address, name or other values. 137 */ 138 const std::string INVALID_MAC_ADDRESS = "00:00:00:00:00:00"; 139 const std::string INVALID_NAME = ""; 140 const int INVALID_VALUE = 0; 141 const int INVALID_TYPE = -1; 142 const int ADDRESS_LENGTH = 17; 143 const int ADDRESS_COLON_INDEX = 2; 144 const int ADDRESS_SEPARATOR_UNIT = 3; 145 146 /** 147 * @brief discovery state 148 * use to 149 * GetBtScanMode(), SetBtScanMode() 150 */ 151 const int DISCOVERY_STARTED = 0x01; 152 const int DISCOVERYING = 0x02; 153 const int DISCOVERY_STOPED = 0x03; 154 155 /** 156 * @brief pairing result 157 * use to 158 * OnPairStatusChanged() 159 */ 160 const int PAIR_NONE = 0x01; 161 const int PAIR_PAIRING = 0x02; 162 const int PAIR_PAIRED = 0x03; 163 164 /** 165 * @brief user confirm type during paring process. 166 * use to 167 * OnPairConfirmed() 168 */ 169 const int PAIR_CONFIRM_TYPE_PIN_CODE = 0x01; 170 const int PAIR_CONFIRM_TYPE_PASSKEY_DISPLAY = 0x02; 171 const int PAIR_CONFIRM_TYPE_PASSKEY_INPUT = 0x03; 172 const int PAIR_CONFIRM_TYPE_NUMERIC = 0x04; 173 const int PAIR_CONFIRM_TYPE_CONSENT = 0x05; 174 175 /** 176 * @brief discoverable mode and connect mode 177 * use to 178 * GetBtScanMode(), SetBtScanMode() 179 */ 180 const int SCAN_MODE_NONE = 0x00; 181 const int SCAN_MODE_CONNECTABLE = 0x01; 182 const int SCAN_MODE_GENERAL_DISCOVERABLE = 0x02; 183 const int SCAN_MODE_LIMITED_DISCOVERABLE = 0x03; 184 const int SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE = 0x04; 185 const int SCAN_MODE_CONNECTABLE_LIMITED_DISCOVERABLE = 0x05; 186 187 /** 188 * @brief bondable mode define 189 * use to 190 * GetBondableMode(), SetBondableMode() 191 */ 192 const int BONDABLE_MODE_OFF = 0x00; 193 const int BONDABLE_MODE_ON = 0x01; 194 195 /** 196 * @brief remote device's transport type 197 * use to 198 * GetTransportType() 199 */ 200 const int BT_TRANSPORT_BREDR = 0; 201 const int BT_TRANSPORT_BLE = 1; 202 203 /** 204 * @brief remote device type 205 * use to 206 * GetDeviceType 207 */ 208 const int DEVICE_TYPE_UNKNOWN = -1; 209 const int DEVICE_TYPE_BREDR = 0; 210 const int DEVICE_TYPE_LE = 1; 211 const int DEVICE_TYPE_DUAL_MONO = 2; 212 /********************************************* 213 * 214 * GATT Macro Define 215 * 216 *********************************************/ 217 218 constexpr uint8_t GATT_TRANSPORT_TYPE_AUTO = 0x0; 219 constexpr uint8_t GATT_TRANSPORT_TYPE_LE = 0x1; 220 constexpr uint8_t GATT_TRANSPORT_TYPE_CLASSIC = 0x2; 221 constexpr uint8_t GATT_ROLE_MASTER = 0x00; 222 constexpr uint8_t GATT_ROLE_SLAVE = 0x01; 223 constexpr uint8_t GATT_ROLE_INVALID = 0xFF; 224 225 enum class GattConnectionPriority : int { BALANCED, HIGH, LOW_POWER }; 226 227 enum GattStatus { 228 INVALID_REMOTE_DEVICE = -29, 229 INCLUDE_SERVICE_NOT_FOUND, 230 REFERENCED_BY_OTHER_SERVICE, 231 INVALID_CHARACTERISTIC, 232 INVALID_CHARACTERISTIC_DATA, 233 INVALID_CHARACTERISTIC_DESCRIPTOR, 234 INVALID_CHARACTERISTIC_DESCRIPTOR_DATA, 235 NOT_ENOUGH_HANDLES, 236 HANDLE_NOT_FOUND, 237 INVALID_PARAMETER, 238 INTERNAL_ERROR, 239 REQUEST_NOT_SUPPORT, 240 REMOTE_DEVICE_BUSY, 241 MAX_CONNECTIONS, 242 MAX_APPLICATIONS, 243 DEVICE_ALREADY_BIND, 244 INVALID_HANDLE, 245 INVALID_OFFSET, 246 READ_NOT_PERMITTED, 247 WRITE_NOT_PERMITTED, 248 INSUFFICIENT_ENCRYPTION, 249 INSUFFICIENT_AUTHENTICATION, 250 INSUFFICIENT_AUTHORIZATION, 251 INSUFFICIENT_ENCRYPTION_KEY_SIZE, 252 PREPARE_QUEUE_FULL, 253 ATTRIBUTE_NOT_LONG, 254 INVALID_ATTRIBUTE_VALUE_LENGTH, 255 WRITE_REQUEST_REJECTED, 256 GATT_FAILURE, 257 GATT_SUCCESS 258 }; 259 260 /********************************************* 261 * 262 * BLE Macro Define 263 * 264 *********************************************/ 265 // Minimum value for advertising interval. 266 const int BLE_ADV_MIN_INTERVAL = 0x0020; 267 // Maximum value for advertising interval. 268 const int BLE_ADV_MAX_INTERVAL = 0x4000; 269 // Default value for advertising interval. 270 const int BLE_ADV_DEFAULT_INTERVAL = 0x03E8; 271 272 // Special advertising set handle used for the legacy advertising set. 273 const uint8_t BLE_LEGACY_ADVERTISING_HANDLE = 0x00; 274 // Special advertising set handle used as return or parameter to signify an invalid handle. 275 const uint8_t BLE_INVALID_ADVERTISING_HANDLE = 0xFF; 276 277 // Report delay millis default value 278 const int BLE_REPORT_DELAY_MILLIS = 5000; 279 280 // Definitions for UUID length constants. 281 const int BLE_UUID_LEN_16 = 2; 282 const int BLE_UUID_LEN_32 = 4; 283 const int BLE_UUID_LEN_128 = 16; 284 const int DEVICE_NAME_MAX_LEN = 26; 285 286 // BLE acl connect status 287 const int BLE_CONNECTION_STATE_DISCONNECTED = 0x00; 288 const int BLE_CONNECTION_STATE_CONNECTED = 0x01; 289 const int BLE_CONNECTION_STATE_ENCRYPTED_BREDR = 0x02; 290 const int BLE_CONNECTION_STATE_ENCRYPTED_LE = 0x04; 291 292 const int BLE_PAIR_NONE = 0x01; 293 const int BLE_PAIR_PAIRING = 0x02; 294 const int BLE_PAIR_PAIRED = 0x03; 295 const int BLE_PAIR_CANCELING = 0x04; 296 297 const int BLE_ADV_DEFAULT_OP_CODE = 0x00; 298 const int BLE_ADV_STOP_COMPLETE_OP_CODE = 0x01; 299 const int BLE_ADV_START_FAILED_OP_CODE = 0x02; 300 301 const uint8_t BLE_ADV_DATA_BYTE_FIELD_LEN = 3; 302 const uint8_t BLE_ADV_DATA_FIELD_TYPE_AND_LEN = 2; 303 const uint8_t BLE_ONE_BYTE_LEN = 8; 304 305 const int8_t BLE_ADV_TX_POWER_ULTRA_LOW_VALUE = -21; 306 const int8_t BLE_ADV_TX_POWER_LOW_VALUE = -15; 307 const int8_t BLE_ADV_TX_POWER_MEDIUM_VALUE = -7; 308 const int8_t BLE_ADV_TX_POWER_HIGH_VALUE = 1; 309 310 // Intended Advertising PHY 311 const uint8_t BLE_ADVERTISEMENT_PHY_NONE = 0x00; 312 const uint8_t BLE_ADVERTISEMENT_PHY_1M = 0x01; 313 const uint8_t BLE_ADVERTISEMENT_PHY_2M = 0x02; 314 const uint8_t BLE_ADVERTISEMENT_PHY_CODED = 0x03; 315 316 const uint8_t BLE_LEGACY_SCAN_RESPONSE = 3; 317 const uint8_t BLE_LEGACY_ADV_SCAN_IND = 1; 318 const uint8_t BLE_LEGACY_ADV_IND_WITH_EX_ADV = 0x13; 319 const uint8_t BLE_LEGACY_ADV_NONCONN_IND_WITH_EX_ADV = 0x10; 320 const uint8_t BLE_ADV_EVT_LEGACY_BIT = 4; 321 322 // Incomplete, more data to come 323 const uint8_t BLE_EX_SCAN_DATE_STATUS_INCOMPLETE_MORE = 0x20; 324 // Incomplete, data truncated, no more to come 325 const uint8_t BLE_EX_SCAN_DATE_STATUS_INCOMPLETE_NO_MORE = 0x40; 326 327 // Scan mode 328 typedef enum { 329 SCAN_MODE_LOW_POWER = 0x00, 330 SCAN_MODE_BALANCED = 0x01, 331 SCAN_MODE_LOW_LATENCY = 0x02, 332 SCAN_MODE_OP_P2_60_3000 = 0x03, 333 SCAN_MODE_OP_P10_60_600 = 0x04, 334 SCAN_MODE_OP_P25_60_240 = 0x05, 335 SCAN_MODE_OP_P100_1000_1000 = 0x06 336 } SCAN_MODE; 337 338 // Phy type 339 using PHY_TYPE = enum { PHY_LE_1M = 1, PHY_LE_2M = 2, PHY_LE_CODED = 3, PHY_LE_ALL_SUPPORTED = 255 }; 340 341 // BLE advertiser TX power level. 342 using BLE_ADV_TX_POWER_LEVEL = enum { 343 BLE_ADV_TX_POWER_ULTRA_LOW = 0x00, 344 BLE_ADV_TX_POWER_LOW = 0x01, 345 BLE_ADV_TX_POWER_MEDIUM = 0x02, 346 BLE_ADV_TX_POWER_HIGH = 0x03 347 }; 348 349 // BLE advertiser flag 350 const uint8_t BLE_ADV_FLAG_NON_LIMIT_DISC = 0x00; 351 const uint8_t BLE_ADV_FLAG_LIMIT_DISC = 0x01 << 0; 352 const uint8_t BLE_ADV_FLAG_GEN_DISC = 0x01 << 1; 353 const uint8_t BLE_ADV_FLAG_BREDR_NOT_SPT = 0x01 << 2; 354 const uint8_t BLE_ADV_FLAG_DMT_CONTROLLER_SPT = 0x01 << 3; 355 const uint8_t BLE_ADV_FLAG_DMT_HOST_SPT = 0x01 << 4; 356 357 // Bluetooth device type 358 using BLE_BT_DEV_TYPE = enum { 359 BLE_BT_DEVICE_TYPE_UNKNOWN = -1, 360 BLE_BT_DEVICE_TYPE_BREDR = 0, 361 BLE_BT_DEVICE_TYPE_BLE = 1, 362 BLE_BT_DEVICE_TYPE_DUMO = 2, 363 }; 364 365 // BLE device address type 366 using BLE_ADDR_TYPE = enum { 367 BLE_ADDR_TYPE_PUBLIC = 0x00, 368 BLE_ADDR_TYPE_RANDOM = 0x01, 369 BLE_ADDR_TYPE_NON_RPA = 0x02, 370 BLE_ADDR_TYPE_RPA = 0x03, 371 BLE_ADDR_TYPE_UNKNOWN = 0xFE, 372 BLE_ADDR_TYPE_ANONYMOUS = 0xFF, 373 }; 374 375 using BLE_IO_CAP = enum { 376 BLE_IO_CAP_OUT = 0x00, // DisplayOnly 377 BLE_IO_CAP_IO = 0x01, // DisplayYesNo 378 BLE_IO_CAP_IN = 0x02, // KeyboardOnly 379 BLE_IO_CAP_NONE = 0x03, // NoInputNoOutput 380 BLE_IO_CAP_KBDISP = 0x04 // Keyboard display 381 }; 382 383 // Adv status 384 using BleAdvState = enum { 385 BLE_ADV_STATE_IDLE, 386 BLE_ADV_STATE_ADVERTISING, 387 }; 388 389 // The type of advertising data(not adv_type) 390 using BLE_ADV_DATA_TYPE = enum { 391 BLE_AD_TYPE_FLAG = 0x01, 392 BLE_AD_TYPE_16SRV_PART = 0x02, 393 BLE_AD_TYPE_16SRV_CMPL = 0x03, 394 BLE_AD_TYPE_32SRV_PART = 0x04, 395 BLE_AD_TYPE_32SRV_CMPL = 0x05, 396 BLE_AD_TYPE_128SRV_PART = 0x06, 397 BLE_AD_TYPE_128SRV_CMPL = 0x07, 398 BLE_AD_TYPE_NAME_SHORT = 0x08, 399 BLE_AD_TYPE_NAME_CMPL = 0x09, 400 BLE_AD_TYPE_TX_PWR = 0x0A, 401 BLE_AD_TYPE_DEV_CLASS = 0x0D, 402 BLE_AD_TYPE_SM_TK = 0x10, 403 BLE_AD_TYPE_SM_OOB_FLAG = 0x11, 404 BLE_AD_TYPE_INT_RANGE = 0x12, 405 BLE_AD_TYPE_SOL_SRV_UUID = 0x14, 406 BLE_AD_TYPE_128SOL_SRV_UUID = 0x15, 407 BLE_AD_TYPE_SERVICE_DATA = 0x16, 408 BLE_AD_TYPE_PUBLIC_TARGET = 0x17, 409 BLE_AD_TYPE_RANDOM_TARGET = 0x18, 410 BLE_AD_TYPE_APPEARANCE = 0x19, 411 BLE_AD_TYPE_ADV_INT = 0x1A, 412 BLE_AD_TYPE_LE_DEV_ADDR = 0x1b, 413 BLE_AD_TYPE_LE_ROLE = 0x1c, 414 BLE_AD_TYPE_SPAIR_C256 = 0x1d, 415 BLE_AD_TYPE_SPAIR_R256 = 0x1e, 416 BLE_AD_TYPE_32SOL_SRV_UUID = 0x1f, 417 BLE_AD_TYPE_32SERVICE_DATA = 0x20, 418 BLE_AD_TYPE_128SERVICE_DATA = 0x21, 419 BLE_AD_TYPE_LE_SECURE_CONFIRM = 0x22, 420 BLE_AD_TYPE_LE_SECURE_RANDOM = 0x23, 421 BLE_AD_TYPE_URI = 0x24, 422 BLE_AD_TYPE_INDOOR_POSITION = 0x25, 423 BLE_AD_TYPE_TRANS_DISC_DATA = 0x26, 424 BLE_AD_TYPE_LE_SUPPORT_FEATURE = 0x27, 425 BLE_AD_TYPE_CHAN_MAP_UPDATE = 0x28, 426 BLE_AD_MANUFACTURER_SPECIFIC_TYPE = 0xFF, 427 }; 428 429 /********************************************* 430 * 431 * Map Define 432 * 433 *********************************************/ 434 // Map Message Type 435 enum class MapMessageType : int { 436 EMAIL = 0, 437 SMS_GSM = 1, 438 SMS_CDMA = 2, 439 MMS = 3, 440 IM = 4, 441 INVALID = 5 442 }; // IM only support in bmessage ver1.1 443 444 // Map Message Status 445 enum class MapMessageStatus : int { READ, UNREAD, INVALID }; // default UNREAD 446 447 // Map BoolType , YES or NO 448 enum class MapBoolType : int { YES, NO, INVALID }; // default NO 449 450 // Map Message ReceptionStatus 451 enum class MapMsgReceptionStatus : int { COMPLETE, FRACTIONED, NOTIFICATION, INVALID }; 452 453 // Map MsgDeliveryStatus 454 enum class MapMsgDeliveryStatus : int { DELIVERED, SENT, UNKNOWN, INVALID }; 455 456 // Map MsgDirection 457 enum class MapMsgDirection : int { INCOMING, OUTGOING, OUTGOINGDRAFT, OUTGOINGPENDING, INVALID }; 458 459 // Map FractionDeliverType 460 enum class MapFractionDeliverType : int { MORE, LAST, INVALID }; 461 462 // Map FractionRequest Type 463 enum class MapFractionRequestType : uint8_t { FIRST = 0x00, NEXT = 0x01, INVALID = 0x02 }; 464 465 // Map OnOff Type 466 enum class MapOnOffType : uint8_t { OFF = 0, ON = 1, INVALID = 3 }; 467 468 // Map Charset Type 469 enum class MapCharsetType : uint8_t { NATIVE = 0x00, UTF_8 = 0x01, INVALID = 0x02 }; 470 471 // Attachment Type 472 enum class MapAttachmentType : uint8_t { NO = 0x00, HAVE = 0x01, INVALID = 0x02 }; 473 474 // Map StatusIndicator Type 475 enum class MapStatusIndicatorType : uint8_t { 476 READ_STATUS = 0x00, 477 DELETED_STATUS = 0x01, 478 SET_EXTENDED_DATA = 0x02, 479 INVALID = 0x03 480 }; 481 482 // Map StatusValue Type 483 enum class MapStatusValueType : uint8_t { NO = 0x00, YES = 0x01 }; 484 485 // Map ModifyText Type 486 enum class MapModifyTextType : uint8_t { REPLACE = 0x00, PREPEND = 0x01, INVALID = 0x02 }; 487 488 // Map Action Type 489 enum class MapActionType : int { 490 GET_UNREAD_MESSAGES, 491 GET_SUPPORTED_FEATURES, 492 SEND_MESSAGE, 493 SET_NOTIFICATION_FILTER, 494 GET_MESSAGES_LISTING, 495 GET_MESSAGE, 496 UPDATE_INBOX, 497 GET_CONVERSATION_LISTING, 498 SET_MESSAGE_STATUS, 499 SET_OWNER_STATUS, 500 GET_OWNER_STATUS, 501 GET_MAS_INSTANCE_INFO 502 }; 503 504 // Map ExecuteStatus Type 505 enum class MapExecuteStatus : int { 506 SUCCEED = 0, 507 CONTINUE = 1, 508 BAD_PARAM = (-1), 509 BAD_STATUS = (-2), 510 NOT_SUPPORT = (-3) 511 }; 512 513 // Supported Message Types 514 #define MAP_MCE_SUPPORTED_MESSAGE_TYPE_EMAIL 0x01 515 #define MAP_MCE_SUPPORTED_MESSAGE_TYPE_SMS_GSM 0x02 516 #define MAP_MCE_SUPPORTED_MESSAGE_TYPE_SMS_CDMA 0x04 517 #define MAP_MCE_SUPPORTED_MESSAGE_TYPE_MMS 0x08 518 #define MAP_MCE_SUPPORTED_MESSAGE_TYPE_IM 0x10 519 #define MAP_MCE_SUPPORTED_MESSAGE_TYPE_ALL 0x01F 520 521 // Api: MapClient::GetMessagesListing Application Parameters Mask defines 522 // FilterMessageType Mask, 1 is "filter out this type", 0 is "no filtering, get this type" 523 #define MAP_FILTER_MESSAGE_MASK_SMS_GSM 0b00000001 524 #define MAP_FILTER_MESSAGE_MASK_SMS_CDMA 0b00000010 525 #define MAP_FILTER_MESSAGE_MASK_EMAIL 0b00000100 526 #define MAP_FILTER_MESSAGE_MASK_MMS 0b00001000 527 #define MAP_FILTER_MESSAGE_MASK_IM 0b00010000 528 #define MAP_FILTER_MESSAGE_MASK_NO_FILTERING 0b00000000 529 // FilterReadStatus, 0b00000001 is get unread messages only, 530 // 0b00000010 is get read messages only 531 #define MAP_FILTER_READ_STATUS_MASK_UNREAD 0b00000001 532 #define MAP_FILTER_READ_STATUS_MASK_READ 0b00000010 533 #define MAP_FILTER_READ_STATUS_MASK_NO_FILTERING 0b00000000 534 // FilterPriority, 0b00000001 is get high priority messages only, 535 // 0b00000010 is get non-high priority messages only 536 #define MAP_FILTER_PRIORITY_MASK_HIGH 0b00000001 537 #define MAP_FILTER_PRIORITY_MASK_NO_HIGH 0b00000010 538 #define MAP_FILTER_PRIORITY_MASK_NO_FILTERING 0b00000000 539 // ParameterMask , Bits 0-20 has been used , Bits 21–31 Reserved for Future Use 540 #define MAP_GETMESSAGELIST_PARAMETER_MASK_REQUIRED 0b000000000000000000000000 541 #define MAP_GETMESSAGELIST_PARAMETER_MASK_PRESENT_ALL 0b000111111111111111111111 542 #define MAP_GETMESSAGELIST_PARAMETER_MASK_SUBJECT 0b000000000000000000000001 543 #define MAP_GETMESSAGELIST_PARAMETER_MASK_DATETIME 0b000000000000000000000010 544 #define MAP_GETMESSAGELIST_PARAMETER_MASK_SENDER_NAME 0b000000000000000000000100 545 #define MAP_GETMESSAGELIST_PARAMETER_MASK_SENDER_ADDRESSING 0b000000000000000000001000 546 #define MAP_GETMESSAGELIST_PARAMETER_MASK_RECIPIENT_NAME 0b000000000000000000010000 547 #define MAP_GETMESSAGELIST_PARAMETER_MASK_RECIPIENT_ADDRESSING 0b000000000000000000100000 548 #define MAP_GETMESSAGELIST_PARAMETER_MASK_TYPE 0b000000000000000001000000 549 #define MAP_GETMESSAGELIST_PARAMETER_MASK_SIZE 0b000000000000000010000000 550 #define MAP_GETMESSAGELIST_PARAMETER_MASK_RECEPTION_STATUS 0b000000000000000100000000 551 #define MAP_GETMESSAGELIST_PARAMETER_MASK_TEXT 0b000000000000001000000000 552 #define MAP_GETMESSAGELIST_PARAMETER_MASK_ATTACHMENT_SIZE 0b000000000000010000000000 553 #define MAP_GETMESSAGELIST_PARAMETER_MASK_PRIORITY 0b000000000000100000000000 554 #define MAP_GETMESSAGELIST_PARAMETER_MASK_READ 0b000000000001000000000000 555 #define MAP_GETMESSAGELIST_PARAMETER_MASK_SENT 0b000000000010000000000000 556 #define MAP_GETMESSAGELIST_PARAMETER_MASK_PROTECTED 0b000000000100000000000000 557 #define MAP_GETMESSAGELIST_PARAMETER_MASK_REPLYTO_ADDRESSING 0b000000001000000000000000 558 #define MAP_GETMESSAGELIST_PARAMETER_MASK_DELIVERY_STATUS 0b000000010000000000000000 559 #define MAP_GETMESSAGELIST_PARAMETER_MASK_CONVERSATION_ID 0b000000100000000000000000 560 #define MAP_GETMESSAGELIST_PARAMETER_MASK_CONVERSATION_NAME 0b000001000000000000000000 561 #define MAP_GETMESSAGELIST_PARAMETER_MASK_DIRECTION 0b000010000000000000000000 562 #define MAP_GETMESSAGELIST_PARAMETER_MASK_ATTACHMENT_MIME 0b000100000000000000000000 563 564 // Api: MapClient::GetConversationListing Application Parameters Mask defines 565 // ConvParameterMask , Bits 0-14 has been used, Bits 15–31 Reserved for Future Use 566 // Bit i is 1 indicates that the parameter related to Bit i shall be present in the requested Conversation-Listing. 567 // The reserved bits shall be set to 0 by the MCE and discarded by the MSE. 568 // If Bit 5 has the value 0, the Conversation-Listing in the response shall not contain any participant element 569 // and therefore the Bits 6–14 do not have any impact. 570 // If Bit 5 has the value 1, then at least one of the Bits 6–14 shall also have the value 1. 571 // If any of the Bits 6–14 has the value 1, Bit 5 shall have the value 1. 572 #define MAP_GETCONV_PARAMETER_MASK_ALL_ON 0b000000000111111111111111 573 #define MAP_GETCONV_PARAMETER_MASK_CONVERSATION_NAME 0b000000000000000000000001 574 #define MAP_GETCONV_PARAMETER_MASK_CONVERSATION_LAST_ACTIVITY 0b000000000000000000000010 575 #define MAP_GETCONV_PARAMETER_MASK_CONVERSATION_READ_STATUS 0b000000000000000000000100 576 #define MAP_GETCONV_PARAMETER_MASK_CONVERSATION_VERSION_COUNTER 0b000000000000000000001000 577 #define MAP_GETCONV_PARAMETER_MASK_CONVERSATION_SUMMARY 0b000000000000000000010000 578 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANTS 0b000000000000000000100000 579 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANT_UCI 0b000000000000000001000000 580 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANT_DISPLAY_NAME 0b000000000000000010000000 581 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANT_CHAT_STATE 0b000000000000000100000000 582 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANT_LAST_ACTIVITY 0b000000000000001000000000 583 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANT_X_BT_UID 0b000000000000010000000000 584 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANT_NAME 0b000000000000100000000000 585 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANT_PRESENCE_AVAILABILITY 0b000000000001000000000000 586 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANT_PRESENCE_TEXT 0b000000000010000000000000 587 #define MAP_GETCONV_PARAMETER_MASK_PARTICIPANT_PRIORITY 0b000000000100000000000000 588 589 // Api: MapClient::SetNotificationFilter input param mask defines 590 // Bit i is 0 indicates that the MSE shall not send the notification related to bit i for the current MAS. 591 // NotificationFilterMask ,Bits 0-14 has been used, Bits 15–31 Reserved for Future Use 592 #define MAP_NOTIFICATION_FILTER_MASK_ALL_OFF 0b000000000000000000000000 593 #define MAP_NOTIFICATION_FILTER_MASK_ALL_ON 0b000000000111111111111111 594 #define MAP_NOTIFICATION_FILTER_MASK_NEW_MESSAGE 0b000000000000000000000001 595 #define MAP_NOTIFICATION_FILTER_MASK_MESSAGE_DELETED 0b000000000000000000000010 596 #define MAP_NOTIFICATION_FILTER_MASK_MESSAGE_SHIFT 0b000000000000000000000100 597 #define MAP_NOTIFICATION_FILTER_MASK_SENDING_SUCCESS 0b000000000000000000001000 598 #define MAP_NOTIFICATION_FILTER_MASK_SENDING_FAILURE 0b000000000000000000010000 599 #define MAP_NOTIFICATION_FILTER_MASK_DELIVERY_SUCCESS 0b000000000000000000100000 600 #define MAP_NOTIFICATION_FILTER_MASK_DELIVERY_FAILURE 0b000000000000000001000000 601 #define MAP_NOTIFICATION_FILTER_MASK_MEMORY_FULL 0b000000000000000010000000 602 #define MAP_NOTIFICATION_FILTER_MASK_MEMORY_AVAILABLE 0b000000000000000100000000 603 #define MAP_NOTIFICATION_FILTER_MASK_READ_STATUS_CHANGED 0b000000000000001000000000 604 #define MAP_NOTIFICATION_FILTER_MASK_CONVERSATION_CHANGED 0b000000000000010000000000 605 #define MAP_NOTIFICATION_FILTER_MASK_PARTICIPANT_PRESENCE_CHANGED 0b000000000000100000000000 606 #define MAP_NOTIFICATION_FILTER_MASK_PARTICIPANT_CHAT_STATE_CHANGED 0b000000000001000000000000 607 #define MAP_NOTIFICATION_FILTER_MASK_MESSAGE_EXTENDED_DATA_CHANGED 0b000000000010000000000000 608 #define MAP_NOTIFICATION_FILTER_MASK_MESSAGE_REMOVED 0b000000000100000000000000 609 610 // Api: MapClient::GetSupportedFeatures action complete param mask defines 611 // Map Supported features mask 612 #define MAP_SUPPORTED_FEATURES_NOTIFICATION_REGISTRATION 0x00000001 613 #define MAP_SUPPORTED_FEATURES_NOTIFICATION_FEATURE 0x00000002 614 #define MAP_SUPPORTED_FEATURES_BROWSING 0x00000004 615 #define MAP_SUPPORTED_FEATURES_UPLOADING 0x00000008 616 #define MAP_SUPPORTED_FEATURES_DELETE_FEATURE 0x00000010 617 #define MAP_SUPPORTED_FEATURES_INSTANCE_INFO_FEATURE 0x00000020 618 #define MAP_SUPPORTED_FEATURES_EVENT_REPORT_1_1 0x00000040 619 #define MAP_SUPPORTED_FEATURES_EVENT_REPORT_1_2 0x00000080 620 #define MAP_SUPPORTED_FEATURES_MESSAGE_FORMAT_1_1 0x00000100 621 #define MAP_SUPPORTED_FEATURES_MESSAGELIST_FORMAT_1_1 0x00000200 622 #define MAP_SUPPORTED_FEATURES_PERSISTENT_MESSAGE_HANDLE 0x00000400 623 #define MAP_SUPPORTED_FEATURES_DATABASE_IDENTIFIER 0x00000800 624 #define MAP_SUPPORTED_FEATURES_FOLDOR_VERSION_COUNTER 0x00001000 625 #define MAP_SUPPORTED_FEATURES_CONVERSATION_VERSION_COUNTER 0x00002000 626 #define MAP_SUPPORTED_FEATURES_PARTICIPANT_PRESENCE_CHANGE_NOTIFICATION 0x00004000 627 #define MAP_SUPPORTED_FEATURES_PARTICIPANT_CHAT_STATE_CHANGE_NOTIFICATION 0x00008000 628 #define MAP_SUPPORTED_FEATURES_PBAP_CONTACT_CROSS_REFERENCE 0x00010000 629 #define MAP_SUPPORTED_FEATURES_NOTIFICATION_FILTER 0x00020000 630 #define MAP_SUPPORTED_FEATURES_UTC_OFFSET_TIMESTAMP_FORMAT 0x00040000 631 #define MAP_SUPPORTED_FEATURES_MAPSUPPORTED_FEATURES 0x00080000 632 #define MAP_SUPPORTED_FEATURES_CONVERSATION_LISTING 0x00100000 633 #define MAP_SUPPORTED_FEATURES_OWNER_STATUS 0x00200000 634 #define MAP_SUPPORTED_FEATURES_MESSAGE_FORWARDING 0x00400000 635 636 /********************************************* 637 * 638 * AVRCP Macro Define 639 * 640 *********************************************/ 641 642 // The default label. The valid range is 0x00 ~ 0x0F. 643 #define AVRC_DEFAULT_LABEL (0x00) 644 // The invalid label. 645 #define AVRC_INVALID_LABEL (0x10) 646 647 /** 648 * @brief This enumeration declares the types of the methods. 649 * 650 * @since 6 651 */ 652 enum AvrcCtActionType : uint8_t { 653 AVRC_ACTION_TYPE_INVALID = 0x00, 654 AVRC_ACTION_TYPE_PRESS_BUTTON, 655 AVRC_ACTION_TYPE_RELEASE_BUTTON, 656 AVRC_ACTION_TYPE_SET_ADDRESSED_PLAYER, 657 AVRC_ACTION_TYPE_SET_BROWSED_PLAYER, 658 AVRC_ACTION_TYPE_GET_CAPABILITIES, 659 AVRC_ACTION_TYPE_GET_PLAYER_APP_SETTING_ATTRIBUTES, 660 AVRC_ACTION_TYPE_GET_PLAYER_APP_SETTING_VALUES, 661 AVRC_ACTION_TYPE_GET_PLAYER_APP_SETTING_CURRENT_VALUE, 662 AVRC_ACTION_TYPE_SET_PLAYER_APP_SETTING_CURRENT_VALUE, 663 AVRC_ACTION_TYPE_GET_PLAYER_APP_SETTING_ATTRIBUTE_TEXT, 664 AVRC_ACTION_TYPE_GET_PLAYER_APP_SETTING_VALUE_TEXT, 665 AVRC_ACTION_TYPE_GET_ELEMENT_ATTRIBUTES, 666 AVRC_ACTION_TYPE_GET_PLAY_STATUS, 667 AVRC_ACTION_TYPE_PLAY_ITEM, 668 AVRC_ACTION_TYPE_ADD_TO_NOW_PLAYING, 669 AVRC_ACTION_TYPE_CHANGE_PATH, 670 AVRC_ACTION_TYPE_GET_FOLDER_ITEMS, 671 AVRC_ACTION_TYPE_GET_ITEM_ATTRIBUTES, 672 AVRC_ACTION_TYPE_GET_TOTAL_NUMBER_OF_ITEMS, 673 AVRC_ACTION_TYPE_SET_ABSOLUTE_VOLUME, 674 AVRC_ACTION_TYPE_NOTIFY_PLAYBACK_STATUS_CHANGED, 675 AVRC_ACTION_TYPE_NOTIFY_TRACK_CHANGED, 676 AVRC_ACTION_TYPE_NOTIFY_TRACK_REACHED_END, 677 AVRC_ACTION_TYPE_NOTIFY_TRACK_REACHED_START, 678 AVRC_ACTION_TYPE_NOTIFY_PLAYBACK_POS_CHANGED, 679 AVRC_ACTION_TYPE_NOTIFY_PLAYER_APPLICATION_SETTING_CHANGED, 680 AVRC_ACTION_TYPE_NOTIFY_NOW_PLAYING_CONTENT_CHANGED, 681 AVRC_ACTION_TYPE_NOTIFY_AVAILABLE_PLAYERS_CHANGED, 682 AVRC_ACTION_TYPE_NOTIFY_ADDRESSED_PLAYER_CHANGED, 683 AVRC_ACTION_TYPE_NOTIFY_UIDS_CHANGED, 684 AVRC_ACTION_TYPE_NOTIFY_VOLUME_CHANGED, 685 AVRC_ACTION_TYPE_GET_MEDIA_PLAYER_LIST, 686 }; 687 688 /** 689 * @brief This enumeration declares the values of the supported button. 690 * @see AV/C Panel Subunit Specification 1.23 Section 9.4 PASS THROUGH control command Table 9.21 - Operation id List 691 * 692 * @since 6 693 */ 694 enum AvrcKeyOperation : uint8_t { 695 AVRC_KEY_OPERATION_VOLUME_UP = 0x41, // Volume up. 696 AVRC_KEY_OPERATION_VOLUME_DOWN = 0x42, // Volume down. 697 AVRC_KEY_OPERATION_MUTE = 0x43, // Mute. 698 AVRC_KEY_OPERATION_PLAY = 0x44, // Play. 699 AVRC_KEY_OPERATION_STOP = 0x45, // Stop. 700 AVRC_KEY_OPERATION_PAUSE = 0x46, // Pause. 701 AVRC_KEY_OPERATION_REWIND = 0x48, // Rewind. 702 AVRC_KEY_OPERATION_FAST_FORWARD = 0x49, // Fast forward. 703 AVRC_KEY_OPERATION_FORWARD = 0x4B, // Forward. 704 AVRC_KEY_OPERATION_BACKWARD = 0x4C, // Backward. 705 AVRC_KEY_OPERATION_INVALID = 0x7F, 706 }; 707 708 /** 709 * @brief This enumeration declares the values of the key state. 710 * 711 * @since 6 712 */ 713 enum AvrcTgKeyState : uint8_t { 714 AVRC_KEY_STATE_PRESS = 0x00, // The key is pushed. 715 AVRC_KEY_STATE_RELEASE = 0x01, // The key is released. 716 AVRC_KEY_STATE_INVALID, // Invalid key state. 717 }; 718 719 /** 720 * @brief This enumeration declares the values of the player application setting attributes. 721 * @see Audio/Video Remote Control 1.6.2 Section 27 Appendix F: list of defined player application settings and values. 722 * 723 * @since 6 724 */ 725 enum AvrcPlayerAttribute : uint8_t { 726 AVRC_PLAYER_ATTRIBUTE_ILLEGAL = 0x00, // Illegal , Should not be used. 727 AVRC_PLAYER_ATTRIBUTE_EQUALIZER = 0x01, // Equalizer ON / OFF status. 728 AVRC_PLAYER_ATTRIBUTE_REPEAT = 0x02, // Repeat Mode status. 729 AVRC_PLAYER_ATTRIBUTE_SHUFFLE = 0x03, // Shuffle ON/OFF status. 730 AVRC_PLAYER_ATTRIBUTE_SCAN = 0x04, // Scan ON/OFF status. 731 AVRC_PLAYER_ATTRIBUTE_RESERVED_MIN = 0x05, // Reserved for future use. 0x05 - 0x7F 732 AVRC_PLAYER_ATTRIBUTE_RESERVED_MAX = 0x7F, // Reserved for future use. 0x05 - 0x7F 733 AVRC_PLAYER_ATTRIBUTE_EXTENSION = 0x80, // Provided for TG driven static media player menu extension. 734 // Range: 0x80 - 0xFF 735 }; 736 737 /** 738 * @brief This enumeration declares the values of the Equalizer ON/OFF status. 739 * @see Audio/Video Remote Control 1.6.2 Section 27 Appendix F: list of defined player application settings and values. 740 * 741 * @since 6 742 */ 743 enum AvrcEqualizer : uint8_t { 744 AVRC_EQUALIZER_OFF = 0x01, 745 AVRC_EQUALIZER_ON, 746 AVRC_EQUALIZER_INVALID, 747 }; 748 749 /** 750 * @brief This enumeration declares the values of the Repeat Mode status. 751 * @see Audio/Video Remote Control 1.6.2 Section 27 Appendix F: list of defined player application settings and values. 752 * 753 * @since 6 754 */ 755 enum AvrcRepeat : uint8_t { 756 AVRC_REPEAT_OFF = 0x01, 757 AVRC_REPEAT_SINGLE_TRACK, 758 AVRC_REPEAT_ALL_TRACK, 759 AVRC_REPEAT_GROUP, 760 AVRC_REPEAT_INVALID, 761 }; 762 763 /** 764 * @brief This enumeration declares the values of the Shuffle ON/OFF status. 765 * @see Audio/Video Remote Control 1.6.2 Section 27 Appendix F: list of defined player application settings and values. 766 * 767 * @since 6 768 */ 769 enum AvrcShuffle : uint8_t { 770 AVRC_SHUFFLE_OFF = 0x01, 771 AVRC_SHUFFLE_ALL_TRACKS, 772 AVRC_SHUFFLE_GROUP, 773 AVRC_SHUFFLE_INVALID, 774 }; 775 776 /** 777 * @brief This enumeration declares the values of the Scan ON/OFF status. 778 * @see Audio/Video Remote Control 1.6.2 Section 27 Appendix F: list of defined player application settings and values. 779 * 780 * @since 6 781 */ 782 enum AvrcScan : uint8_t { 783 AVRC_SCAN_OFF = 0x01, 784 AVRC_SCAN_ALL_TRACKS, 785 AVRC_SCAN_GROUP, 786 AVRC_SCAN_INVALID, 787 }; 788 789 /** 790 * @brief This enumeration declares the values of the play status. 791 * 792 * @since 6 793 */ 794 enum AvrcPlayStatus : uint32_t { 795 AVRC_PLAY_STATUS_STOPPED = 0x00, // Stopped. 796 AVRC_PLAY_STATUS_PLAYING, // Playing. 797 AVRC_PLAY_STATUS_PAUSED, // Paused. 798 AVRC_PLAY_STATUS_FWD_SEEK, // Fwd seek. 799 AVRC_PLAY_STATUS_REV_SEEK, // Rev seek. 800 AVRC_PLAY_STATUS_RESERVED_MIN = 0x05, // Reserved for future use. 801 AVRC_PLAY_STATUS_RESERVED_MAX = 0xFE, // Reserved for future use. 802 AVRC_PLAY_STATUS_ERROR = 0xFF, // Error. 803 AVRC_PLAY_STATUS_INVALID_SONG_LENGTH = 0xFFFFFFFF, // If TG does not support, then TG shall return 0xFFFFFFFF. 804 AVRC_PLAY_STATUS_INVALID_SONG_POSITION = 0xFFFFFFFF, // If TG does not support, then TG shall return 0xFFFFFFFF. 805 }; 806 807 /** 808 * @brief This enumeration declares the values of folder direction. 809 * 810 * @since 6 811 */ 812 enum AvrcFolderDirection : uint8_t { 813 AVRC_FOLDER_DIRECTION_UP = 0x00, // Folder up. 814 AVRC_FOLDER_DIRECTION_DOWN = 0x01, // Folder down. 815 AVRC_FOLDER_DIRECTION_INVALID = 0x02, // Reserved. 816 }; 817 818 /** 819 * @brief This enumeration declares the values of the scope in which the UID of the media element item or folder item. 820 * @see Audio/Video Remote Control 1.6.2 Section 6.10.1 Scope. 821 * 822 * @since 6 823 */ 824 enum AvrcMediaScope : uint8_t { 825 AVRC_MEDIA_SCOPE_PLAYER_LIST = 0x00, // Contains all available media players. 826 AVRC_MEDIA_SCOPE_VIRTUAL_FILE_SYSTEM, // Contains the media content of the browsed player. 827 AVRC_MEDIA_SCOPE_SEARCH, // The results of a search operation on the browsed player. 828 AVRC_MEDIA_SCOPE_NOW_PLAYING, // The Now Playing list (or queue) of the addressed player. 829 AVRC_MEDIA_SCOPE_INVALID, 830 }; 831 832 /** 833 * @brief This enumeration declares the values of the browsable items. 834 * @see Audio/Video Remote Control 1.6.2 Section 6.10.2 Browsable items. 835 * 836 * @since 6 837 */ 838 enum AvrcMediaType : uint8_t { 839 AVRC_MEDIA_TYPE_MEDIA_PLAYER_ITEM = 0x01, 840 AVRC_MEDIA_TYPE_FOLDER_ITEM, 841 AVRC_MEDIA_TYPE_MEDIA_ELEMENT_ITEM, 842 AVRC_MEDIA_TYPE_INVALID, 843 }; 844 845 /** 846 * @brief This enumeration declares the values of the attribute count. 847 * @see Audio/Video Remote Control 1.6.2 Section 6.10.4.2 GetFolderItems - Attribute Count. 848 * 849 * @since 6 850 */ 851 enum AvrcAttributeCount { 852 AVRC_ATTRIBUTE_COUNT_ALL = 0x00, 853 AVRC_ATTRIBUTE_COUNT_NO = 0xFF, 854 }; 855 856 /** 857 * @brief This enumeration declares the values of the media attribute. These values are used to uniquely identify media 858 * information. 859 * @see Audio/Video Remote Control 1.6.2 Section 26 Appendix E: list of media attributes. 860 * 861 * @since 6 862 */ 863 enum AvrcMediaAttribute : uint8_t { 864 // Not used. 865 AVRC_MEDIA_ATTRIBUTE_NOT_USED = 0x00, 866 // Text field representing the title, song name or content description coded per specified character set. 867 AVRC_MEDIA_ATTRIBUTE_TITLE, 868 // Text field representing artist(s), performer(s) or group coded per specified character set. 869 AVRC_MEDIA_ATTRIBUTE_ARTIST_NAME, 870 // Text field representing the title of the recording(source) from which the audio in the file is taken. 871 AVRC_MEDIA_ATTRIBUTE_ALBUM_NAME, 872 // Numeric ASCII string containing the order number of the audio - file on its original recording.O 0x5 Total 873 // Number of Tracks. 874 AVRC_MEDIA_ATTRIBUTE_TRACK_NUMBER, 875 // Numeric ASCII string containing the total number of tracks or elements on the original recording. 876 AVRC_MEDIA_ATTRIBUTE_TOTAL_NUMBER_OF_TRACKS, 877 // Text field representing the category of the composition characterized by a particular style. 878 AVRC_MEDIA_ATTRIBUTE_GENRE, 879 // Numeric ASCII string containing the length of the audio file in milliseconds.(E.g .02 : 30 = 150000) 880 AVRC_MEDIA_ATTRIBUTE_PLAYING_TIME, 881 // BIP Image Handle. 882 AVRC_MEDIA_ATTRIBUTE_DEFAULT_COVER_ART, 883 // Reserved for future use. 884 AVRC_MEDIA_ATTRIBUTE_RESERVED, 885 }; 886 887 /** 888 * @brief This enumeration declares the values of the major player type. 889 * @see Audio/Video Remote Control 1.6.2 Section 6.10.2.1 Media player item - Major Player Type 890 * 891 * @since 6 892 */ 893 enum AvrcMediaMajorPlayerType : uint8_t { 894 AVRC_MEDIA_MAJOR_PLAYER_TYPE_AUDIO = 0x01, // Audio. 895 AVRC_MEDIA_MAJOR_PLAYER_TYPE_VIDEO = 0x02, // Video. 896 AVRC_MEDIA_MAJOR_PLAYER_TYPE_BROADCASTING_AUDIO = 0x04, // Broadcasting Audio. 897 AVRC_MEDIA_MAJOR_PLAYER_TYPE_BROADCASTING_VIDEO = 0x08, // Broadcasting Video. 898 AVRC_MEDIA_MAJOR_PLAYER_TYPE_RESERVED = 0x10 // Reserved for future use. 899 }; 900 901 /** 902 * @brief This enumeration declares the values of the major player type. 903 * @see Audio/Video Remote Control 1.6.2 Section 6.10.2.1 Media player item - Player Sub Type 904 * 905 * @since 6 906 */ 907 enum AvrcMediaPlayerSubType : uint32_t { 908 AVRC_MEDIA_PLAYER_SUB_TYPE_AUDIO_BOOK = 0x00000001, // Audio Book. 909 AVRC_MEDIA_PLAYER_SUB_TYPE_PODCAST = 0x00000002, // Pod cast. 910 AVRC_MEDIA_PLAYER_SUB_TYPE_RESERVED = 0x00000004 // Reserved for future use. 911 }; 912 913 /** 914 * @brief This enumeration declares the values of character set. 915 * 916 * @since 6 917 */ 918 enum AvrcMediaCharacterSet : uint16_t { 919 AVRC_MEDIA_CHARACTER_SET_UTF8 = 0x006A, // The value of UTF-8 as defined in IANA character set document. 920 }; 921 922 /** 923 * @brief This enumeration declares the values of the folder type. 924 * @see Audio/Video Remote Control 1.6.2 Section 6.10.2.2 Folder item - Folder Type 925 * 926 * @since 6 927 */ 928 enum AvrcMediaFolderType : uint8_t { 929 AVRC_MEDIA_FOLDER_TYPE_MIXED = 0x00, // Mixed. 930 AVRC_MEDIA_FOLDER_TYPE_TITLES, // Titles. 931 AVRC_MEDIA_FOLDER_TYPE_ALBUMS, // Albums. 932 AVRC_MEDIA_FOLDER_TYPE_ARTISTS, // Artists. 933 AVRC_MEDIA_FOLDER_TYPE_GENRES, // Genres. 934 AVRC_MEDIA_FOLDER_TYPE_PLAY_LISTS, // Play lists. 935 AVRC_MEDIA_FOLDER_TYPE_YEARS, // Years. 936 AVRC_MEDIA_FOLDER_TYPE_RESERVED, // Reserved for future use. 937 }; 938 939 /** 940 * @brief This enumeration declares the values of the is playable. 941 * @see Audio/Video Remote Control 1.6.2 Section 6.10.2.2 Folder item - Is Playable 942 * 943 * @since 6 944 */ 945 enum AvrcMediaFolderPlayable : uint8_t { 946 // The folder cannot be played. This means that the folder UID shall not be passed to either the PlayItem or 947 // AddToNowPlaying commands. 948 AVRC_MEDIA_FOLDER_PLAYABLE_NO = 0x00, 949 // The folder can be played. The folder UID may be passed to the PlayItem and AddToNowPlaying(if supported) 950 // commands. The media player behavior on playing a folder should be same as on the local user interface. 951 AVRC_MEDIA_FOLDER_PLAYABLE_YES, 952 AVRC_MEDIA_FOLDER_PLAYABLE_RESERVED, // Reserved for future use. 953 }; 954 955 /** 956 * @brief This enumeration declares the values of the media type. 957 * @see Audio/Video Remote Control 1.6.2 Section 6.10.2.3 Media element item - Media Type 958 * 959 * @since 6 960 */ 961 enum AvrcMediaElementType : uint8_t { 962 AVRC_MEDIA_ELEMENT_TYPE_AUDIO = 0x00, // Audio. 963 AVRC_MEDIA_ELEMENT_TYPE_VIDEO, // Video. 964 AVRC_MEDIA_ELEMENT_TYPE_RESERVED, // Reserved for future use. 965 }; 966 967 /** 968 * @brief This enumeration declares the values of the media type. 969 * 970 * @details An Absolute Volume is represented in one octet. The top bit (bit 7) is reserved for future addition (RFA). 971 * The volume is specified as a percentage of the maximum. The value 0x0 corresponds to 0%. The value 0x7F corresponds 972 * to 100%. Scaling should be applied to achieve values between these two. The existence of this scale does not impose 973 * any restriction on the granularity of the volume control scale on the TG. 974 * @see Audio/Video Remote Control 1.6.2 Section 6.13.1 Absolute Volume 975 * 976 * @since 6 977 */ 978 enum AvrcAbsoluteVolume : uint8_t { 979 AVRC_ABSOLUTE_VOLUME_PERCENTAGE_0 = 0x00, // 0% 980 AVRC_ABSOLUTE_VOLUME_PERCENTAGE_100 = 0x7F, // 100% 981 AVRC_ABSOLUTE_VOLUME_INVALID = 0x80, 982 }; 983 984 /** 985 * @brief This enumeration declares the values of the "EVENT ID". 986 * @see Audio/Video Remote Control 1.6.2 Section 28 Appendix H: list of defined notification events. 987 * 988 * @since 6 989 */ 990 enum AvrcEventId : uint8_t { 991 AVRC_EVENT_ID_PLAYBACK_STATUS_CHANGED = 0x01, // Change in playback status of the current track. 992 AVRC_EVENT_ID_TRACK_CHANGED, // Change of current track. 993 AVRC_EVENT_ID_TRACK_REACHED_END, // Reached end of a track. 994 AVRC_EVENT_ID_TRACK_REACHED_START, // Reached start of a track. 995 // Change in playback position. Returned after the specified playback notification change notification interval. 996 AVRC_EVENT_ID_PLAYBACK_POS_CHANGED, 997 AVRC_EVENT_ID_BATT_STATUS_CHANGED, // Change in battery status. 998 AVRC_EVENT_ID_SYSTEM_STATUS_CHANGED, // Change in system status. 999 AVRC_EVENT_ID_PLAYER_APPLICATION_SETTING_CHANGED, // Change in player application setting. 1000 AVRC_EVENT_ID_NOW_PLAYING_CONTENT_CHANGED, // The content of the Now Playing list has changed. 1001 AVRC_EVENT_ID_AVAILABLE_PLAYERS_CHANGED, // The available players have changed 1002 AVRC_EVENT_ID_ADDRESSED_PLAYER_CHANGED, // The Addressed Player has been changed. 1003 AVRC_EVENT_ID_UIDS_CHANGED, // The UIDs have changed. 1004 AVRC_EVENT_ID_VOLUME_CHANGED, // The volume has been changed locally on the TG. 1005 AVRC_EVENT_ID_RESERVED = 0x0E, 1006 }; 1007 1008 /** 1009 * @bUnique identifier to identify an element on TG 1010 * 1011 * @since 6 1012 */ 1013 enum AvrcElementIdentifier : uint64_t { 1014 AVRC_ELEMENT_ATTRIBUTES_IDENTIFIER_PLAYING = 1015 0x0000000000000000, // attribute information for the element which is current track in the TG device. 1016 AVRC_ELEMENT_ATTRIBUTES_IDENTIFIER_RESERVED = 1017 0x0000000000000001, // All other values other than 0x0 are currently reserved. 1018 }; 1019 1020 /** 1021 * @brief This enumeration declares the allowed values for GetCapabilities Command. 1022 * 1023 * @since 6 1024 */ 1025 enum AvrcCapabilityId : uint8_t { 1026 AVRC_CAPABILITY_COMPANYID = 0x02, // The list of CompanyID supported by TG. 1027 AVRC_CAPABILITY_EVENTID = 0x03, // EventIDs defined in this specification to be supported by TG. 1028 }; 1029 1030 /** 1031 * @brief This enumeration declares the values of playback interval in seconds. 1032 * 1033 * @since 6 1034 */ 1035 enum AvrcPlaybackInterval : uint8_t { 1036 AVRC_PLAYBACK_INTERVAL_1_SEC = 0x01, 1037 AVRC_PLAYBACK_INTERVAL_5_SEC = 0x05, 1038 AVRC_PLAYBACK_INTERVAL_10_SEC = 0x0A, 1039 AVRC_PLAYBACK_INTERVAL_15_SEC = 0x0F, 1040 AVRC_PLAYBACK_INTERVAL_20_SEC = 0x14, 1041 AVRC_PLAYBACK_INTERVAL_25_SEC = 0x19, 1042 AVRC_PLAYBACK_INTERVAL_30_SEC = 0x1E, 1043 }; 1044 1045 /** 1046 * @brief This enumeration declares the error / status code of the vendor dependent command frame and the browsing 1047 * command frame. 1048 * 1049 * @since 6 1050 */ 1051 enum AvrcEsCode : uint8_t { 1052 AVRC_ES_CODE_INVALID = 0xFF, // Reserved. 1053 // Invalid command, sent if TG received a PDU that it did not understand. 1054 AVRC_ES_CODE_INVALID_COMMAND = 0x00, 1055 // Invalid parameter, sent if the TG received a PDU with a parameter ID that it did not understand. This error code 1056 // applies to the following identifiers : 1057 // PDU ID. 1058 // Capability ID. 1059 // Event ID. 1060 // Player Application Setting Attribute ID. 1061 // Player Application Setting Value ID. 1062 // Element Attribute ID. 1063 AVRC_ES_CODE_INVALID_PARAMETER = 0x01, 1064 // Parameter content error.Sent if the parameter ID is understood, but content is wrong or corrupted. 1065 AVRC_ES_CODE_PARAMETER_CONTENT_ERROR = 0x02, 1066 // Internal Error - sent if there are error conditions not covered by a more specific error code. 1067 AVRC_ES_CODE_INTERNAL_ERROR = 0x03, 1068 // Operation completed without error.This is the status that should be returned if the operation was successful. 1069 AVRC_ES_CODE_NO_ERROR = 0x04, 1070 // UID Changed - The UIDs on the device have changed. 1071 AVRC_ES_CODE_UID_CHANGED = 0x05, 1072 // Reserved. 1073 AVRC_ES_CODE_RESERVED = 0x06, 1074 // Invalid Direction - The Direction parameter is invalid. 1075 AVRC_ES_CODE_INVALID_DIRECTION = 0x07, 1076 // Not a Directory - The UID provided does not refer to a folder item. 1077 AVRC_ES_CODE_NOT_A_DIRECTORY = 0x08, 1078 // Does Not Exist - The UID provided does not refer to any currently valid item. 1079 AVRC_ES_CODE_DOES_NOT_EXIST = 0x09, 1080 // Invalid Scope - The scope parameter is invalid. 1081 AVRC_ES_CODE_INVALID_SCOPE = 0x0A, 1082 // Range Out of Bounds - The start of range provided is not valid. 1083 AVRC_ES_CODE_RANGE_OUT_OF_BOUNDS = 0x0B, 1084 // Folder Item is not playable - The UID provided refers to a folder item which cannot be handled by this media 1085 // player. 1086 AVRC_ES_CODE_FOLDER_ITEM_IS_NOT_PLAYABLE = 0x0C, 1087 // Media in Use - The media is not able to be used for this operation at this time. 1088 AVRC_ES_CODE_MEDIA_IN_USE = 0x0D, 1089 // Now Playing List Full - No more items can be added to the Now Playing List. 1090 AVRC_ES_CODE_NOW_PLAYING_LIST_FULL = 0x0E, 1091 // Search Not Supported - The Browsed Media Player does not support search. 1092 AVRC_ES_CODE_SEARCH_NOT_SUPPORTED = 0x0F, 1093 // Search in Progress - A search operation is already in progress. 1094 AVRC_ES_CODE_SEARCH_IN_PROGRESS = 0x10, 1095 // Invalid Player Id - The specified Player Id does not refer to a valid player. 1096 AVRC_ES_CODE_INVALID_PLAYER_ID = 0x11, 1097 // Player Not Browsable - The Player Id supplied refers to a Media Player which does not support browsing. 1098 AVRC_ES_CODE_PLAYER_NOT_BROWSABLE = 0x12, 1099 // Player Not Addressed.The Player Id supplied refers to a player which is not currently addressed, and the command 1100 // is not able to be performed if the player is not set as addressed. 1101 AVRC_ES_CODE_PLAYER_NOT_ADDRESSED = 0x13, 1102 // No valid Search Results - The Search result list does not contain valid entries, e.g.after being invalidated due 1103 // to change of browsed player. 1104 AVRC_ES_CODE_NO_VALID_SEARCH_RESULTS = 0x14, 1105 // No available players. 1106 AVRC_ES_CODE_NO_AVAILABLE_PLAYERS = 0x15, 1107 // Addressed Player Changed. 1108 AVRC_ES_CODE_ADDRESSED_PLAYER_CHANGED = 0x16, 1109 1110 // User custom error code. 1111 AVRC_ES_CODE_NOTIFICATION_CHANGED = 0xFF, 1112 }; 1113 1114 /********************************************* 1115 * 1116 * HFP Definitions 1117 * 1118 *********************************************/ 1119 /** 1120 * @brief sco connect state define 1121 * use to notify sco connection observers. 1122 */ 1123 enum class HfpScoConnectState : int { SCO_DISCONNECTED = 3, SCO_CONNECTING, SCO_DISCONNECTING, SCO_CONNECTED }; 1124 1125 /********************************************* 1126 * 1127 * A2DP Definitions 1128 * 1129 *********************************************/ 1130 1131 /** 1132 * @brief a2dp optional codec support state define 1133 * 1134 * @since 6 1135 */ 1136 enum A2DP_OPTIONAL_SUPPORT_STATE { 1137 A2DP_OPTIONAL_NOT_SUPPORT, 1138 A2DP_OPTIONAL_SUPPORT, 1139 A2DP_OPTIONAL_SUPPORT_UNKNOWN, 1140 }; 1141 1142 /** 1143 * @brief a2dp optional codec enable state define 1144 * 1145 * @since 6 1146 */ 1147 enum A2DP_OPTIONAL_ENABLE_STATE { A2DP_OPTIONAL_DISABLE, A2DP_OPTIONAL_ENABLE, A2DP_OPTIONAL_ENABLE_UNKNOWN }; 1148 1149 /** 1150 * @brief a2dp playing state define 1151 * 1152 * @since 6 1153 */ 1154 enum A2DP_PLAYING_STATE { A2DP_NOT_PLAYING, A2DP_IS_PLAYING }; 1155 1156 /** 1157 * @brief A2dp codec type enum. 1158 * 1159 * @since 6 1160 1161 */ 1162 enum A2dpUserCodecType : uint8_t { 1163 A2DP_CODEC_TYPE_SBC_USER = 0, 1164 A2DP_CODEC_TYPE_MPEG1_USER = 0x01, 1165 A2DP_CODEC_TYPE_AAC_USER = 0x01 << 1, 1166 A2DP_CODEC_TYPE_ATRAC_USER = 0x01 << 2, 1167 A2DP_CODEC_TYPE_NONA2DP_USER = 0xFF 1168 }; 1169 1170 /** 1171 * @brief A2dp codec priority enum. 1172 * 1173 * @since 6 1174 */ 1175 enum A2dpUserCodecPriority : uint32_t { 1176 A2DP_CODEC_PRIORITY_DISABLED_USER = 0, 1177 A2DP_CODEC_PRIORITY_DEFAULT_USER, 1178 A2DP_CODEC_PRIORITY_HIGHEST_USER = 1000 * 1000, 1179 }; 1180 1181 /** 1182 * @brief A2dp codec sample rate enum. 1183 * 1184 * @since 6 1185 */ 1186 enum A2dpUserCodecSampleRate : uint32_t { 1187 A2DP_SAMPLE_RATE_NONE_USER = 0x0, 1188 A2DP_SBC_SAMPLE_RATE_48000_USER = 0x1 << 4, /* octet0 b4 */ 1189 A2DP_SBC_SAMPLE_RATE_44100_USER = 0x1 << 5, /* octet0 b5 */ 1190 A2DP_SBC_SAMPLE_RATE_32000_USER = 0x1 << 6, /* octet0 b6 */ 1191 A2DP_SBC_SAMPLE_RATE_16000_USER = 0x1 << 7, /* octet0 b7 */ 1192 A2DP_SBC_SAMPLE_RATE_MSK_USER = 0xF0, 1193 A2DP_AAC_SAMPLE_RATE_OCTET1_44100_USER = 0x01, 1194 A2DP_AAC_SAMPLE_RATE_OCTET1_32000_USER = 0x01 << 1, 1195 A2DP_AAC_SAMPLE_RATE_OCTET1_24000_USER = 0x01 << 2, 1196 A2DP_AAC_SAMPLE_RATE_OCTET1_22050_USER = 0x01 << 3, 1197 A2DP_AAC_SAMPLE_RATE_OCTET1_16000_USER = 0x01 << 4, 1198 A2DP_AAC_SAMPLE_RATE_OCTET1_12000_USER = 0x01 << 5, 1199 A2DP_AAC_SAMPLE_RATE_OCTET1_11025_USER = 0x01 << 6, 1200 A2DP_AAC_SAMPLE_RATE_OCTET1_8000_USER = 0x01 << 7, 1201 A2DP_AAC_SAMPLE_RATE_OCTET1_MSK_USER = 0xFF, 1202 A2DP_AAC_SAMPLE_RATE_OCTET2_96000_USER = 0x01 << 12, 1203 A2DP_AAC_SAMPLE_RATE_OCTET2_88200_USER = 0x01 << 13, 1204 A2DP_AAC_SAMPLE_RATE_OCTET2_64000_USER = 0x01 << 14, 1205 A2DP_AAC_SAMPLE_RATE_OCTET2_48000_USER = 0x01 << 15, 1206 A2DP_AAC_SAMPLE_RATE_OCTET2_MSK_USER = 0xF0, 1207 }; 1208 1209 /** 1210 * @brief A2dp codec channel mode enum. 1211 * 1212 * @since 6 1213 */ 1214 enum A2dpUserCodecChannelMode : uint8_t { 1215 A2DP_CHANNEL_MODE_NONE_USER = 0x0, 1216 A2DP_SBC_CHANNEL_MODE_JOINT_STEREO_USER = 0x1, /* octet0 b0 */ 1217 A2DP_SBC_CHANNEL_MODE_STEREO_USER = 0x1 << 1, /* octet0 b1 */ 1218 A2DP_SBC_CHANNEL_MODE_DUAL_USER = 0x1 << 2, /* octet0 b2 */ 1219 A2DP_SBC_CHANNEL_MODE_MONO_USER = 0x1 << 3, /* octet0 b3 */ 1220 A2DP_SBC_CHANNEL_MODE_MSK_USER = 0x0F, 1221 A2DP_AAC_CHANNEL_MODE_OCTET2_DOUBLE_USER = 0x01 << 2, /* octet2 b2 */ 1222 A2DP_AAC_CHANNEL_MODE_OCTET2_SINGLE_USER = 0x01 << 3, /* octet2 b3 */ 1223 A2DP_AAC_CHANNEL_MODE_OCTET2_MSK_USER = 0x0C, 1224 }; 1225 1226 /** 1227 * @brief A2dp codec bits per sample enum. 1228 * 1229 * @since 6 1230 */ 1231 enum A2dpUserCodecBitsPerSample : uint8_t { 1232 A2DP_SAMPLE_BITS_NONE_USER = 0x0, 1233 A2DP_SAMPLE_BITS_16_USER = 0x1 << 0, 1234 A2DP_SAMPLE_BITS_24_USER = 0x1 << 1, 1235 A2DP_SAMPLE_BITS_32_USER = 0x1 << 2, 1236 A2DP_SAMPLE_BITS_MSK_USER = 0x06, 1237 A2DP_AAC_SAMPLE_BITS_OCTET3_BIT0_USER = 0x01, /* octet3 b0 */ 1238 A2DP_AAC_SAMPLE_BITS_OCTET3_BIT1_USER = 0x01 << 1, /* octet3 b1 */ 1239 A2DP_AAC_SAMPLE_BITS_OCTET3_BIT2_USER = 0x01 << 2, /* octet3 b2 */ 1240 A2DP_AAC_SAMPLE_BITS_OCTET3_BIT3_USER = 0x01 << 3, /* octet3 b3 */ 1241 A2DP_AAC_SAMPLE_BITS_OCTET3_BIT4_USER = 0x01 << 4, /* octet3 b4 */ 1242 A2DP_AAC_SAMPLE_BITS_OCTET3_BIT5_USER = 0x01 << 5, /* octet3 b5 */ 1243 A2DP_AAC_SAMPLE_BITS_OCTET3_BIT6_USER = 0x01 << 6, /* octet3 b6 */ 1244 A2DP_AAC_SAMPLE_BITS_OCTET4_BIT0_USER = 0x01, /* octet4 b0 */ 1245 A2DP_AAC_SAMPLE_BITS_OCTET4_BIT1_USER = 0x01 << 1, /* octet4 b1 */ 1246 A2DP_AAC_SAMPLE_BITS_OCTET4_BIT2_USER = 0x01 << 2, /* octet4 b2 */ 1247 A2DP_AAC_SAMPLE_BITS_OCTET4_BIT3_USER = 0x01 << 3, /* octet4 b3 */ 1248 A2DP_AAC_SAMPLE_BITS_OCTET4_BIT4_USER = 0x01 << 4, /* octet4 b4 */ 1249 A2DP_AAC_SAMPLE_BITS_OCTET4_BIT5_USER = 0x01 << 5, /* octet4 b5 */ 1250 A2DP_AAC_SAMPLE_BITS_OCTET4_BIT6_USER = 0x01 << 6, /* octet4 b6 */ 1251 A2DP_AAC_SAMPLE_BITS_OCTET4_BIT7_USER = 0x01 << 7, /* octet4 b6 */ 1252 A2DP_AAC_SAMPLE_BITS_OCTET5_BIT0_USER = 0x01, /* octet5 b0 */ 1253 A2DP_AAC_SAMPLE_BITS_OCTET5_BIT1_USER = 0x01 << 1, /* octet5 b1 */ 1254 A2DP_AAC_SAMPLE_BITS_OCTET5_BIT2_USER = 0x01 << 2, /* octet5 b2 */ 1255 A2DP_AAC_SAMPLE_BITS_OCTET5_BIT3_USER = 0x01 << 3, /* octet5 b3 */ 1256 A2DP_AAC_SAMPLE_BITS_OCTET5_BIT4_USER = 0x01 << 4, /* octet5 b4 */ 1257 A2DP_AAC_SAMPLE_BITS_OCTET5_BIT5_USER = 0x01 << 5, /* octet5 b5 */ 1258 A2DP_AAC_SAMPLE_BITS_OCTET5_BIT6_USER = 0x01 << 6, /* octet5 b6 */ 1259 A2DP_AAC_SAMPLE_BITS_OCTET5_BIT7_USER = 0x01 << 7, /* octet5 b6 */ 1260 }; 1261 1262 /** 1263 * @brief Pbap action Type. 1264 * 1265 * @since 6 1266 */ 1267 enum PbapActionType : uint16_t { 1268 PBAP_ACTION_PULLPHONEBOOKSIZE, // pull phonebooksize 1269 PBAP_ACTION_PULLPHONEBOOK, // pull phonebook 1270 PBAP_ACTION_SETPHONEBOOK, // set phonebook 1271 PBAP_ACTION_PULLVCARDLISTINGSIZE, // pull vcard listing size 1272 PBAP_ACTION_PULLVCARDLISTING, // pull vcard listing 1273 PBAP_ACTION_PULLVCARDENTRY, // pull vcard entry 1274 PBAP_ACTION_ABORT, // abort downloading 1275 }; 1276 1277 // PBAP_PHONEBOOK_NAME 1278 #define PBAP_PHONEBOOK_PB u"/telecom/pb.vcf" 1279 #define PBAP_PHONEBOOK_ICH u"/telecom/ich.vcf" 1280 #define PBAP_PHONEBOOK_OCH u"/telecom/och.vcf" 1281 #define PBAP_PHONEBOOK_MCH u"/telecom/mch.vcf" 1282 #define PBAP_PHONEBOOK_CCH u"/telecom/cch.vcf" 1283 #define PBAP_PHONEBOOK_SPD u"/telecom/spd.vcf" 1284 #define PBAP_PHONEBOOK_FAV u"/telecom/fav.vcf" 1285 #define PBAP_PHONEBOOK_PB1 u"/SIM1/telecom/pb.vcf" 1286 #define PBAP_PHONEBOOK_ICH1 u"/SIM1/telecom/ich.vcf" 1287 #define PBAP_PHONEBOOK_OCH1 u"/SIM1/telecom/och.vcf" 1288 #define PBAP_PHONEBOOK_MCH1 u"/SIM1/telecom/mch.vcf" 1289 #define PBAP_PHONEBOOK_CCH1 u"/SIM1/telecom/cch.vcf" 1290 1291 enum PbapOrderType : uint8_t { 1292 PBAP_ORDER_INDEXED = 0x00, // indexed order 1293 PBAP_ORDER_ALPHANUMERIC = 0x01, // alphabetical order 1294 PBAP_ORDER_PHONETIC = 0x02, // phonetic order 1295 }; 1296 1297 enum PbapFormatType : uint8_t { 1298 PBAP_FORMAT_VCARD2_1 = 0x00, // vCard Version 1299 PBAP_FORMAT_VCARD3_0 = 0x01, // vCard Version 1300 }; 1301 1302 // 5.1.4.1 PropertySelector {PropertyMask (64-bit value)} 1303 #define PBAP_PROPERTY_VERSION (1ULL << 0) // vCard Version 1304 #define PBAP_PROPERTY_FN (1ULL << 1) // Formatted Name 1305 #define PBAP_PROPERTY_N (1ULL << 2) // Structured Presentation of Name 1306 #define PBAP_PROPERTY_PHOTO (1ULL << 3) // Associated Image or Photo 1307 #define PBAP_PROPERTY_BDAY (1ULL << 4) // Birthday 1308 #define PBAP_PROPERTY_ADR (1ULL << 5) // Delivery Address 1309 #define PBAP_PROPERTY_LABEL (1ULL << 6) // Delivery 1310 #define PBAP_PROPERTY_TEL (1ULL << 7) // Telephone Number 1311 #define PBAP_PROPERTY_EMAIL (1ULL << 8) // Electronic Mail Address 1312 #define PBAP_PROPERTY_MAILER (1ULL << 9) // Electronic Mail 1313 #define PBAP_PROPERTY_TZ (1ULL << 10) // Time Zone 1314 #define PBAP_PROPERTY_GEO (1ULL << 11) // Geographic Position 1315 #define PBAP_PROPERTY_TITLE (1ULL << 12) // Job 1316 #define PBAP_PROPERTY_ROLE (1ULL << 13) // Role within the Organization 1317 #define PBAP_PROPERTY_LOGO (1ULL << 14) // Organization Logo 1318 #define PBAP_PROPERTY_AGENT (1ULL << 15) // vCard of Person Representing 1319 #define PBAP_PROPERTY_ORG (1ULL << 16) // Name of Organization 1320 #define PBAP_PROPERTY_NOTE (1ULL << 17) // Comments 1321 #define PBAP_PROPERTY_REV (1ULL << 18) // Revision 1322 #define PBAP_PROPERTY_SOUND (1ULL << 19) // Pronunciation of Name 1323 #define PBAP_PROPERTY_URL (1ULL << 20) // Uniform Resource Locator 1324 #define PBAP_PROPERTY_UID (1ULL << 21) // Unique ID 1325 #define PBAP_PROPERTY_KEY (1ULL << 22) // Public Encryption Key 1326 #define PBAP_PROPERTY_NICKNAME (1ULL << 23) // Nickname 1327 #define PBAP_PROPERTY_CATEGORIES (1ULL << 24) // Categories 1328 #define PBAP_PROPERTY_PROID (1ULL << 25) // Product ID 1329 #define PBAP_PROPERTY_CLASS (1ULL << 26) // Class information 1330 #define PBAP_PROPERTY_SORT_STRING (1ULL << 27) // String used for sorting operations 1331 #define PBAP_PROPERTY_X_IRMC_CALL_DATETIME (1ULL << 28) // Time stamp 1332 #define PBAP_PROPERTY_X_BT_SPEEDDIALKEY (1ULL << 29) // Speed-dial shortcut 1333 #define PBAP_PROPERTY_X_BT_UCI (1ULL << 30) // Uniform Caller Identifier 1334 #define PBAP_PROPERTY_X_BT_UID (1ULL << 31) // Bluetooth Contact Unique Identifier 1335 #define PBAP_PROPERTY_PROPRIENTARY_FILTER (1ULL << 39) // Bluetooth Proprientary 1336 1337 enum PbapSelectorOperatorType : uint8_t { 1338 PBAP_SELECTOR_OPERATOR_OR = 0x00, // SelectorOperator Or 1339 PBAP_SELECTOR_OPERATOR_AND = 0x01, // SelectorOperator And 1340 }; 1341 1342 enum PbapSearchPropertyType : uint8_t { 1343 PBAP_SEARCH_PROPERTY_NAME = 0x00, // name 1344 PBAP_SEARCH_PROPERTY_NUMBER = 0x01, // number 1345 PBAP_SEARCH_PROPERTY_SOUND = 0x02, // sound 1346 }; 1347 1348 const uint8_t PBAP_FLAG_GO_TO_ROOT = 0x02; // go back to root 1349 const uint8_t PBAP_FLAG_GO_DOWN = 0x02; // go down 1350 const uint8_t PBAP_FLAG_GO_UP = 0x03; // go up 1351 1352 enum PbapResponseCode : uint8_t { 1353 PBAP_CONTINUE = 0x90, // 100 Continue 1354 PBAP_SUCCESS = 0xA0, // 200 OK, Success 1355 PBAP_CREATED = 0xA1, // 201 Created 1356 PBAP_PBAP_ACCEPTED = 0xA2, // 202 Accepted 1357 PBAP_NON_AUTH = 0xA3, // 203 Non-Authoritative Information 1358 PBAP_NO_CONTENT = 0xA4, // 204 No Content 1359 PBAP_RESET_CONTENT = 0xA5, // 205 Reset Content 1360 PBAP_PARTIAL_CONTENT = 0xA6, // 206 Partial Content 1361 PBAP_MULTIPLE_CHOICES = 0xB0, // 300 Multiple Choices 1362 PBAP_MOVED_PERMANENTLY = 0xB1, // 301 Moved Permanently 1363 PBAP_MOVED_TEMPORARILY = 0xB2, // 302 Moved temporarily 1364 PBAP_SEE_OTHER = 0xB3, // 303 See Other 1365 PBAP_NOT_MODIFIED = 0xB4, // 304 Not modified 1366 PBAP_USE_PROXY = 0xB5, // 305 Use Proxy 1367 PBAP_BAD_REQUEST = 0xC0, // 400 Bad Request - server couldn’t understand request 1368 PBAP_UNAUTHORIZED = 0xC1, // 401 Unauthorized 1369 PBAP_PAYMENT_REQUIRED = 0xC2, // 402 Payment required 1370 PBAP_FORBIDDEN = 0xC3, // 403 Forbidden - operation is understood but refused 1371 PBAP_NOT_FOUND = 0xC4, // 404 Not Found 1372 PBAP_METHOD_NOT_ALLOWED = 0xC5, // 405 Method not allowed 1373 PBAP_NOT_ACCEPTABLE = 0xC6, // 406 Not Acceptable 1374 PBAP_PROXY_AUTH_REQUIRED = 0xC7, // 407 Proxy Authentication required 1375 PBAP_REQUEST_TIME_OUT = 0xC8, // 408 Request Time Out 1376 PBAP_CONFLICT = 0xC9, // 409 Conflict 1377 PBAP_GONE = 0xCA, // 410 Gone 1378 PBAP_LENGTH_REQUIRED = 0xCB, // 411 Length Required 1379 PBAP_PRECONDITION_FAILED = 0xCC, // 412 Precondition failed 1380 PBAP_REQUESTED_ENTITY_TOO_LARGE = 0xCD, // 413 Requested entity too large 1381 PBAP_REQUEST_URL_TOO_LARGE = 0xCE, // 414 Request URL too large 1382 PBAP_UNSUPPORTED_MEDIA_TYPE = 0xCF, // 415 Unsupported media type 1383 PBAP_INTERNAL_SERVER_ERROR = 0xD0, // 500 Internal Server Error 1384 PBAP_NOT_IMPLEMENTED = 0xD1, // 501 Not Implemented 1385 PBAP_BAD_GATEWAY = 0xD2, // 502 Bad Gateway 1386 PBAP_SERVICE_UNAVAILABLE = 0xD3, // 503 Service Unavailable 1387 PBAP_GATEWAY_TIMEOUT = 0xD4, // 504 Gateway Timeout 1388 PBAP_HTTP_VERSION_NOT_SUPPORTED = 0xD5, // 505 HTTP version not supported 1389 PBAP_DATABASE_FULL = 0xE0, // Database Full 1390 PBAP_DATABASE_LOCKED = 0xE1 // Database Locked 1391 }; 1392 1393 #ifdef BLUETOOTH_EXPORT 1394 #define BLUETOOTH_API __attribute__((visibility("default"))) 1395 #else 1396 #define BLUETOOTH_API 1397 #endif 1398 } // namespace bluetooth 1399 } // namespace OHOS 1400 #endif // BT_DEF_H 1401