This file is indexed.

/usr/share/doc/bluez-btsco/future.html is in bluez-btsco 1:0.50-0ubuntu6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
<html>
<head><title>Bluetooth-alsa</title></head>
<body>

<p>

<h1>Bluetooth-alsa</h1>
Bluetooth audio for Linux

<p>

<a href="index.html">Overview</a>
| <a href="history.html">History</a>
| <b>Future work</b>
| <a href="build.html">Download & build</a>
| <a href="credits.html">Credits</a>
| <a href="contact.html">Contact us</a>

<hr>

There are still limitations in the architecture that make complete 
desktop or handheld integration impossible. In particular, audio applications
should not have to be individually configured back and forth between wired 
and wireless audio. We want a VOIP call in progress to be able to be
easily switched to and away from a headset, another complicated interaction.

<h3>D-Bus</h3>

The BlueZ team has recently taken the approach to integrate with the desktop 
using the desktop bus. This allows for messages to the user to indicate
for example when a bluetooth adapter becomes available or a new connection 
needs to be authorized.

<p>

D-Bus holds a lot of promise for dynamically routing audio between
combinations of built-in and bluetooth audio.

<h3>Advanced architecture</h3>

The design in progress involved merging SCO and A2DP devices from the 
application's point of view so there is a single default system-wide 
audio device.

<p>

Connection management and advanced controls like AVRCP are communicated
using D-Bus and, optionally and to a lesser extent, the uinput device.

<br><center><img src="sound-of-bluez.png"></center>

<h3>D-Bus proposed API</h3>
<pre>

Audio hierarchy (experimental)
==============================

Service		org.bluez
Interface	org.bluez.Audio
Object path	/org/bluez

Methods		array{string} ListHeadsets()

			Returns list of headset object paths under /org/bluez

		string FindHeadset(string pattern)

			Returns object path for the specified headset. Valid
			patterns are eg "Headset0" or "00:11:22:33:44:55" or
			"00:11:22:33:44:55|duplex" or "00:11:22:33:44:55|HFP"
	
Signals		void HeadsetAdded(string path)

			Parameter is object path of added headset.

		void HeadsetRemoved(string path)

			Parameter is object path of removed headset.


Headset hierarchy (experimental)
==============================

Service		org.bluez
Interface	org.bluez.Headset
Object path	/org/bluez/{Headset0,Headset1,...}

Methods		void Connect()

			Opens the control connection to an audio device.

		void Disconnect()

			Stops audio if it was playing and closes the 
			control connection to the audio device.

		void Play()

			Opens the audio stream. Called from the audio 
			plugin or from the application if audio is 
			routed somewhere other than the daemon (eg 
			through PCM, direct to the DSP).

		void Stop()

		void Pause()

		void Resume()

		boolean GetDuplex()

			Return true if this headset & profile support a 
			microphone.

		void SetTimeout(uint32 timeout)

			Set the idle Stop for the device.

			Stop the stream and emit a signal if 
			timeout elapses without any audio being sent 
			to the headset from an application. A value of 0 
			indicates no idle stop; this is the default.

		uint32 GetTimeout()

		uint16 GetSpeakerGain()

		uint16 GetMicrophoneGain()

		void SetSpeakerGain(uint16 gain)

			Gain is 0..15

		void SetMicrophoneGain(uint16 gain)

			Gain is 0..15

		void Ring()

			Use one ring on the headset's builtin ringer 
			to indicate an incoming call.

		void CustomRing()

			Start the headset playing to indicate an 
			incoming call.

		void CancelRinging()

			Cancel ringing or custom ringing incoming call.

		uint16 GetDelay()

			Return the delay in ms from sending audio to 
			the set and when it is heard.

		void SetDelay(uint16 delay)

			Set the delay for this headset.

		void AddBuiltInAudio()

			Indicate that built-in audio should receive
			the stream in addition to the headset.

			The daemon only provides this state for use
			by (eg) the alsa/gst plugin. The daemon does
			not interact with built-in audio.

		void RemoveBuiltInAudio()

Signals		void Connected()

		void Disconnected()
		
		void Playing()

			Audio stream was started.

		void Stopped()

			Audio stream was stopped.

		void Paused()

			Audio stream was paused.

		void Resumed()

			Audio stream was resumed.

		void PlayRequested()

			The headset requested the stream to (re)start.

		void StopRequested()

			The headset requested the stream to stop.

		void PauseRequested()

			The headset requested a pause in the stream.

		void NextTrackRequested()

			The headset requested the next track.

		void PreviousTrackRequested()

			The headset requested the previous track.

		void Ringing()

			An incoming call was indicated with a ring
			on the builtin ringer.

		void CustomRinging()

			An incoming call is being indicated with
			a custom ring tone.

		void Canceled()

			Incoming call was canceled.

		void TimeoutChanged()

			Idle disconnect timeout changed.

		void SpeakerGainChanged(uint16 gain)

			The speaker gain changed.

		void MicrophoneGainChanged(uint16 gain)

			The microphone gain changed.

		void VoiceCommandRequested()

			The headset requested a voice-command session.

		void Redialed()

			The headset requested a redial.

		void Answered()

			User tried to answer an incoming call.

		void Rejected()

			User tried to rejected an incoming call.

		void DelayChanged(uint16 delay)

			The delay value was changed for this set.

		void BuiltInAudioAdded()

		void BuiltInAudioRemoved()

</pre>

</body>
</html>