/* * Copyright (C) 2015 BlueKitchen GmbH * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the copyright holders nor the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * 4. Any redistribution, use, or modification is done solely for * personal benefit and not for any commercial purpose or for * monetary gain. * * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * Please inquire about commercial licensing options at * contact@bluekitchen-gmbh.com * *//* ... *//* * bluetooth.h * * Numbers defined or derived from the official Bluetooth specification *//* ... */#ifndefBLUETOOTH_H#defineBLUETOOTH_H#include<stdint.h>/** * @brief hci connection handle type *//* ... */typedefuint16_thci_con_handle_t;/** * @brief Length of a bluetooth device address. *//* ... */#defineBD_ADDR_LEN6/** * @brief Bluetooth address *//* ... */typedefuint8_tbd_addr_t[BD_ADDR_LEN];/** * Address types *//* ... */typedefenum{// Public Device AddressBD_ADDR_TYPE_LE_PUBLIC=0,// Random Device AddressBD_ADDR_TYPE_LE_RANDOM=1,// Public Identity Address (Corresponds to Resolved Private Address)BD_ADDR_TYPE_LE_PUBLIC_IDENTITY=2,// Random (static) Identity Address (Corresponds to Resolved Private Address)BD_ADDR_TYPE_LE_RANDOM_IDENTITY=3,// internal BTstack addr types for Classic connectionsBD_ADDR_TYPE_SCO=0xfc,BD_ADDR_TYPE_ACL=0xfd,BD_ADDR_TYPE_UNKNOWN=0xfe,// also used as 'invalid'...}bd_addr_type_t;/** * Pin Codde *//* ... */#definePIN_CODE_LEN16/** * Link types for BR/EDR Connections *//* ... */typedefenum{HCI_LINK_TYPE_SCO=0,HCI_LINK_TYPE_ACL=1,HCI_LINK_TYPE_ESCO=2,...}hci_link_type_t;/** * @brief link key *//* ... */#defineLINK_KEY_LEN16#defineLINK_KEY_STR_LEN(LINK_KEY_LEN*2)typedefuint8_tlink_key_t[LINK_KEY_LEN];/** * @brief link key type *//* ... */typedefenum{INVALID_LINK_KEY=0xffff,COMBINATION_KEY=0,// standard pairingLOCAL_UNIT_KEY,// ?REMOTE_UNIT_KEY,// ?DEBUG_COMBINATION_KEY,// SSP with debugUNAUTHENTICATED_COMBINATION_KEY_GENERATED_FROM_P192,// SSP Simple PairingAUTHENTICATED_COMBINATION_KEY_GENERATED_FROM_P192,// SSP Passkey, Number confirm, OOBCHANGED_COMBINATION_KEY,// Link key changed using Change Connection Lnk KeyUNAUTHENTICATED_COMBINATION_KEY_GENERATED_FROM_P256,// SSP Simpe PairingAUTHENTICATED_COMBINATION_KEY_GENERATED_FROM_P256,// SSP Passkey, Number confirm, OOB...}link_key_type_t;/** * LE Privacy 1.2 *//* ... */typedefenum{LE_PRIVACY_MODE_NETWORK=0,LE_PRIVACY_MODE_DEVICE=1,...}le_privacy_mode_t;/** * @brief Extended Inquiry Response *//* ... */#defineEXTENDED_INQUIRY_RESPONSE_DATA_LEN240/** * @brief Inquiry modes *//* ... */typedefenum{INQUIRY_MODE_STANDARD=0,INQUIRY_MODE_RSSI,INQUIRY_MODE_RSSI_AND_EIR,...}inquiry_mode_t;/** * @brief Page Scan Types *//* ... */typedefenum{PAGE_SCAN_MODE_STANDARD=0,PAGE_SCAN_MODE_INTERLACED,...}page_scan_type_t;/** * @brief Inquiry Scan Types *//* ... */typedefenum{INQUIRY_SCAN_MODE_STANDARD=0,INQUIRY_SCAN_MODE_INTERLACED,...}inquiry_scan_type_t;/** * Link Supervision Timeout Default, 0x7d00 * 0.625ms = 20s *//* ... */#defineHCI_LINK_SUPERVISION_TIMEOUT_DEFAULT0x7D00/** * Service Type used for QoS Setup and Flow Specification *//* ... */typedefenum{HCI_SERVICE_TYPE_NO_TRAFFIC=0,HCI_SERVICE_TYPE_BEST_EFFORT,HCI_SERVICE_TYPE_GUARANTEED,HCI_SERVICE_TYPE_INVALID,...}hci_service_type_t;/** * HCI Transport *//* ... *//** * packet types - used in BTstack and over the H4 UART interface *//* ... */#defineHCI_COMMAND_DATA_PACKET0x01#defineHCI_ACL_DATA_PACKET0x02#defineHCI_SCO_DATA_PACKET0x03#defineHCI_EVENT_PACKET0x04#defineHCI_ISO_DATA_PACKET0x055 defines/** * Other assigned numbers, Assigned_Numbers_Host Controller Interface.pdf *//* ... */typedefenum{HCI_AUDIO_CODING_FORMAT_U_LAW_LOG=0x00,HCI_AUDIO_CODING_FORMAT_A_LAW_LOG,HCI_AUDIO_CODING_FORMAT_CVSD,HCI_AUDIO_CODING_FORMAT_TRANSPARENT,// Indicates that the controller does not do any transcoding or resampling. This is also used for test mode.HCI_AUDIO_CODING_FORMAT_LINEAR_PCM,HCI_AUDIO_CODING_FORMAT_MSBC,HCI_AUDIO_CODING_FORMAT_LC3,HCI_AUDIO_CODING_FORMAT_G_729A,HCI_AUDIO_CODING_FORMAT_RFU,HCI_AUDIO_CODING_FORMAT_VENDOR_SPECIFIC=0xFF...}hci_audio_coding_format_t;/** * HCI Layer *//* ... *///// Error Codes rfom Bluetooth Core Specification///* ENUM_START: BLUETOOTH_ERROR_CODE */#defineERROR_CODE_SUCCESS0x00#defineERROR_CODE_UNKNOWN_HCI_COMMAND0x01#defineERROR_CODE_UNKNOWN_CONNECTION_IDENTIFIER0x02#defineERROR_CODE_HARDWARE_FAILURE0x03#defineERROR_CODE_PAGE_TIMEOUT0x04#defineERROR_CODE_AUTHENTICATION_FAILURE0x05#defineERROR_CODE_PIN_OR_KEY_MISSING0x06#defineERROR_CODE_MEMORY_CAPACITY_EXCEEDED0x07#defineERROR_CODE_CONNECTION_TIMEOUT0x08#defineERROR_CODE_CONNECTION_LIMIT_EXCEEDED0x09#defineERROR_CODE_SYNCHRONOUS_CONNECTION_LIMIT_TO_A_DEVICE_EXCEEDED0x0A#defineERROR_CODE_ACL_CONNECTION_ALREADY_EXISTS0x0B#defineERROR_CODE_COMMAND_DISALLOWED0x0C#defineERROR_CODE_CONNECTION_REJECTED_DUE_TO_LIMITED_RESOURCES0x0D#defineERROR_CODE_CONNECTION_REJECTED_DUE_TO_SECURITY_REASONS0x0E#defineERROR_CODE_CONNECTION_REJECTED_DUE_TO_UNACCEPTABLE_BD_ADDR0x0F#defineERROR_CODE_CONNECTION_ACCEPT_TIMEOUT_EXCEEDED0x10#defineERROR_CODE_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE0x11#defineERROR_CODE_INVALID_HCI_COMMAND_PARAMETERS0x12#defineERROR_CODE_REMOTE_USER_TERMINATED_CONNECTION0x13#defineERROR_CODE_REMOTE_DEVICE_TERMINATED_CONNECTION_DUE_TO_LOW_RESOURCES0x14#defineERROR_CODE_REMOTE_DEVICE_TERMINATED_CONNECTION_DUE_TO_POWER_OFF0x15#defineERROR_CODE_CONNECTION_TERMINATED_BY_LOCAL_HOST0x16#defineERROR_CODE_REPEATED_ATTEMPTS0x17#defineERROR_CODE_PAIRING_NOT_ALLOWED0x18#defineERROR_CODE_UNKNOWN_LMP_PDU0x19#defineERROR_CODE_UNSUPPORTED_REMOTE_FEATURE_UNSUPPORTED_LMP_FEATURE0x1A#defineERROR_CODE_SCO_OFFSET_REJECTED0x1B#defineERROR_CODE_SCO_INTERVAL_REJECTED0x1C#defineERROR_CODE_SCO_AIR_MODE_REJECTED0x1D#defineERROR_CODE_INVALID_LMP_PARAMETERS_INVALID_LL_PARAMETERS0x1E#defineERROR_CODE_UNSPECIFIED_ERROR0x1F#defineERROR_CODE_UNSUPPORTED_LMP_PARAMETER_VALUE_UNSUPPORTED_LL_PARAMETER_VALUE0x20#defineERROR_CODE_ROLE_CHANGE_NOT_ALLOWED0x21#defineERROR_CODE_LMP_RESPONSE_TIMEOUT_LL_RESPONSE_TIMEOUT0x22#defineERROR_CODE_LMP_ERROR_TRANSACTION_COLLISION0x23#defineERROR_CODE_LMP_PDU_NOT_ALLOWED0x24#defineERROR_CODE_ENCRYPTION_MODE_NOT_ACCEPTABLE0x25#defineERROR_CODE_LINK_KEY_CANNOT_BE_CHANGED0x26#defineERROR_CODE_REQUESTED_QOS_NOT_SUPPORTED0x27#defineERROR_CODE_INSTANT_PASSED0x28#defineERROR_CODE_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED0x29#defineERROR_CODE_DIFFERENT_TRANSACTION_COLLISION0x2A#defineERROR_CODE_RESERVED0x2B#defineERROR_CODE_QOS_UNACCEPTABLE_PARAMETER0x2C#defineERROR_CODE_QOS_REJECTED0x2D#defineERROR_CODE_CHANNEL_CLASSIFICATION_NOT_SUPPORTED0x2E#defineERROR_CODE_INSUFFICIENT_SECURITY0x2F#defineERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE0x30// #define ERROR_CODE_RESERVED#defineERROR_CODE_ROLE_SWITCH_PENDING0x32// #define ERROR_CODE_RESERVED#defineERROR_CODE_RESERVED_SLOT_VIOLATION0x34#defineERROR_CODE_ROLE_SWITCH_FAILED0x35#defineERROR_CODE_EXTENDED_INQUIRY_RESPONSE_TOO_LARGE0x36#defineERROR_CODE_SECURE_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST0x37#defineERROR_CODE_HOST_BUSY_PAIRING0x38#defineERROR_CODE_CONNECTION_REJECTED_DUE_TO_NO_SUITABLE_CHANNEL_FOUND0x39#defineERROR_CODE_CONTROLLER_BUSY0x3A#defineERROR_CODE_UNACCEPTABLE_CONNECTION_PARAMETERS0x3B#defineERROR_CODE_DIRECTED_ADVERTISING_TIMEOUT0x3C#defineERROR_CODE_CONNECTION_TERMINATED_DUE_TO_MIC_FAILURE0x3D#defineERROR_CODE_CONNECTION_FAILED_TO_BE_ESTABLISHED0x3E#defineERROR_CODE_MAC_CONNECTION_FAILED0x3F#defineERROR_CODE_COARSE_CLOCK_ADJUSTMENT_REJECTED_BUT_WILL_TRY_TO_ADJUST_USING_CLOCK_DRAGGING0x40// BTstack defined ERRORS, mapped into BLuetooth status code range#defineBTSTACK_CONNECTION_TO_BTDAEMON_FAILED0x50#defineBTSTACK_ACTIVATION_FAILED_SYSTEM_BLUETOOTH0x51#defineBTSTACK_ACTIVATION_POWERON_FAILED0x52#defineBTSTACK_ACTIVATION_FAILED_UNKNOWN0x53#defineBTSTACK_NOT_ACTIVATED0x54#defineBTSTACK_BUSY0x55#defineBTSTACK_MEMORY_ALLOC_FAILED0x56#defineBTSTACK_ACL_BUFFERS_FULL0x57// l2cap errors - enumeration by the command that created them#defineL2CAP_COMMAND_REJECT_REASON_COMMAND_NOT_UNDERSTOOD0x60#defineL2CAP_COMMAND_REJECT_REASON_SIGNALING_MTU_EXCEEDED0x61#defineL2CAP_COMMAND_REJECT_REASON_INVALID_CID_IN_REQUEST0x62#defineL2CAP_CONNECTION_RESPONSE_RESULT_SUCCESSFUL0x63#defineL2CAP_CONNECTION_RESPONSE_RESULT_PENDING0x64#defineL2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_PSM0x65#defineL2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_SECURITY0x66#defineL2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_RESOURCES0x67#defineL2CAP_CONNECTION_RESPONSE_RESULT_ERTM_NOT_SUPPORTED0x68// should be L2CAP_CONNECTION_RTX_TIMEOUT#defineL2CAP_CONNECTION_RESPONSE_RESULT_RTX_TIMEOUT0x69#defineL2CAP_CONNECTION_BASEBAND_DISCONNECT0x6A#defineL2CAP_SERVICE_ALREADY_REGISTERED0x6B#defineL2CAP_DATA_LEN_EXCEEDS_REMOTE_MTU0x6C#defineL2CAP_SERVICE_DOES_NOT_EXIST0x6D#defineL2CAP_LOCAL_CID_DOES_NOT_EXIST0x6E#defineL2CAP_CONNECTION_RESPONSE_UNKNOWN_ERROR0x6F#defineRFCOMM_MULTIPLEXER_STOPPED0x70#defineRFCOMM_CHANNEL_ALREADY_REGISTERED0x71#defineRFCOMM_NO_OUTGOING_CREDITS0x72#defineRFCOMM_AGGREGATE_FLOW_OFF0x73#defineRFCOMM_DATA_LEN_EXCEEDS_MTU0x74#defineHFP_REMOTE_REJECTS_AUDIO_CONNECTION0x7F#defineSDP_HANDLE_ALREADY_REGISTERED0x80#defineSDP_QUERY_INCOMPLETE0x81#defineSDP_SERVICE_NOT_FOUND0x82#defineSDP_HANDLE_INVALID0x83#defineSDP_QUERY_BUSY0x84#defineATT_HANDLE_VALUE_INDICATION_IN_PROGRESS0x90#defineATT_HANDLE_VALUE_INDICATION_TIMEOUT0x91#defineATT_HANDLE_VALUE_INDICATION_DISCONNECT0x92#defineGATT_CLIENT_NOT_CONNECTED0x93#defineGATT_CLIENT_BUSY0x94#defineGATT_CLIENT_IN_WRONG_STATE0x95#defineGATT_CLIENT_DIFFERENT_CONTEXT_FOR_ADDRESS_ALREADY_EXISTS0x96#defineGATT_CLIENT_VALUE_TOO_LONG0x97#defineGATT_CLIENT_CHARACTERISTIC_NOTIFICATION_NOT_SUPPORTED0x98#defineGATT_CLIENT_CHARACTERISTIC_INDICATION_NOT_SUPPORTED0x99#defineBNEP_SERVICE_ALREADY_REGISTERED0xA0#defineBNEP_CHANNEL_NOT_CONNECTED0xA1#defineBNEP_DATA_LEN_EXCEEDS_MTU0xA2// OBEX ERRORS#defineOBEX_UNKNOWN_ERROR0xB0#defineOBEX_CONNECT_FAILED0xB1#defineOBEX_DISCONNECTED0xB2#defineOBEX_NOT_FOUND0xB3#defineOBEX_NOT_ACCEPTABLE0xB4#defineOBEX_ABORTED0xB5#defineMESH_ERROR_APPKEY_INDEX_INVALID0xD0/* ENUM_END *//* ENUM_START: AVRCP_BROWSING_ERROR_CODE */#defineAVRCP_BROWSING_ERROR_CODE_INVALID_COMMAND0x00// Sent if TG received a PDU that it did not understand. Valid for All.#defineAVRCP_BROWSING_ERROR_CODE_INVALID_PARAMETER0x01// Sent if the TG received a PDU with a parameter ID that it did not understand. Sent if there is only one parameter ID in the PDU. Valid for All.#defineAVRCP_BROWSING_ERROR_CODE_SPECIFIED_PARAMETER_NOT_FOUND0x02// Sent if the parameter ID is understood, but content is wrong or corrupted. Valid for All.#defineAVRCP_BROWSING_ERROR_CODE_INTERNAL_ERROR0x03// Sent if there are error conditions not covered by a more specific error code. Valid for All.#defineAVRCP_BROWSING_ERROR_CODE_SUCCESS0x04// This is the status that should be returned if the operation was successful. Valid for All except where the response CType is AV/C REJECTED.#defineAVRCP_BROWSING_ERROR_CODE_UID_CHANGED0x05// The UIDs on the device have changed. Valid for All.#defineAVRCP_BROWSING_ERROR_CODE_RESERVED_060x06// Valid for All.#defineAVRCP_BROWSING_ERROR_CODE_INVALID_DIRECTION0x07// The Direction parameter is invalid. Valid for Change Path.#defineAVRCP_BROWSING_ERROR_CODE_NOT_A_DIRECTORY0x08// The UID provided does not refer to a folder item. Valid for Change Path.#defineAVRCP_BROWSING_ERROR_CODE_DOES_NOT_EXIST0x09// The UID provided does not refer to any currently valid. Valid for Change Path, PlayItem, AddToNowPlaying, GetItemAttributes.#defineAVRCP_BROWSING_ERROR_CODE_INVALID_SCOPE0x0a// The scope parameter is invalid. Valid for GetFolderItems, PlayItem, AddToNowPlayer, GetItemAttributes,.#defineAVRCP_BROWSING_ERROR_CODE_RANGE_OUT_OF_BOUNDS0x0b// The start of range provided is not valid. Valid for GetFolderItems.#defineAVRCP_BROWSING_ERROR_CODE_UID_IS_A_DIRECTORY0x0c// The UID provided refers to a directory, which cannot be handled by this media player. Valid for PlayItem, AddToNowPlaying.#defineAVRCP_BROWSING_ERROR_CODE_MEDIA_IN_USES0x0d// The media is not able to be used for this operation at this time. Valid for PlayItem, AddToNowPlaying.#defineAVRCP_BROWSING_ERROR_CODE_NOW_PLAYING_LIST_FULL0x0e// No more items can be added to the Now Playing List. Valid for AddToNowPlaying.#defineAVRCP_BROWSING_ERROR_CODE_SEARCH_NOT_SUPPORTED0x0f// The Browsed Media Player does not support search. Valid for Search.#defineAVRCP_BROWSING_ERROR_CODE_SEARCH_IN_PROGRESS0x10// A search operation is already in progress. Valid for Search.#defineAVRCP_BROWSING_ERROR_CODE_INVALID_PLAYER_ID0x11// The specified Player Id does not refer to a valid player. Valid for SetAddressedPlayer, SetBrowsedPlayer.#defineAVRCP_BROWSING_ERROR_CODE_PLAYER_NOT_BROWSABLE0x12// The Player Id supplied refers to a Media Player which does not support browsing. Valid for SetBrowsedPlayer.#defineAVRCP_BROWSING_ERROR_CODE_PLAYER_NOT_ADDRESSED0x13// The Player Id supplied refers to a player which is not currently addressed, and the command is not able to be performed if the player is not set as addressed. Valid for Search SetBrowsedPlayer.#defineAVRCP_BROWSING_ERROR_CODE_NO_VALID_SEARCH_RESULTS0x14// The Search result list does not contain valid entries, e.g. after being invalidated due to change of browsed player. Valid for GetFolderItems.#defineAVRCP_BROWSING_ERROR_CODE_NO_AVAILABLE_PLAYERS0x15// Valid for All.#defineAVRCP_BROWSING_ERROR_CODE_ADDRESSED_PLAYER_CHANGED0x16// Valid for Register Notification.141 defines// 0x17-0xff Reserved/* ENUM_END */// HCI rolestypedefenum{HCI_ROLE_MASTER=0,HCI_ROLE_SLAVE=1,HCI_ROLE_INVALID=0xff,...}hci_role_t;// packet sizes (max payload)#defineHCI_ACL_DM1_SIZE17#defineHCI_ACL_DH1_SIZE27#defineHCI_ACL_2DH1_SIZE54#defineHCI_ACL_3DH1_SIZE83#defineHCI_ACL_DM3_SIZE121#defineHCI_ACL_DH3_SIZE183#defineHCI_ACL_DM5_SIZE224#defineHCI_ACL_DH5_SIZE339#defineHCI_ACL_2DH3_SIZE367#defineHCI_ACL_3DH3_SIZE552#defineHCI_ACL_2DH5_SIZE679#defineHCI_ACL_3DH5_SIZE1021#defineHCI_SCO_HV1_SIZE10#defineHCI_SCO_HV2_SIZE20#defineHCI_SCO_HV3_SIZE30#defineHCI_SCO_EV3_SIZE30#defineHCI_SCO_EV4_SIZE120#defineHCI_SCO_EV5_SIZE180#defineHCI_SCO_2EV3_SIZE60#defineHCI_SCO_2EV5_SIZE360#defineHCI_SCO_3EV3_SIZE90#defineHCI_SCO_3EV5_SIZE540#defineLE_ADVERTISING_DATA_SIZE31#defineLE_EXTENDED_ADVERTISING_DATA_SIZE229#defineLE_EXTENDED_ADVERTISING_MAX_HANDLE0xEFu#defineLE_EXTENDED_ADVERTISING_MAX_CHUNK_LEN251// advertising event properties for extended advertising#defineLE_ADVERTISING_PROPERTIES_CONNECTABLE(1u<<0)#defineLE_ADVERTISING_PROPERTIES_SCANNABLE(1u<<1)#defineLE_ADVERTISING_PROPERTIES_DIRECTED(1u<<2)#defineLE_ADVERTISING_PROPERTIES_HIGH_DUTY_CYCLE(1u<<3)#defineLE_ADVERTISING_PROPERTIES_LEGACY(1u<<4)#defineLE_ADVERTISING_PROPERTIES_ANONYMOUS(1u<<5)#defineLE_ADVERTISING_PROPERTIES_INCLUDE_TX_POWER(1u<<6)// ACL Packet Types#defineACL_PACKET_TYPES_NONE0x0000#defineACL_PACKET_TYPES_2DH10x0002#defineACL_PACKET_TYPES_3DH10x0004#defineACL_PACKET_TYPES_DM10x0008#defineACL_PACKET_TYPES_DH10x0010#defineACL_PACKET_TYPES_2DH30x0100#defineACL_PACKET_TYPES_3DH30x0200#defineACL_PACKET_TYPES_DM30x0400#defineACL_PACKET_TYPES_DH30x0800#defineACL_PACKET_TYPES_2DH50x1000#defineACL_PACKET_TYPES_3DH50x2000#defineACL_PACKET_TYPES_DM50x4000#defineACL_PACKET_TYPES_DH50x8000#defineACL_PACKET_TYPES_BR(ACL_PACKET_TYPES_DM1|ACL_PACKET_TYPES_DH1|ACL_PACKET_TYPES_DM3|ACL_PACKET_TYPES_DH3|ACL_PACKET_TYPES_DM5|ACL_PACKET_TYPES_DH5)#defineACL_PACKET_TYPES_EDR2(ACL_PACKET_TYPES_2DH1|ACL_PACKET_TYPES_2DH3|ACL_PACKET_TYPES_2DH5)#defineACL_PACKET_TYPES_EDR3(ACL_PACKET_TYPES_3DH1|ACL_PACKET_TYPES_3DH3|ACL_PACKET_TYPES_3DH5)#defineACL_PACKET_TYPES_SLOTS1(ACL_PACKET_TYPES_DM1|ACL_PACKET_TYPES_DH1|ACL_PACKET_TYPES_2DH1|ACL_PACKET_TYPES_3DH1)#defineACL_PACKET_TYPES_SLOTS3(ACL_PACKET_TYPES_DM3|ACL_PACKET_TYPES_DH3|ACL_PACKET_TYPES_2DH3|ACL_PACKET_TYPES_3DH3)#defineACL_PACKET_TYPES_SLOTS5(ACL_PACKET_TYPES_DM5|ACL_PACKET_TYPES_DH5|ACL_PACKET_TYPES_2DH5|ACL_PACKET_TYPES_3DH5)#defineACL_PACKET_TYPES_ALL(ACL_PACKET_TYPES_BR|ACL_PACKET_TYPES_EDR2|ACL_PACKET_TYPES_EDR3)// SCO Packet Types#defineSCO_PACKET_TYPES_NONE0x0000#defineSCO_PACKET_TYPES_HV10x0001#defineSCO_PACKET_TYPES_HV20x0002#defineSCO_PACKET_TYPES_HV30x0004#defineSCO_PACKET_TYPES_EV30x0008#defineSCO_PACKET_TYPES_EV40x0010#defineSCO_PACKET_TYPES_EV50x0020#defineSCO_PACKET_TYPES_2EV30x0040#defineSCO_PACKET_TYPES_3EV30x0080#defineSCO_PACKET_TYPES_2EV50x0100#defineSCO_PACKET_TYPES_3EV50x0200#defineSCO_PACKET_TYPES_ALL0x03FF#defineSCO_PACKET_TYPES_SCO0x0007#defineSCO_PACKET_TYPES_ESCO0x03F8// Link Policy Settings#defineLM_LINK_POLICY_DISABLE_ALL_LM_MODES0#defineLM_LINK_POLICY_ENABLE_ROLE_SWITCH1#defineLM_LINK_POLICY_ENABLE_HOLD_MODE2#defineLM_LINK_POLICY_ENABLE_SNIFF_MODE4// ACL Connection Modes#defineACL_CONNECTION_MODE_ACTIVE0#defineACL_CONNECTION_MODE_HOLD1#defineACL_CONNECTION_MODE_SNIFF2/** * Default INQ Mode *//* ... */#defineGAP_IAC_GENERAL_INQUIRY0x9E8B33L// General/Unlimited Inquiry Access Code (GIAC)#defineGAP_IAC_LIMITED_INQUIRY0x9E8B00L// Limited Dedicated Inquiry Access Code (LIAC)/** * SSP IO Capabilities *//* ... */#defineSSP_IO_CAPABILITY_DISPLAY_ONLY0#defineSSP_IO_CAPABILITY_DISPLAY_YES_NO1#defineSSP_IO_CAPABILITY_KEYBOARD_ONLY2#defineSSP_IO_CAPABILITY_NO_INPUT_NO_OUTPUT3#defineSSP_IO_CAPABILITY_UNKNOWN0xff/** * SSP Authentication Requirements, see IO Capability Request Reply Commmand *//* ... */// Numeric comparison with automatic accept allowed.#defineSSP_IO_AUTHREQ_MITM_PROTECTION_NOT_REQUIRED_NO_BONDING0x00// Use IO Capabilities to deter- mine authentication procedure#defineSSP_IO_AUTHREQ_MITM_PROTECTION_REQUIRED_NO_BONDING0x01// Numeric compar- ison with automatic accept allowed.#defineSSP_IO_AUTHREQ_MITM_PROTECTION_NOT_REQUIRED_DEDICATED_BONDING0x02// Use IO Capabilities to determine authentication procedure#defineSSP_IO_AUTHREQ_MITM_PROTECTION_REQUIRED_DEDICATED_BONDING0x03// Numeric Compari- son with automatic accept allowed.#defineSSP_IO_AUTHREQ_MITM_PROTECTION_NOT_REQUIRED_GENERAL_BONDING0x04// Use IO capabilities to determine authentication procedure.#defineSSP_IO_AUTHREQ_MITM_PROTECTION_REQUIRED_GENERAL_BONDING0x05// OGFs#defineOGF_LINK_CONTROL0x01#defineOGF_LINK_POLICY0x02#defineOGF_CONTROLLER_BASEBAND0x03#defineOGF_INFORMATIONAL_PARAMETERS0x04#defineOGF_STATUS_PARAMETERS0x05#defineOGF_TESTING0x06#defineOGF_LE_CONTROLLER0x08#defineOGF_VENDOR0x3f/** * L2CAP Layer *//* ... */#defineL2CAP_HEADER_SIZE4// minimum signaling MTU#defineL2CAP_MINIMAL_MTU48#defineL2CAP_DEFAULT_MTU672// Minimum/default MTU#defineL2CAP_LE_DEFAULT_MTU23// L2CAP Fixed Channel IDs #defineL2CAP_CID_SIGNALING0x0001#defineL2CAP_CID_CONNECTIONLESS_CHANNEL0x0002#defineL2CAP_CID_ATTRIBUTE_PROTOCOL0x0004#defineL2CAP_CID_SIGNALING_LE0x0005#defineL2CAP_CID_SECURITY_MANAGER_PROTOCOL0x0006#defineL2CAP_CID_BR_EDR_SECURITY_MANAGER0x0007// L2CAP Channels in Basic and Enhanced Retransmission Mode// connection response result#defineL2CAP_CONNECTION_RESULT_SUCCESS0x0000#defineL2CAP_CONNECTION_RESULT_PENDING0x0001#defineL2CAP_CONNECTION_RESULT_PSM_NOT_SUPPORTED0x0002#defineL2CAP_CONNECTION_RESULT_SECURITY_BLOCK0x0003#defineL2CAP_CONNECTION_RESULT_NO_RESOURCES_AVAILABLE0x0004#defineL2CAP_CONNECTION_RESULT_INVALID_SOURCE_CID0x0006#defineL2CAP_CONNECTION_RESULT_SOURCE_CID_ALREADY_ALLOCATED0x0007// L2CAP Channels in LE Credit-Based Flow-Control Mode// connection response result#defineL2CAP_CBM_CONNECTION_RESULT_SUCCESS0x0000#defineL2CAP_CBM_CONNECTION_RESULT_SPSM_NOT_SUPPORTED0x0002#defineL2CAP_CBM_CONNECTION_RESULT_NO_RESOURCES_AVAILABLE0x0004#defineL2CAP_CBM_CONNECTION_RESULT_INSUFFICIENT_AUTHENTICATION0x0005#defineL2CAP_CBM_CONNECTION_RESULT_INSUFFICIENT_AUTHORIZATION0x0006#defineL2CAP_CBM_CONNECTION_RESULT_ENCYRPTION_KEY_SIZE_TOO_SHORT0x0007#defineL2CAP_CBM_CONNECTION_RESULT_INSUFFICIENT_ENCRYPTION0x0008#defineL2CAP_CBM_CONNECTION_RESULT_INVALID_SOURCE_CID0x0009#defineL2CAP_CBM_CONNECTION_RESULT_SOURCE_CID_ALREADY_ALLOCATED0x000A#defineL2CAP_CBM_CONNECTION_RESULT_UNACCEPTABLE_PARAMETERS0x000B// L2CAP Channels in Enhanced Credit-Based Flow-Control Mode// number of CIDs in single connection+reconfiguration request/response#defineL2CAP_ECBM_MAX_CID_ARRAY_SIZE5// connection response result#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_SUCCESS0x0000#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_REFUSED_SPSM_NOT_SUPPORTED0x0002#defineL2CAP_ECBM_CONNECTION_RESULT_SOME_REFUSED_INSUFFICIENT_RESOURCES_AVAILABLE0x0004#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_REFUSED_INSUFFICIENT_AUTHENTICATION0x0005#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_REFUSED_INSUFFICIENT_AUTHORIZATION0x0006#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_REFUSED_ENCYRPTION_KEY_SIZE_TOO_SHORT0x0007#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_REFUSED_INSUFFICIENT_ENCRYPTION0x0008#defineL2CAP_ECBM_CONNECTION_RESULT_SOME_REFUSED_INVALID_SOURCE_CID0x0009#defineL2CAP_ECBM_CONNECTION_RESULT_SOME_REFUSED_SOURCE_CID_ALREADY_ALOCATED0x000A#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_REFUSED_UNACCEPTABLE_PARAMETERS0x000B#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_REFUSED_INVALID_PARAMETERS0x000C#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_PENDING_NO_FURTHER_INFORMATION0x000D#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_PENDING_AUTHENTICATION0x000E#defineL2CAP_ECBM_CONNECTION_RESULT_ALL_PENDING_AUTHORIZATION0x000F// Result for Reconfigure Request#defineL2CAP_ECBM_RECONFIGURE_SUCCESS0#defineL2CAP_ECBM_RECONFIGURE_FAILED_MTU_REDUCTION_NOT_ALLOWED1#defineL2CAP_ECBM_RECONFIGURE_FAILED_MPS_REDUCTION_MULTIPLE_CHANNELS2#defineL2CAP_ECBM_RECONFIGURE_FAILED_DESTINATION_CID_INVALID3#defineL2CAP_ECBM_RECONFIGURE_FAILED_UNACCEPTABLE_PARAMETERS4/** * SDP Protocol *//* ... */// Device Vendor ID Sources#defineDEVICE_ID_VENDOR_ID_SOURCE_BLUETOOTH0x0001#defineDEVICE_ID_VENDOR_ID_SOURCE_USB0x0002// OBEX#defineSDP_vCard_2_10x01#defineSDP_vCard_3_00x02#defineSDP_vCal_1_00x03#defineSDP_iCal_2_00x04#defineSDP_vNote0x05#defineSDP_vMessage0x06#defineSDP_OBEXFileTypeAny0xFF/** * RFCOMM Protocol *//* ... */// Line Status#defineLINE_STATUS_NO_ERROR0x00#defineLINE_STATUS_OVERRUN_ERROR0x03#defineLINE_STATUS_PARITY_ERORR0x05#defineLINE_STATUS_FRAMING_ERROR0x09// Modem Status Flags#defineMODEM_STATUS_FC0x02#defineMODEM_STATUS_RTC0x04#defineMODEM_STATUS_RTR0x08#defineMODEM_STATUS_IC0x40#defineMODEM_STATUS_DV0x80160 definestypedefenumrpn_baud{RPN_BAUD_2400=0,RPN_BAUD_4800,RPN_BAUD_7200,RPN_BAUD_9600,RPN_BAUD_19200,RPN_BAUD_38400,RPN_BAUD_57600,RPN_BAUD_115200,RPN_BAUD_230400...}rpn_baud_t;typedefenumrpn_data_bits{RPN_DATA_BITS_5=0,RPN_DATA_BITS_6=0,RPN_DATA_BITS_7=0,RPN_DATA_BITS_8=0...}rpn_data_bits_t;typedefenumrpn_stop_bits{RPN_STOP_BITS_1_0=0,RPN_STOP_BITS_1_5...}rpn_stop_bits_t;typedefenumrpn_parity{RPN_PARITY_NONE=0,RPN_PARITY_ODD=1,RPN_PARITY_EVEN=3,RPN_PARITY_MARK=5,RPN_PARITY_SPACE=7,...}rpn_parity_t;#defineRPN_FLOW_CONTROL_XONXOFF_ON_INPUT0x01#defineRPN_FLOW_CONTROL_XONXOFF_ON_OUTPUT0x02#defineRPN_FLOW_CONTROL_RTR_ON_INPUT0x04#defineRPN_FLOW_CONTROL_RTR_ON_OUTPUT0x08#defineRPN_FLOW_CONTROL_RTC_ON_INPUT0x10#defineRPN_FLOW_CONTROL_RTC_ON_OUTPUT0x20#defineRPN_PARAM_MASK_0_BAUD0x01#defineRPN_PARAM_MASK_0_DATA_BITS0x02#defineRPN_PARAM_MASK_0_STOP_BITS0x04#defineRPN_PARAM_MASK_0_PARITY0x08#defineRPN_PARAM_MASK_0_PARITY_TYPE0x10#defineRPN_PARAM_MASK_0_XON_CHAR0x20#defineRPN_PARAM_MASK_0_XOFF_CHAR0x40#defineRPN_PARAM_MASK_0_RESERVED0x80// @note: values are identical to rpn_flow_control_t#defineRPN_PARAM_MASK_1_XONOFF_ON_INPUT0x01#defineRPN_PARAM_MASK_1_XONOFF_ON_OUTPUT0x02#defineRPN_PARAM_MASK_1_RTR_ON_INPUT0x04#defineRPN_PARAM_MASK_1_RTR_ON_OUTPUT0x08#defineRPN_PARAM_MASK_1_RTC_ON_INPUT0x10#defineRPN_PARAM_MASK_1_RTC_ON_OUTPUT0x20#defineRPN_PARAM_MASK_1_RESERVED_00x40#defineRPN_PARAM_MASK_1_RESERVED_10x8022 defines/** * BNEP Protocol *//* ... */#ifndefETHER_ADDR_LEN#defineETHER_ADDR_LEN6#endif#ifndefETHERTYPE_VLAN#defineETHERTYPE_VLAN0x8100/* IEEE 802.1Q VLAN tag */#endif#defineBNEP_MTU_MIN1691/** * PAN Profile *//* ... */typedefenum{BNEP_SECURITY_NONE=0x0000,BNEP_SECURITY_SERVICE_LEVEL_ENFORCED,BNEP_SECURITY_802_1X...}security_description_t;typedefenum{PAN_NET_ACCESS_TYPE_PSTN=0x0000,PAN_NET_ACCESS_TYPE_ISDN,PAN_NET_ACCESS_TYPE_DSL,PAN_NET_ACCESS_TYPE_CABLE_MODEM,PAN_NET_ACCESS_TYPE_10MB_ETHERNET,PAN_NET_ACCESS_TYPE_100MB_ETHERNET,PAN_NET_ACCESS_TYPE_4MB_TOKEN_RING,PAN_NET_ACCESS_TYPE_16MB_TOKEN_RING,PAN_NET_ACCESS_TYPE_100MB_TOKEN_RING,PAN_NET_ACCESS_TYPE_FDDI,PAN_NET_ACCESS_TYPE_GSM,PAN_NET_ACCESS_TYPE_CDMA,PAN_NET_ACCESS_TYPE_GPRS,PAN_NET_ACCESS_TYPE_3G,PAN_NET_ACCESS_TYPE_CELULAR,PAN_NET_ACCESS_TYPE_OTHER=0xFFFE,PAN_NET_ACCESS_TYPE_NONE...}net_access_type_t;/** * ATT *//* ... */// Minimum/default MTU#defineATT_DEFAULT_MTU23// MARK: ATT Error Codes#defineATT_ERROR_SUCCESS0x00#defineATT_ERROR_INVALID_HANDLE0x01#defineATT_ERROR_READ_NOT_PERMITTED0x02#defineATT_ERROR_WRITE_NOT_PERMITTED0x03#defineATT_ERROR_INVALID_PDU0x04#defineATT_ERROR_INSUFFICIENT_AUTHENTICATION0x05#defineATT_ERROR_REQUEST_NOT_SUPPORTED0x06#defineATT_ERROR_INVALID_OFFSET0x07#defineATT_ERROR_INSUFFICIENT_AUTHORIZATION0x08#defineATT_ERROR_PREPARE_QUEUE_FULL0x09#defineATT_ERROR_ATTRIBUTE_NOT_FOUND0x0a#defineATT_ERROR_ATTRIBUTE_NOT_LONG0x0b#defineATT_ERROR_INSUFFICIENT_ENCRYPTION_KEY_SIZE0x0c#defineATT_ERROR_INVALID_ATTRIBUTE_VALUE_LENGTH0x0d#defineATT_ERROR_UNLIKELY_ERROR0x0e#defineATT_ERROR_INSUFFICIENT_ENCRYPTION0x0f#defineATT_ERROR_UNSUPPORTED_GROUP_TYPE0x10#defineATT_ERROR_INSUFFICIENT_RESOURCES0x11#defineATT_ERROR_VALUE_NOT_ALLOWED0x13// MARK: ATT Error Codes defined by BTstack#defineATT_ERROR_HCI_DISCONNECT_RECEIVED0x1f#defineATT_ERROR_BONDING_INFORMATION_MISSING0x70#defineATT_ERROR_DATA_MISMATCH0x7e#defineATT_ERROR_TIMEOUT0x7F#defineATT_ERROR_WRITE_RESPONSE_PENDING0x100// MARK: ATT Error Codes from Bluetooth Core Specification Supplement, Version 9 or later#defineATT_ERROR_WRITE_REQUEST_REJECTED0xFC#defineATT_ERROR_CLIENT_CHARACTERISTIC_CONFIGURATION_DESCRIPTOR_IMPROPERLY_CONFIGURED0xFD#defineATT_ERROR_PROCEDURE_ALREADY_IN_PROGRESS0xFE#defineATT_ERROR_OUT_OF_RANGE0xFF// MARK: ATT Error Codes from Cycling Power Service spec#defineCYCLING_POWER_ERROR_CODE_INAPPROPRIATE_CONNECTION_PARAMETERS0x80#defineCYCLING_POWER_ERROR_CODE_PROCEDURE_ALREADY_IN_PROGRESS0xFE#defineCYCLING_POWER_ERROR_CODE_CCC_DESCRIPTOR_IMPROPERLY_CONFIGURED0xFD// MARK: ATT Error Codes from Cycling Speed and Cadence Service spec#defineCYCLING_SPEED_AND_CADENCE_ERROR_CODE_PROCEDURE_ALREADY_IN_PROGRESS0x80#defineCYCLING_SPEED_AND_CADENCE_ERROR_CODE_CCC_DESCRIPTOR_IMPROPERLY_CONFIGURED0x81// MARK: Attribute Property Flags#defineATT_PROPERTY_BROADCAST0x01#defineATT_PROPERTY_READ0x02#defineATT_PROPERTY_WRITE_WITHOUT_RESPONSE0x04#defineATT_PROPERTY_WRITE0x08#defineATT_PROPERTY_NOTIFY0x10#defineATT_PROPERTY_INDICATE0x20#defineATT_PROPERTY_AUTHENTICATED_SIGNED_WRITE0x40#defineATT_PROPERTY_EXTENDED_PROPERTIES0x80// MARK: Attribute Property Flag, BTstack extension// value is asked from client#defineATT_PROPERTY_DYNAMIC0x100// Security levels#defineATT_SECURITY_NONE0#defineATT_SECURITY_ENCRYPTED1#defineATT_SECURITY_AUTHENTICATED2#defineATT_SECURITY_AUTHORIZED3#defineATT_SECURITY_AUTHENTICATED_SC4// ATT Transaction Timeout of 30 seconds for Command/Response or Indication/Confirmation#defineATT_TRANSACTION_TIMEOUT_MS30000#defineATT_TRANSACTION_MODE_NONE0x0#defineATT_TRANSACTION_MODE_ACTIVE0x1#defineATT_TRANSACTION_MODE_EXECUTE0x2#defineATT_TRANSACTION_MODE_CANCEL0x3#defineATT_TRANSACTION_MODE_VALIDATE0x4// MARK: GATT UUIDs#defineGATT_PRIMARY_SERVICE_UUID0x2800#defineGATT_SECONDARY_SERVICE_UUID0x2801#defineGATT_INCLUDE_SERVICE_UUID0x2802#defineGATT_CHARACTERISTICS_UUID0x2803#defineGATT_CHARACTERISTIC_EXTENDED_PROPERTIES0x2900#defineGATT_CHARACTERISTIC_USER_DESCRIPTION0x2901#defineGATT_CLIENT_CHARACTERISTICS_CONFIGURATION0x2902#defineGATT_SERVER_CHARACTERISTICS_CONFIGURATION0x2903#defineGATT_CHARACTERISTIC_PRESENTATION_FORMAT0x2904#defineGATT_CHARACTERISTIC_AGGREGATE_FORMAT0x2905#defineGATT_CLIENT_SUPPORTED_FEATURES0x2B29#defineGATT_SERVER_SUPPORTED_FEATURES0x2B3A#defineGATT_CLIENT_CHARACTERISTICS_CONFIGURATION_NONE0#defineGATT_CLIENT_CHARACTERISTICS_CONFIGURATION_NOTIFICATION1#defineGATT_CLIENT_CHARACTERISTICS_CONFIGURATION_INDICATION2#defineGATT_CLIENT_ANY_CONNECTION0xffff#defineGATT_CLIENT_ANY_VALUE_HANDLE0x0000// GAP Service and Characteristics#defineGAP_SERVICE_UUID0x1800#defineGAP_DEVICE_NAME_UUID0x2a00#defineGAP_APPEARANCE_UUID0x2a01#defineGAP_PERIPHERAL_PRIVACY_FLAG0x2a02#defineGAP_RECONNECTION_ADDRESS_UUID0x2a03#defineGAP_PERIPHERAL_PREFERRED_CONNECTION_PARAMETERS_UUID0x2a04#defineGAP_SERVICE_CHANGED0x2a0578 defines// Bluetooth GATT typestypedefstruct{uint16_tyear;// 0 - year is not known; or [1582,9999]uint8_tmonth;// 0 - month is not known; or [1,12]uint8_tday;// 0 - day is not known; or [1,31]uint8_thours;// [0,23]uint8_tminutes;// [0,59]uint8_tseconds;// [0,59]...}gatt_date_time_t;typedefenum{GATT_MICROPHONE_CONTROL_MUTE_OFF=0x00,GATT_MICROPHONE_CONTROL_MUTE_ON,GATT_MICROPHONE_CONTROL_MUTE_DISABLED...}gatt_microphone_control_mute_t;/** * SM - LE Security Manager *//* ... */// Bluetooth Spec definitionstypedefenum{SM_CODE_PAIRING_REQUEST=0X01,SM_CODE_PAIRING_RESPONSE,SM_CODE_PAIRING_CONFIRM,SM_CODE_PAIRING_RANDOM,SM_CODE_PAIRING_FAILED,SM_CODE_ENCRYPTION_INFORMATION,SM_CODE_MASTER_IDENTIFICATION,SM_CODE_IDENTITY_INFORMATION,SM_CODE_IDENTITY_ADDRESS_INFORMATION,SM_CODE_SIGNING_INFORMATION,SM_CODE_SECURITY_REQUEST,SM_CODE_PAIRING_PUBLIC_KEY,SM_CODE_PAIRING_DHKEY_CHECK,SM_CODE_KEYPRESS_NOTIFICATION,...}SECURITY_MANAGER_COMMANDS;// IO Capability Valuestypedefenum{IO_CAPABILITY_DISPLAY_ONLY=0,IO_CAPABILITY_DISPLAY_YES_NO,IO_CAPABILITY_KEYBOARD_ONLY,IO_CAPABILITY_NO_INPUT_NO_OUTPUT,IO_CAPABILITY_KEYBOARD_DISPLAY,// not used by secure simple pairing...}io_capability_t;// Authentication requirement flags#defineSM_AUTHREQ_NO_BONDING0x00#defineSM_AUTHREQ_BONDING0x01#defineSM_AUTHREQ_MITM_PROTECTION0x04#defineSM_AUTHREQ_SECURE_CONNECTION0x08#defineSM_AUTHREQ_KEYPRESS0x10#defineSM_AUTHREQ_CT20x20// Key distribution flags used by spec#defineSM_KEYDIST_ENC_KEY0x01#defineSM_KEYDIST_ID_KEY0x02#defineSM_KEYDIST_SIGN0x04#defineSM_KEYDIST_LINK_KEY0x08// Key distribution flags used internally#defineSM_KEYDIST_FLAG_ENCRYPTION_INFORMATION0x01#defineSM_KEYDIST_FLAG_MASTER_IDENTIFICATION0x02#defineSM_KEYDIST_FLAG_IDENTITY_INFORMATION0x04#defineSM_KEYDIST_FLAG_IDENTITY_ADDRESS_INFORMATION0x08#defineSM_KEYDIST_FLAG_SIGNING_IDENTIFICATION0x10// STK Generation Methods#defineSM_STK_GENERATION_METHOD_JUST_WORKS0x01#defineSM_STK_GENERATION_METHOD_OOB0x02#defineSM_STK_GENERATION_METHOD_PASSKEY0x04#defineSM_STK_GENERATION_METHOD_NUMERIC_COMPARISON0x08// Pairing Failed Reasons#defineSM_REASON_RESERVED0x00#defineSM_REASON_PASSKEY_ENTRY_FAILED0x01#defineSM_REASON_OOB_NOT_AVAILABLE0x02#defineSM_REASON_AUTHENTHICATION_REQUIREMENTS0x03#defineSM_REASON_CONFIRM_VALUE_FAILED0x04#defineSM_REASON_PAIRING_NOT_SUPPORTED0x05#defineSM_REASON_ENCRYPTION_KEY_SIZE0x06#defineSM_REASON_COMMAND_NOT_SUPPORTED0x07#defineSM_REASON_UNSPECIFIED_REASON0x08#defineSM_REASON_REPEATED_ATTEMPTS0x09#defineSM_REASON_INVALID_PARAMETERS0x0a#defineSM_REASON_DHKEY_CHECK_FAILED0x0b#defineSM_REASON_NUMERIC_COMPARISON_FAILED0x0c#defineSM_REASON_BR_EDR_PAIRING_IN_PROGRESS0x0d#defineSM_REASON_CROSS_TRANSPORT_KEY_DERIVATION_NOT_ALLOWED0x0e#defineSM_REASON_KEY_REJECTED0x0f// also, invalid parameters// and reserved// Keypress Notifications#defineSM_KEYPRESS_PASSKEY_ENTRY_STARTED0x00#defineSM_KEYPRESS_PASSKEY_DIGIT_ENTERED0x01#defineSM_KEYPRESS_PASSKEY_DIGIT_ERASED0x02#defineSM_KEYPRESS_PASSKEY_CLEARED0x03#defineSM_KEYPRESS_PASSKEY_ENTRY_COMPLETED0x0440 defines/* ... */#endif
Details
Show: from
Types: Columns:
All items filtered out
All items filtered out
This file uses the notable symbols shown below. Click anywhere in the file to view more details.