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