Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MaximBLE by
exactLE/stack/include/dm_api.h@0:b562096246b3, 2016-03-03 (annotated)
- Committer:
- enginerd
- Date:
- Thu Mar 03 14:13:21 2016 +0000
- Revision:
- 0:b562096246b3
Initial commit of Maxim Integrated Bluetooth LE Library
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| enginerd | 0:b562096246b3 | 1 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 2 | /*! |
| enginerd | 0:b562096246b3 | 3 | * \file dm_api.h |
| enginerd | 0:b562096246b3 | 4 | * |
| enginerd | 0:b562096246b3 | 5 | * \brief Device Manager subsystem API. |
| enginerd | 0:b562096246b3 | 6 | * |
| enginerd | 0:b562096246b3 | 7 | * $Date: 2012-09-11 16:18:57 -0700 (Tue, 11 Sep 2012) $ |
| enginerd | 0:b562096246b3 | 8 | * $Revision: 349 $ |
| enginerd | 0:b562096246b3 | 9 | * |
| enginerd | 0:b562096246b3 | 10 | * Copyright (c) 2009-2016 ARM Limited. All rights reserved. |
| enginerd | 0:b562096246b3 | 11 | * |
| enginerd | 0:b562096246b3 | 12 | * SPDX-License-Identifier: LicenseRef-PBL |
| enginerd | 0:b562096246b3 | 13 | * |
| enginerd | 0:b562096246b3 | 14 | * Licensed under the Permissive Binary License, Version 1.0 (the "License"); you may not use |
| enginerd | 0:b562096246b3 | 15 | * this file except in compliance with the License. You may obtain a copy of the License at |
| enginerd | 0:b562096246b3 | 16 | * |
| enginerd | 0:b562096246b3 | 17 | * https://www.mbed.com/licenses/PBL-1.0 |
| enginerd | 0:b562096246b3 | 18 | * |
| enginerd | 0:b562096246b3 | 19 | * See the License for the specific language governing permissions and limitations under the License. |
| enginerd | 0:b562096246b3 | 20 | */ |
| enginerd | 0:b562096246b3 | 21 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 22 | #ifndef DM_API_H |
| enginerd | 0:b562096246b3 | 23 | #define DM_API_H |
| enginerd | 0:b562096246b3 | 24 | |
| enginerd | 0:b562096246b3 | 25 | #include "hci_api.h" |
| enginerd | 0:b562096246b3 | 26 | #include "cfg_stack.h" |
| enginerd | 0:b562096246b3 | 27 | #include "smp_defs.h" |
| enginerd | 0:b562096246b3 | 28 | |
| enginerd | 0:b562096246b3 | 29 | #ifdef __cplusplus |
| enginerd | 0:b562096246b3 | 30 | extern "C" { |
| enginerd | 0:b562096246b3 | 31 | #endif |
| enginerd | 0:b562096246b3 | 32 | |
| enginerd | 0:b562096246b3 | 33 | /************************************************************************************************** |
| enginerd | 0:b562096246b3 | 34 | Macros |
| enginerd | 0:b562096246b3 | 35 | **************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 36 | |
| enginerd | 0:b562096246b3 | 37 | /*! Device role */ |
| enginerd | 0:b562096246b3 | 38 | #define DM_ROLE_MASTER HCI_ROLE_MASTER /*! Role is master */ |
| enginerd | 0:b562096246b3 | 39 | #define DM_ROLE_SLAVE HCI_ROLE_SLAVE /*! Role is slave */ |
| enginerd | 0:b562096246b3 | 40 | |
| enginerd | 0:b562096246b3 | 41 | /*! The GAP discovery mode */ |
| enginerd | 0:b562096246b3 | 42 | #define DM_DISC_MODE_NONE 0 /*! GAP non-discoverable */ |
| enginerd | 0:b562096246b3 | 43 | #define DM_DISC_MODE_LIMITED 1 /*! GAP limited discoverable mode */ |
| enginerd | 0:b562096246b3 | 44 | #define DM_DISC_MODE_GENERAL 2 /*! GAP general discoverable mode */ |
| enginerd | 0:b562096246b3 | 45 | |
| enginerd | 0:b562096246b3 | 46 | /*! The type of connectable or discoverable of advertising */ |
| enginerd | 0:b562096246b3 | 47 | #define DM_ADV_CONN_UNDIRECT 0 /*! Connectable undirected advertising */ |
| enginerd | 0:b562096246b3 | 48 | #define DM_ADV_CONN_DIRECT 1 /*! Connectable directed advertising */ |
| enginerd | 0:b562096246b3 | 49 | #define DM_ADV_DISC_UNDIRECT 2 /*! Discoverable undirected advertising */ |
| enginerd | 0:b562096246b3 | 50 | #define DM_ADV_NONCONN_UNDIRECT 3 /*! Non-connectable undirected advertising */ |
| enginerd | 0:b562096246b3 | 51 | #define DM_ADV_SCAN_RESPONSE 4 /*! Scan response */ |
| enginerd | 0:b562096246b3 | 52 | #define DM_ADV_NONE 255 /*! For internal use only */ |
| enginerd | 0:b562096246b3 | 53 | |
| enginerd | 0:b562096246b3 | 54 | /*! Whether data is located in the advertising data or the scan response data */ |
| enginerd | 0:b562096246b3 | 55 | #define DM_DATA_LOC_ADV 0 /*! Locate data in the advertising data */ |
| enginerd | 0:b562096246b3 | 56 | #define DM_DATA_LOC_SCAN 1 /*! Locate data in the scan response data */ |
| enginerd | 0:b562096246b3 | 57 | |
| enginerd | 0:b562096246b3 | 58 | /*! The scan type */ |
| enginerd | 0:b562096246b3 | 59 | #define DM_SCAN_TYPE_PASSIVE 0 /*! Passive scan */ |
| enginerd | 0:b562096246b3 | 60 | #define DM_SCAN_TYPE_ACTIVE 1 /*! Active scan */ |
| enginerd | 0:b562096246b3 | 61 | |
| enginerd | 0:b562096246b3 | 62 | /*! Advertising channel map */ |
| enginerd | 0:b562096246b3 | 63 | #define DM_ADV_CHAN_37 HCI_ADV_CHAN_37 /*! Advertising channel 37 */ |
| enginerd | 0:b562096246b3 | 64 | #define DM_ADV_CHAN_38 HCI_ADV_CHAN_38 /*! Advertising channel 38 */ |
| enginerd | 0:b562096246b3 | 65 | #define DM_ADV_CHAN_39 HCI_ADV_CHAN_39 /*! Advertising channel 39 */ |
| enginerd | 0:b562096246b3 | 66 | #define DM_ADV_CHAN_ALL (HCI_ADV_CHAN_37 | HCI_ADV_CHAN_38 | HCI_ADV_CHAN_39) |
| enginerd | 0:b562096246b3 | 67 | |
| enginerd | 0:b562096246b3 | 68 | /*! The client ID parameter to function DmConnRegister() */ |
| enginerd | 0:b562096246b3 | 69 | #define DM_CLIENT_ID_ATT 0 /*! Identifier for attribute protocol, for internal use only */ |
| enginerd | 0:b562096246b3 | 70 | #define DM_CLIENT_ID_SMP 1 /*! Identifier for security manager protocol, for internal use only */ |
| enginerd | 0:b562096246b3 | 71 | #define DM_CLIENT_ID_DM 2 /*! Identifier for device manager, for internal use only */ |
| enginerd | 0:b562096246b3 | 72 | #define DM_CLIENT_ID_APP 3 /*! Identifier for the application */ |
| enginerd | 0:b562096246b3 | 73 | #define DM_CLIENT_ID_MAX 4 /*! For internal use only */ |
| enginerd | 0:b562096246b3 | 74 | |
| enginerd | 0:b562096246b3 | 75 | /*! Unknown connection ID or other error */ |
| enginerd | 0:b562096246b3 | 76 | #define DM_CONN_ID_NONE 0 |
| enginerd | 0:b562096246b3 | 77 | |
| enginerd | 0:b562096246b3 | 78 | /*! The address type */ |
| enginerd | 0:b562096246b3 | 79 | #define DM_ADDR_PUBLIC 0 /*! Public address */ |
| enginerd | 0:b562096246b3 | 80 | #define DM_ADDR_RANDOM 1 /*! Random address */ |
| enginerd | 0:b562096246b3 | 81 | |
| enginerd | 0:b562096246b3 | 82 | /*! Advertising data types */ |
| enginerd | 0:b562096246b3 | 83 | #define DM_ADV_TYPE_FLAGS 0x01 /*! Flag bits */ |
| enginerd | 0:b562096246b3 | 84 | #define DM_ADV_TYPE_16_UUID_PART 0x02 /*! Partial list of 16 bit UUIDs */ |
| enginerd | 0:b562096246b3 | 85 | #define DM_ADV_TYPE_16_UUID 0x03 /*! Complete list of 16 bit UUIDs */ |
| enginerd | 0:b562096246b3 | 86 | #define DM_ADV_TYPE_128_UUID_PART 0x06 /*! Partial list of 128 bit UUIDs */ |
| enginerd | 0:b562096246b3 | 87 | #define DM_ADV_TYPE_128_UUID 0x07 /*! Complete list of 128 bit UUIDs */ |
| enginerd | 0:b562096246b3 | 88 | #define DM_ADV_TYPE_SHORT_NAME 0x08 /*! Shortened local name */ |
| enginerd | 0:b562096246b3 | 89 | #define DM_ADV_TYPE_LOCAL_NAME 0x09 /*! Complete local name */ |
| enginerd | 0:b562096246b3 | 90 | #define DM_ADV_TYPE_TX_POWER 0x0A /*! TX power level */ |
| enginerd | 0:b562096246b3 | 91 | #define DM_ADV_TYPE_CONN_INTERVAL 0x12 /*! Slave preferred connection interval */ |
| enginerd | 0:b562096246b3 | 92 | #define DM_ADV_TYPE_SIGNED_DATA 0x13 /*! Signed data */ |
| enginerd | 0:b562096246b3 | 93 | #define DM_ADV_TYPE_16_SOLICIT 0x14 /*! Service soliticiation list of 16 bit UUIDs */ |
| enginerd | 0:b562096246b3 | 94 | #define DM_ADV_TYPE_128_SOLICIT 0x15 /*! Service soliticiation list of 128 bit UUIDs */ |
| enginerd | 0:b562096246b3 | 95 | #define DM_ADV_TYPE_SERVICE_DATA 0x16 /*! Service data */ |
| enginerd | 0:b562096246b3 | 96 | #define DM_ADV_TYPE_PUBLIC_TARGET 0x17 /*! Public target address */ |
| enginerd | 0:b562096246b3 | 97 | #define DM_ADV_TYPE_RANDOM_TARGET 0x18 /*! Random target address */ |
| enginerd | 0:b562096246b3 | 98 | #define DM_ADV_TYPE_APPEARANCE 0x19 /*! Device appearance */ |
| enginerd | 0:b562096246b3 | 99 | #define DM_ADV_TYPE_MANUFACTURER 0xFF /*! Manufacturer specific data */ |
| enginerd | 0:b562096246b3 | 100 | |
| enginerd | 0:b562096246b3 | 101 | /*! Bit mask for flags advertising data type */ |
| enginerd | 0:b562096246b3 | 102 | #define DM_FLAG_LE_LIMITED_DISC 0x01 /*! Limited discoverable flag */ |
| enginerd | 0:b562096246b3 | 103 | #define DM_FLAG_LE_GENERAL_DISC 0x02 /*! General discoverable flag */ |
| enginerd | 0:b562096246b3 | 104 | #define DM_FLAG_LE_BREDR_NOT_SUP 0x04 /*! BR/EDR not supported flag */ |
| enginerd | 0:b562096246b3 | 105 | |
| enginerd | 0:b562096246b3 | 106 | /*! Advertising data element indexes */ |
| enginerd | 0:b562096246b3 | 107 | #define DM_AD_LEN_IDX 0 /*! Advertising data element len */ |
| enginerd | 0:b562096246b3 | 108 | #define DM_AD_TYPE_IDX 1 /*! Advertising data element type */ |
| enginerd | 0:b562096246b3 | 109 | #define DM_AD_DATA_IDX 2 /*! Advertising data element data */ |
| enginerd | 0:b562096246b3 | 110 | |
| enginerd | 0:b562096246b3 | 111 | /*! Timeouts defined by the GAP specification; in units of milliseconds */ |
| enginerd | 0:b562096246b3 | 112 | #define DM_GAP_LIM_ADV_TIMEOUT 180000 /*! Maximum advertising duration in limited discoverable mode */ |
| enginerd | 0:b562096246b3 | 113 | #define DM_GAP_GEN_DISC_SCAN_MIN 10240 /*! Minimum scan duration for general discovery */ |
| enginerd | 0:b562096246b3 | 114 | #define DM_GAP_LIM_DISC_SCAN_MIN 10240 /*! Minimum scan duration for limited discovery */ |
| enginerd | 0:b562096246b3 | 115 | #define DM_GAP_CONN_PARAM_TIMEOUT 30000 /*! Connection parameter update timeout */ |
| enginerd | 0:b562096246b3 | 116 | #define DM_GAP_SCAN_FAST_PERIOD 30720 /*! Minimum time to perform scanning when user initiated */ |
| enginerd | 0:b562096246b3 | 117 | #define DM_GAP_ADV_FAST_PERIOD 30000 /*! Minimum time to perform advertising when user initiated */ |
| enginerd | 0:b562096246b3 | 118 | |
| enginerd | 0:b562096246b3 | 119 | /*! |
| enginerd | 0:b562096246b3 | 120 | * Advertising, scanning, and connection parameters defined in the GAP specification. |
| enginerd | 0:b562096246b3 | 121 | * In units of 625 microseconds. |
| enginerd | 0:b562096246b3 | 122 | */ |
| enginerd | 0:b562096246b3 | 123 | #define DM_GAP_SCAN_FAST_INT_MIN 48 /*! Minimum scan interval when user initiated */ |
| enginerd | 0:b562096246b3 | 124 | #define DM_GAP_SCAN_FAST_INT_MAX 96 /*! Maximum scan interval when user initiated */ |
| enginerd | 0:b562096246b3 | 125 | #define DM_GAP_SCAN_FAST_WINDOW 48 /*! Scan window when user initiated */ |
| enginerd | 0:b562096246b3 | 126 | #define DM_GAP_SCAN_SLOW_INT_1 2048 /*! Scan interval 1 when background scannning */ |
| enginerd | 0:b562096246b3 | 127 | #define DM_GAP_SCAN_SLOW_WINDOW_1 18 /*! Scan window 1 when background scanning */ |
| enginerd | 0:b562096246b3 | 128 | #define DM_GAP_SCAN_SLOW_INT_2 4096 /*! Scan interval 2 when background scannning */ |
| enginerd | 0:b562096246b3 | 129 | #define DM_GAP_SCAN_SLOW_WINDOW_2 18 /*! Scan window 2 when background scanning */ |
| enginerd | 0:b562096246b3 | 130 | #define DM_GAP_ADV_FAST_INT_MIN 48 /*! Minimum advertising interval when user initiated */ |
| enginerd | 0:b562096246b3 | 131 | #define DM_GAP_ADV_FAST_INT_MAX 96 /*! Maximum advertising interval when user initiated */ |
| enginerd | 0:b562096246b3 | 132 | #define DM_GAP_ADV_SLOW_INT_MIN 1600 /*! Minimum advertising interval when background advertising */ |
| enginerd | 0:b562096246b3 | 133 | #define DM_GAP_ADV_SLOW_INT_MAX 1920 /*! Maximum advertising interval when background advertising */ |
| enginerd | 0:b562096246b3 | 134 | |
| enginerd | 0:b562096246b3 | 135 | /*! GAP connection establishment latency */ |
| enginerd | 0:b562096246b3 | 136 | #define DM_GAP_CONN_EST_LATENCY 0 |
| enginerd | 0:b562096246b3 | 137 | |
| enginerd | 0:b562096246b3 | 138 | /*! GAP connection intervals in 1.25ms units */ |
| enginerd | 0:b562096246b3 | 139 | #define DM_GAP_INITIAL_CONN_INT_MIN 24 /*! Minimum initial connection interval */ |
| enginerd | 0:b562096246b3 | 140 | #define DM_GAP_INITIAL_CONN_INT_MAX 40 /*! Maximum initial onnection interval */ |
| enginerd | 0:b562096246b3 | 141 | |
| enginerd | 0:b562096246b3 | 142 | /*! GAP connection establishment minimum and maximum connection event lengths */ |
| enginerd | 0:b562096246b3 | 143 | #define DM_GAP_CONN_EST_MIN_CE_LEN 0 |
| enginerd | 0:b562096246b3 | 144 | #define DM_GAP_CONN_EST_MAX_CE_LEN 0 |
| enginerd | 0:b562096246b3 | 145 | |
| enginerd | 0:b562096246b3 | 146 | /*! GAP peripheral privacy flag characteristic values */ |
| enginerd | 0:b562096246b3 | 147 | #define DM_GAP_PRIV_DISABLED 0 |
| enginerd | 0:b562096246b3 | 148 | #define DM_GAP_PRIV_ENABLED 1 |
| enginerd | 0:b562096246b3 | 149 | |
| enginerd | 0:b562096246b3 | 150 | /*! Connection establishment supervision timeout default, in 10ms units */ |
| enginerd | 0:b562096246b3 | 151 | #define DM_DEFAULT_EST_SUP_TIMEOUT 2000 |
| enginerd | 0:b562096246b3 | 152 | |
| enginerd | 0:b562096246b3 | 153 | /*! Pairing authentication/security properties bit mask */ |
| enginerd | 0:b562096246b3 | 154 | #define DM_AUTH_BOND_FLAG SMP_AUTH_BOND_FLAG /*! Bonding requested */ |
| enginerd | 0:b562096246b3 | 155 | #define DM_AUTH_MITM_FLAG SMP_AUTH_MITM_FLAG /*! MITM (authenticated pairing) requested */ |
| enginerd | 0:b562096246b3 | 156 | |
| enginerd | 0:b562096246b3 | 157 | /*! Key distribution bit mask */ |
| enginerd | 0:b562096246b3 | 158 | #define DM_KEY_DIST_LTK SMP_KEY_DIST_ENC /*! Distribute LTK used for encryption */ |
| enginerd | 0:b562096246b3 | 159 | #define DM_KEY_DIST_IRK SMP_KEY_DIST_ID /*! Distribute IRK used for privacy */ |
| enginerd | 0:b562096246b3 | 160 | #define DM_KEY_DIST_CSRK SMP_KEY_DIST_SIGN /*! Distribute CSRK used for signed data */ |
| enginerd | 0:b562096246b3 | 161 | |
| enginerd | 0:b562096246b3 | 162 | /*! Key type used in DM_SEC_KEY_IND */ |
| enginerd | 0:b562096246b3 | 163 | #define DM_KEY_LOCAL_LTK 0x01 /*! LTK generated locally for this device */ |
| enginerd | 0:b562096246b3 | 164 | #define DM_KEY_PEER_LTK 0x02 /*! LTK received from peer device */ |
| enginerd | 0:b562096246b3 | 165 | #define DM_KEY_IRK 0x04 /*! IRK and identity info of peer device */ |
| enginerd | 0:b562096246b3 | 166 | #define DM_KEY_CSRK 0x08 /*! CSRK of peer device */ |
| enginerd | 0:b562096246b3 | 167 | |
| enginerd | 0:b562096246b3 | 168 | /*! Base value for HCI error status values for DM_SEC_PAIR_CMPL_IND */ |
| enginerd | 0:b562096246b3 | 169 | #define DM_SEC_HCI_ERR_BASE 0x20 |
| enginerd | 0:b562096246b3 | 170 | |
| enginerd | 0:b562096246b3 | 171 | #define DM_SEC_LEVEL_NONE 0 /*! Connection has no security */ |
| enginerd | 0:b562096246b3 | 172 | #define DM_SEC_LEVEL_ENC 1 /*! Connection is encrypted with unauthenticated key */ |
| enginerd | 0:b562096246b3 | 173 | #define DM_SEC_LEVEL_ENC_AUTH 2 /*! Connection is encrypted with authenticated key */ |
| enginerd | 0:b562096246b3 | 174 | |
| enginerd | 0:b562096246b3 | 175 | /*! Random address types */ |
| enginerd | 0:b562096246b3 | 176 | #define DM_RAND_ADDR_STATIC 0xC0 /*! Static address */ |
| enginerd | 0:b562096246b3 | 177 | #define DM_RAND_ADDR_RESOLV 0x80 /*! Resolvable private address */ |
| enginerd | 0:b562096246b3 | 178 | #define DM_RAND_ADDR_NONRESOLV 0x00 /*! Non-resolvable private address */ |
| enginerd | 0:b562096246b3 | 179 | |
| enginerd | 0:b562096246b3 | 180 | /*! Get the type of random address */ |
| enginerd | 0:b562096246b3 | 181 | #define DM_RAND_ADDR_GET(addr) ((addr)[5] & 0xC0) |
| enginerd | 0:b562096246b3 | 182 | |
| enginerd | 0:b562096246b3 | 183 | /*! Set the type of random address */ |
| enginerd | 0:b562096246b3 | 184 | #define DM_RAND_ADDR_SET(addr, type) {(addr)[5] = ((addr)[5] & 0x3F) | (type);} |
| enginerd | 0:b562096246b3 | 185 | |
| enginerd | 0:b562096246b3 | 186 | /*! Connection busy/idle state */ |
| enginerd | 0:b562096246b3 | 187 | #define DM_CONN_IDLE 0 /*! Connection is idle */ |
| enginerd | 0:b562096246b3 | 188 | #define DM_CONN_BUSY 1 /*! Connection is busy */ |
| enginerd | 0:b562096246b3 | 189 | |
| enginerd | 0:b562096246b3 | 190 | /*! Connection busy/idle state bitmask */ |
| enginerd | 0:b562096246b3 | 191 | #define DM_IDLE_SMP_PAIR 0x0001 /*! SMP pairing in progress */ |
| enginerd | 0:b562096246b3 | 192 | #define DM_IDLE_DM_ENC 0x0002 /*! DM Encryption setup in progress */ |
| enginerd | 0:b562096246b3 | 193 | #define DM_IDLE_ATTS_DISC 0x0004 /*! ATTS service discovery in progress */ |
| enginerd | 0:b562096246b3 | 194 | #define DM_IDLE_APP_DISC 0x0008 /*! App framework service discovery in progress */ |
| enginerd | 0:b562096246b3 | 195 | #define DM_IDLE_USER_1 0x0010 /*! For use by user application */ |
| enginerd | 0:b562096246b3 | 196 | #define DM_IDLE_USER_2 0x0020 /*! For use by user application */ |
| enginerd | 0:b562096246b3 | 197 | #define DM_IDLE_USER_3 0x0040 /*! For use by user application */ |
| enginerd | 0:b562096246b3 | 198 | #define DM_IDLE_USER_4 0x0080 /*! For use by user application */ |
| enginerd | 0:b562096246b3 | 199 | |
| enginerd | 0:b562096246b3 | 200 | /*! DM callback events */ |
| enginerd | 0:b562096246b3 | 201 | #define DM_CBACK_START 0x20 /*! DM callback event starting value */ |
| enginerd | 0:b562096246b3 | 202 | enum |
| enginerd | 0:b562096246b3 | 203 | { |
| enginerd | 0:b562096246b3 | 204 | DM_RESET_CMPL_IND = DM_CBACK_START, /*! Reset complete */ |
| enginerd | 0:b562096246b3 | 205 | DM_ADV_START_IND, /*! Advertising started */ |
| enginerd | 0:b562096246b3 | 206 | DM_ADV_STOP_IND, /*! Advertising stopped */ |
| enginerd | 0:b562096246b3 | 207 | DM_ADV_NEW_ADDR_IND, /*! New resolvable address has been generated */ |
| enginerd | 0:b562096246b3 | 208 | DM_SCAN_START_IND, /*! Scanning started */ |
| enginerd | 0:b562096246b3 | 209 | DM_SCAN_STOP_IND, /*! Scanning stopped */ |
| enginerd | 0:b562096246b3 | 210 | DM_SCAN_REPORT_IND, /*! Scan data received from peer device */ |
| enginerd | 0:b562096246b3 | 211 | DM_CONN_OPEN_IND, /*! Connection opened */ |
| enginerd | 0:b562096246b3 | 212 | DM_CONN_CLOSE_IND, /*! Connection closed */ |
| enginerd | 0:b562096246b3 | 213 | DM_CONN_UPDATE_IND, /*! Connection update complete */ |
| enginerd | 0:b562096246b3 | 214 | DM_SEC_PAIR_CMPL_IND, /*! Pairing completed successfully */ |
| enginerd | 0:b562096246b3 | 215 | DM_SEC_PAIR_FAIL_IND, /*! Pairing failed or other security failure */ |
| enginerd | 0:b562096246b3 | 216 | DM_SEC_ENCRYPT_IND, /*! Connection encrypted */ |
| enginerd | 0:b562096246b3 | 217 | DM_SEC_ENCRYPT_FAIL_IND, /*! Encryption failed */ |
| enginerd | 0:b562096246b3 | 218 | DM_SEC_AUTH_REQ_IND, /*! PIN or OOB data requested for pairing */ |
| enginerd | 0:b562096246b3 | 219 | DM_SEC_KEY_IND, /*! Security key indication */ |
| enginerd | 0:b562096246b3 | 220 | DM_SEC_LTK_REQ_IND, /*! LTK requested for encyption */ |
| enginerd | 0:b562096246b3 | 221 | DM_SEC_PAIR_IND, /*! Incoming pairing request from master */ |
| enginerd | 0:b562096246b3 | 222 | DM_SEC_SLAVE_REQ_IND, /*! Incoming security request from slave */ |
| enginerd | 0:b562096246b3 | 223 | DM_PRIV_RESOLVED_ADDR_IND, /*! Private address resolved */ |
| enginerd | 0:b562096246b3 | 224 | DM_HW_ERROR_IND, /*! Hardware Error */ |
| enginerd | 0:b562096246b3 | 225 | DM_VENDOR_SPEC_IND, /*! Vendor specific event */ |
| enginerd | 0:b562096246b3 | 226 | }; |
| enginerd | 0:b562096246b3 | 227 | |
| enginerd | 0:b562096246b3 | 228 | #define DM_CBACK_END DM_VENDOR_SPEC_IND /*! DM callback event ending value */ |
| enginerd | 0:b562096246b3 | 229 | |
| enginerd | 0:b562096246b3 | 230 | /************************************************************************************************** |
| enginerd | 0:b562096246b3 | 231 | Data Types |
| enginerd | 0:b562096246b3 | 232 | **************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 233 | |
| enginerd | 0:b562096246b3 | 234 | /*! Connection identifier */ |
| enginerd | 0:b562096246b3 | 235 | typedef uint8_t dmConnId_t; |
| enginerd | 0:b562096246b3 | 236 | |
| enginerd | 0:b562096246b3 | 237 | /*! Configuration structure */ |
| enginerd | 0:b562096246b3 | 238 | typedef struct |
| enginerd | 0:b562096246b3 | 239 | { |
| enginerd | 0:b562096246b3 | 240 | uint8_t dummy; |
| enginerd | 0:b562096246b3 | 241 | } dmCfg_t; |
| enginerd | 0:b562096246b3 | 242 | |
| enginerd | 0:b562096246b3 | 243 | /*! LTK data type */ |
| enginerd | 0:b562096246b3 | 244 | typedef struct |
| enginerd | 0:b562096246b3 | 245 | { |
| enginerd | 0:b562096246b3 | 246 | uint8_t key[SMP_KEY_LEN]; |
| enginerd | 0:b562096246b3 | 247 | uint8_t rand[SMP_RAND8_LEN]; |
| enginerd | 0:b562096246b3 | 248 | uint16_t ediv; |
| enginerd | 0:b562096246b3 | 249 | } dmSecLtk_t; |
| enginerd | 0:b562096246b3 | 250 | |
| enginerd | 0:b562096246b3 | 251 | /*! IRK data type */ |
| enginerd | 0:b562096246b3 | 252 | typedef struct |
| enginerd | 0:b562096246b3 | 253 | { |
| enginerd | 0:b562096246b3 | 254 | uint8_t key[SMP_KEY_LEN]; |
| enginerd | 0:b562096246b3 | 255 | bdAddr_t bdAddr; |
| enginerd | 0:b562096246b3 | 256 | uint8_t addrType; |
| enginerd | 0:b562096246b3 | 257 | } dmSecIrk_t; |
| enginerd | 0:b562096246b3 | 258 | |
| enginerd | 0:b562096246b3 | 259 | /*! CSRK data type */ |
| enginerd | 0:b562096246b3 | 260 | typedef struct |
| enginerd | 0:b562096246b3 | 261 | { |
| enginerd | 0:b562096246b3 | 262 | uint8_t key[SMP_KEY_LEN]; |
| enginerd | 0:b562096246b3 | 263 | } dmSecCsrk_t; |
| enginerd | 0:b562096246b3 | 264 | |
| enginerd | 0:b562096246b3 | 265 | /*! union of key types */ |
| enginerd | 0:b562096246b3 | 266 | typedef union |
| enginerd | 0:b562096246b3 | 267 | { |
| enginerd | 0:b562096246b3 | 268 | dmSecLtk_t ltk; |
| enginerd | 0:b562096246b3 | 269 | dmSecIrk_t irk; |
| enginerd | 0:b562096246b3 | 270 | dmSecCsrk_t csrk; |
| enginerd | 0:b562096246b3 | 271 | } dmSecKey_t; |
| enginerd | 0:b562096246b3 | 272 | |
| enginerd | 0:b562096246b3 | 273 | /*! Data type for DM_SEC_PAIR_CMPL_IND */ |
| enginerd | 0:b562096246b3 | 274 | typedef struct |
| enginerd | 0:b562096246b3 | 275 | { |
| enginerd | 0:b562096246b3 | 276 | wsfMsgHdr_t hdr; /*! Header */ |
| enginerd | 0:b562096246b3 | 277 | uint8_t auth; /*! Authentication and bonding flags */ |
| enginerd | 0:b562096246b3 | 278 | } dmSecPairCmplIndEvt_t; |
| enginerd | 0:b562096246b3 | 279 | |
| enginerd | 0:b562096246b3 | 280 | /*! Data type for DM_SEC_ENCRYPT_IND */ |
| enginerd | 0:b562096246b3 | 281 | typedef struct |
| enginerd | 0:b562096246b3 | 282 | { |
| enginerd | 0:b562096246b3 | 283 | wsfMsgHdr_t hdr; /*! Header */ |
| enginerd | 0:b562096246b3 | 284 | bool_t usingLtk; /*! TRUE if connection encrypted with LTK */ |
| enginerd | 0:b562096246b3 | 285 | } dmSecEncryptIndEvt_t; |
| enginerd | 0:b562096246b3 | 286 | |
| enginerd | 0:b562096246b3 | 287 | /*! Data type for DM_SEC_AUTH_REQ_IND */ |
| enginerd | 0:b562096246b3 | 288 | typedef struct |
| enginerd | 0:b562096246b3 | 289 | { |
| enginerd | 0:b562096246b3 | 290 | wsfMsgHdr_t hdr; /*! Header */ |
| enginerd | 0:b562096246b3 | 291 | bool_t oob; /*! Out-of-band data requested */ |
| enginerd | 0:b562096246b3 | 292 | bool_t display; /*! TRUE if pin is to be displayed */ |
| enginerd | 0:b562096246b3 | 293 | } dmSecAuthReqIndEvt_t; |
| enginerd | 0:b562096246b3 | 294 | |
| enginerd | 0:b562096246b3 | 295 | /*! Data type for DM_SEC_PAIR_IND */ |
| enginerd | 0:b562096246b3 | 296 | typedef struct |
| enginerd | 0:b562096246b3 | 297 | { |
| enginerd | 0:b562096246b3 | 298 | wsfMsgHdr_t hdr; /*! Header */ |
| enginerd | 0:b562096246b3 | 299 | uint8_t auth; /*! Authentication and bonding flags */ |
| enginerd | 0:b562096246b3 | 300 | bool_t oob; /*! Out-of-band pairing data present or not present */ |
| enginerd | 0:b562096246b3 | 301 | uint8_t iKeyDist; /*! Initiator key distribution flags */ |
| enginerd | 0:b562096246b3 | 302 | uint8_t rKeyDist; /*! Responder key distribution flags */ |
| enginerd | 0:b562096246b3 | 303 | } dmSecPairIndEvt_t; |
| enginerd | 0:b562096246b3 | 304 | |
| enginerd | 0:b562096246b3 | 305 | /*! Data type for DM_SEC_SLAVE_REQ_IND */ |
| enginerd | 0:b562096246b3 | 306 | typedef struct |
| enginerd | 0:b562096246b3 | 307 | { |
| enginerd | 0:b562096246b3 | 308 | wsfMsgHdr_t hdr; /*! Header */ |
| enginerd | 0:b562096246b3 | 309 | uint8_t auth; /*! Authentication and bonding flags */ |
| enginerd | 0:b562096246b3 | 310 | } dmSecSlaveIndEvt_t; |
| enginerd | 0:b562096246b3 | 311 | |
| enginerd | 0:b562096246b3 | 312 | /*! Data type for DM_SEC_KEY_IND */ |
| enginerd | 0:b562096246b3 | 313 | typedef struct |
| enginerd | 0:b562096246b3 | 314 | { |
| enginerd | 0:b562096246b3 | 315 | wsfMsgHdr_t hdr; /*! Header */ |
| enginerd | 0:b562096246b3 | 316 | dmSecKey_t keyData; /*! Key data */ |
| enginerd | 0:b562096246b3 | 317 | uint8_t type; /*! Key type */ |
| enginerd | 0:b562096246b3 | 318 | uint8_t secLevel; /*! Security level of pairing when key was exchanged */ |
| enginerd | 0:b562096246b3 | 319 | uint8_t encKeyLen; /*! Length of encryption key used when data was transferred */ |
| enginerd | 0:b562096246b3 | 320 | } dmSecKeyIndEvt_t; |
| enginerd | 0:b562096246b3 | 321 | |
| enginerd | 0:b562096246b3 | 322 | /*! Data type for DM_ADV_NEW_ADDR_IND */ |
| enginerd | 0:b562096246b3 | 323 | typedef struct |
| enginerd | 0:b562096246b3 | 324 | { |
| enginerd | 0:b562096246b3 | 325 | wsfMsgHdr_t hdr; /*! Header */ |
| enginerd | 0:b562096246b3 | 326 | bdAddr_t addr; /*! New resolvable private address */ |
| enginerd | 0:b562096246b3 | 327 | bool_t firstTime; /*! TRUE when address is generated for the first time */ |
| enginerd | 0:b562096246b3 | 328 | } dmAdvNewAddrIndEvt_t; |
| enginerd | 0:b562096246b3 | 329 | |
| enginerd | 0:b562096246b3 | 330 | /*! Union of DM callback event data types */ |
| enginerd | 0:b562096246b3 | 331 | typedef union |
| enginerd | 0:b562096246b3 | 332 | { |
| enginerd | 0:b562096246b3 | 333 | wsfMsgHdr_t hdr; |
| enginerd | 0:b562096246b3 | 334 | hciLeAdvReportEvt_t scanReport; |
| enginerd | 0:b562096246b3 | 335 | hciLeConnCmplEvt_t connOpen; |
| enginerd | 0:b562096246b3 | 336 | hciLeConnUpdateCmplEvt_t connUpdate; |
| enginerd | 0:b562096246b3 | 337 | hciDisconnectCmplEvt_t connClose; |
| enginerd | 0:b562096246b3 | 338 | dmSecPairCmplIndEvt_t pairCmpl; |
| enginerd | 0:b562096246b3 | 339 | dmSecEncryptIndEvt_t encryptInd; |
| enginerd | 0:b562096246b3 | 340 | dmSecAuthReqIndEvt_t authReq; |
| enginerd | 0:b562096246b3 | 341 | dmSecPairIndEvt_t pairInd; |
| enginerd | 0:b562096246b3 | 342 | dmSecSlaveIndEvt_t slaveInd; |
| enginerd | 0:b562096246b3 | 343 | dmSecKeyIndEvt_t keyInd; |
| enginerd | 0:b562096246b3 | 344 | hciLeLtkReqEvt_t ltkReqInd; |
| enginerd | 0:b562096246b3 | 345 | hciVendorSpecEvt_t vendorSpec; |
| enginerd | 0:b562096246b3 | 346 | dmAdvNewAddrIndEvt_t advNewAddr; |
| enginerd | 0:b562096246b3 | 347 | } dmEvt_t; |
| enginerd | 0:b562096246b3 | 348 | |
| enginerd | 0:b562096246b3 | 349 | /*! Callback type */ |
| enginerd | 0:b562096246b3 | 350 | typedef void (*dmCback_t)(dmEvt_t *pDmEvt); |
| enginerd | 0:b562096246b3 | 351 | |
| enginerd | 0:b562096246b3 | 352 | /************************************************************************************************** |
| enginerd | 0:b562096246b3 | 353 | Function Declarations |
| enginerd | 0:b562096246b3 | 354 | **************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 355 | |
| enginerd | 0:b562096246b3 | 356 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 357 | /*! |
| enginerd | 0:b562096246b3 | 358 | * \fn DmRegister |
| enginerd | 0:b562096246b3 | 359 | * |
| enginerd | 0:b562096246b3 | 360 | * \brief Register a callback with DM for scan and advertising events. |
| enginerd | 0:b562096246b3 | 361 | * |
| enginerd | 0:b562096246b3 | 362 | * \param cback Client callback function. |
| enginerd | 0:b562096246b3 | 363 | * |
| enginerd | 0:b562096246b3 | 364 | * \return None. |
| enginerd | 0:b562096246b3 | 365 | */ |
| enginerd | 0:b562096246b3 | 366 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 367 | void DmRegister(dmCback_t cback); |
| enginerd | 0:b562096246b3 | 368 | |
| enginerd | 0:b562096246b3 | 369 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 370 | /*! |
| enginerd | 0:b562096246b3 | 371 | * \fn DmFindAdType |
| enginerd | 0:b562096246b3 | 372 | * |
| enginerd | 0:b562096246b3 | 373 | * \brief Find an advertising data element in the given advertising or scan response data. |
| enginerd | 0:b562096246b3 | 374 | * |
| enginerd | 0:b562096246b3 | 375 | * \param adType Advertising data element type to find. |
| enginerd | 0:b562096246b3 | 376 | * \param dataLen Data length. |
| enginerd | 0:b562096246b3 | 377 | * \param pData Pointer to advertising or scan response data. |
| enginerd | 0:b562096246b3 | 378 | * |
| enginerd | 0:b562096246b3 | 379 | * \return Pointer to the advertising data element byte array or NULL if not found. |
| enginerd | 0:b562096246b3 | 380 | */ |
| enginerd | 0:b562096246b3 | 381 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 382 | uint8_t *DmFindAdType(uint8_t adType, uint8_t dataLen, uint8_t *pData); |
| enginerd | 0:b562096246b3 | 383 | |
| enginerd | 0:b562096246b3 | 384 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 385 | /*! |
| enginerd | 0:b562096246b3 | 386 | * \fn DmAdvInit |
| enginerd | 0:b562096246b3 | 387 | * |
| enginerd | 0:b562096246b3 | 388 | * \brief Initialize DM advertising. |
| enginerd | 0:b562096246b3 | 389 | * |
| enginerd | 0:b562096246b3 | 390 | * \return None. |
| enginerd | 0:b562096246b3 | 391 | */ |
| enginerd | 0:b562096246b3 | 392 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 393 | void DmAdvInit(void); |
| enginerd | 0:b562096246b3 | 394 | |
| enginerd | 0:b562096246b3 | 395 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 396 | /*! |
| enginerd | 0:b562096246b3 | 397 | * \fn DmAdvStart |
| enginerd | 0:b562096246b3 | 398 | * |
| enginerd | 0:b562096246b3 | 399 | * \brief Start advertising using the given advertising type and duration. |
| enginerd | 0:b562096246b3 | 400 | * |
| enginerd | 0:b562096246b3 | 401 | * \param advType Advertising type. |
| enginerd | 0:b562096246b3 | 402 | * \param duration The advertising duration, in milliseconds. |
| enginerd | 0:b562096246b3 | 403 | * |
| enginerd | 0:b562096246b3 | 404 | * \return None. |
| enginerd | 0:b562096246b3 | 405 | */ |
| enginerd | 0:b562096246b3 | 406 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 407 | void DmAdvStart(uint8_t advType, uint16_t duration); |
| enginerd | 0:b562096246b3 | 408 | |
| enginerd | 0:b562096246b3 | 409 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 410 | /*! |
| enginerd | 0:b562096246b3 | 411 | * \fn DmAdvStop |
| enginerd | 0:b562096246b3 | 412 | * |
| enginerd | 0:b562096246b3 | 413 | * \brief Stop advertising. |
| enginerd | 0:b562096246b3 | 414 | * |
| enginerd | 0:b562096246b3 | 415 | * \return None. |
| enginerd | 0:b562096246b3 | 416 | */ |
| enginerd | 0:b562096246b3 | 417 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 418 | void DmAdvStop(void); |
| enginerd | 0:b562096246b3 | 419 | |
| enginerd | 0:b562096246b3 | 420 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 421 | /*! |
| enginerd | 0:b562096246b3 | 422 | * \fn DmAdvSetInterval |
| enginerd | 0:b562096246b3 | 423 | * |
| enginerd | 0:b562096246b3 | 424 | * \brief Set the minimum and maximum advertising intervals. |
| enginerd | 0:b562096246b3 | 425 | * |
| enginerd | 0:b562096246b3 | 426 | * \param intervalMin Minimum advertising interval. |
| enginerd | 0:b562096246b3 | 427 | * \param intervalMax Maximum advertising interval. |
| enginerd | 0:b562096246b3 | 428 | * |
| enginerd | 0:b562096246b3 | 429 | * \return None. |
| enginerd | 0:b562096246b3 | 430 | */ |
| enginerd | 0:b562096246b3 | 431 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 432 | void DmAdvSetInterval(uint16_t intervalMin, uint16_t intervalMax); |
| enginerd | 0:b562096246b3 | 433 | |
| enginerd | 0:b562096246b3 | 434 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 435 | /*! |
| enginerd | 0:b562096246b3 | 436 | * \fn DmAdvSetChannelMap |
| enginerd | 0:b562096246b3 | 437 | * |
| enginerd | 0:b562096246b3 | 438 | * \brief Include or exclude certain channels from the advertising channel map. |
| enginerd | 0:b562096246b3 | 439 | * |
| enginerd | 0:b562096246b3 | 440 | * \param channelMap Advertising channel map. |
| enginerd | 0:b562096246b3 | 441 | * |
| enginerd | 0:b562096246b3 | 442 | * \return None. |
| enginerd | 0:b562096246b3 | 443 | */ |
| enginerd | 0:b562096246b3 | 444 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 445 | void DmAdvSetChannelMap(uint8_t channelMap); |
| enginerd | 0:b562096246b3 | 446 | |
| enginerd | 0:b562096246b3 | 447 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 448 | /*! |
| enginerd | 0:b562096246b3 | 449 | * \fn DmAdvSetData |
| enginerd | 0:b562096246b3 | 450 | * |
| enginerd | 0:b562096246b3 | 451 | * \brief Set the advertising or scan response data to the given data. |
| enginerd | 0:b562096246b3 | 452 | * |
| enginerd | 0:b562096246b3 | 453 | * \param location Data location. |
| enginerd | 0:b562096246b3 | 454 | * \param len Length of the data. Maximum length is 31 bytes. |
| enginerd | 0:b562096246b3 | 455 | * \param pData Pointer to the data. |
| enginerd | 0:b562096246b3 | 456 | * |
| enginerd | 0:b562096246b3 | 457 | * \return None. |
| enginerd | 0:b562096246b3 | 458 | */ |
| enginerd | 0:b562096246b3 | 459 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 460 | void DmAdvSetData(uint8_t location, uint8_t len, uint8_t *pData); |
| enginerd | 0:b562096246b3 | 461 | |
| enginerd | 0:b562096246b3 | 462 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 463 | /*! |
| enginerd | 0:b562096246b3 | 464 | * \fn DmAdvSetAddrType |
| enginerd | 0:b562096246b3 | 465 | * |
| enginerd | 0:b562096246b3 | 466 | * \brief Set the local address type used while advertising. This function can be used to |
| enginerd | 0:b562096246b3 | 467 | * configure advertising to use a random address. |
| enginerd | 0:b562096246b3 | 468 | * |
| enginerd | 0:b562096246b3 | 469 | * \param addrType Address type. |
| enginerd | 0:b562096246b3 | 470 | * |
| enginerd | 0:b562096246b3 | 471 | * \return None. |
| enginerd | 0:b562096246b3 | 472 | */ |
| enginerd | 0:b562096246b3 | 473 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 474 | void DmAdvSetAddrType(uint8_t addrType); |
| enginerd | 0:b562096246b3 | 475 | |
| enginerd | 0:b562096246b3 | 476 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 477 | /*! |
| enginerd | 0:b562096246b3 | 478 | * \fn DmAdvSetAdValue |
| enginerd | 0:b562096246b3 | 479 | * |
| enginerd | 0:b562096246b3 | 480 | * \brief Set the value of an advertising data element in the given advertising or |
| enginerd | 0:b562096246b3 | 481 | * scan response data. If the element already exists in the data then it is replaced |
| enginerd | 0:b562096246b3 | 482 | * with the new value. If the element does not exist in the data it is appended |
| enginerd | 0:b562096246b3 | 483 | * to it, space permitting. |
| enginerd | 0:b562096246b3 | 484 | * |
| enginerd | 0:b562096246b3 | 485 | * \param adType Advertising data element type. |
| enginerd | 0:b562096246b3 | 486 | * \param len Length of the value. Maximum length is 29 bytes. |
| enginerd | 0:b562096246b3 | 487 | * \param pValue Pointer to the value. |
| enginerd | 0:b562096246b3 | 488 | * \param pAdvDataLen Advertising or scan response data length. The new length is returned |
| enginerd | 0:b562096246b3 | 489 | * in this parameter. |
| enginerd | 0:b562096246b3 | 490 | * \param pAdvData Pointer to advertising or scan response data. |
| enginerd | 0:b562096246b3 | 491 | * |
| enginerd | 0:b562096246b3 | 492 | * \return TRUE if the element was successfully added to the data, FALSE otherwise. |
| enginerd | 0:b562096246b3 | 493 | */ |
| enginerd | 0:b562096246b3 | 494 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 495 | bool_t DmAdvSetAdValue(uint8_t adType, uint8_t len, uint8_t *pValue, uint8_t *pAdvDataLen, |
| enginerd | 0:b562096246b3 | 496 | uint8_t *pAdvData); |
| enginerd | 0:b562096246b3 | 497 | |
| enginerd | 0:b562096246b3 | 498 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 499 | /*! |
| enginerd | 0:b562096246b3 | 500 | * \fn DmAdvSetName |
| enginerd | 0:b562096246b3 | 501 | * |
| enginerd | 0:b562096246b3 | 502 | * \brief Set the device name in the given advertising or scan response data. If the |
| enginerd | 0:b562096246b3 | 503 | * name can only fit in the data if it is shortened, the name is shortened |
| enginerd | 0:b562096246b3 | 504 | * and the AD type is changed to DM_ADV_TYPE_SHORT_NAME. |
| enginerd | 0:b562096246b3 | 505 | * |
| enginerd | 0:b562096246b3 | 506 | * \param len Length of the name. Maximum length is 29 bytes. |
| enginerd | 0:b562096246b3 | 507 | * \param pValue Pointer to the name in UTF-8 format. |
| enginerd | 0:b562096246b3 | 508 | * \param pAdvDataLen Advertising or scan response data length. The new length is returned |
| enginerd | 0:b562096246b3 | 509 | * in this parameter. |
| enginerd | 0:b562096246b3 | 510 | * \param pAdvData Pointer to advertising or scan response data. |
| enginerd | 0:b562096246b3 | 511 | * |
| enginerd | 0:b562096246b3 | 512 | * \return TRUE if the element was successfully added to the data, FALSE otherwise. |
| enginerd | 0:b562096246b3 | 513 | */ |
| enginerd | 0:b562096246b3 | 514 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 515 | bool_t DmAdvSetName(uint8_t len, uint8_t *pValue, uint8_t *pAdvDataLen, uint8_t *pAdvData); |
| enginerd | 0:b562096246b3 | 516 | |
| enginerd | 0:b562096246b3 | 517 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 518 | /*! |
| enginerd | 0:b562096246b3 | 519 | * \fn DmAdvPrivInit |
| enginerd | 0:b562096246b3 | 520 | * |
| enginerd | 0:b562096246b3 | 521 | * \brief Initialize private advertising. |
| enginerd | 0:b562096246b3 | 522 | * |
| enginerd | 0:b562096246b3 | 523 | * \return None. |
| enginerd | 0:b562096246b3 | 524 | */ |
| enginerd | 0:b562096246b3 | 525 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 526 | void DmAdvPrivInit(void); |
| enginerd | 0:b562096246b3 | 527 | |
| enginerd | 0:b562096246b3 | 528 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 529 | /*! |
| enginerd | 0:b562096246b3 | 530 | * \fn DmAdvPrivStart |
| enginerd | 0:b562096246b3 | 531 | * |
| enginerd | 0:b562096246b3 | 532 | * \brief Start using a private resolvable address. |
| enginerd | 0:b562096246b3 | 533 | * |
| enginerd | 0:b562096246b3 | 534 | * \param changeInterval Interval between automatic address changes, in seconds. |
| enginerd | 0:b562096246b3 | 535 | * |
| enginerd | 0:b562096246b3 | 536 | * \return None. |
| enginerd | 0:b562096246b3 | 537 | */ |
| enginerd | 0:b562096246b3 | 538 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 539 | void DmAdvPrivStart(uint16_t changeInterval); |
| enginerd | 0:b562096246b3 | 540 | |
| enginerd | 0:b562096246b3 | 541 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 542 | /*! |
| enginerd | 0:b562096246b3 | 543 | * \fn DmAdvPrivStop |
| enginerd | 0:b562096246b3 | 544 | * |
| enginerd | 0:b562096246b3 | 545 | * \brief Stop using a private resolvable address. |
| enginerd | 0:b562096246b3 | 546 | * |
| enginerd | 0:b562096246b3 | 547 | * \return None. |
| enginerd | 0:b562096246b3 | 548 | */ |
| enginerd | 0:b562096246b3 | 549 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 550 | void DmAdvPrivStop(void); |
| enginerd | 0:b562096246b3 | 551 | |
| enginerd | 0:b562096246b3 | 552 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 553 | /*! |
| enginerd | 0:b562096246b3 | 554 | * \fn DmScanInit |
| enginerd | 0:b562096246b3 | 555 | * |
| enginerd | 0:b562096246b3 | 556 | * \brief Initialize DM scanning. |
| enginerd | 0:b562096246b3 | 557 | * |
| enginerd | 0:b562096246b3 | 558 | * \return None. |
| enginerd | 0:b562096246b3 | 559 | */ |
| enginerd | 0:b562096246b3 | 560 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 561 | void DmScanInit(void); |
| enginerd | 0:b562096246b3 | 562 | |
| enginerd | 0:b562096246b3 | 563 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 564 | /*! |
| enginerd | 0:b562096246b3 | 565 | * \fn DmScanStart |
| enginerd | 0:b562096246b3 | 566 | * |
| enginerd | 0:b562096246b3 | 567 | * \brief Start scanning. |
| enginerd | 0:b562096246b3 | 568 | * |
| enginerd | 0:b562096246b3 | 569 | * \param mode Discoverability mode. |
| enginerd | 0:b562096246b3 | 570 | * \param scanType Scan type. |
| enginerd | 0:b562096246b3 | 571 | * \param filterDup Filter duplicates. Set to TRUE to filter duplicate responses received |
| enginerd | 0:b562096246b3 | 572 | * from the same device. Set to FALSE to receive all responses. |
| enginerd | 0:b562096246b3 | 573 | * \param duration The scan duration, in milliseconds. If set to zero, scanning will |
| enginerd | 0:b562096246b3 | 574 | * continue until DmScanStop() is called. |
| enginerd | 0:b562096246b3 | 575 | * |
| enginerd | 0:b562096246b3 | 576 | * \return None. |
| enginerd | 0:b562096246b3 | 577 | */ |
| enginerd | 0:b562096246b3 | 578 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 579 | void DmScanStart(uint8_t mode, uint8_t scanType, bool_t filterDup, uint16_t duration); |
| enginerd | 0:b562096246b3 | 580 | |
| enginerd | 0:b562096246b3 | 581 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 582 | /*! |
| enginerd | 0:b562096246b3 | 583 | * \fn DmScanStop |
| enginerd | 0:b562096246b3 | 584 | * |
| enginerd | 0:b562096246b3 | 585 | * \brief Stop scanning. |
| enginerd | 0:b562096246b3 | 586 | * |
| enginerd | 0:b562096246b3 | 587 | * \return None. |
| enginerd | 0:b562096246b3 | 588 | */ |
| enginerd | 0:b562096246b3 | 589 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 590 | void DmScanStop(void); |
| enginerd | 0:b562096246b3 | 591 | |
| enginerd | 0:b562096246b3 | 592 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 593 | /*! |
| enginerd | 0:b562096246b3 | 594 | * \fn DmScanSetInterval |
| enginerd | 0:b562096246b3 | 595 | * |
| enginerd | 0:b562096246b3 | 596 | * \brief Set the scan interval and window. |
| enginerd | 0:b562096246b3 | 597 | * |
| enginerd | 0:b562096246b3 | 598 | * \param scanInterval The scan interval. |
| enginerd | 0:b562096246b3 | 599 | * \param scanWindow The scan window. |
| enginerd | 0:b562096246b3 | 600 | * |
| enginerd | 0:b562096246b3 | 601 | * \return None. |
| enginerd | 0:b562096246b3 | 602 | */ |
| enginerd | 0:b562096246b3 | 603 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 604 | void DmScanSetInterval(uint16_t scanInterval, uint16_t scanWindow); |
| enginerd | 0:b562096246b3 | 605 | |
| enginerd | 0:b562096246b3 | 606 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 607 | /*! |
| enginerd | 0:b562096246b3 | 608 | * \fn DmScanSetAddrType |
| enginerd | 0:b562096246b3 | 609 | * |
| enginerd | 0:b562096246b3 | 610 | * \brief Set the local address type used while scanning. This function can be used to |
| enginerd | 0:b562096246b3 | 611 | * configure scanning to use a random address. |
| enginerd | 0:b562096246b3 | 612 | * |
| enginerd | 0:b562096246b3 | 613 | * \param addrType Address type. |
| enginerd | 0:b562096246b3 | 614 | * |
| enginerd | 0:b562096246b3 | 615 | * \return None. |
| enginerd | 0:b562096246b3 | 616 | */ |
| enginerd | 0:b562096246b3 | 617 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 618 | void DmScanSetAddrType(uint8_t addrType); |
| enginerd | 0:b562096246b3 | 619 | |
| enginerd | 0:b562096246b3 | 620 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 621 | /*! |
| enginerd | 0:b562096246b3 | 622 | * \fn DmConnInit |
| enginerd | 0:b562096246b3 | 623 | * |
| enginerd | 0:b562096246b3 | 624 | * \brief Initialize DM connection manager. |
| enginerd | 0:b562096246b3 | 625 | * |
| enginerd | 0:b562096246b3 | 626 | * \return None. |
| enginerd | 0:b562096246b3 | 627 | */ |
| enginerd | 0:b562096246b3 | 628 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 629 | void DmConnInit(void); |
| enginerd | 0:b562096246b3 | 630 | |
| enginerd | 0:b562096246b3 | 631 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 632 | /*! |
| enginerd | 0:b562096246b3 | 633 | * \fn DmConnMasterInit |
| enginerd | 0:b562096246b3 | 634 | * |
| enginerd | 0:b562096246b3 | 635 | * \brief Initialize DM connection manager for operation as master. |
| enginerd | 0:b562096246b3 | 636 | * |
| enginerd | 0:b562096246b3 | 637 | * \return None. |
| enginerd | 0:b562096246b3 | 638 | */ |
| enginerd | 0:b562096246b3 | 639 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 640 | void DmConnMasterInit(void); |
| enginerd | 0:b562096246b3 | 641 | |
| enginerd | 0:b562096246b3 | 642 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 643 | /*! |
| enginerd | 0:b562096246b3 | 644 | * \fn DmConnSlaveInit |
| enginerd | 0:b562096246b3 | 645 | * |
| enginerd | 0:b562096246b3 | 646 | * \brief Initialize DM connection manager for operation as slave. |
| enginerd | 0:b562096246b3 | 647 | * |
| enginerd | 0:b562096246b3 | 648 | * \return None. |
| enginerd | 0:b562096246b3 | 649 | */ |
| enginerd | 0:b562096246b3 | 650 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 651 | void DmConnSlaveInit(void); |
| enginerd | 0:b562096246b3 | 652 | |
| enginerd | 0:b562096246b3 | 653 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 654 | /*! |
| enginerd | 0:b562096246b3 | 655 | * \fn DmConnRegister |
| enginerd | 0:b562096246b3 | 656 | * |
| enginerd | 0:b562096246b3 | 657 | * \brief Register with the DM connection manager. |
| enginerd | 0:b562096246b3 | 658 | * |
| enginerd | 0:b562096246b3 | 659 | * \param clientId The client identifier. |
| enginerd | 0:b562096246b3 | 660 | * \param cback Client callback function. |
| enginerd | 0:b562096246b3 | 661 | * |
| enginerd | 0:b562096246b3 | 662 | * \return None. |
| enginerd | 0:b562096246b3 | 663 | */ |
| enginerd | 0:b562096246b3 | 664 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 665 | void DmConnRegister(uint8_t clientId, dmCback_t cback); |
| enginerd | 0:b562096246b3 | 666 | |
| enginerd | 0:b562096246b3 | 667 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 668 | /*! |
| enginerd | 0:b562096246b3 | 669 | * \fn DmConnOpen |
| enginerd | 0:b562096246b3 | 670 | * |
| enginerd | 0:b562096246b3 | 671 | * \brief Open a connection to a peer device with the given address. |
| enginerd | 0:b562096246b3 | 672 | * |
| enginerd | 0:b562096246b3 | 673 | * \param clientId The client identifier. |
| enginerd | 0:b562096246b3 | 674 | * \param addrType Address type. |
| enginerd | 0:b562096246b3 | 675 | * \param pAddr Peer device address. |
| enginerd | 0:b562096246b3 | 676 | * |
| enginerd | 0:b562096246b3 | 677 | * \return Connection identifier. |
| enginerd | 0:b562096246b3 | 678 | */ |
| enginerd | 0:b562096246b3 | 679 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 680 | dmConnId_t DmConnOpen(uint8_t clientId, uint8_t addrType, uint8_t *pAddr); |
| enginerd | 0:b562096246b3 | 681 | |
| enginerd | 0:b562096246b3 | 682 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 683 | /*! |
| enginerd | 0:b562096246b3 | 684 | * \fn DmConnClose |
| enginerd | 0:b562096246b3 | 685 | * |
| enginerd | 0:b562096246b3 | 686 | * \brief Close the connection with the give connection identifier. |
| enginerd | 0:b562096246b3 | 687 | * |
| enginerd | 0:b562096246b3 | 688 | * \param clientId The client identifier. |
| enginerd | 0:b562096246b3 | 689 | * \param connId Connection identifier. |
| enginerd | 0:b562096246b3 | 690 | * \param reason Reason connection is being closed. |
| enginerd | 0:b562096246b3 | 691 | * |
| enginerd | 0:b562096246b3 | 692 | * \return None. |
| enginerd | 0:b562096246b3 | 693 | */ |
| enginerd | 0:b562096246b3 | 694 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 695 | void DmConnClose(uint8_t clientId, dmConnId_t connId, uint8_t reason); |
| enginerd | 0:b562096246b3 | 696 | |
| enginerd | 0:b562096246b3 | 697 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 698 | /*! |
| enginerd | 0:b562096246b3 | 699 | * \fn DmConnAccept |
| enginerd | 0:b562096246b3 | 700 | * |
| enginerd | 0:b562096246b3 | 701 | * \brief Accept a connection from the given peer device by initiating directed advertising. |
| enginerd | 0:b562096246b3 | 702 | * |
| enginerd | 0:b562096246b3 | 703 | * \param clientId The client identifier. |
| enginerd | 0:b562096246b3 | 704 | * \param addrType Address type. |
| enginerd | 0:b562096246b3 | 705 | * \param pAddr Peer device address. |
| enginerd | 0:b562096246b3 | 706 | * |
| enginerd | 0:b562096246b3 | 707 | * \return Connection identifier. |
| enginerd | 0:b562096246b3 | 708 | */ |
| enginerd | 0:b562096246b3 | 709 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 710 | dmConnId_t DmConnAccept(uint8_t clientId, uint8_t addrType, uint8_t *pAddr); |
| enginerd | 0:b562096246b3 | 711 | |
| enginerd | 0:b562096246b3 | 712 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 713 | /*! |
| enginerd | 0:b562096246b3 | 714 | * \fn DmConnUpdate |
| enginerd | 0:b562096246b3 | 715 | * |
| enginerd | 0:b562096246b3 | 716 | * \brief Update the connection parameters of an open connection |
| enginerd | 0:b562096246b3 | 717 | * |
| enginerd | 0:b562096246b3 | 718 | * \param connId Connection identifier. |
| enginerd | 0:b562096246b3 | 719 | * \param pConnSpec Connection specification. |
| enginerd | 0:b562096246b3 | 720 | * |
| enginerd | 0:b562096246b3 | 721 | * \return None. |
| enginerd | 0:b562096246b3 | 722 | */ |
| enginerd | 0:b562096246b3 | 723 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 724 | void DmConnUpdate(dmConnId_t connId, hciConnSpec_t *pConnSpec); |
| enginerd | 0:b562096246b3 | 725 | |
| enginerd | 0:b562096246b3 | 726 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 727 | /*! |
| enginerd | 0:b562096246b3 | 728 | * \fn DmConnSetScanInterval |
| enginerd | 0:b562096246b3 | 729 | * |
| enginerd | 0:b562096246b3 | 730 | * \brief Set the scan interval and window for created connections created with DmConnOpen(). |
| enginerd | 0:b562096246b3 | 731 | * |
| enginerd | 0:b562096246b3 | 732 | * \param scanInterval The scan interval. |
| enginerd | 0:b562096246b3 | 733 | * \param scanWindow The scan window. |
| enginerd | 0:b562096246b3 | 734 | * |
| enginerd | 0:b562096246b3 | 735 | * \return None. |
| enginerd | 0:b562096246b3 | 736 | */ |
| enginerd | 0:b562096246b3 | 737 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 738 | void DmConnSetScanInterval(uint16_t scanInterval, uint16_t scanWindow); |
| enginerd | 0:b562096246b3 | 739 | |
| enginerd | 0:b562096246b3 | 740 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 741 | /*! |
| enginerd | 0:b562096246b3 | 742 | * \fn DmConnSetConnSpec |
| enginerd | 0:b562096246b3 | 743 | * |
| enginerd | 0:b562096246b3 | 744 | * \brief Set the connection specification parameters for connections created with DmConnOpen(). |
| enginerd | 0:b562096246b3 | 745 | * |
| enginerd | 0:b562096246b3 | 746 | * \param pConnSpec Connection spec parameters. |
| enginerd | 0:b562096246b3 | 747 | * |
| enginerd | 0:b562096246b3 | 748 | * \return None. |
| enginerd | 0:b562096246b3 | 749 | */ |
| enginerd | 0:b562096246b3 | 750 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 751 | void DmConnSetConnSpec(hciConnSpec_t *pConnSpec); |
| enginerd | 0:b562096246b3 | 752 | |
| enginerd | 0:b562096246b3 | 753 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 754 | /*! |
| enginerd | 0:b562096246b3 | 755 | * \fn DmConnSetAddrType |
| enginerd | 0:b562096246b3 | 756 | * |
| enginerd | 0:b562096246b3 | 757 | * \brief Set the local address type used for connections created with DmConnOpen(). |
| enginerd | 0:b562096246b3 | 758 | * |
| enginerd | 0:b562096246b3 | 759 | * \param addrType Address type. |
| enginerd | 0:b562096246b3 | 760 | * |
| enginerd | 0:b562096246b3 | 761 | * \return None. |
| enginerd | 0:b562096246b3 | 762 | */ |
| enginerd | 0:b562096246b3 | 763 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 764 | void DmConnSetAddrType(uint8_t addrType); |
| enginerd | 0:b562096246b3 | 765 | |
| enginerd | 0:b562096246b3 | 766 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 767 | /*! |
| enginerd | 0:b562096246b3 | 768 | * \fn DmConnSetIdle |
| enginerd | 0:b562096246b3 | 769 | * |
| enginerd | 0:b562096246b3 | 770 | * \brief Configure a bit in the connection idle state mask as busy or idle. |
| enginerd | 0:b562096246b3 | 771 | * |
| enginerd | 0:b562096246b3 | 772 | * \param connId Connection identifier. |
| enginerd | 0:b562096246b3 | 773 | * \param idleMask Bit in the idle state mask to configure. |
| enginerd | 0:b562096246b3 | 774 | * \param idle DM_CONN_BUSY or DM_CONN_IDLE. |
| enginerd | 0:b562096246b3 | 775 | * |
| enginerd | 0:b562096246b3 | 776 | * \return None. |
| enginerd | 0:b562096246b3 | 777 | */ |
| enginerd | 0:b562096246b3 | 778 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 779 | void DmConnSetIdle(dmConnId_t connId, uint16_t idleMask, uint8_t idle); |
| enginerd | 0:b562096246b3 | 780 | |
| enginerd | 0:b562096246b3 | 781 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 782 | /*! |
| enginerd | 0:b562096246b3 | 783 | * \fn DmConnCheckIdle |
| enginerd | 0:b562096246b3 | 784 | * |
| enginerd | 0:b562096246b3 | 785 | * \brief Check if a connection is idle. |
| enginerd | 0:b562096246b3 | 786 | * |
| enginerd | 0:b562096246b3 | 787 | * \param connId Connection identifier. |
| enginerd | 0:b562096246b3 | 788 | * |
| enginerd | 0:b562096246b3 | 789 | * \return Zero if connection is idle, nonzero if busy. |
| enginerd | 0:b562096246b3 | 790 | */ |
| enginerd | 0:b562096246b3 | 791 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 792 | uint16_t DmConnCheckIdle(dmConnId_t connId); |
| enginerd | 0:b562096246b3 | 793 | |
| enginerd | 0:b562096246b3 | 794 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 795 | /*! |
| enginerd | 0:b562096246b3 | 796 | * \fn DmDevReset |
| enginerd | 0:b562096246b3 | 797 | * |
| enginerd | 0:b562096246b3 | 798 | * \brief Reset the device. |
| enginerd | 0:b562096246b3 | 799 | * |
| enginerd | 0:b562096246b3 | 800 | * \return None. |
| enginerd | 0:b562096246b3 | 801 | */ |
| enginerd | 0:b562096246b3 | 802 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 803 | void DmDevReset(void); |
| enginerd | 0:b562096246b3 | 804 | |
| enginerd | 0:b562096246b3 | 805 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 806 | /*! |
| enginerd | 0:b562096246b3 | 807 | * \fn DmDevRole |
| enginerd | 0:b562096246b3 | 808 | * |
| enginerd | 0:b562096246b3 | 809 | * \brief Return the device role indicating master or slave. |
| enginerd | 0:b562096246b3 | 810 | * |
| enginerd | 0:b562096246b3 | 811 | * \return Device role. |
| enginerd | 0:b562096246b3 | 812 | */ |
| enginerd | 0:b562096246b3 | 813 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 814 | uint8_t DmDevRole(void); |
| enginerd | 0:b562096246b3 | 815 | |
| enginerd | 0:b562096246b3 | 816 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 817 | /*! |
| enginerd | 0:b562096246b3 | 818 | * \fn DmDevSetRandAddr |
| enginerd | 0:b562096246b3 | 819 | * |
| enginerd | 0:b562096246b3 | 820 | * \brief Set the random address to be used by the local device. |
| enginerd | 0:b562096246b3 | 821 | * |
| enginerd | 0:b562096246b3 | 822 | * \param pAddr Random address. |
| enginerd | 0:b562096246b3 | 823 | * |
| enginerd | 0:b562096246b3 | 824 | * \return None. |
| enginerd | 0:b562096246b3 | 825 | */ |
| enginerd | 0:b562096246b3 | 826 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 827 | void DmDevSetRandAddr(uint8_t *pAddr); |
| enginerd | 0:b562096246b3 | 828 | |
| enginerd | 0:b562096246b3 | 829 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 830 | /*! |
| enginerd | 0:b562096246b3 | 831 | * \fn DmDevWhiteListAdd |
| enginerd | 0:b562096246b3 | 832 | * |
| enginerd | 0:b562096246b3 | 833 | * \brief Add a peer device to the white list. Note that this function cannot be called |
| enginerd | 0:b562096246b3 | 834 | * while advertising, scanning, or connecting with white list filtering active. |
| enginerd | 0:b562096246b3 | 835 | * |
| enginerd | 0:b562096246b3 | 836 | * \param addrType Address type. |
| enginerd | 0:b562096246b3 | 837 | * \param pAddr Peer device address. |
| enginerd | 0:b562096246b3 | 838 | * |
| enginerd | 0:b562096246b3 | 839 | * \return None. |
| enginerd | 0:b562096246b3 | 840 | */ |
| enginerd | 0:b562096246b3 | 841 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 842 | void DmDevWhiteListAdd(uint8_t addrType, uint8_t *pAddr); |
| enginerd | 0:b562096246b3 | 843 | |
| enginerd | 0:b562096246b3 | 844 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 845 | /*! |
| enginerd | 0:b562096246b3 | 846 | * \fn DmDevWhiteListRemove |
| enginerd | 0:b562096246b3 | 847 | * |
| enginerd | 0:b562096246b3 | 848 | * \brief Remove a peer device from the white list. Note that this function cannot be called |
| enginerd | 0:b562096246b3 | 849 | * while advertising, scanning, or connecting with white list filtering active. |
| enginerd | 0:b562096246b3 | 850 | * |
| enginerd | 0:b562096246b3 | 851 | * \param addrType Address type. |
| enginerd | 0:b562096246b3 | 852 | * \param pAddr Peer device address. |
| enginerd | 0:b562096246b3 | 853 | * |
| enginerd | 0:b562096246b3 | 854 | * \return None. |
| enginerd | 0:b562096246b3 | 855 | */ |
| enginerd | 0:b562096246b3 | 856 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 857 | void DmDevWhiteListRemove(uint8_t addrType, uint8_t *pAddr); |
| enginerd | 0:b562096246b3 | 858 | |
| enginerd | 0:b562096246b3 | 859 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 860 | /*! |
| enginerd | 0:b562096246b3 | 861 | * \fn DmDevWhiteListClear |
| enginerd | 0:b562096246b3 | 862 | * |
| enginerd | 0:b562096246b3 | 863 | * \brief Clear the white list. Note that this function cannot be called while |
| enginerd | 0:b562096246b3 | 864 | * advertising, scanning, or connecting with white list filtering active. |
| enginerd | 0:b562096246b3 | 865 | * |
| enginerd | 0:b562096246b3 | 866 | * \return None. |
| enginerd | 0:b562096246b3 | 867 | */ |
| enginerd | 0:b562096246b3 | 868 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 869 | void DmDevWhiteListClear(void); |
| enginerd | 0:b562096246b3 | 870 | |
| enginerd | 0:b562096246b3 | 871 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 872 | /*! |
| enginerd | 0:b562096246b3 | 873 | * \fn DmDevVsInit |
| enginerd | 0:b562096246b3 | 874 | * |
| enginerd | 0:b562096246b3 | 875 | * \brief Vendor-specific controller initialization function. |
| enginerd | 0:b562096246b3 | 876 | * |
| enginerd | 0:b562096246b3 | 877 | * \param param Vendor-specific parameter. |
| enginerd | 0:b562096246b3 | 878 | * |
| enginerd | 0:b562096246b3 | 879 | * \return None. |
| enginerd | 0:b562096246b3 | 880 | */ |
| enginerd | 0:b562096246b3 | 881 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 882 | void DmDevVsInit(uint8_t param); |
| enginerd | 0:b562096246b3 | 883 | |
| enginerd | 0:b562096246b3 | 884 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 885 | /*! |
| enginerd | 0:b562096246b3 | 886 | * \fn DmSecInit |
| enginerd | 0:b562096246b3 | 887 | * |
| enginerd | 0:b562096246b3 | 888 | * \brief Initialize DM security. |
| enginerd | 0:b562096246b3 | 889 | * |
| enginerd | 0:b562096246b3 | 890 | * \return None. |
| enginerd | 0:b562096246b3 | 891 | */ |
| enginerd | 0:b562096246b3 | 892 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 893 | void DmSecInit(void); |
| enginerd | 0:b562096246b3 | 894 | |
| enginerd | 0:b562096246b3 | 895 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 896 | /*! |
| enginerd | 0:b562096246b3 | 897 | * \fn DmSecPairReq |
| enginerd | 0:b562096246b3 | 898 | * |
| enginerd | 0:b562096246b3 | 899 | * \brief This function is called by a master device to initiate pairing. |
| enginerd | 0:b562096246b3 | 900 | * |
| enginerd | 0:b562096246b3 | 901 | * \param connId DM connection ID. |
| enginerd | 0:b562096246b3 | 902 | * \param oob Out-of-band pairing data present or not present. |
| enginerd | 0:b562096246b3 | 903 | * \param auth Authentication and bonding flags. |
| enginerd | 0:b562096246b3 | 904 | * \param iKeyDist Initiator key distribution flags. |
| enginerd | 0:b562096246b3 | 905 | * \param rKeyDist Responder key distribution flags. |
| enginerd | 0:b562096246b3 | 906 | * |
| enginerd | 0:b562096246b3 | 907 | * \return None. |
| enginerd | 0:b562096246b3 | 908 | */ |
| enginerd | 0:b562096246b3 | 909 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 910 | void DmSecPairReq(dmConnId_t connId, bool_t oob, uint8_t auth, uint8_t iKeyDist, uint8_t rKeyDist); |
| enginerd | 0:b562096246b3 | 911 | |
| enginerd | 0:b562096246b3 | 912 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 913 | /*! |
| enginerd | 0:b562096246b3 | 914 | * \fn DmSecPairRsp |
| enginerd | 0:b562096246b3 | 915 | * |
| enginerd | 0:b562096246b3 | 916 | * \brief This function is called by a slave device to proceed with pairing after a |
| enginerd | 0:b562096246b3 | 917 | * DM_SEC_PAIR_IND event is received. |
| enginerd | 0:b562096246b3 | 918 | * |
| enginerd | 0:b562096246b3 | 919 | * \param connId DM connection ID. |
| enginerd | 0:b562096246b3 | 920 | * \param oob Out-of-band pairing data present or not present. |
| enginerd | 0:b562096246b3 | 921 | * \param auth Authentication and bonding flags. |
| enginerd | 0:b562096246b3 | 922 | * \param iKeyDist Initiator key distribution flags. |
| enginerd | 0:b562096246b3 | 923 | * \param rKeyDist Responder key distribution flags. |
| enginerd | 0:b562096246b3 | 924 | * |
| enginerd | 0:b562096246b3 | 925 | * \return None. |
| enginerd | 0:b562096246b3 | 926 | */ |
| enginerd | 0:b562096246b3 | 927 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 928 | void DmSecPairRsp(dmConnId_t connId, bool_t oob, uint8_t auth, uint8_t iKeyDist, uint8_t rKeyDist); |
| enginerd | 0:b562096246b3 | 929 | |
| enginerd | 0:b562096246b3 | 930 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 931 | /*! |
| enginerd | 0:b562096246b3 | 932 | * \fn DmSecCancelReq |
| enginerd | 0:b562096246b3 | 933 | * |
| enginerd | 0:b562096246b3 | 934 | * \brief This function is called to cancel the pairing process. |
| enginerd | 0:b562096246b3 | 935 | * |
| enginerd | 0:b562096246b3 | 936 | * \param connId DM connection ID. |
| enginerd | 0:b562096246b3 | 937 | * \param reason Failure reason. |
| enginerd | 0:b562096246b3 | 938 | * |
| enginerd | 0:b562096246b3 | 939 | * \return None. |
| enginerd | 0:b562096246b3 | 940 | */ |
| enginerd | 0:b562096246b3 | 941 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 942 | void DmSecCancelReq(dmConnId_t connId, uint8_t reason); |
| enginerd | 0:b562096246b3 | 943 | |
| enginerd | 0:b562096246b3 | 944 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 945 | /*! |
| enginerd | 0:b562096246b3 | 946 | * \fn DmSecAuthRsp |
| enginerd | 0:b562096246b3 | 947 | * |
| enginerd | 0:b562096246b3 | 948 | * \brief This function is called in response to a DM_SEC_AUTH_REQ_IND event to provide |
| enginerd | 0:b562096246b3 | 949 | * PIN or OOB data during pairing. |
| enginerd | 0:b562096246b3 | 950 | * |
| enginerd | 0:b562096246b3 | 951 | * \param connId DM connection ID. |
| enginerd | 0:b562096246b3 | 952 | * \param authDataLen Length of PIN or OOB data. |
| enginerd | 0:b562096246b3 | 953 | * \param pAuthData pointer to PIN or OOB data. |
| enginerd | 0:b562096246b3 | 954 | * |
| enginerd | 0:b562096246b3 | 955 | * \return None. |
| enginerd | 0:b562096246b3 | 956 | */ |
| enginerd | 0:b562096246b3 | 957 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 958 | void DmSecAuthRsp(dmConnId_t connId, uint8_t authDataLen, uint8_t *pAuthData); |
| enginerd | 0:b562096246b3 | 959 | |
| enginerd | 0:b562096246b3 | 960 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 961 | /*! |
| enginerd | 0:b562096246b3 | 962 | * \fn DmSecSlaveReq |
| enginerd | 0:b562096246b3 | 963 | * |
| enginerd | 0:b562096246b3 | 964 | * \brief This function is called by a slave device to request that the master initiates |
| enginerd | 0:b562096246b3 | 965 | * pairing or link encryption. |
| enginerd | 0:b562096246b3 | 966 | * |
| enginerd | 0:b562096246b3 | 967 | * \param connId DM connection ID. |
| enginerd | 0:b562096246b3 | 968 | * \param auth Authentication flags. |
| enginerd | 0:b562096246b3 | 969 | * |
| enginerd | 0:b562096246b3 | 970 | * \return None. |
| enginerd | 0:b562096246b3 | 971 | */ |
| enginerd | 0:b562096246b3 | 972 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 973 | void DmSecSlaveReq(dmConnId_t connId, uint8_t auth); |
| enginerd | 0:b562096246b3 | 974 | |
| enginerd | 0:b562096246b3 | 975 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 976 | /*! |
| enginerd | 0:b562096246b3 | 977 | * \fn DmSecEncryptReq |
| enginerd | 0:b562096246b3 | 978 | * |
| enginerd | 0:b562096246b3 | 979 | * \brief This function is called by a master device to initiate link encryption. |
| enginerd | 0:b562096246b3 | 980 | * |
| enginerd | 0:b562096246b3 | 981 | * \param connId DM connection ID. |
| enginerd | 0:b562096246b3 | 982 | * \param secLevel Security level of pairing when LTK was exchanged. |
| enginerd | 0:b562096246b3 | 983 | * \param pLtk Pointer to LTK parameter structure. |
| enginerd | 0:b562096246b3 | 984 | * |
| enginerd | 0:b562096246b3 | 985 | * \return None. |
| enginerd | 0:b562096246b3 | 986 | */ |
| enginerd | 0:b562096246b3 | 987 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 988 | void DmSecEncryptReq(dmConnId_t connId, uint8_t secLevel, dmSecLtk_t *pLtk); |
| enginerd | 0:b562096246b3 | 989 | |
| enginerd | 0:b562096246b3 | 990 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 991 | /*! |
| enginerd | 0:b562096246b3 | 992 | * \fn DmSecLtkRsp |
| enginerd | 0:b562096246b3 | 993 | * |
| enginerd | 0:b562096246b3 | 994 | * \brief This function is called by a slave in response to a DM_SEC_LTK_REQ_IND event |
| enginerd | 0:b562096246b3 | 995 | * to provide the long term key used for encryption. |
| enginerd | 0:b562096246b3 | 996 | * |
| enginerd | 0:b562096246b3 | 997 | * \param connId DM connection ID. |
| enginerd | 0:b562096246b3 | 998 | * \param keyFound TRUE if key found. |
| enginerd | 0:b562096246b3 | 999 | * \param secLevel Security level of pairing when key was exchanged. |
| enginerd | 0:b562096246b3 | 1000 | * \param pKey Pointer to the key, if found. |
| enginerd | 0:b562096246b3 | 1001 | * |
| enginerd | 0:b562096246b3 | 1002 | * \return None. |
| enginerd | 0:b562096246b3 | 1003 | */ |
| enginerd | 0:b562096246b3 | 1004 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1005 | void DmSecLtkRsp(dmConnId_t connId, bool_t keyFound, uint8_t secLevel, uint8_t *pKey); |
| enginerd | 0:b562096246b3 | 1006 | |
| enginerd | 0:b562096246b3 | 1007 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1008 | /*! |
| enginerd | 0:b562096246b3 | 1009 | * \fn DmSecSetLocalCsrk |
| enginerd | 0:b562096246b3 | 1010 | * |
| enginerd | 0:b562096246b3 | 1011 | * \brief This function sets the local CSRK used by the device. |
| enginerd | 0:b562096246b3 | 1012 | * |
| enginerd | 0:b562096246b3 | 1013 | * \param pCsrk Pointer to CSRK. |
| enginerd | 0:b562096246b3 | 1014 | * |
| enginerd | 0:b562096246b3 | 1015 | * \return None. |
| enginerd | 0:b562096246b3 | 1016 | */ |
| enginerd | 0:b562096246b3 | 1017 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1018 | void DmSecSetLocalCsrk(uint8_t *pCsrk); |
| enginerd | 0:b562096246b3 | 1019 | |
| enginerd | 0:b562096246b3 | 1020 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1021 | /*! |
| enginerd | 0:b562096246b3 | 1022 | * \fn DmSecSetLocalIrk |
| enginerd | 0:b562096246b3 | 1023 | * |
| enginerd | 0:b562096246b3 | 1024 | * \brief This function sets the local IRK used by the device. |
| enginerd | 0:b562096246b3 | 1025 | * |
| enginerd | 0:b562096246b3 | 1026 | * \param pCsrk Pointer to IRK. |
| enginerd | 0:b562096246b3 | 1027 | * |
| enginerd | 0:b562096246b3 | 1028 | * \return None. |
| enginerd | 0:b562096246b3 | 1029 | */ |
| enginerd | 0:b562096246b3 | 1030 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1031 | void DmSecSetLocalIrk(uint8_t *pIrk); |
| enginerd | 0:b562096246b3 | 1032 | |
| enginerd | 0:b562096246b3 | 1033 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1034 | /*! |
| enginerd | 0:b562096246b3 | 1035 | * \fn DmPrivInit |
| enginerd | 0:b562096246b3 | 1036 | * |
| enginerd | 0:b562096246b3 | 1037 | * \brief Initialize DM privacy module. |
| enginerd | 0:b562096246b3 | 1038 | * |
| enginerd | 0:b562096246b3 | 1039 | * \return None. |
| enginerd | 0:b562096246b3 | 1040 | */ |
| enginerd | 0:b562096246b3 | 1041 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1042 | void DmPrivInit(void); |
| enginerd | 0:b562096246b3 | 1043 | |
| enginerd | 0:b562096246b3 | 1044 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1045 | /*! |
| enginerd | 0:b562096246b3 | 1046 | * \fn DmPrivResolveAddr |
| enginerd | 0:b562096246b3 | 1047 | * |
| enginerd | 0:b562096246b3 | 1048 | * \brief Resolve a private resolvable address. When complete the client's callback function |
| enginerd | 0:b562096246b3 | 1049 | * is called with a DM_PRIV_RESOLVED_ADDR_IND event. The client must wait to receive |
| enginerd | 0:b562096246b3 | 1050 | * this event before executing this function again. |
| enginerd | 0:b562096246b3 | 1051 | * |
| enginerd | 0:b562096246b3 | 1052 | * \param pAddr Peer device address. |
| enginerd | 0:b562096246b3 | 1053 | * \param pIrk The peer's identity resolving key. |
| enginerd | 0:b562096246b3 | 1054 | * \param param Client-defined parameter returned with callback event. |
| enginerd | 0:b562096246b3 | 1055 | * |
| enginerd | 0:b562096246b3 | 1056 | * \return None. |
| enginerd | 0:b562096246b3 | 1057 | */ |
| enginerd | 0:b562096246b3 | 1058 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1059 | void DmPrivResolveAddr(uint8_t *pAddr, uint8_t *pIrk, uint16_t param); |
| enginerd | 0:b562096246b3 | 1060 | |
| enginerd | 0:b562096246b3 | 1061 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1062 | /*! |
| enginerd | 0:b562096246b3 | 1063 | * \fn DmL2cConnUpdateCnf |
| enginerd | 0:b562096246b3 | 1064 | * |
| enginerd | 0:b562096246b3 | 1065 | * \brief For internal use only. L2C calls this function to send the result of an L2CAP |
| enginerd | 0:b562096246b3 | 1066 | * connection update response to DM. |
| enginerd | 0:b562096246b3 | 1067 | * |
| enginerd | 0:b562096246b3 | 1068 | * \param handle Connection handle. |
| enginerd | 0:b562096246b3 | 1069 | * \param reason Connection update response reason code. |
| enginerd | 0:b562096246b3 | 1070 | * \return None. |
| enginerd | 0:b562096246b3 | 1071 | */ |
| enginerd | 0:b562096246b3 | 1072 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1073 | void DmL2cConnUpdateCnf(uint16_t handle, uint16_t reason); |
| enginerd | 0:b562096246b3 | 1074 | |
| enginerd | 0:b562096246b3 | 1075 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1076 | /*! |
| enginerd | 0:b562096246b3 | 1077 | * \fn DmL2cConnUpdateInd |
| enginerd | 0:b562096246b3 | 1078 | * |
| enginerd | 0:b562096246b3 | 1079 | * \brief For internal use only. L2C calls this function when it receives a connection update |
| enginerd | 0:b562096246b3 | 1080 | * request from a peer device. |
| enginerd | 0:b562096246b3 | 1081 | * |
| enginerd | 0:b562096246b3 | 1082 | * \param identifier Identifier value. |
| enginerd | 0:b562096246b3 | 1083 | * \param handle Connection handle. |
| enginerd | 0:b562096246b3 | 1084 | * \param pConnSpec Connection spec parameters. |
| enginerd | 0:b562096246b3 | 1085 | * \return None. |
| enginerd | 0:b562096246b3 | 1086 | */ |
| enginerd | 0:b562096246b3 | 1087 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1088 | void DmL2cConnUpdateInd(uint8_t identifier, uint16_t handle, hciConnSpec_t *pConnSpec); |
| enginerd | 0:b562096246b3 | 1089 | |
| enginerd | 0:b562096246b3 | 1090 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1091 | /*! |
| enginerd | 0:b562096246b3 | 1092 | * \fn DmConnIdByHandle |
| enginerd | 0:b562096246b3 | 1093 | * |
| enginerd | 0:b562096246b3 | 1094 | * \brief For internal use only. Find the connection ID with matching handle. |
| enginerd | 0:b562096246b3 | 1095 | * |
| enginerd | 0:b562096246b3 | 1096 | * \param handle Handle to find. |
| enginerd | 0:b562096246b3 | 1097 | * |
| enginerd | 0:b562096246b3 | 1098 | * \return Connection ID or DM_CONN_ID_NONE if error. |
| enginerd | 0:b562096246b3 | 1099 | */ |
| enginerd | 0:b562096246b3 | 1100 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1101 | dmConnId_t DmConnIdByHandle(uint16_t handle); |
| enginerd | 0:b562096246b3 | 1102 | |
| enginerd | 0:b562096246b3 | 1103 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1104 | /*! |
| enginerd | 0:b562096246b3 | 1105 | * \fn DmConnInUse |
| enginerd | 0:b562096246b3 | 1106 | * |
| enginerd | 0:b562096246b3 | 1107 | * \brief For internal use only. Return TRUE if the connection is in use. |
| enginerd | 0:b562096246b3 | 1108 | * |
| enginerd | 0:b562096246b3 | 1109 | * \param connId Connection ID. |
| enginerd | 0:b562096246b3 | 1110 | * |
| enginerd | 0:b562096246b3 | 1111 | * \return TRUE if the connection is in use, FALSE otherwise. |
| enginerd | 0:b562096246b3 | 1112 | */ |
| enginerd | 0:b562096246b3 | 1113 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1114 | bool_t DmConnInUse(dmConnId_t connId); |
| enginerd | 0:b562096246b3 | 1115 | |
| enginerd | 0:b562096246b3 | 1116 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1117 | /*! |
| enginerd | 0:b562096246b3 | 1118 | * \fn DmConnPeerAddrType |
| enginerd | 0:b562096246b3 | 1119 | * |
| enginerd | 0:b562096246b3 | 1120 | * \brief For internal use only. Return the peer address type. |
| enginerd | 0:b562096246b3 | 1121 | * |
| enginerd | 0:b562096246b3 | 1122 | * \param connId Connection ID. |
| enginerd | 0:b562096246b3 | 1123 | * |
| enginerd | 0:b562096246b3 | 1124 | * \return Peer address type. |
| enginerd | 0:b562096246b3 | 1125 | */ |
| enginerd | 0:b562096246b3 | 1126 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1127 | uint8_t DmConnPeerAddrType(dmConnId_t connId); |
| enginerd | 0:b562096246b3 | 1128 | |
| enginerd | 0:b562096246b3 | 1129 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1130 | /*! |
| enginerd | 0:b562096246b3 | 1131 | * \fn DmConnPeerAddr |
| enginerd | 0:b562096246b3 | 1132 | * |
| enginerd | 0:b562096246b3 | 1133 | * \brief For internal use only. Return the peer device address. |
| enginerd | 0:b562096246b3 | 1134 | * |
| enginerd | 0:b562096246b3 | 1135 | * \param connId Connection ID. |
| enginerd | 0:b562096246b3 | 1136 | * |
| enginerd | 0:b562096246b3 | 1137 | * \return Pointer to peer device address. |
| enginerd | 0:b562096246b3 | 1138 | */ |
| enginerd | 0:b562096246b3 | 1139 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1140 | uint8_t *DmConnPeerAddr(dmConnId_t connId); |
| enginerd | 0:b562096246b3 | 1141 | |
| enginerd | 0:b562096246b3 | 1142 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1143 | /*! |
| enginerd | 0:b562096246b3 | 1144 | * \fn DmConnLocalAddrType |
| enginerd | 0:b562096246b3 | 1145 | * |
| enginerd | 0:b562096246b3 | 1146 | * \brief For internal use only. Return the local address type. |
| enginerd | 0:b562096246b3 | 1147 | * |
| enginerd | 0:b562096246b3 | 1148 | * \param connId Connection ID. |
| enginerd | 0:b562096246b3 | 1149 | * |
| enginerd | 0:b562096246b3 | 1150 | * \return Local address type. |
| enginerd | 0:b562096246b3 | 1151 | */ |
| enginerd | 0:b562096246b3 | 1152 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1153 | uint8_t DmConnLocalAddrType(dmConnId_t connId); |
| enginerd | 0:b562096246b3 | 1154 | |
| enginerd | 0:b562096246b3 | 1155 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1156 | /*! |
| enginerd | 0:b562096246b3 | 1157 | * \fn DmConnLocalAddr |
| enginerd | 0:b562096246b3 | 1158 | * |
| enginerd | 0:b562096246b3 | 1159 | * \brief For internal use only. Return the local address. |
| enginerd | 0:b562096246b3 | 1160 | * |
| enginerd | 0:b562096246b3 | 1161 | * \param connId Connection ID. |
| enginerd | 0:b562096246b3 | 1162 | * |
| enginerd | 0:b562096246b3 | 1163 | * \return Pointer to local address. |
| enginerd | 0:b562096246b3 | 1164 | */ |
| enginerd | 0:b562096246b3 | 1165 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1166 | uint8_t *DmConnLocalAddr(dmConnId_t connId); |
| enginerd | 0:b562096246b3 | 1167 | |
| enginerd | 0:b562096246b3 | 1168 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1169 | /*! |
| enginerd | 0:b562096246b3 | 1170 | * \fn DmConnSecLevel |
| enginerd | 0:b562096246b3 | 1171 | * |
| enginerd | 0:b562096246b3 | 1172 | * \brief For internal use only. Return the security level of the connection. |
| enginerd | 0:b562096246b3 | 1173 | * |
| enginerd | 0:b562096246b3 | 1174 | * \param connId Connection ID. |
| enginerd | 0:b562096246b3 | 1175 | * |
| enginerd | 0:b562096246b3 | 1176 | * \return Security level of the connection. |
| enginerd | 0:b562096246b3 | 1177 | */ |
| enginerd | 0:b562096246b3 | 1178 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1179 | uint8_t DmConnSecLevel(dmConnId_t connId); |
| enginerd | 0:b562096246b3 | 1180 | |
| enginerd | 0:b562096246b3 | 1181 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1182 | /*! |
| enginerd | 0:b562096246b3 | 1183 | * \fn DmSmpEncryptReq |
| enginerd | 0:b562096246b3 | 1184 | * |
| enginerd | 0:b562096246b3 | 1185 | * \brief For internal use only. This function is called by SMP to request encryption. |
| enginerd | 0:b562096246b3 | 1186 | * |
| enginerd | 0:b562096246b3 | 1187 | * \param connId DM connection ID. |
| enginerd | 0:b562096246b3 | 1188 | * \param secLevel Security level of pairing when key was exchanged. |
| enginerd | 0:b562096246b3 | 1189 | * \param pKey Pointer to key. |
| enginerd | 0:b562096246b3 | 1190 | * |
| enginerd | 0:b562096246b3 | 1191 | * \return None. |
| enginerd | 0:b562096246b3 | 1192 | */ |
| enginerd | 0:b562096246b3 | 1193 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1194 | void DmSmpEncryptReq(dmConnId_t connId, uint8_t secLevel, uint8_t *pKey); |
| enginerd | 0:b562096246b3 | 1195 | |
| enginerd | 0:b562096246b3 | 1196 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1197 | /*! |
| enginerd | 0:b562096246b3 | 1198 | * \fn DmSmpCbackExec |
| enginerd | 0:b562096246b3 | 1199 | * |
| enginerd | 0:b562096246b3 | 1200 | * \brief For internal use only. Execute DM callback from SMP procedures. |
| enginerd | 0:b562096246b3 | 1201 | * |
| enginerd | 0:b562096246b3 | 1202 | * \param pDmEvt Pointer to callback event data. |
| enginerd | 0:b562096246b3 | 1203 | * |
| enginerd | 0:b562096246b3 | 1204 | * \return None. |
| enginerd | 0:b562096246b3 | 1205 | */ |
| enginerd | 0:b562096246b3 | 1206 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1207 | void DmSmpCbackExec(dmEvt_t *pDmEvt); |
| enginerd | 0:b562096246b3 | 1208 | |
| enginerd | 0:b562096246b3 | 1209 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1210 | /*! |
| enginerd | 0:b562096246b3 | 1211 | * \fn DmSecGetLocalCsrk |
| enginerd | 0:b562096246b3 | 1212 | * |
| enginerd | 0:b562096246b3 | 1213 | * \brief For internal use only. This function gets the local CSRK used by the device. |
| enginerd | 0:b562096246b3 | 1214 | * |
| enginerd | 0:b562096246b3 | 1215 | * \return Pointer to CSRK. |
| enginerd | 0:b562096246b3 | 1216 | */ |
| enginerd | 0:b562096246b3 | 1217 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1218 | uint8_t *DmSecGetLocalCsrk(void); |
| enginerd | 0:b562096246b3 | 1219 | |
| enginerd | 0:b562096246b3 | 1220 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1221 | /*! |
| enginerd | 0:b562096246b3 | 1222 | * \fn DmSecGetLocalIrk |
| enginerd | 0:b562096246b3 | 1223 | * |
| enginerd | 0:b562096246b3 | 1224 | * \brief For internal use only. This function gets the local IRK used by the device. |
| enginerd | 0:b562096246b3 | 1225 | * |
| enginerd | 0:b562096246b3 | 1226 | * \return Pointer to IRK. |
| enginerd | 0:b562096246b3 | 1227 | */ |
| enginerd | 0:b562096246b3 | 1228 | /*************************************************************************************************/ |
| enginerd | 0:b562096246b3 | 1229 | uint8_t *DmSecGetLocalIrk(void); |
| enginerd | 0:b562096246b3 | 1230 | |
| enginerd | 0:b562096246b3 | 1231 | #ifdef __cplusplus |
| enginerd | 0:b562096246b3 | 1232 | }; |
| enginerd | 0:b562096246b3 | 1233 | #endif |
| enginerd | 0:b562096246b3 | 1234 | |
| enginerd | 0:b562096246b3 | 1235 | #endif /* DM_API_H */ |
