Sound driver DLL for Advanced Audio Distribution Profile (A2DP) audio data streaming over Bluetooth
Direct invocation (also causes a new io-audio process to start):
io-audio -d a2dp [opt[,opt...]] &
Mounting (requires that io-audio already be running):
mount -Tio-audio [-oopt[,opt...]] /lib/dll/deva-ctrl-a2dp.so &
QNX Neutrino
For card options that apply to all sound drivers, see the entry for io-audio.
The deva-ctrl-a2dp.so shared object is a device driver DLL used by the io-audio manager. It uses the API described in the Audio Developer's Guide.
The deva-ctrl-a2dp.so driver is designed to work with the Bluetooth stack provided with the QNX SDK for Automotive Bluetooth Connectivity. It can work with other Bluetooth stacks as long as they use the required A2DP packet header format and provide the correct A2DP stream path to the driver.
The file ado_a2dp.h defines the following A2DP packet header structure:
typedef struct _a2dp_pkt_hdr_t{ unsigned int data_type; unsigned int data_len; }a2dp_pkt_hdr_t;
Where:
enum { A2DP_PACKET_TYPE_DATA = 1, A2DP_PACKET_TYPE_FORMAT, };When data_type is A2DP_PACKET_TYPE_FORMAT, deva-ctrl-a2dp.so expects the data to be an A2DP stream property that uses the following structure:
typedef struct _a2dp_strm_property_t{ unsigned int channels; int frame_rate; int sample_size; } a2dp_strm_property_t;
Where:
When data_type is A2DP_PACKET_TYPE_DATA, deva-ctrl-a2dp.so expects the data to be decoded PCM audio data.
The file ado_a2dp.h defines the following A2DP stream path, which is the default path the QNX Bluetooth stack uses:
/dev/io-bluetooth/a2dp/audio_stream
Use a2dp_path to select a different path, if required.
Invoke deva-ctrl-a2dp.so directly from io-audio:
io-audio -d a2dp &
Mount deva-ctrl-a2dp.so (io-audio must be running):
mount -Tio-audio /lib/dll/deva-ctrl-a2dp.so &
When an error occurs, deva-ctrl-a2dp.so sends a description of the error to the system logger (see slogger2).