KAMUI USB HOST MIDI-CV Example based on Peter Barrett's BlueUSB

Dependencies:   TextLCD mbed

Committer:
radiojunkbox
Date:
Fri May 11 15:31:59 2012 +0000
Revision:
0:3b4e3e2ec6a5
Rev. 0.1 alfa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
radiojunkbox 0:3b4e3e2ec6a5 1 /*
radiojunkbox 0:3b4e3e2ec6a5 2 Copyright (c) 2010 Peter Barrett
radiojunkbox 0:3b4e3e2ec6a5 3
radiojunkbox 0:3b4e3e2ec6a5 4 Permission is hereby granted, free of charge, to any person obtaining a copy
radiojunkbox 0:3b4e3e2ec6a5 5 of this software and associated documentation files (the "Software"), to deal
radiojunkbox 0:3b4e3e2ec6a5 6 in the Software without restriction, including without limitation the rights
radiojunkbox 0:3b4e3e2ec6a5 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
radiojunkbox 0:3b4e3e2ec6a5 8 copies of the Software, and to permit persons to whom the Software is
radiojunkbox 0:3b4e3e2ec6a5 9 furnished to do so, subject to the following conditions:
radiojunkbox 0:3b4e3e2ec6a5 10
radiojunkbox 0:3b4e3e2ec6a5 11 The above copyright notice and this permission notice shall be included in
radiojunkbox 0:3b4e3e2ec6a5 12 all copies or substantial portions of the Software.
radiojunkbox 0:3b4e3e2ec6a5 13
radiojunkbox 0:3b4e3e2ec6a5 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
radiojunkbox 0:3b4e3e2ec6a5 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
radiojunkbox 0:3b4e3e2ec6a5 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
radiojunkbox 0:3b4e3e2ec6a5 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
radiojunkbox 0:3b4e3e2ec6a5 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
radiojunkbox 0:3b4e3e2ec6a5 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
radiojunkbox 0:3b4e3e2ec6a5 20 THE SOFTWARE.
radiojunkbox 0:3b4e3e2ec6a5 21 */
radiojunkbox 0:3b4e3e2ec6a5 22
radiojunkbox 0:3b4e3e2ec6a5 23 #ifndef HCI_PRIVATE_H_INCLUDED
radiojunkbox 0:3b4e3e2ec6a5 24 #define HCI_PRIVATE_H_INCLUDED
radiojunkbox 0:3b4e3e2ec6a5 25
radiojunkbox 0:3b4e3e2ec6a5 26 #define HCI_OP_INQUIRY 0x0401
radiojunkbox 0:3b4e3e2ec6a5 27 #define HCI_OP_INQUIRY_CANCEL 0x0402
radiojunkbox 0:3b4e3e2ec6a5 28 #define HCI_OP_EXIT_PERIODIC_INQ 0x0404
radiojunkbox 0:3b4e3e2ec6a5 29 #define HCI_OP_CREATE_CONN 0x0405
radiojunkbox 0:3b4e3e2ec6a5 30 #define HCI_OP_DISCONNECT 0x0406
radiojunkbox 0:3b4e3e2ec6a5 31 #define HCI_OP_ADD_SCO 0x0407
radiojunkbox 0:3b4e3e2ec6a5 32 #define HCI_OP_CREATE_CONN_CANCEL 0x0408
radiojunkbox 0:3b4e3e2ec6a5 33 #define HCI_OP_ACCEPT_CONN_REQ 0x0409
radiojunkbox 0:3b4e3e2ec6a5 34 #define HCI_OP_REJECT_CONN_REQ 0x040a
radiojunkbox 0:3b4e3e2ec6a5 35 #define HCI_OP_LINK_KEY_REPLY 0x040b
radiojunkbox 0:3b4e3e2ec6a5 36 #define HCI_OP_LINK_KEY_NEG_REPLY 0x040c
radiojunkbox 0:3b4e3e2ec6a5 37 #define HCI_OP_PIN_CODE_REPLY 0x040d
radiojunkbox 0:3b4e3e2ec6a5 38 #define HCI_OP_PIN_CODE_NEG_REPLY 0x040e
radiojunkbox 0:3b4e3e2ec6a5 39 #define HCI_OP_CHANGE_CONN_PTYPE 0x040f
radiojunkbox 0:3b4e3e2ec6a5 40 #define HCI_OP_AUTH_REQUESTED 0x0411
radiojunkbox 0:3b4e3e2ec6a5 41 #define HCI_OP_SET_CONN_ENCRYPT 0x0413
radiojunkbox 0:3b4e3e2ec6a5 42 #define HCI_OP_CHANGE_CONN_LINK_KEY 0x0415
radiojunkbox 0:3b4e3e2ec6a5 43 #define HCI_OP_REMOTE_NAME_REQ 0x0419
radiojunkbox 0:3b4e3e2ec6a5 44 #define HCI_OP_REMOTE_NAME_REQ_CANCEL 0x041a
radiojunkbox 0:3b4e3e2ec6a5 45 #define HCI_OP_READ_REMOTE_FEATURES 0x041b
radiojunkbox 0:3b4e3e2ec6a5 46 #define HCI_OP_READ_REMOTE_EXT_FEATURES 0x041c
radiojunkbox 0:3b4e3e2ec6a5 47 #define HCI_OP_READ_REMOTE_VERSION 0x041d
radiojunkbox 0:3b4e3e2ec6a5 48 #define HCI_OP_SETUP_SYNC_CONN 0x0428
radiojunkbox 0:3b4e3e2ec6a5 49 #define HCI_OP_ACCEPT_SYNC_CONN_REQ 0x0429
radiojunkbox 0:3b4e3e2ec6a5 50 #define HCI_OP_REJECT_SYNC_CONN_REQ 0x042a
radiojunkbox 0:3b4e3e2ec6a5 51
radiojunkbox 0:3b4e3e2ec6a5 52 #define HCI_OP_SNIFF_MODE 0x0803
radiojunkbox 0:3b4e3e2ec6a5 53 #define HCI_OP_EXIT_SNIFF_MODE 0x0804
radiojunkbox 0:3b4e3e2ec6a5 54 #define HCI_OP_ROLE_DISCOVERY 0x0809
radiojunkbox 0:3b4e3e2ec6a5 55 #define HCI_OP_SWITCH_ROLE 0x080b
radiojunkbox 0:3b4e3e2ec6a5 56 #define HCI_OP_READ_LINK_POLICY 0x080c
radiojunkbox 0:3b4e3e2ec6a5 57 #define HCI_OP_WRITE_LINK_POLICY 0x080d
radiojunkbox 0:3b4e3e2ec6a5 58 #define HCI_OP_READ_DEF_LINK_POLICY 0x080e
radiojunkbox 0:3b4e3e2ec6a5 59 #define HCI_OP_WRITE_DEF_LINK_POLICY 0x080f
radiojunkbox 0:3b4e3e2ec6a5 60 #define HCI_OP_SNIFF_SUBRATE 0x0811
radiojunkbox 0:3b4e3e2ec6a5 61
radiojunkbox 0:3b4e3e2ec6a5 62
radiojunkbox 0:3b4e3e2ec6a5 63 #define HCI_OP_SET_EVENT_MASK 0x0c01
radiojunkbox 0:3b4e3e2ec6a5 64 #define HCI_OP_RESET 0x0c03
radiojunkbox 0:3b4e3e2ec6a5 65 #define HCI_OP_SET_EVENT_FLT 0x0c05
radiojunkbox 0:3b4e3e2ec6a5 66 #define HCI_OP_WRITE_LOCAL_NAME 0x0c13
radiojunkbox 0:3b4e3e2ec6a5 67 #define HCI_OP_READ_LOCAL_NAME 0x0c14
radiojunkbox 0:3b4e3e2ec6a5 68 #define HCI_OP_WRITE_CA_TIMEOUT 0x0c16
radiojunkbox 0:3b4e3e2ec6a5 69 #define HCI_OP_WRITE_PG_TIMEOUT 0x0c18
radiojunkbox 0:3b4e3e2ec6a5 70 #define HCI_OP_WRITE_SCAN_ENABLE 0x0c1a
radiojunkbox 0:3b4e3e2ec6a5 71 #define HCI_OP_READ_AUTH_ENABLE 0x0c1f
radiojunkbox 0:3b4e3e2ec6a5 72 #define HCI_OP_WRITE_AUTH_ENABLE 0x0c20
radiojunkbox 0:3b4e3e2ec6a5 73 #define HCI_OP_READ_ENCRYPT_MODE 0x0c21
radiojunkbox 0:3b4e3e2ec6a5 74 #define HCI_OP_WRITE_ENCRYPT_MODE 0x0c22
radiojunkbox 0:3b4e3e2ec6a5 75 #define ENCRYPT_DISABLED 0x00
radiojunkbox 0:3b4e3e2ec6a5 76 #define ENCRYPT_P2P 0x01
radiojunkbox 0:3b4e3e2ec6a5 77 #define ENCRYPT_BOTH 0x02
radiojunkbox 0:3b4e3e2ec6a5 78 #define HCI_OP_READ_CLASS_OF_DEV 0x0c23
radiojunkbox 0:3b4e3e2ec6a5 79 #define HCI_OP_WRITE_CLASS_OF_DEV 0x0c24
radiojunkbox 0:3b4e3e2ec6a5 80 #define HCI_OP_READ_VOICE_SETTING 0x0c25
radiojunkbox 0:3b4e3e2ec6a5 81 #define HCI_OP_WRITE_VOICE_SETTING 0x0c26
radiojunkbox 0:3b4e3e2ec6a5 82 #define HCI_OP_HOST_BUFFER_SIZE 0x0c33
radiojunkbox 0:3b4e3e2ec6a5 83 #define HCI_OP_READ_SSP_MODE 0x0c55
radiojunkbox 0:3b4e3e2ec6a5 84 #define HCI_OP_WRITE_SSP_MODE 0x0c56
radiojunkbox 0:3b4e3e2ec6a5 85
radiojunkbox 0:3b4e3e2ec6a5 86 #define HCI_OP_READ_LOCAL_VERSION 0x1001
radiojunkbox 0:3b4e3e2ec6a5 87 #define HCI_OP_READ_LOCAL_COMMANDS 0x1002
radiojunkbox 0:3b4e3e2ec6a5 88 #define HCI_OP_READ_LOCAL_FEATURES 0x1003
radiojunkbox 0:3b4e3e2ec6a5 89 #define HCI_OP_READ_LOCAL_EXT_FEATURES 0x1004
radiojunkbox 0:3b4e3e2ec6a5 90 #define HCI_OP_READ_BUFFER_SIZE 0x1005
radiojunkbox 0:3b4e3e2ec6a5 91 #define HCI_OP_READ_BD_ADDR 0x1009
radiojunkbox 0:3b4e3e2ec6a5 92
radiojunkbox 0:3b4e3e2ec6a5 93 // events
radiojunkbox 0:3b4e3e2ec6a5 94 #define HCI_EV_INQUIRY_COMPLETE 0x01
radiojunkbox 0:3b4e3e2ec6a5 95 #define HCI_EV_INQUIRY_RESULT 0x02
radiojunkbox 0:3b4e3e2ec6a5 96 #define HCI_EV_CONN_COMPLETE 0x03
radiojunkbox 0:3b4e3e2ec6a5 97 #define HCI_EV_CONN_REQUEST 0x04
radiojunkbox 0:3b4e3e2ec6a5 98 #define HCI_EV_DISCONN_COMPLETE 0x05
radiojunkbox 0:3b4e3e2ec6a5 99 #define HCI_EV_AUTH_COMPLETE 0x06
radiojunkbox 0:3b4e3e2ec6a5 100 #define HCI_EV_REMOTE_NAME 0x07
radiojunkbox 0:3b4e3e2ec6a5 101 #define HCI_EV_ENCRYPT_CHANGE 0x08
radiojunkbox 0:3b4e3e2ec6a5 102 #define HCI_EV_CHANGE_LINK_KEY_COMPLETE 0x09
radiojunkbox 0:3b4e3e2ec6a5 103 #define HCI_EV_REMOTE_FEATURES 0x0b
radiojunkbox 0:3b4e3e2ec6a5 104 #define HCI_EV_REMOTE_VERSION 0x0c
radiojunkbox 0:3b4e3e2ec6a5 105 #define HCI_EV_QOS_SETUP_COMPLETE 0x0d
radiojunkbox 0:3b4e3e2ec6a5 106 #define HCI_EV_CMD_COMPLETE 0x0e
radiojunkbox 0:3b4e3e2ec6a5 107 #define HCI_EV_CMD_STATUS 0x0f
radiojunkbox 0:3b4e3e2ec6a5 108 #define HCI_EV_ROLE_CHANGE 0x12
radiojunkbox 0:3b4e3e2ec6a5 109 #define HCI_EV_NUM_COMP_PKTS 0x13
radiojunkbox 0:3b4e3e2ec6a5 110 #define HCI_EV_MODE_CHANGE 0x14
radiojunkbox 0:3b4e3e2ec6a5 111 #define HCI_EV_PIN_CODE_REQ 0x16
radiojunkbox 0:3b4e3e2ec6a5 112 #define HCI_EV_LINK_KEY_REQ 0x17
radiojunkbox 0:3b4e3e2ec6a5 113 #define HCI_EV_LINK_KEY_NOTIFY 0x18
radiojunkbox 0:3b4e3e2ec6a5 114 #define HCI_EV_CLOCK_OFFSET 0x1c
radiojunkbox 0:3b4e3e2ec6a5 115 #define HCI_EV_PKT_TYPE_CHANGE 0x1d
radiojunkbox 0:3b4e3e2ec6a5 116 #define HCI_EV_PSCAN_REP_MODE 0x20
radiojunkbox 0:3b4e3e2ec6a5 117 #define HCI_EV_INQUIRY_RESULT_WITH_RSSI 0x22
radiojunkbox 0:3b4e3e2ec6a5 118 #define HCI_EV_REMOTE_EXT_FEATURES 0x23
radiojunkbox 0:3b4e3e2ec6a5 119 #define HCI_EV_SYNC_CONN_COMPLETE 0x2c
radiojunkbox 0:3b4e3e2ec6a5 120 #define HCI_EV_SYNC_CONN_CHANGED 0x2d
radiojunkbox 0:3b4e3e2ec6a5 121 #define HCI_EV_SNIFF_SUBRATE 0x2e
radiojunkbox 0:3b4e3e2ec6a5 122 #define HCI_EV_EXTENDED_INQUIRY_RESULT 0x2f
radiojunkbox 0:3b4e3e2ec6a5 123 #define HCI_EV_IO_CAPA_REQUEST 0x31
radiojunkbox 0:3b4e3e2ec6a5 124 #define HCI_EV_SIMPLE_PAIR_COMPLETE 0x36
radiojunkbox 0:3b4e3e2ec6a5 125 #define HCI_EV_REMOTE_HOST_FEATURES 0x3d
radiojunkbox 0:3b4e3e2ec6a5 126
radiojunkbox 0:3b4e3e2ec6a5 127 /* Possible error codes */
radiojunkbox 0:3b4e3e2ec6a5 128 #define HCI_UNKNOWN_HCI_COMMAND 0x01
radiojunkbox 0:3b4e3e2ec6a5 129 #define HCI_NO_CONNECTION 0x02
radiojunkbox 0:3b4e3e2ec6a5 130 #define HCI_HW_FAILURE 0x03
radiojunkbox 0:3b4e3e2ec6a5 131 #define HCI_PAGE_TIMEOUT 0x04
radiojunkbox 0:3b4e3e2ec6a5 132 #define HCI_AUTHENTICATION_FAILURE 0x05
radiojunkbox 0:3b4e3e2ec6a5 133 #define HCI_KEY_MISSING 0x06
radiojunkbox 0:3b4e3e2ec6a5 134 #define HCI_MEMORY_FULL 0x07
radiojunkbox 0:3b4e3e2ec6a5 135 #define HCI_CONN_TIMEOUT 0x08
radiojunkbox 0:3b4e3e2ec6a5 136 #define HCI_MAX_NUMBER_OF_CONNECTIONS 0x09
radiojunkbox 0:3b4e3e2ec6a5 137 #define HCI_MAX_NUMBER_OF_SCO_CONNECTIONS_TO_DEVICE 0x0A
radiojunkbox 0:3b4e3e2ec6a5 138 #define HCI_ACL_CONNECTION_EXISTS 0x0B
radiojunkbox 0:3b4e3e2ec6a5 139 #define HCI_COMMAND_DISSALLOWED 0x0C
radiojunkbox 0:3b4e3e2ec6a5 140 #define HCI_HOST_REJECTED_DUE_TO_LIMITED_RESOURCES 0x0D
radiojunkbox 0:3b4e3e2ec6a5 141 #define HCI_HOST_REJECTED_DUE_TO_SECURITY_REASONS 0x0E
radiojunkbox 0:3b4e3e2ec6a5 142 #define HCI_HOST_REJECTED_DUE_TO_REMOTE_DEVICE_ONLY_PERSONAL_SERVICE 0x0F
radiojunkbox 0:3b4e3e2ec6a5 143 #define HCI_HOST_TIMEOUT 0x10
radiojunkbox 0:3b4e3e2ec6a5 144 #define HCI_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE 0x11
radiojunkbox 0:3b4e3e2ec6a5 145 #define HCI_INVALID_HCI_COMMAND_PARAMETERS 0x12
radiojunkbox 0:3b4e3e2ec6a5 146 #define HCI_OTHER_END_TERMINATED_CONN_USER_ENDED 0x13
radiojunkbox 0:3b4e3e2ec6a5 147 #define HCI_OTHER_END_TERMINATED_CONN_LOW_RESOURCES 0x14
radiojunkbox 0:3b4e3e2ec6a5 148 #define HCI_OTHER_END_TERMINATED_CONN_ABOUT_TO_POWER_OFF 0x15
radiojunkbox 0:3b4e3e2ec6a5 149 #define HCI_CONN_TERMINATED_BY_LOCAL_HOST 0x16
radiojunkbox 0:3b4e3e2ec6a5 150 #define HCI_REPETED_ATTEMPTS 0x17
radiojunkbox 0:3b4e3e2ec6a5 151 #define HCI_PAIRING_NOT_ALLOWED 0x18
radiojunkbox 0:3b4e3e2ec6a5 152 #define HCI_UNKNOWN_LMP_PDU 0x19
radiojunkbox 0:3b4e3e2ec6a5 153 #define HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A
radiojunkbox 0:3b4e3e2ec6a5 154 #define HCI_SCO_OFFSET_REJECTED 0x1B
radiojunkbox 0:3b4e3e2ec6a5 155 #define HCI_SCO_INTERVAL_REJECTED 0x1C
radiojunkbox 0:3b4e3e2ec6a5 156 #define HCI_SCO_AIR_MODE_REJECTED 0x1D
radiojunkbox 0:3b4e3e2ec6a5 157 #define HCI_INVALID_LMP_PARAMETERS 0x1E
radiojunkbox 0:3b4e3e2ec6a5 158 #define HCI_UNSPECIFIED_ERROR 0x1F
radiojunkbox 0:3b4e3e2ec6a5 159 #define HCI_UNSUPPORTED_LMP_PARAMETER_VALUE 0x20
radiojunkbox 0:3b4e3e2ec6a5 160 #define HCI_ROLE_CHANGE_NOT_ALLOWED 0x21
radiojunkbox 0:3b4e3e2ec6a5 161 #define HCI_LMP_RESPONSE_TIMEOUT 0x22
radiojunkbox 0:3b4e3e2ec6a5 162 #define HCI_LMP_ERROR_TRANSACTION_COLLISION 0x23
radiojunkbox 0:3b4e3e2ec6a5 163 #define HCI_LMP_PDU_NOT_ALLOWED 0x24
radiojunkbox 0:3b4e3e2ec6a5 164 #define HCI_ENCRYPTION_MODE_NOT_ACCEPTABLE 0x25
radiojunkbox 0:3b4e3e2ec6a5 165 #define HCI_UNIT_KEY_USED 0x26
radiojunkbox 0:3b4e3e2ec6a5 166 #define HCI_QOS_NOT_SUPPORTED 0x27
radiojunkbox 0:3b4e3e2ec6a5 167 #define HCI_INSTANT_PASSED 0x28
radiojunkbox 0:3b4e3e2ec6a5 168 #define HCI_PAIRING_UNIT_KEY_NOT_SUPPORTED 0x29
radiojunkbox 0:3b4e3e2ec6a5 169
radiojunkbox 0:3b4e3e2ec6a5 170 const char* EvtStr(int evt)
radiojunkbox 0:3b4e3e2ec6a5 171 {
radiojunkbox 0:3b4e3e2ec6a5 172 switch (evt)
radiojunkbox 0:3b4e3e2ec6a5 173 {
radiojunkbox 0:3b4e3e2ec6a5 174 case HCI_EV_INQUIRY_COMPLETE: return "HCI_EV_INQUIRY_COMPLETE";
radiojunkbox 0:3b4e3e2ec6a5 175 case HCI_EV_INQUIRY_RESULT: return "HCI_EV_INQUIRY_RESULT";
radiojunkbox 0:3b4e3e2ec6a5 176 case HCI_EV_CONN_COMPLETE: return "HCI_EV_CONN_COMPLETE";
radiojunkbox 0:3b4e3e2ec6a5 177 case HCI_EV_CONN_REQUEST: return "HCI_EV_CONN_REQUEST";
radiojunkbox 0:3b4e3e2ec6a5 178 case HCI_EV_DISCONN_COMPLETE: return "HCI_EV_DISCONN_COMPLETE";
radiojunkbox 0:3b4e3e2ec6a5 179 case HCI_EV_AUTH_COMPLETE: return "HCI_EV_AUTH_COMPLETE";
radiojunkbox 0:3b4e3e2ec6a5 180 case HCI_EV_REMOTE_NAME: return "HCI_EV_REMOTE_NAME";
radiojunkbox 0:3b4e3e2ec6a5 181 case HCI_EV_ENCRYPT_CHANGE: return "HCI_EV_ENCRYPT_CHANGE";
radiojunkbox 0:3b4e3e2ec6a5 182 case HCI_EV_CHANGE_LINK_KEY_COMPLETE : return "HCI_EV_CHANGE_LINK_KEY_COMPLETE";
radiojunkbox 0:3b4e3e2ec6a5 183 case HCI_EV_REMOTE_FEATURES: return "HCI_EV_REMOTE_FEATURES";
radiojunkbox 0:3b4e3e2ec6a5 184 case HCI_EV_REMOTE_VERSION: return "HCI_EV_REMOTE_VERSION";
radiojunkbox 0:3b4e3e2ec6a5 185 case HCI_EV_QOS_SETUP_COMPLETE : return "HCI_EV_QOS_SETUP_COMPLETE";
radiojunkbox 0:3b4e3e2ec6a5 186 case HCI_EV_CMD_COMPLETE: return "HCI_EV_CMD_COMPLETE";
radiojunkbox 0:3b4e3e2ec6a5 187 case HCI_EV_CMD_STATUS: return "HCI_EV_CMD_STATUS";
radiojunkbox 0:3b4e3e2ec6a5 188 case HCI_EV_ROLE_CHANGE: return "HCI_EV_ROLE_CHANGE";
radiojunkbox 0:3b4e3e2ec6a5 189 case HCI_EV_NUM_COMP_PKTS: return "HCI_EV_NUM_COMP_PKTS";
radiojunkbox 0:3b4e3e2ec6a5 190 case HCI_EV_MODE_CHANGE: return "HCI_EV_MODE_CHANGE";
radiojunkbox 0:3b4e3e2ec6a5 191 case HCI_EV_PIN_CODE_REQ: return "HCI_EV_PIN_CODE_REQ";
radiojunkbox 0:3b4e3e2ec6a5 192 case HCI_EV_LINK_KEY_REQ: return "HCI_EV_LINK_KEY_REQ";
radiojunkbox 0:3b4e3e2ec6a5 193 case HCI_EV_LINK_KEY_NOTIFY: return "HCI_EV_LINK_KEY_NOTIFY";
radiojunkbox 0:3b4e3e2ec6a5 194 case HCI_EV_CLOCK_OFFSET: return "HCI_EV_CLOCK_OFFSET";
radiojunkbox 0:3b4e3e2ec6a5 195 case HCI_EV_PKT_TYPE_CHANGE: return "HCI_EV_PKT_TYPE_CHANGE";
radiojunkbox 0:3b4e3e2ec6a5 196 case HCI_EV_PSCAN_REP_MODE: return "HCI_EV_PSCAN_REP_MODE";
radiojunkbox 0:3b4e3e2ec6a5 197 case HCI_EV_INQUIRY_RESULT_WITH_RSSI : return "HCI_EV_INQUIRY_RESULT_WITH_RSSI";
radiojunkbox 0:3b4e3e2ec6a5 198 case HCI_EV_REMOTE_EXT_FEATURES: return "HCI_EV_REMOTE_EXT_FEATURES";
radiojunkbox 0:3b4e3e2ec6a5 199 case HCI_EV_SYNC_CONN_COMPLETE: return "HCI_EV_SYNC_CONN_COMPLETE";
radiojunkbox 0:3b4e3e2ec6a5 200 case HCI_EV_SYNC_CONN_CHANGED: return "HCI_EV_SYNC_CONN_CHANGED";
radiojunkbox 0:3b4e3e2ec6a5 201 case HCI_EV_SNIFF_SUBRATE: return "HCI_EV_SNIFF_SUBRATE";
radiojunkbox 0:3b4e3e2ec6a5 202 case HCI_EV_EXTENDED_INQUIRY_RESULT: return "HCI_EV_EXTENDED_INQUIRY_RESULT";
radiojunkbox 0:3b4e3e2ec6a5 203 case HCI_EV_IO_CAPA_REQUEST: return "HCI_EV_IO_CAPA_REQUEST";
radiojunkbox 0:3b4e3e2ec6a5 204 case HCI_EV_SIMPLE_PAIR_COMPLETE: return "HCI_EV_SIMPLE_PAIR_COMPLETE";
radiojunkbox 0:3b4e3e2ec6a5 205 case HCI_EV_REMOTE_HOST_FEATURES: return "HCI_EV_REMOTE_HOST_FEATURES";
radiojunkbox 0:3b4e3e2ec6a5 206 }
radiojunkbox 0:3b4e3e2ec6a5 207 return "Unknown Event";
radiojunkbox 0:3b4e3e2ec6a5 208 }
radiojunkbox 0:3b4e3e2ec6a5 209
radiojunkbox 0:3b4e3e2ec6a5 210 const char* CmdStr(int cmd)
radiojunkbox 0:3b4e3e2ec6a5 211 {
radiojunkbox 0:3b4e3e2ec6a5 212 switch (cmd)
radiojunkbox 0:3b4e3e2ec6a5 213 {
radiojunkbox 0:3b4e3e2ec6a5 214 // 0x04XX
radiojunkbox 0:3b4e3e2ec6a5 215 case HCI_OP_INQUIRY: return "HCI_OP_INQUIRY";
radiojunkbox 0:3b4e3e2ec6a5 216 case HCI_OP_INQUIRY_CANCEL: return "HCI_OP_INQUIRY_CANCEL";
radiojunkbox 0:3b4e3e2ec6a5 217 case HCI_OP_EXIT_PERIODIC_INQ: return "HCI_OP_EXIT_PERIODIC_INQ";
radiojunkbox 0:3b4e3e2ec6a5 218 case HCI_OP_CREATE_CONN: return "HCI_OP_CREATE_CONN";
radiojunkbox 0:3b4e3e2ec6a5 219 case HCI_OP_DISCONNECT: return "HCI_OP_DISCONNECT";
radiojunkbox 0:3b4e3e2ec6a5 220 case HCI_OP_ADD_SCO: return "HCI_OP_ADD_SCO";
radiojunkbox 0:3b4e3e2ec6a5 221 case HCI_OP_CREATE_CONN_CANCEL: return "HCI_OP_CREATE_CONN_CANCEL";
radiojunkbox 0:3b4e3e2ec6a5 222 case HCI_OP_ACCEPT_CONN_REQ: return "HCI_OP_ACCEPT_CONN_REQ";
radiojunkbox 0:3b4e3e2ec6a5 223 case HCI_OP_REJECT_CONN_REQ: return "HCI_OP_REJECT_CONN_REQ";
radiojunkbox 0:3b4e3e2ec6a5 224 case HCI_OP_LINK_KEY_REPLY: return "HCI_OP_LINK_KEY_REPLY";
radiojunkbox 0:3b4e3e2ec6a5 225 case HCI_OP_LINK_KEY_NEG_REPLY: return "HCI_OP_LINK_KEY_NEG_REPLY";
radiojunkbox 0:3b4e3e2ec6a5 226 case HCI_OP_PIN_CODE_REPLY: return "HCI_OP_PIN_CODE_REPLY";
radiojunkbox 0:3b4e3e2ec6a5 227 case HCI_OP_PIN_CODE_NEG_REPLY: return "HCI_OP_PIN_CODE_NEG_REPLY";
radiojunkbox 0:3b4e3e2ec6a5 228 case HCI_OP_CHANGE_CONN_PTYPE: return "HCI_OP_CHANGE_CONN_PTYPE";
radiojunkbox 0:3b4e3e2ec6a5 229 case HCI_OP_AUTH_REQUESTED: return "HCI_OP_AUTH_REQUESTED";
radiojunkbox 0:3b4e3e2ec6a5 230 case HCI_OP_SET_CONN_ENCRYPT: return "HCI_OP_SET_CONN_ENCRYPT";
radiojunkbox 0:3b4e3e2ec6a5 231 case HCI_OP_CHANGE_CONN_LINK_KEY: return "HCI_OP_CHANGE_CONN_LINK_KEY";
radiojunkbox 0:3b4e3e2ec6a5 232 case HCI_OP_REMOTE_NAME_REQ: return "HCI_OP_REMOTE_NAME_REQ";
radiojunkbox 0:3b4e3e2ec6a5 233 case HCI_OP_REMOTE_NAME_REQ_CANCEL: return "HCI_OP_REMOTE_NAME_REQ_CANCEL";
radiojunkbox 0:3b4e3e2ec6a5 234 case HCI_OP_READ_REMOTE_FEATURES: return "HCI_OP_READ_REMOTE_FEATURES";
radiojunkbox 0:3b4e3e2ec6a5 235 case HCI_OP_READ_REMOTE_EXT_FEATURES: return "HCI_OP_READ_REMOTE_EXT_FEATURES";
radiojunkbox 0:3b4e3e2ec6a5 236 case HCI_OP_READ_REMOTE_VERSION: return "HCI_OP_READ_REMOTE_VERSION";
radiojunkbox 0:3b4e3e2ec6a5 237 case HCI_OP_SETUP_SYNC_CONN: return "HCI_OP_SETUP_SYNC_CONN";
radiojunkbox 0:3b4e3e2ec6a5 238 case HCI_OP_ACCEPT_SYNC_CONN_REQ: return "HCI_OP_ACCEPT_SYNC_CONN_REQ";
radiojunkbox 0:3b4e3e2ec6a5 239 case HCI_OP_REJECT_SYNC_CONN_REQ: return "HCI_OP_REJECT_SYNC_CONN_REQ";
radiojunkbox 0:3b4e3e2ec6a5 240 // 0x0CXX
radiojunkbox 0:3b4e3e2ec6a5 241 case HCI_OP_SET_EVENT_MASK: return "HCI_OP_SET_EVENT_MASK";
radiojunkbox 0:3b4e3e2ec6a5 242 case HCI_OP_RESET: return "HCI_OP_RESET";
radiojunkbox 0:3b4e3e2ec6a5 243 case HCI_OP_SET_EVENT_FLT: return "HCI_OP_SET_EVENT_FLT";
radiojunkbox 0:3b4e3e2ec6a5 244 case HCI_OP_WRITE_LOCAL_NAME: return "HCI_OP_WRITE_LOCAL_NAME";
radiojunkbox 0:3b4e3e2ec6a5 245 case HCI_OP_READ_LOCAL_NAME: return "HCI_OP_READ_LOCAL_NAME";
radiojunkbox 0:3b4e3e2ec6a5 246 case HCI_OP_WRITE_CA_TIMEOUT: return "HCI_OP_WRITE_CA_TIMEOUT";
radiojunkbox 0:3b4e3e2ec6a5 247 case HCI_OP_WRITE_PG_TIMEOUT: return "HCI_OP_WRITE_PG_TIMEOUT";
radiojunkbox 0:3b4e3e2ec6a5 248 case HCI_OP_WRITE_SCAN_ENABLE: return "HCI_OP_WRITE_SCAN_ENABLE";
radiojunkbox 0:3b4e3e2ec6a5 249 case HCI_OP_READ_AUTH_ENABLE: return "HCI_OP_READ_AUTH_ENABLE";
radiojunkbox 0:3b4e3e2ec6a5 250 case HCI_OP_WRITE_AUTH_ENABLE: return "HCI_OP_WRITE_AUTH_ENABLE";
radiojunkbox 0:3b4e3e2ec6a5 251 case HCI_OP_READ_ENCRYPT_MODE: return "HCI_OP_READ_ENCRYPT_MODE";
radiojunkbox 0:3b4e3e2ec6a5 252 case HCI_OP_WRITE_ENCRYPT_MODE: return "HCI_OP_WRITE_ENCRYPT_MODE";
radiojunkbox 0:3b4e3e2ec6a5 253 case HCI_OP_READ_CLASS_OF_DEV: return "HCI_OP_READ_CLASS_OF_DEV";
radiojunkbox 0:3b4e3e2ec6a5 254 case HCI_OP_WRITE_CLASS_OF_DEV: return "HCI_OP_WRITE_CLASS_OF_DEV";
radiojunkbox 0:3b4e3e2ec6a5 255 case HCI_OP_READ_VOICE_SETTING: return "HCI_OP_READ_VOICE_SETTING";
radiojunkbox 0:3b4e3e2ec6a5 256 case HCI_OP_WRITE_VOICE_SETTING: return "HCI_OP_WRITE_VOICE_SETTING";
radiojunkbox 0:3b4e3e2ec6a5 257 case HCI_OP_HOST_BUFFER_SIZE: return "HCI_OP_HOST_BUFFER_SIZE";
radiojunkbox 0:3b4e3e2ec6a5 258 case HCI_OP_READ_SSP_MODE: return "HCI_OP_READ_SSP_MODE";
radiojunkbox 0:3b4e3e2ec6a5 259 case HCI_OP_WRITE_SSP_MODE: return "HCI_OP_WRITE_SSP_MODE";
radiojunkbox 0:3b4e3e2ec6a5 260
radiojunkbox 0:3b4e3e2ec6a5 261 // 10xx
radiojunkbox 0:3b4e3e2ec6a5 262 case HCI_OP_READ_LOCAL_VERSION: return "HCI_OP_READ_LOCAL_VERSION";
radiojunkbox 0:3b4e3e2ec6a5 263 case HCI_OP_READ_LOCAL_COMMANDS: return "HCI_OP_READ_LOCAL_COMMANDS";
radiojunkbox 0:3b4e3e2ec6a5 264 case HCI_OP_READ_LOCAL_FEATURES: return "HCI_OP_READ_LOCAL_FEATURES";
radiojunkbox 0:3b4e3e2ec6a5 265 case HCI_OP_READ_LOCAL_EXT_FEATURES: return "HCI_OP_READ_LOCAL_EXT_FEATURES";
radiojunkbox 0:3b4e3e2ec6a5 266 case HCI_OP_READ_BUFFER_SIZE: return "HCI_OP_READ_BUFFER_SIZE";
radiojunkbox 0:3b4e3e2ec6a5 267 case HCI_OP_READ_BD_ADDR: return "HCI_OP_READ_BD_ADDR";
radiojunkbox 0:3b4e3e2ec6a5 268 }
radiojunkbox 0:3b4e3e2ec6a5 269 return "Unknown Cmd";
radiojunkbox 0:3b4e3e2ec6a5 270 }
radiojunkbox 0:3b4e3e2ec6a5 271
radiojunkbox 0:3b4e3e2ec6a5 272 const char* HCIErrStr(int err)
radiojunkbox 0:3b4e3e2ec6a5 273 {
radiojunkbox 0:3b4e3e2ec6a5 274 switch (err)
radiojunkbox 0:3b4e3e2ec6a5 275 {
radiojunkbox 0:3b4e3e2ec6a5 276 case 0: return "OK";
radiojunkbox 0:3b4e3e2ec6a5 277 case HCI_UNKNOWN_HCI_COMMAND: return "HCI_UNKNOWN_HCI_COMMAND";
radiojunkbox 0:3b4e3e2ec6a5 278 case HCI_NO_CONNECTION: return "HCI_NO_CONNECTION";
radiojunkbox 0:3b4e3e2ec6a5 279 case HCI_HW_FAILURE: return "HCI_HW_FAILURE";
radiojunkbox 0:3b4e3e2ec6a5 280 case HCI_PAGE_TIMEOUT: return "HCI_PAGE_TIMEOUT";
radiojunkbox 0:3b4e3e2ec6a5 281 case HCI_AUTHENTICATION_FAILURE: return "HCI_AUTHENTICATION_FAILURE";
radiojunkbox 0:3b4e3e2ec6a5 282 case HCI_KEY_MISSING: return "HCI_KEY_MISSING";
radiojunkbox 0:3b4e3e2ec6a5 283 case HCI_MEMORY_FULL: return "HCI_MEMORY_FULL";
radiojunkbox 0:3b4e3e2ec6a5 284 case HCI_CONN_TIMEOUT: return "HCI_CONN_TIMEOUT";
radiojunkbox 0:3b4e3e2ec6a5 285 case HCI_MAX_NUMBER_OF_CONNECTIONS: return "HCI_CONN_TIMEOUT";
radiojunkbox 0:3b4e3e2ec6a5 286 case HCI_MAX_NUMBER_OF_SCO_CONNECTIONS_TO_DEVICE: return "HCI_MAX_NUMBER_OF_SCO_CONNECTIONS_TO_DEVICE";
radiojunkbox 0:3b4e3e2ec6a5 287 case HCI_ACL_CONNECTION_EXISTS: return "HCI_ACL_CONNECTION_EXISTS";
radiojunkbox 0:3b4e3e2ec6a5 288 case HCI_COMMAND_DISSALLOWED: return "HCI_COMMAND_DISSALLOWED";
radiojunkbox 0:3b4e3e2ec6a5 289 case HCI_HOST_REJECTED_DUE_TO_LIMITED_RESOURCES: return "HCI_HOST_REJECTED_DUE_TO_LIMITED_RESOURCES";
radiojunkbox 0:3b4e3e2ec6a5 290 case HCI_HOST_REJECTED_DUE_TO_SECURITY_REASONS: return "HCI_HOST_REJECTED_DUE_TO_SECURITY_REASONS";
radiojunkbox 0:3b4e3e2ec6a5 291 case HCI_HOST_REJECTED_DUE_TO_REMOTE_DEVICE_ONLY_PERSONAL_SERVICE: return "HCI_HOST_REJECTED_DUE_TO_REMOTE_DEVICE_ONLY_PERSONAL_SERVICE";
radiojunkbox 0:3b4e3e2ec6a5 292 case HCI_HOST_TIMEOUT: return "HCI_HOST_TIMEOUT";
radiojunkbox 0:3b4e3e2ec6a5 293 case HCI_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE: return "HCI_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE";
radiojunkbox 0:3b4e3e2ec6a5 294 case HCI_INVALID_HCI_COMMAND_PARAMETERS: return "HCI_INVALID_HCI_COMMAND_PARAMETERS";
radiojunkbox 0:3b4e3e2ec6a5 295 case HCI_OTHER_END_TERMINATED_CONN_USER_ENDED: return "HCI_OTHER_END_TERMINATED_CONN_USER_ENDED";
radiojunkbox 0:3b4e3e2ec6a5 296 case HCI_OTHER_END_TERMINATED_CONN_LOW_RESOURCES: return "HCI_OTHER_END_TERMINATED_CONN_LOW_RESOURCES";
radiojunkbox 0:3b4e3e2ec6a5 297 case HCI_OTHER_END_TERMINATED_CONN_ABOUT_TO_POWER_OFF: return "HCI_OTHER_END_TERMINATED_CONN_ABOUT_TO_POWER_OFF";
radiojunkbox 0:3b4e3e2ec6a5 298 case HCI_CONN_TERMINATED_BY_LOCAL_HOST: return "HCI_CONN_TERMINATED_BY_LOCAL_HOST";
radiojunkbox 0:3b4e3e2ec6a5 299 case HCI_REPETED_ATTEMPTS: return "HCI_REPETED_ATTEMPTS";
radiojunkbox 0:3b4e3e2ec6a5 300 case HCI_PAIRING_NOT_ALLOWED: return "HCI_PAIRING_NOT_ALLOWED";
radiojunkbox 0:3b4e3e2ec6a5 301 case HCI_UNKNOWN_LMP_PDU: return "HCI_UNKNOWN_LMP_PDU";
radiojunkbox 0:3b4e3e2ec6a5 302 case HCI_UNSUPPORTED_REMOTE_FEATURE: return "HCI_UNSUPPORTED_REMOTE_FEATURE";
radiojunkbox 0:3b4e3e2ec6a5 303 case HCI_SCO_OFFSET_REJECTED: return "HCI_SCO_OFFSET_REJECTED";
radiojunkbox 0:3b4e3e2ec6a5 304 case HCI_SCO_INTERVAL_REJECTED: return "HCI_SCO_INTERVAL_REJECTED";
radiojunkbox 0:3b4e3e2ec6a5 305 case HCI_SCO_AIR_MODE_REJECTED: return "HCI_SCO_AIR_MODE_REJECTED";
radiojunkbox 0:3b4e3e2ec6a5 306 case HCI_INVALID_LMP_PARAMETERS: return "HCI_INVALID_LMP_PARAMETERS";
radiojunkbox 0:3b4e3e2ec6a5 307 case HCI_UNSPECIFIED_ERROR: return "HCI_UNSPECIFIED_ERROR";
radiojunkbox 0:3b4e3e2ec6a5 308 case HCI_UNSUPPORTED_LMP_PARAMETER_VALUE: return "HCI_UNSUPPORTED_LMP_PARAMETER_VALUE";
radiojunkbox 0:3b4e3e2ec6a5 309 case HCI_ROLE_CHANGE_NOT_ALLOWED: return "HCI_ROLE_CHANGE_NOT_ALLOWED";
radiojunkbox 0:3b4e3e2ec6a5 310 case HCI_LMP_RESPONSE_TIMEOUT: return "HCI_LMP_RESPONSE_TIMEOUT";
radiojunkbox 0:3b4e3e2ec6a5 311 case HCI_LMP_ERROR_TRANSACTION_COLLISION: return "HCI_LMP_ERROR_TRANSACTION_COLLISION";
radiojunkbox 0:3b4e3e2ec6a5 312 case HCI_LMP_PDU_NOT_ALLOWED: return "HCI_LMP_PDU_NOT_ALLOWED";
radiojunkbox 0:3b4e3e2ec6a5 313 case HCI_ENCRYPTION_MODE_NOT_ACCEPTABLE: return "HCI_ENCRYPTION_MODE_NOT_ACCEPTABLE";
radiojunkbox 0:3b4e3e2ec6a5 314 case HCI_UNIT_KEY_USED: return "HCI_UNIT_KEY_USED";
radiojunkbox 0:3b4e3e2ec6a5 315 case HCI_QOS_NOT_SUPPORTED: return "HCI_QOS_NOT_SUPPORTED";
radiojunkbox 0:3b4e3e2ec6a5 316 case HCI_INSTANT_PASSED: return "HCI_INSTANT_PASSED";
radiojunkbox 0:3b4e3e2ec6a5 317 case HCI_PAIRING_UNIT_KEY_NOT_SUPPORTED: return "HCI_PAIRING_UNIT_KEY_NOT_SUPPORTED";
radiojunkbox 0:3b4e3e2ec6a5 318 };
radiojunkbox 0:3b4e3e2ec6a5 319 return "Unknow HCI err";
radiojunkbox 0:3b4e3e2ec6a5 320 };
radiojunkbox 0:3b4e3e2ec6a5 321
radiojunkbox 0:3b4e3e2ec6a5 322
radiojunkbox 0:3b4e3e2ec6a5 323 #endif // HCI_PRIVATE_H_INCLUDED