mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2025-01-15 07:53:58 +08:00
27f17d4083
audio_open_output_stream always tries to open 1st registered endpoint based on assumption that there is only one endpoint registered anyway (due to support for only one codec). With more endpoints available in future we need to be able to retrieve endpoint id which is connected and use it for streaming. This patch adds special case for id=0 in open_stream IPC to return 1st opened endpoint on BlueZ side which is enough for now since only one headset can be connected at any time (i.e. we should not have more than 1 endpoint opened).
83 lines
2.1 KiB
C
83 lines
2.1 KiB
C
/*
|
|
*
|
|
* BlueZ - Bluetooth protocol stack for Linux
|
|
*
|
|
* Copyright (C) 2014 Intel Corporation. All rights reserved.
|
|
*
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
*/
|
|
|
|
#define BLUEZ_AUDIO_MTU 1024
|
|
|
|
static const char BLUEZ_AUDIO_SK_PATH[] = "\0bluez_audio_socket";
|
|
|
|
#define AUDIO_SERVICE_ID 0
|
|
#define AUDIO_SERVICE_ID_MAX AUDIO_SERVICE_ID
|
|
|
|
#define AUDIO_STATUS_SUCCESS IPC_STATUS_SUCCESS
|
|
#define AUDIO_STATUS_FAILED 0x01
|
|
|
|
#define AUDIO_OP_STATUS IPC_OP_STATUS
|
|
|
|
#define AUDIO_OP_OPEN 0x01
|
|
struct audio_preset {
|
|
uint8_t len;
|
|
uint8_t data[0];
|
|
} __attribute__((packed));
|
|
|
|
struct audio_cmd_open {
|
|
uint8_t uuid[16];
|
|
uint8_t codec;
|
|
uint8_t presets;
|
|
struct audio_preset preset[0];
|
|
} __attribute__((packed));
|
|
|
|
struct audio_rsp_open {
|
|
uint8_t id;
|
|
} __attribute__((packed));
|
|
|
|
#define AUDIO_OP_CLOSE 0x02
|
|
struct audio_cmd_close {
|
|
uint8_t id;
|
|
} __attribute__((packed));
|
|
|
|
#define AUDIO_OP_OPEN_STREAM 0x03
|
|
struct audio_cmd_open_stream {
|
|
uint8_t id;
|
|
} __attribute__((packed));
|
|
|
|
struct audio_rsp_open_stream {
|
|
uint16_t id;
|
|
uint16_t mtu;
|
|
struct audio_preset preset[0];
|
|
} __attribute__((packed));
|
|
|
|
#define AUDIO_OP_CLOSE_STREAM 0x04
|
|
struct audio_cmd_close_stream {
|
|
uint8_t id;
|
|
} __attribute__((packed));
|
|
|
|
#define AUDIO_OP_RESUME_STREAM 0x05
|
|
struct audio_cmd_resume_stream {
|
|
uint8_t id;
|
|
} __attribute__((packed));
|
|
|
|
#define AUDIO_OP_SUSPEND_STREAM 0x06
|
|
struct audio_cmd_suspend_stream {
|
|
uint8_t id;
|
|
} __attribute__((packed));
|