1611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// 2611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// Copyright (C) 2015 Google, Inc. 3611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// 4611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// Licensed under the Apache License, Version 2.0 (the "License"); 5611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// you may not use this file except in compliance with the License. 6611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// You may obtain a copy of the License at: 7611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// 8611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// http://www.apache.org/licenses/LICENSE-2.0 9611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// 10611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// Unless required by applicable law or agreed to in writing, software 11611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// distributed under the License is distributed on an "AS IS" BASIS, 12611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// See the License for the specific language governing permissions and 14611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// limitations under the License. 15611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge// 16611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge#include "logging_helpers.h" 17611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 18611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge#include <string.h> 19611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 20611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge#include <string> 21611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 22611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge#define CASE_RETURN_TEXT(code) \ 23611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge case code: \ 24611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return #code 25611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 26611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgeconst char *BtAvConnectionStateText(const btav_connection_state_t state) { 27611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge switch (state) { 28611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BTAV_CONNECTION_STATE_DISCONNECTED); 29611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BTAV_CONNECTION_STATE_CONNECTING); 30611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BTAV_CONNECTION_STATE_CONNECTED); 31611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BTAV_CONNECTION_STATE_DISCONNECTING); 32611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge default: 33611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return "Invalid AV connection state"; 34611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge } 35611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 36611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 37611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgeconst char *BtAvAudioStateText(const btav_audio_state_t state) { 38611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge switch (state) { 39611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BTAV_AUDIO_STATE_REMOTE_SUSPEND); 40611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BTAV_AUDIO_STATE_STOPPED); 41611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BTAV_AUDIO_STATE_STARTED); 42611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge default: 43611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return "Invalid audio state"; 44611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge } 45611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 46611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 47611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgeconst char *BtTransportText(const btgatt_transport_t t) { 48611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge switch(t) { 49611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(GATT_TRANSPORT_AUTO); 50611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(GATT_TRANSPORT_BREDR); 51611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(GATT_TRANSPORT_LE); 52611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge default: 53611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return "unknown transport"; 54611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge } 55611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 56611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 57611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgeconst char *BtStateText(const bt_state_t state) { 58611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge switch (state) { 59611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_STATE_OFF); 60611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_STATE_ON); 61611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge default: 62611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return "unknown state code"; 63611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge } 64611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 65611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 66fc616e01fb674e5907e578ae8ecd72b189cfb534Ajay Panickerconst char *BtDiscoveryStateText(const bt_discovery_state_t state) { 67fc616e01fb674e5907e578ae8ecd72b189cfb534Ajay Panicker switch (state) { 68fc616e01fb674e5907e578ae8ecd72b189cfb534Ajay Panicker CASE_RETURN_TEXT(BT_DISCOVERY_STOPPED); 69fc616e01fb674e5907e578ae8ecd72b189cfb534Ajay Panicker CASE_RETURN_TEXT(BT_DISCOVERY_STARTED); 70fc616e01fb674e5907e578ae8ecd72b189cfb534Ajay Panicker default: 71fc616e01fb674e5907e578ae8ecd72b189cfb534Ajay Panicker return "unknown discovery state code"; 72fc616e01fb674e5907e578ae8ecd72b189cfb534Ajay Panicker } 73fc616e01fb674e5907e578ae8ecd72b189cfb534Ajay Panicker} 74fc616e01fb674e5907e578ae8ecd72b189cfb534Ajay Panicker 75611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgeconst char *BtScanModeText(const bt_scan_mode_t mode) { 76611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge switch (mode) { 77611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_SCAN_MODE_NONE); 78611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_SCAN_MODE_CONNECTABLE); 79611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE); 80611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge default: 81611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return "unknown scan mode"; 82611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge } 83611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 84611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 85611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgeconst char *BtStatusText(const bt_status_t status) { 86611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge switch (status) { 87611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_STATUS_SUCCESS); 88611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_STATUS_FAIL); 89611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_STATUS_NOT_READY); 90611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_STATUS_NOMEM); 91611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_STATUS_DONE); 92611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_STATUS_BUSY); 93611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_STATUS_UNSUPPORTED); 94fcf2e0391950a8b140082fbe78688fa89471fbedArman Uguray CASE_RETURN_TEXT(BT_STATUS_PARM_INVALID); 95fcf2e0391950a8b140082fbe78688fa89471fbedArman Uguray CASE_RETURN_TEXT(BT_STATUS_UNHANDLED); 96fcf2e0391950a8b140082fbe78688fa89471fbedArman Uguray CASE_RETURN_TEXT(BT_STATUS_AUTH_FAILURE); 97fcf2e0391950a8b140082fbe78688fa89471fbedArman Uguray CASE_RETURN_TEXT(BT_STATUS_RMT_DEV_DOWN); 98fcf2e0391950a8b140082fbe78688fa89471fbedArman Uguray CASE_RETURN_TEXT(BT_STATUS_AUTH_REJECTED); 99611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge default: 100611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return "unknown status code"; 101611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge } 102611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 103611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 104611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgeconst char *BtPropertyText(const bt_property_type_t prop) { 105611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge switch (prop) { 106611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_BDNAME); 107611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_BDADDR); 108611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_UUIDS); 109611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_CLASS_OF_DEVICE); 110611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_TYPE_OF_DEVICE); 111611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_SERVICE_RECORD); 112611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_ADAPTER_SCAN_MODE); 113611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_ADAPTER_BONDED_DEVICES); 114611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT); 115611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_REMOTE_FRIENDLY_NAME); 116611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_REMOTE_RSSI); 117611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_REMOTE_VERSION_INFO); 118611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_LOCAL_LE_FEATURES); 119611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_PROPERTY_REMOTE_DEVICE_TIMESTAMP); 120611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge default: 121611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return "Invalid property"; 122611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge } 123611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 124611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 125611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgeconst char *BtEventText(const bt_cb_thread_evt evt) { 126611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge switch (evt) { 127611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(ASSOCIATE_JVM); 128611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(DISASSOCIATE_JVM); 129611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge default: 130611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return "unknown state code"; 131611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge } 132611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 133611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 134611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgeconst char *BtAclText(const bt_acl_state_t code) { 135611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge switch (code) { 136611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_ACL_STATE_CONNECTED); 137611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge CASE_RETURN_TEXT(BT_ACL_STATE_DISCONNECTED); 138611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge default: 139611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return "unknown ACL code"; 140611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge } 141611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 142611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge 143611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidgestd::string BtAddrString(const bt_bdaddr_t *addr) { 144611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge char buffer[20]; 145611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge snprintf(buffer, sizeof(buffer), "%02X:%02X:%02X:%02X:%02X:%02X", 146611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge addr->address[0], addr->address[1], addr->address[2], 147611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge addr->address[3], addr->address[4], addr->address[5]); 148611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge return std::string(buffer); 149611fcf98316e28425abe28dbcc07b8d037653ceeIan Coolidge} 150