1#/usr/bin/env python3.4
2#
3# Copyright (C) 2016 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License"); you may not
6# use this file except in compliance with the License. You may obtain a copy of
7# the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14# License for the specific language governing permissions and limitations under
15# the License.
16
17### Generic Constants Begin ###
18
19bt_default_timeout = 15
20default_rfcomm_timeout_ms = 10000
21default_bluetooth_socket_timeout_ms = 10000
22pan_connect_timeout = 5
23bt_discovery_timeout = 3
24small_timeout = 0.0001
25
26# Time delay (in seconds) at the end of each LE CoC Test to give sufficient time
27# for the ACL LE link to be disconnected. The ACL link stays connected after
28# L2CAP disconnects.  An example of the timeout is L2CAP_LINK_INACTIVITY_TOUT.
29# This delay must be greater than the maximum of these timeouts.
30# TODO: Investigate the use of broadcast intent
31# BluetoothDevice.ACTION_ACL_DISCONNECTED to replace this delay method.
32l2cap_max_inactivity_delay_after_disconnect = 5
33
34# LE specifications related constants
35le_connection_interval_time_step_ms = 1.25
36le_default_supervision_timeout = 2000
37default_le_data_length = 23
38default_le_connection_interval_ms = 30
39le_connection_event_time_step_ms = 0.625
40
41# Headers of LE L2CAP Connection-oriented Channels. See section 3.4, Vol 3, Part A, Version 5.0.
42l2cap_header_size = 4
43l2cap_coc_sdu_length_field_size = 2
44l2cap_coc_header_size = l2cap_header_size + l2cap_coc_sdu_length_field_size
45
46java_integer = {"min": -2147483648, "max": 2147483647}
47
48btsnoop_log_path_on_device = "/data/misc/bluetooth/logs/btsnoop_hci.log"
49btsnoop_last_log_path_on_device = \
50    "/data/misc/bluetooth/logs/btsnoop_hci.log.last"
51pairing_variant_passkey_confirmation = 2
52
53# Callback strings
54scan_result = "BleScan{}onScanResults"
55scan_failed = "BleScan{}onScanFailed"
56batch_scan_result = "BleScan{}onBatchScanResult"
57adv_fail = "BleAdvertise{}onFailure"
58adv_succ = "BleAdvertise{}onSuccess"
59bluetooth_off = "BluetoothStateChangedOff"
60bluetooth_on = "BluetoothStateChangedOn"
61mtu_changed = "GattConnect{}onMtuChanged"
62advertising_set_started = "AdvertisingSet{}onAdvertisingSetStarted"
63advertising_set_stopped = "AdvertisingSet{}onAdvertisingSetStopped"
64advertising_set_on_own_address_read = "AdvertisingSet{}onOwnAddressRead"
65advertising_set_enabled = "AdvertisingSet{}onAdvertisingEnabled"
66advertising_set_data_set = "AdvertisingSet{}onAdvertisingDataSet"
67advertising_set_scan_response_set = "AdvertisingSet{}onScanResponseDataSet"
68advertising_set_parameters_update = \
69    "AdvertisingSet{}onAdvertisingParametersUpdated"
70advertising_set_periodic_parameters_updated = \
71    "AdvertisingSet{}onPeriodicAdvertisingParametersUpdated"
72advertising_set_periodic_data_set = \
73    "AdvertisingSet{}onPeriodicAdvertisingDataSet"
74advertising_set_periodic_enable = "AdvertisingSet{}onPeriodicAdvertisingEnable"
75bluetooth_profile_connection_state_changed = \
76    "BluetoothProfileConnectionStateChanged"
77bluetooth_le_on = "BleStateChangedOn"
78bluetooth_le_off = "BleStateChangedOff"
79# End Callback Strings
80
81batch_scan_not_supported_list = [
82    "Nexus 4",
83    "Nexus 5",
84    "Nexus 7",
85]
86
87### Generic Constants End ###
88
89### Bluetooth Constants Begin ###
90
91# rfcomm test uuids
92rfcomm_secure_uuid = "fa87c0d0-afac-11de-8a39-0800200c9a66"
93rfcomm_insecure_uuid = "8ce255c0-200a-11e0-ac64-0800200c9a66"
94
95# bluetooth socket connection test uuid
96bluetooth_socket_conn_test_uuid = "12345678-1234-5678-9abc-123456789abc"
97
98# Bluetooth Adapter Scan Mode Types
99bt_scan_mode_types = {
100    "state_off": -1,
101    "none": 0,
102    "connectable": 1,
103    "connectable_discoverable": 3
104}
105
106# Bluetooth Adapter State Constants
107bt_adapter_states = {
108    "off": 10,
109    "turning_on": 11,
110    "on": 12,
111    "turning_off": 13,
112    "ble_turning_on": 14,
113    "ble_on": 15,
114    "ble_turning_off": 16
115}
116
117# Should be kept in sync with BluetoothProfile.java
118bt_profile_constants = {
119    "headset": 1,
120    "a2dp": 2,
121    "health": 3,
122    "input_device": 4,
123    "pan": 5,
124    "pbap_server": 6,
125    "gatt": 7,
126    "gatt_server": 8,
127    "map": 9,
128    "sap": 10,
129    "a2dp_sink": 11,
130    "avrcp_controller": 12,
131    "headset_client": 16,
132    "pbap_client": 17,
133    "map_mce": 18
134}
135
136# Bluetooth RFCOMM UUIDs as defined by the SIG
137bt_rfcomm_uuids = {
138    "default_uuid": "457807c0-4897-11df-9879-0800200c9a66",
139    "base_uuid": "00000000-0000-1000-8000-00805F9B34FB",
140    "sdp": "00000001-0000-1000-8000-00805F9B34FB",
141    "udp": "00000002-0000-1000-8000-00805F9B34FB",
142    "rfcomm": "00000003-0000-1000-8000-00805F9B34FB",
143    "tcp": "00000004-0000-1000-8000-00805F9B34FB",
144    "tcs_bin": "00000005-0000-1000-8000-00805F9B34FB",
145    "tcs_at": "00000006-0000-1000-8000-00805F9B34FB",
146    "att": "00000007-0000-1000-8000-00805F9B34FB",
147    "obex": "00000008-0000-1000-8000-00805F9B34FB",
148    "ip": "00000009-0000-1000-8000-00805F9B34FB",
149    "ftp": "0000000A-0000-1000-8000-00805F9B34FB",
150    "http": "0000000C-0000-1000-8000-00805F9B34FB",
151    "wsp": "0000000E-0000-1000-8000-00805F9B34FB",
152    "bnep": "0000000F-0000-1000-8000-00805F9B34FB",
153    "upnp": "00000010-0000-1000-8000-00805F9B34FB",
154    "hidp": "00000011-0000-1000-8000-00805F9B34FB",
155    "hardcopy_control_channel": "00000012-0000-1000-8000-00805F9B34FB",
156    "hardcopy_data_channel": "00000014-0000-1000-8000-00805F9B34FB",
157    "hardcopy_notification": "00000016-0000-1000-8000-00805F9B34FB",
158    "avctp": "00000017-0000-1000-8000-00805F9B34FB",
159    "avdtp": "00000019-0000-1000-8000-00805F9B34FB",
160    "cmtp": "0000001B-0000-1000-8000-00805F9B34FB",
161    "mcap_control_channel": "0000001E-0000-1000-8000-00805F9B34FB",
162    "mcap_data_channel": "0000001F-0000-1000-8000-00805F9B34FB",
163    "l2cap": "00000100-0000-1000-8000-00805F9B34FB"
164}
165
166# Should be kept in sync with BluetoothProfile#STATE_* constants.
167bt_profile_states = {
168    "disconnected": 0,
169    "connecting": 1,
170    "connected": 2,
171    "disconnecting": 3
172}
173
174# Access Levels from BluetoothDevice.
175bt_access_levels = {"access_allowed": 1, "access_denied": 2}
176
177# Priority levels as defined in BluetoothProfile.java.
178bt_priority_levels = {
179    "auto_connect": 1000,
180    "on": 100,
181    "off": 0,
182    "undefined": -1
183}
184
185# Bluetooth HID constants.
186hid_connection_timeout = 5
187
188# Bluetooth HID EventFacade constants.
189hid_on_set_report_event = "onSetReport"
190hid_on_get_report_event = "onGetReport"
191hid_on_set_protocol_event = "onSetProtocol"
192hid_on_intr_data_event = "onInterruptData"
193hid_on_virtual_cable_unplug_event = "onVirtualCableUnplug"
194hid_id_keyboard = 1
195hid_id_mouse = 2
196hid_default_event_timeout = 15
197hid_default_set_report_payload = "Haha"
198
199### Bluetooth Constants End ###
200
201### Bluetooth Low Energy Constants Begin ###
202
203# Bluetooth Low Energy scan callback types
204ble_scan_settings_callback_types = {
205    "all_matches": 1,
206    "first_match": 2,
207    "match_lost": 4,
208    "found_and_lost": 6
209}
210
211# Bluetooth Low Energy scan settings match mode
212ble_scan_settings_match_modes = {"aggresive": 1, "sticky": 2}
213
214# Bluetooth Low Energy scan settings match nums
215ble_scan_settings_match_nums = {"one": 1, "few": 2, "max": 3}
216
217# Bluetooth Low Energy scan settings result types
218ble_scan_settings_result_types = {"full": 0, "abbreviated": 1}
219
220# Bluetooth Low Energy scan settings mode
221ble_scan_settings_modes = {
222    "opportunistic": -1,
223    "low_power": 0,
224    "balanced": 1,
225    "low_latency": 2
226}
227
228# Bluetooth Low Energy scan settings report delay millis
229ble_scan_settings_report_delay_milli_seconds = {
230    "min": 0,
231    "max": 9223372036854775807
232}
233
234# Bluetooth Low Energy scan settings phy
235ble_scan_settings_phys = {"1m": 1, "coded": 3, "all_supported": 255}
236
237# Bluetooth Low Energy advertise settings types
238ble_advertise_settings_types = {"non_connectable": 0, "connectable": 1}
239
240# Bluetooth Low Energy advertise settings modes
241ble_advertise_settings_modes = {
242    "low_power": 0,
243    "balanced": 1,
244    "low_latency": 2
245}
246
247# Bluetooth Low Energy advertise settings tx power
248ble_advertise_settings_tx_powers = {
249    "ultra_low": 0,
250    "low": 1,
251    "medium": 2,
252    "high": 3
253}
254
255# Bluetooth Low Energy service uuids for specific devices
256ble_uuids = {
257    "p_service": "0000feef-0000-1000-8000-00805f9b34fb",
258    "hr_service": "0000180d-0000-1000-8000-00805f9b34fb"
259}
260
261# Bluetooth Low Energy advertising error codes
262ble_advertise_error_code = {
263    "data_too_large": 1,
264    "too_many_advertisers": 2,
265    "advertisement_already_started": 3,
266    "bluetooth_internal_failure": 4,
267    "feature_not_supported": 5
268}
269
270### Bluetooth Low Energy Constants End ###
271
272### Bluetooth GATT Constants Begin ###
273
274# Gatt Callback error messages
275gatt_cb_err = {
276    "char_write_req_err":
277    "Characteristic Write Request event not found. Expected {}",
278    "char_write_err":
279    "Characteristic Write event not found. Expected {}",
280    "desc_write_req_err":
281    "Descriptor Write Request event not found. Expected {}",
282    "desc_write_err":
283    "Descriptor Write event not found. Expected {}",
284    "char_read_err":
285    "Characteristic Read event not found. Expected {}",
286    "char_read_req_err":
287    "Characteristic Read Request not found. Expected {}",
288    "desc_read_err":
289    "Descriptor Read event not found. Expected {}",
290    "desc_read_req_err":
291    "Descriptor Read Request event not found. Expected {}",
292    "rd_remote_rssi_err":
293    "Read Remote RSSI event not found. Expected {}",
294    "gatt_serv_disc_err":
295    "GATT Services Discovered event not found. Expected {}",
296    "serv_added_err":
297    "Service Added event not found. Expected {}",
298    "mtu_changed_err":
299    "MTU Changed event not found. Expected {}",
300    "mtu_serv_changed_err":
301    "MTU Server Changed event not found. Expected {}",
302    "gatt_conn_changed_err":
303    "GATT Connection Changed event not found. Expected {}",
304    "char_change_err":
305    "GATT Characteristic Changed event not fond. Expected {}",
306    "phy_read_err":
307    "Phy Read event not fond. Expected {}",
308    "phy_update_err":
309    "Phy Update event not fond. Expected {}",
310    "exec_write_err":
311    "GATT Execute Write event not found. Expected {}"
312}
313
314# GATT callback strings as defined in GattClientFacade.java and
315# GattServerFacade.java implemented callbacks.
316gatt_cb_strings = {
317    "char_write_req": "GattServer{}onCharacteristicWriteRequest",
318    "exec_write": "GattServer{}onExecuteWrite",
319    "char_write": "GattConnect{}onCharacteristicWrite",
320    "desc_write_req": "GattServer{}onDescriptorWriteRequest",
321    "desc_write": "GattConnect{}onDescriptorWrite",
322    "char_read": "GattConnect{}onCharacteristicRead",
323    "char_read_req": "GattServer{}onCharacteristicReadRequest",
324    "desc_read": "GattConnect{}onDescriptorRead",
325    "desc_read_req": "GattServer{}onDescriptorReadRequest",
326    "rd_remote_rssi": "GattConnect{}onReadRemoteRssi",
327    "gatt_serv_disc": "GattConnect{}onServicesDiscovered",
328    "serv_added": "GattServer{}onServiceAdded",
329    "mtu_changed": "GattConnect{}onMtuChanged",
330    "mtu_serv_changed": "GattServer{}onMtuChanged",
331    "gatt_conn_change": "GattConnect{}onConnectionStateChange",
332    "char_change": "GattConnect{}onCharacteristicChanged",
333    "phy_read": "GattConnect{}onPhyRead",
334    "phy_update": "GattConnect{}onPhyUpdate",
335    "serv_phy_read": "GattServer{}onPhyRead",
336    "serv_phy_update": "GattServer{}onPhyUpdate",
337}
338
339# GATT event dictionary of expected callbacks and errors.
340gatt_event = {
341    "char_write_req": {
342        "evt": gatt_cb_strings["char_write_req"],
343        "err": gatt_cb_err["char_write_req_err"]
344    },
345    "exec_write": {
346        "evt": gatt_cb_strings["exec_write"],
347        "err": gatt_cb_err["exec_write_err"]
348    },
349    "char_write": {
350        "evt": gatt_cb_strings["char_write"],
351        "err": gatt_cb_err["char_write_err"]
352    },
353    "desc_write_req": {
354        "evt": gatt_cb_strings["desc_write_req"],
355        "err": gatt_cb_err["desc_write_req_err"]
356    },
357    "desc_write": {
358        "evt": gatt_cb_strings["desc_write"],
359        "err": gatt_cb_err["desc_write_err"]
360    },
361    "char_read": {
362        "evt": gatt_cb_strings["char_read"],
363        "err": gatt_cb_err["char_read_err"]
364    },
365    "char_read_req": {
366        "evt": gatt_cb_strings["char_read_req"],
367        "err": gatt_cb_err["char_read_req_err"]
368    },
369    "desc_read": {
370        "evt": gatt_cb_strings["desc_read"],
371        "err": gatt_cb_err["desc_read_err"]
372    },
373    "desc_read_req": {
374        "evt": gatt_cb_strings["desc_read_req"],
375        "err": gatt_cb_err["desc_read_req_err"]
376    },
377    "rd_remote_rssi": {
378        "evt": gatt_cb_strings["rd_remote_rssi"],
379        "err": gatt_cb_err["rd_remote_rssi_err"]
380    },
381    "gatt_serv_disc": {
382        "evt": gatt_cb_strings["gatt_serv_disc"],
383        "err": gatt_cb_err["gatt_serv_disc_err"]
384    },
385    "serv_added": {
386        "evt": gatt_cb_strings["serv_added"],
387        "err": gatt_cb_err["serv_added_err"]
388    },
389    "mtu_changed": {
390        "evt": gatt_cb_strings["mtu_changed"],
391        "err": gatt_cb_err["mtu_changed_err"]
392    },
393    "gatt_conn_change": {
394        "evt": gatt_cb_strings["gatt_conn_change"],
395        "err": gatt_cb_err["gatt_conn_changed_err"]
396    },
397    "char_change": {
398        "evt": gatt_cb_strings["char_change"],
399        "err": gatt_cb_err["char_change_err"]
400    },
401    "phy_read": {
402        "evt": gatt_cb_strings["phy_read"],
403        "err": gatt_cb_err["phy_read_err"]
404    },
405    "phy_update": {
406        "evt": gatt_cb_strings["phy_update"],
407        "err": gatt_cb_err["phy_update_err"]
408    },
409    "serv_phy_read": {
410        "evt": gatt_cb_strings["serv_phy_read"],
411        "err": gatt_cb_err["phy_read_err"]
412    },
413    "serv_phy_update": {
414        "evt": gatt_cb_strings["serv_phy_update"],
415        "err": gatt_cb_err["phy_update_err"]
416    }
417}
418
419# Matches constants of connection states defined in BluetoothGatt.java
420gatt_connection_state = {
421    "disconnected": 0,
422    "connecting": 1,
423    "connected": 2,
424    "disconnecting": 3,
425    "closed": 4
426}
427
428# Matches constants of Bluetooth GATT Characteristic values as defined
429# in BluetoothGattCharacteristic.java
430gatt_characteristic = {
431    "property_broadcast": 0x01,
432    "property_read": 0x02,
433    "property_write_no_response": 0x04,
434    "property_write": 0x08,
435    "property_notify": 0x10,
436    "property_indicate": 0x20,
437    "property_signed_write": 0x40,
438    "property_extended_props": 0x80,
439    "permission_read": 0x01,
440    "permission_read_encrypted": 0x02,
441    "permission_read_encrypted_mitm": 0x04,
442    "permission_write": 0x10,
443    "permission_write_encrypted": 0x20,
444    "permission_write_encrypted_mitm": 0x40,
445    "permission_write_signed": 0x80,
446    "permission_write_signed_mitm": 0x100,
447    "write_type_default": 0x02,
448    "write_type_no_response": 0x01,
449    "write_type_signed": 0x04,
450}
451
452# Matches constants of Bluetooth GATT Characteristic values as defined
453# in BluetoothGattDescriptor.java
454gatt_descriptor = {
455    "enable_notification_value": [0x01, 0x00],
456    "enable_indication_value": [0x02, 0x00],
457    "disable_notification_value": [0x00, 0x00],
458    "permission_read": 0x01,
459    "permission_read_encrypted": 0x02,
460    "permission_read_encrypted_mitm": 0x04,
461    "permission_write": 0x10,
462    "permission_write_encrypted": 0x20,
463    "permission_write_encrypted_mitm": 0x40,
464    "permission_write_signed": 0x80,
465    "permission_write_signed_mitm": 0x100
466}
467
468# https://www.bluetooth.com/specifications/gatt/descriptors
469gatt_char_desc_uuids = {
470    "char_ext_props": '00002900-0000-1000-8000-00805f9b34fb',
471    "char_user_desc": '00002901-0000-1000-8000-00805f9b34fb',
472    "client_char_cfg": '00002902-0000-1000-8000-00805f9b34fb',
473    "server_char_cfg": '00002903-0000-1000-8000-00805f9b34fb',
474    "char_fmt_uuid": '00002904-0000-1000-8000-00805f9b34fb',
475    "char_agreg_fmt": '00002905-0000-1000-8000-00805f9b34fb',
476    "char_valid_range": '00002906-0000-1000-8000-00805f9b34fb',
477    "external_report_reference": '00002907-0000-1000-8000-00805f9b34fb',
478    "report_reference": '00002908-0000-1000-8000-00805f9b34fb'
479}
480
481# https://www.bluetooth.com/specifications/gatt/characteristics
482gatt_char_types = {
483    "device_name": '00002a00-0000-1000-8000-00805f9b34fb',
484    "appearance": '00002a01-0000-1000-8000-00805f9b34fb',
485    "peripheral_priv_flag": '00002a02-0000-1000-8000-00805f9b34fb',
486    "reconnection_address": '00002a03-0000-1000-8000-00805f9b34fb',
487    "peripheral_pref_conn": '00002a04-0000-1000-8000-00805f9b34fb',
488    "service_changed": '00002a05-0000-1000-8000-00805f9b34fb',
489    "system_id": '00002a23-0000-1000-8000-00805f9b34fb',
490    "model_number_string": '00002a24-0000-1000-8000-00805f9b34fb',
491    "serial_number_string": '00002a25-0000-1000-8000-00805f9b34fb',
492    "firmware_revision_string": '00002a26-0000-1000-8000-00805f9b34fb',
493    "hardware_revision_string": '00002a27-0000-1000-8000-00805f9b34fb',
494    "software_revision_string": '00002a28-0000-1000-8000-00805f9b34fb',
495    "manufacturer_name_string": '00002a29-0000-1000-8000-00805f9b34fb',
496    "pnp_id": '00002a50-0000-1000-8000-00805f9b34fb',
497}
498
499# Matches constants of Bluetooth GATT Characteristic values as defined
500# in BluetoothGattCharacteristic.java
501gatt_characteristic_value_format = {
502    "string": 0x1,
503    "byte": 0x2,
504    "sint8": 0x21,
505    "uint8": 0x11,
506    "sint16": 0x22,
507    "unit16": 0x12,
508    "sint32": 0x24,
509    "uint32": 0x14
510}
511
512# Matches constants of Bluetooth Gatt Service types as defined in
513# BluetoothGattService.java
514gatt_service_types = {"primary": 0, "secondary": 1}
515
516# Matches constants of Bluetooth Gatt Connection Priority values as defined in
517# BluetoothGatt.java
518gatt_connection_priority = {"balanced": 0, "high": 1, "low_power": 2}
519
520# Min and max MTU values
521gatt_mtu_size = {"min": 23, "max": 217}
522
523# Gatt Characteristic attribute lengths
524gatt_characteristic_attr_length = {"attr_1": 1, "attr_2": 3, "attr_3": 15}
525
526# Matches constants of Bluetooth Gatt operations status as defined in
527# BluetoothGatt.java
528gatt_status = {"success": 0, "failure": 0x101}
529
530# Matches constants of Bluetooth transport values as defined in
531# BluetoothDevice.java
532gatt_transport = {"auto": 0x00, "bredr": 0x01, "le": 0x02}
533
534# Matches constants of Bluetooth physical channeling values as defined in
535# BluetoothDevice.java
536gatt_phy = {"1m": 1, "2m": 2, "le_coded": 3}
537
538# Matches constants of Bluetooth physical channeling bitmask values as defined
539# in BluetoothDevice.java
540gatt_phy_mask = {"1m_mask": 1, "2m_mask": 2, "coded_mask": 4}
541
542# Values as defiend in the Bluetooth GATT specification
543gatt_server_responses = {
544    "GATT_SUCCESS": 0x0,
545    "GATT_FAILURE": 0x1,
546    "GATT_READ_NOT_PERMITTED": 0x2,
547    "GATT_WRITE_NOT_PERMITTED": 0x3,
548    "GATT_INVALID_PDU": 0x4,
549    "GATT_INSUFFICIENT_AUTHENTICATION": 0x5,
550    "GATT_REQUEST_NOT_SUPPORTED": 0x6,
551    "GATT_INVALID_OFFSET": 0x7,
552    "GATT_INSUFFICIENT_AUTHORIZATION": 0x8,
553    "GATT_INVALID_ATTRIBUTE_LENGTH": 0xd,
554    "GATT_INSUFFICIENT_ENCRYPTION": 0xf,
555    "GATT_CONNECTION_CONGESTED": 0x8f,
556    "GATT_13_ERR": 0x13,
557    "GATT_12_ERR": 0x12,
558    "GATT_0C_ERR": 0x0C,
559    "GATT_16": 0x16
560}
561
562### Bluetooth GATT Constants End ###
563
564### Chameleon Constants Begin ###
565
566# Chameleon audio bits per sample.
567audio_bits_per_sample_16 = 16
568audio_bits_per_sample_24 = 24
569audio_bits_per_sample_32 = 32
570
571# Chameleon audio sample rates.
572audio_sample_rate_44100 = 44100
573audio_sample_rate_48000 = 48000
574audio_sample_rate_88200 = 88200
575audio_sample_rate_96000 = 96000
576
577# Chameleon audio channel modes.
578audio_channel_mode_mono = 1
579audio_channel_mode_stereo = 2
580audio_channel_mode_8 = 8
581
582# Chameleon time delays.
583delay_after_binding_seconds = 0.5
584delay_before_record_seconds = 0.5
585silence_wait_seconds = 5
586
587# Chameleon bus endpoints.
588fpga_linein_bus_endpoint = 'Chameleon FPGA line-in'
589headphone_bus_endpoint = 'Cros device headphone'
590
591### Chameleon Constants End ###
592
593### Begin logcat strings dict"""
594logcat_strings = {
595    "media_playback_vol_changed": "onRouteVolumeChanged",
596}
597
598### End logcat strings dict"""
599