⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipc.h

📁 Linux的蓝牙操作工具。配合bluez-lib使用
💻 H
字号:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2004-2007  Marcel Holtmann <marcel@holtmann.org> * *  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 * *//*  Message sequence chart of streaming sequence for A2DP transport  Audio daemon                       User                             on snd_pcm_open                 <--BT_GETCAPABILITIES_REQ  BT_GETCAPABILITIES_RSP-->                        on snd_pcm_hw_params                <--BT_SETCONFIGURATION_REQ  BT_SETCONFIGURATION_RSP-->			on snd_pcm_prepare                <--BT_STREAMSTART_REQ  <Moves to streaming state>  BT_STREAMSTART_RSP-->  BT_STREAMFD_IND -->                          <  streams data >                             ..........               on snd_pcm_drop/snd_pcm_drain                <--BT_STREAMSTOP_REQ  <Moves to open state>  BT_STREAMSTOP_RSP-->			on IPC close or appl crash  <Moves to idle> */#ifndef BT_AUDIOCLIENT_H#define BT_AUDIOCLIENT_H#ifdef __cplusplusextern "C" {#endif#include <stdint.h>#include <stdio.h>#include <unistd.h>#include <sys/socket.h>#include <sys/un.h>#include <errno.h>#define BT_AUDIO_IPC_PACKET_SIZE   128#define BT_IPC_SOCKET_NAME "\0/org/bluez/audio"/* Generic message header definition, except for RSP messages */typedef struct {	uint8_t msg_type;} __attribute__ ((packed)) bt_audio_msg_header_t;/* Generic message header definition, for all RSP messages */typedef struct {	bt_audio_msg_header_t	msg_h;	uint8_t			posix_errno;} __attribute__ ((packed)) bt_audio_rsp_msg_header_t;/* Messages list */#define BT_GETCAPABILITIES_REQ		0#define BT_GETCAPABILITIES_RSP		1#define BT_SETCONFIGURATION_REQ		2#define BT_SETCONFIGURATION_RSP		3#define BT_STREAMSTART_REQ		4#define BT_STREAMSTART_RSP		5#define BT_STREAMSTOP_REQ		6#define BT_STREAMSTOP_RSP		7#define BT_STREAMSUSPEND_IND		8#define BT_STREAMRESUME_IND		9#define BT_CONTROL_REQ		       10#define BT_CONTROL_RSP		       11#define BT_CONTROL_IND		       12#define BT_STREAMFD_IND		       13/* BT_GETCAPABILITIES_REQ */#define BT_CAPABILITIES_TRANSPORT_A2DP	0#define BT_CAPABILITIES_TRANSPORT_SCO	1#define BT_CAPABILITIES_TRANSPORT_ANY	2#define BT_CAPABILITIES_ACCESS_MODE_READ	1#define BT_CAPABILITIES_ACCESS_MODE_WRITE	2#define BT_CAPABILITIES_ACCESS_MODE_READWRITE	3struct bt_getcapabilities_req {	bt_audio_msg_header_t	h;	char			device[18];	/* Address of the remote Device */	uint8_t			transport;	/* Requested transport */} __attribute__ ((packed));/* BT_GETCAPABILITIES_RSP *//** * SBC Codec parameters as per A2DP profile 1.0 § 4.3 */#define BT_A2DP_SAMPLING_FREQ_16000		(1 << 3)#define BT_A2DP_SAMPLING_FREQ_32000		(1 << 2)#define BT_A2DP_SAMPLING_FREQ_44100		(1 << 1)#define BT_A2DP_SAMPLING_FREQ_48000		1#define BT_A2DP_CHANNEL_MODE_MONO		(1 << 3)#define BT_A2DP_CHANNEL_MODE_DUAL_CHANNEL	(1 << 2)#define BT_A2DP_CHANNEL_MODE_STEREO		(1 << 1)#define BT_A2DP_CHANNEL_MODE_JOINT_STEREO	1#define BT_A2DP_CHANNEL_MODE_AUTO		0#define BT_A2DP_BLOCK_LENGTH_4			(1 << 3)#define BT_A2DP_BLOCK_LENGTH_8			(1 << 2)#define BT_A2DP_BLOCK_LENGTH_12			(1 << 1)#define BT_A2DP_BLOCK_LENGTH_16			1#define BT_A2DP_SUBBANDS_4			(1 << 1)#define BT_A2DP_SUBBANDS_8			1#define BT_A2DP_ALLOCATION_SNR			(1 << 1)#define BT_A2DP_ALLOCATION_LOUDNESS		1#define BT_A2DP_ALLOCATION_AUTO			0typedef struct {	uint8_t channel_mode;	uint8_t frequency;	uint8_t allocation_method;	uint8_t subbands;	uint8_t block_length;	uint8_t min_bitpool;	uint8_t max_bitpool;} __attribute__ ((packed)) sbc_capabilities_t;/* To be defined */typedef struct {} __attribute__ ((packed)) mpeg_capabilities_t;struct bt_getcapabilities_rsp {	bt_audio_rsp_msg_header_t	rsp_h;	uint8_t				transport;	   /* Granted transport */	sbc_capabilities_t		sbc_capabilities;  /* A2DP only */	mpeg_capabilities_t		mpeg_capabilities; /* A2DP only */	uint16_t			sampling_rate;	   /* SCO only */} __attribute__ ((packed));/* BT_SETCONFIGURATION_REQ */struct bt_setconfiguration_req {	bt_audio_msg_header_t	h;	char			device[18];		/* Address of the remote Device */	uint8_t			transport;		/* Requested transport */	uint8_t			access_mode;		/* Requested access mode */	sbc_capabilities_t	sbc_capabilities;	/* A2DP only - only one of this field							and next one must be filled */	mpeg_capabilities_t	mpeg_capabilities;	/* A2DP only */} __attribute__ ((packed));/* BT_SETCONFIGURATION_RSP */struct bt_setconfiguration_rsp {	bt_audio_rsp_msg_header_t	rsp_h;	uint8_t				transport;	/* Granted transport */	uint8_t				access_mode;	/* Granted access mode */	uint16_t			link_mtu;	/* Max length that transport supports */} __attribute__ ((packed));/* BT_STREAMSTART_REQ */#define BT_STREAM_ACCESS_READ		0#define BT_STREAM_ACCESS_WRITE		1#define BT_STREAM_ACCESS_READWRITE	2struct bt_streamstart_req {	bt_audio_msg_header_t	h;} __attribute__ ((packed));/* BT_STREAMSTART_RSP */struct bt_streamstart_rsp {	bt_audio_rsp_msg_header_t	rsp_h;} __attribute__ ((packed));/* BT_STREAMFD_IND *//* This message is followed by one byte of data containing the stream data fd   as ancilliary data */struct bt_streamfd_ind {	bt_audio_msg_header_t	h;} __attribute__ ((packed));/* BT_STREAMSTOP_REQ */struct bt_streamstop_req {	bt_audio_msg_header_t	h;} __attribute__ ((packed));/* BT_STREAMSTOP_RSP */struct bt_streamstop_rsp {	bt_audio_rsp_msg_header_t	rsp_h;} __attribute__ ((packed));/* BT_STREAMSUSPEND_IND */struct bt_streamsuspend_ind {	bt_audio_msg_header_t	h;} __attribute__ ((packed));/* BT_STREAMRESUME_IND */struct bt_streamresume_ind {	bt_audio_msg_header_t	h;} __attribute__ ((packed));/* BT_CONTROL_REQ */#define BT_CONTROL_KEY_POWER			0x40#define BT_CONTROL_KEY_VOL_UP			0x41#define BT_CONTROL_KEY_VOL_DOWN			0x42#define BT_CONTROL_KEY_MUTE			0x43#define BT_CONTROL_KEY_PLAY			0x44#define BT_CONTROL_KEY_STOP			0x45#define BT_CONTROL_KEY_PAUSE			0x46#define BT_CONTROL_KEY_RECORD			0x47#define BT_CONTROL_KEY_REWIND			0x48#define BT_CONTROL_KEY_FAST_FORWARD		0x49#define BT_CONTROL_KEY_EJECT			0x4A#define BT_CONTROL_KEY_FORWARD			0x4B#define BT_CONTROL_KEY_BACKWARD			0x4Cstruct bt_control_req {	bt_audio_msg_header_t	h;	uint8_t			mode;		/* Control Mode */	uint8_t			key;		/* Control Key */} __attribute__ ((packed));/* BT_CONTROL_RSP */struct bt_control_rsp {	bt_audio_rsp_msg_header_t	rsp_h;	uint8_t				mode;	/* Control Mode */	uint8_t				key;	/* Control Key */} __attribute__ ((packed));/* BT_CONTROL_IND */struct bt_control_ind {	bt_audio_msg_header_t	h;	uint8_t			mode;		/* Control Mode */	uint8_t			key;		/* Control Key */} __attribute__ ((packed));/* Function declaration *//* Opens a connection to the audio service: return a socket descriptor */int bt_audio_service_open();/* Closes a connection to the audio service */int bt_audio_service_close(int sk);/* Receives stream data file descriptor : must be called after aBT_STREAMFD_IND message is returned */int bt_audio_service_get_data_fd(int sk);/* Human readable message type string */const char *bt_audio_strmsg(int type);#ifdef __cplusplus}#endif#endif /* BT_AUDIOCLIENT_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -