|
16 | 16 | */
|
17 | 17 |
|
18 | 18 | #include "ble_trace_helpers.h"
|
| 19 | +#include "pal/AttServerMessage.h" |
| 20 | +#include "ble-host/include/att_api.h" |
19 | 21 | #define TRACE_GROUP "BLE "
|
20 | 22 |
|
21 | 23 | namespace ble {
|
22 | 24 | #if MBED_CONF_MBED_TRACE_ENABLE
|
| 25 | + |
| 26 | +const char* ble_error_to_string(ble_error_t error_code) |
| 27 | +{ |
| 28 | +#if MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 29 | + const char* ret = "INVALID ENUM VALUE"; |
| 30 | + switch(error_code) |
| 31 | + { |
| 32 | + case BLE_ERROR_NONE: ret = "BLE_ERROR_NONE"; break; |
| 33 | + case BLE_ERROR_BUFFER_OVERFLOW: ret = "BLE_ERROR_BUFFER_OVERFLOW"; break; |
| 34 | + case BLE_ERROR_NOT_IMPLEMENTED: ret = "BLE_ERROR_NOT_IMPLEMENTED"; break; |
| 35 | + case BLE_ERROR_PARAM_OUT_OF_RANGE: ret = "BLE_ERROR_PARAM_OUT_OF_RANGE"; break; |
| 36 | + case BLE_ERROR_INVALID_PARAM: ret = "BLE_ERROR_INVALID_PARAM"; break; |
| 37 | + case BLE_STACK_BUSY: ret = "BLE_STACK_BUSY"; break; |
| 38 | + case BLE_ERROR_INVALID_STATE: ret = "BLE_ERROR_INVALID_STATE"; break; |
| 39 | + case BLE_ERROR_NO_MEM: ret = "BLE_ERROR_NO_MEM"; break; |
| 40 | + case BLE_ERROR_OPERATION_NOT_PERMITTED: ret = "BLE_ERROR_OPERATION_NOT_PERMITTED"; break; |
| 41 | + case BLE_ERROR_INITIALIZATION_INCOMPLETE: ret = "BLE_ERROR_INITIALIZATION_INCOMPLETE"; break; |
| 42 | + case BLE_ERROR_ALREADY_INITIALIZED: ret = "BLE_ERROR_ALREADY_INITIALIZED"; break; |
| 43 | + case BLE_ERROR_UNSPECIFIED: ret = "BLE_ERROR_UNSPECIFIED"; break; |
| 44 | + case BLE_ERROR_INTERNAL_STACK_FAILURE: ret = "BLE_ERROR_INTERNAL_STACK_FAILURE"; break; |
| 45 | + case BLE_ERROR_NOT_FOUND: ret = "BLE_ERROR_NOT_FOUND"; break; |
| 46 | + } |
| 47 | +#else // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 48 | + static char ret[3] = "00"; |
| 49 | + sprintf(ret, "0x%02x", (int)error_code); |
| 50 | +#endif // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 51 | + return ret; |
| 52 | +} |
| 53 | + |
| 54 | +const char* attribute_error_code_to_string(uint8_t error_code) |
| 55 | +{ |
| 56 | +#if MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 57 | + const char* ret = "INVALID ENUM VALUE"; |
| 58 | + switch(error_code) |
| 59 | + { |
| 60 | + case AttErrorResponse::INVALID_HANDLE: ret = "INVALID_HANDLE"; break; |
| 61 | + case AttErrorResponse::READ_NOT_PERMITTED: ret = "READ_NOT_PERMITTED"; break; |
| 62 | + case AttErrorResponse::WRITE_NOT_PERMITTED: ret = "WRITE_NOT_PERMITTED"; break; |
| 63 | + case AttErrorResponse::INVALID_PDU: ret = "INVALID_PDU"; break; |
| 64 | + case AttErrorResponse::INSUFFICIENT_AUTHENTICATION: ret = "INSUFFICIENT_AUTHENTICATION"; break; |
| 65 | + case AttErrorResponse::REQUEST_NOT_SUPPORTED: ret = "REQUEST_NOT_SUPPORTED"; break; |
| 66 | + case AttErrorResponse::INVALID_OFFSET: ret = "INVALID_OFFSET"; break; |
| 67 | + case AttErrorResponse::INSUFFICIENT_AUTHORIZATION: ret = "INSUFFICIENT_AUTHORIZATION"; break; |
| 68 | + case AttErrorResponse::PREPARE_QUEUE_FULL: ret = "PREPARE_QUEUE_FULL"; break; |
| 69 | + case AttErrorResponse::ATTRIBUTE_NOT_FOUND: ret = "ATTRIBUTE_NOT_FOUND"; break; |
| 70 | + case AttErrorResponse::ATTRIBUTE_NOT_LONG: ret = "ATTRIBUTE_NOT_LONG"; break; |
| 71 | + case AttErrorResponse::INSUFFICIENT_ENCRYPTION_KEY_SIZE: ret = "INSUFFICIENT_ENCRYPTION_KEY_SIZE"; break; |
| 72 | + case AttErrorResponse::INVALID_ATTRIBUTE_VALUE_LENGTH: ret = "INVALID_ATTRIBUTE_VALUE_LENGTH"; break; |
| 73 | + case AttErrorResponse::UNLIKELY_ERROR: ret = "UNLIKELY_ERROR"; break; |
| 74 | + case AttErrorResponse::INSUFFICIENT_ENCRYPTION: ret = "INSUFFICIENT_ENCRYPTION"; break; |
| 75 | + case AttErrorResponse::UNSUPPORTED_GROUP_TYPE: ret = "UNSUPPORTED_GROUP_TYPE"; break; |
| 76 | + case AttErrorResponse::INSUFFICIENT_RESOURCES: ret = "INSUFFICIENT_RESOURCES"; break; |
| 77 | + case AttErrorResponse::WRITE_REQUEST_REJECTED: ret = "WRITE_REQUEST_REJECTED"; break; |
| 78 | + case AttErrorResponse::CLIENT_CHARACTERISTIC_CONFIGURATION_DESCRIPTOR_IMPROPERLY_CONFIGURED: |
| 79 | + ret = "CLIENT_CHARACTERISTIC_CONFIGURATION_DESCRIPTOR_IMPROPERLY_CONFIGURED"; break; |
| 80 | + case AttErrorResponse::PROCEDURE_ALREADY_IN_PROGRESS: ret = "PROCEDURE_ALREADY_IN_PROGRESS"; break; |
| 81 | + case AttErrorResponse::OUT_OF_RANGE: ret = "OUT_OF_RANGE"; break; |
| 82 | + } |
| 83 | +#else // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 84 | + static char ret[3] = "00"; |
| 85 | + sprintf(ret, "0x%02x", (int)error_code); |
| 86 | +#endif // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 87 | + return ret; |
| 88 | +} |
| 89 | + |
| 90 | +const char* att_client_callback_event_to_string(uint8_t code) |
| 91 | +{ |
| 92 | +#if MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 93 | + const char* ret = "INVALID EVENT"; |
| 94 | + switch(code) |
| 95 | + { |
| 96 | + case ATTC_FIND_INFO_RSP: ret = "ATTC_FIND_INFO_RSP"; break; |
| 97 | + case ATTC_FIND_BY_TYPE_VALUE_RSP: ret = "ATTC_FIND_BY_TYPE_VALUE_RSP"; break; |
| 98 | + case ATTC_READ_BY_TYPE_RSP: ret = "ATTC_READ_BY_TYPE_RSP"; break; |
| 99 | + case ATTC_READ_RSP: ret = "ATTC_READ_RSP"; break; |
| 100 | + case ATTC_READ_LONG_RSP: ret = "ATTC_READ_LONG_RSP"; break; |
| 101 | + case ATTC_READ_MULTIPLE_RSP: ret = "ATTC_READ_MULTIPLE_RSP"; break; |
| 102 | + case ATTC_READ_BY_GROUP_TYPE_RSP: ret = "ATTC_READ_BY_GROUP_TYPE_RSP"; break; |
| 103 | + case ATTC_WRITE_RSP: ret = "ATTC_WRITE_RSP"; break; |
| 104 | + case ATTC_WRITE_CMD_RSP: ret = "ATTC_WRITE_CMD_RSP"; break; |
| 105 | + case ATTC_PREPARE_WRITE_RSP: ret = "ATTC_PREPARE_WRITE_RSP"; break; |
| 106 | + case ATTC_EXECUTE_WRITE_RSP: ret = "ATTC_EXECUTE_WRITE_RSP"; break; |
| 107 | + case ATTC_HANDLE_VALUE_NTF: ret = "ATTC_HANDLE_VALUE_NTF"; break; |
| 108 | + case ATTC_HANDLE_VALUE_IND: ret = "ATTC_HANDLE_VALUE_IND"; break; |
| 109 | + case ATTC_READ_MULT_VAR_RSP: ret = "ATTC_READ_MULT_VAR_RSP"; break; |
| 110 | + case ATTC_MULT_VALUE_NTF: ret = "ATTC_MULT_VALUE_NTF"; break; |
| 111 | + case ATTS_HANDLE_VALUE_CNF: ret = "ATTS_HANDLE_VALUE_CNF"; break; |
| 112 | + case ATTS_MULT_VALUE_CNF: ret = "ATTS_MULT_VALUE_CNF"; break; |
| 113 | + case ATTS_CCC_STATE_IND: ret = "ATTS_CCC_STATE_IND"; break; |
| 114 | + case ATTS_DB_HASH_CALC_CMPL_IND: ret = "ATTS_DB_HASH_CALC_CMPL_IND"; break; |
| 115 | + case ATT_MTU_UPDATE_IND: ret = "ATT_MTU_UPDATE_IND"; break; |
| 116 | + case ATT_EATT_CONN_CMPL_IND: ret = "ATT_EATT_CONN_CMPL_IND"; break; |
| 117 | + case ATT_EATT_RECONFIG_CMPL_IND: ret = "ATT_EATT_RECONFIG_CMPL_IND"; break; |
| 118 | + } |
| 119 | +#else // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 120 | + static char ret[3] = "00"; |
| 121 | + sprintf(ret, "0x%02x", (int)code); |
| 122 | +#endif // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 123 | + return ret; |
| 124 | +} |
| 125 | + |
| 126 | +const char* att_error_code_to_string(uint8_t error_code) |
| 127 | +{ |
| 128 | +#if MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 129 | + const char* ret = "INVALID EVENT"; |
| 130 | + switch(error_code) |
| 131 | + { |
| 132 | + case ATT_SUCCESS: ret = "ATT_SUCCESS"; break; |
| 133 | + case ATT_ERR_HANDLE: ret = "ATT_ERR_HANDLE"; break; |
| 134 | + case ATT_ERR_READ: ret = "ATT_ERR_READ"; break; |
| 135 | + case ATT_ERR_WRITE: ret = "ATT_ERR_WRITE"; break; |
| 136 | + case ATT_ERR_INVALID_PDU: ret = "ATT_ERR_INVALID_PDU"; break; |
| 137 | + case ATT_ERR_AUTH: ret = "ATT_ERR_AUTH"; break; |
| 138 | + case ATT_ERR_NOT_SUP: ret = "ATT_ERR_NOT_SUP"; break; |
| 139 | + case ATT_ERR_OFFSET: ret = "ATT_ERR_OFFSET"; break; |
| 140 | + case ATT_ERR_AUTHOR: ret = "ATT_ERR_AUTHOR"; break; |
| 141 | + case ATT_ERR_QUEUE_FULL: ret = "ATT_ERR_QUEUE_FULL"; break; |
| 142 | + case ATT_ERR_NOT_FOUND: ret = "ATT_ERR_NOT_FOUND"; break; |
| 143 | + case ATT_ERR_NOT_LONG: ret = "ATT_ERR_NOT_LONG"; break; |
| 144 | + case ATT_ERR_KEY_SIZE: ret = "ATT_ERR_KEY_SIZE"; break; |
| 145 | + case ATT_ERR_LENGTH: ret = "ATT_ERR_LENGTH"; break; |
| 146 | + case ATT_ERR_UNLIKELY: ret = "ATT_ERR_UNLIKELY"; break; |
| 147 | + case ATT_ERR_ENC: ret = "ATT_ERR_ENC"; break; |
| 148 | + case ATT_ERR_GROUP_TYPE: ret = "ATT_ERR_GROUP_TYPE"; break; |
| 149 | + case ATT_ERR_RESOURCES: ret = "ATT_ERR_RESOURCES"; break; |
| 150 | + case ATT_ERR_DATABASE_OUT_OF_SYNC: ret = "ATT_ERR_DATABASE_OUT_OF_SYNC"; break; |
| 151 | + case ATT_ERR_VALUE_NOT_ALLOWED: ret = "ATT_ERR_VALUE_NOT_ALLOWED"; break; |
| 152 | + case ATT_ERR_WRITE_REJ: ret = "ATT_ERR_WRITE_REJ"; break; |
| 153 | + case ATT_ERR_CCCD: ret = "ATT_ERR_CCCD"; break; |
| 154 | + case ATT_ERR_IN_PROGRESS: ret = "ATT_ERR_IN_PROGRESS"; break; |
| 155 | + case ATT_ERR_RANGE: ret = "ATT_ERR_RANGE"; break; |
| 156 | + } |
| 157 | +#else // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 158 | + static char ret[3] = "00"; |
| 159 | + sprintf(ret, "0x%02x", (int)error_code); |
| 160 | +#endif // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 161 | + return ret; |
| 162 | +} |
| 163 | + |
| 164 | +const char* attribute_opcode_to_string(uint8_t error_code) |
| 165 | +{ |
| 166 | +#if MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 167 | + const char* ret = "INVALID OPCODE"; |
| 168 | + switch(error_code) |
| 169 | + { |
| 170 | + case AttributeOpcode::ERROR_RESPONSE: ret = "ERROR_RESPONSE"; break; |
| 171 | + case AttributeOpcode::EXCHANGE_MTU_REQUEST: ret = "EXCHANGE_MTU_REQUEST"; break; |
| 172 | + case AttributeOpcode::EXCHANGE_MTU_RESPONSE: ret = "EXCHANGE_MTU_RESPONSE"; break; |
| 173 | + case AttributeOpcode::FIND_INFORMATION_REQUEST: ret = "FIND_INFORMATION_REQUEST"; break; |
| 174 | + case AttributeOpcode::FIND_INFORMATION_RESPONSE: ret = "FIND_INFORMATION_RESPONSE"; break; |
| 175 | + case AttributeOpcode::FIND_BY_TYPE_VALUE_REQUEST: ret = "FIND_BY_TYPE_VALUE_REQUEST"; break; |
| 176 | + case AttributeOpcode::FIND_BY_VALUE_TYPE_RESPONSE: ret = "FIND_BY_VALUE_TYPE_RESPONSE"; break; |
| 177 | + case AttributeOpcode::READ_BY_TYPE_REQUEST: ret = "READ_BY_TYPE_REQUEST"; break; |
| 178 | + case AttributeOpcode::READ_BY_TYPE_RESPONSE: ret = "READ_BY_TYPE_RESPONSE"; break; |
| 179 | + case AttributeOpcode::READ_REQUEST: ret = "READ_REQUEST"; break; |
| 180 | + case AttributeOpcode::READ_RESPONSE: ret = "READ_RESPONSE"; break; |
| 181 | + case AttributeOpcode::READ_BLOB_REQUEST: ret = "READ_BLOB_REQUEST"; break; |
| 182 | + case AttributeOpcode::READ_BLOB_RESPONSE: ret = "READ_BLOB_RESPONSE"; break; |
| 183 | + case AttributeOpcode::READ_MULTIPLE_REQUEST: ret = "READ_MULTIPLE_REQUEST"; break; |
| 184 | + case AttributeOpcode::READ_MULTIPLE_RESPONSE: ret = "READ_MULTIPLE_RESPONSE"; break; |
| 185 | + case AttributeOpcode::READ_BY_GROUP_TYPE_REQUEST: ret = "READ_BY_GROUP_TYPE_REQUEST"; break; |
| 186 | + case AttributeOpcode::READ_BY_GROUP_TYPE_RESPONSE: ret = "READ_BY_GROUP_TYPE_RESPONSE"; break; |
| 187 | + case AttributeOpcode::WRITE_REQUEST: ret = "WRITE_REQUEST"; break; |
| 188 | + case AttributeOpcode::WRITE_RESPONSE: ret = "WRITE_RESPONSE"; break; |
| 189 | + case AttributeOpcode::WRITE_COMMAND: ret = "WRITE_COMMAND"; break; |
| 190 | + case AttributeOpcode::SIGNED_WRITE_COMMAND: ret = "SIGNED_WRITE_COMMAND"; break; |
| 191 | + case AttributeOpcode::PREPARE_WRITE_REQUEST: ret = "PREPARE_WRITE_REQUEST"; break; |
| 192 | + case AttributeOpcode::PREPARE_WRITE_RESPONSE: ret = "PREPARE_WRITE_RESPONSE"; break; |
| 193 | + case AttributeOpcode::EXECUTE_WRITE_REQUEST: ret = "EXECUTE_WRITE_REQUEST"; break; |
| 194 | + case AttributeOpcode::EXECUTE_WRITE_RESPONSE: ret = "EXECUTE_WRITE_RESPONSE"; break; |
| 195 | + case AttributeOpcode::HANDLE_VALUE_NOTIFICATION: ret = "HANDLE_VALUE_NOTIFICATION"; break; |
| 196 | + case AttributeOpcode::HANDLE_VALUE_INDICATION: ret = "HANDLE_VALUE_INDICATION"; break; |
| 197 | + } |
| 198 | +#else // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 199 | + static char ret[3] = "00"; |
| 200 | + sprintf(ret, "0x%02x", (int)error_code); |
| 201 | +#endif // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS |
| 202 | + return ret; |
| 203 | +} |
| 204 | + |
23 | 205 | const char* dm_callback_event_to_string(uint8_t event) {
|
24 | 206 | #if MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS
|
25 | 207 | const char* ret = "INVALID";
|
@@ -121,7 +303,7 @@ const char* dm_callback_event_to_string(uint8_t event) {
|
121 | 303 | }
|
122 | 304 | #else // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS
|
123 | 305 | static char ret[3] = "00";
|
124 |
| - sprintf(ret, "%02x", (int)event); |
| 306 | + sprintf(ret, "0x%02x", (int)event); |
125 | 307 | #endif // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS
|
126 | 308 | return ret;
|
127 | 309 | }
|
@@ -328,7 +510,7 @@ const char* hci_opcode_to_string(uint16_t opcode)
|
328 | 510 | }
|
329 | 511 | #else // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS
|
330 | 512 | static char ret[3] = "00";
|
331 |
| - sprintf(ret, "%02x", (int)opcode); |
| 513 | + sprintf(ret, "0x%02x", (int)opcode); |
332 | 514 | #endif // MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS
|
333 | 515 | return ret;
|
334 | 516 | }
|
|
0 commit comments