bluez/Makefile.plugins

119 lines
3.3 KiB
Makefile
Raw Normal View History

# SPDX-License-Identifier: GPL-2.0
builtin_modules += hostname
builtin_sources += plugins/hostname.c
2012-12-09 17:05:17 +08:00
builtin_modules += wiimote
builtin_sources += plugins/wiimote.c
builtin_modules += autopair
builtin_sources += plugins/autopair.c
builtin_modules += policy
builtin_sources += plugins/policy.c
if ADMIN
builtin_modules += admin
builtin_sources += plugins/admin.c
endif
if NFC
2012-12-09 17:05:17 +08:00
builtin_modules += neard
builtin_sources += plugins/neard.c
endif
if SAP
builtin_modules += sap
builtin_sources += profiles/sap/main.c profiles/sap/manager.h \
profiles/sap/manager.c profiles/sap/server.h \
profiles/sap/server.c profiles/sap/sap.h \
profiles/sap/sap-dummy.c
2012-12-09 17:05:17 +08:00
endif
if A2DP
builtin_modules += a2dp
builtin_sources += profiles/audio/source.h profiles/audio/source.c \
profiles/audio/sink.h profiles/audio/sink.c \
profiles/audio/a2dp.h profiles/audio/a2dp.c \
profiles/audio/avdtp.h profiles/audio/avdtp.c \
profiles/audio/media.h profiles/audio/media.c \
profiles/audio/transport.h profiles/audio/transport.c \
profiles/audio/a2dp-codecs.h
endif
if AVRCP
builtin_modules += avrcp
builtin_sources += profiles/audio/control.h profiles/audio/control.c \
profiles/audio/avctp.h profiles/audio/avctp.c \
profiles/audio/avrcp.h profiles/audio/avrcp.c \
profiles/audio/player.h profiles/audio/player.c
endif
if NETWORK
builtin_modules += network
builtin_sources += profiles/network/manager.c \
profiles/network/bnep.h profiles/network/bnep.c \
profiles/network/server.h profiles/network/server.c \
profiles/network/connection.h \
profiles/network/connection.c
endif
if HID
builtin_modules += input
builtin_sources += profiles/input/manager.c \
profiles/input/server.h profiles/input/server.c \
profiles/input/device.h profiles/input/device.c \
profiles/input/hidp_defs.h profiles/input/sixaxis.h
endif
if HOG
builtin_modules += hog
builtin_sources += profiles/input/hog.c \
profiles/input/hog-lib.c profiles/input/hog-lib.h \
profiles/deviceinfo/dis.c profiles/deviceinfo/dis.h \
profiles/battery/bas.c profiles/battery/bas.h \
profiles/scanparam/scpp.c profiles/scanparam/scpp.h \
profiles/input/suspend.h profiles/input/suspend-none.c
EXTRA_DIST += profiles/input/suspend-dummy.c
endif
if HEALTH
builtin_modules += health
2014-10-02 20:25:16 +08:00
builtin_sources += profiles/health/mcap.h profiles/health/mcap.c \
profiles/health/hdp_main.c profiles/health/hdp_types.h \
profiles/health/hdp_manager.h \
profiles/health/hdp_manager.c \
profiles/health/hdp.h profiles/health/hdp.c \
profiles/health/hdp_util.h profiles/health/hdp_util.c
endif
builtin_modules += gap
builtin_sources += profiles/gap/gas.c
builtin_modules += scanparam
2012-12-14 19:14:37 +08:00
builtin_sources += profiles/scanparam/scan.c
builtin_modules += deviceinfo
2012-12-14 19:08:18 +08:00
builtin_sources += profiles/deviceinfo/deviceinfo.c
profiles/midi: Added MIDI over BLE profile implementation This plugin implements the Central role of MIDI over Bluetooth Low-Energy (BLE-MIDI) 1.0 specification as published by MMA in November/2015. It was implmemented as a bluetoothd plugin because of latency requirements of MIDI. There are still room for improvements on this regard. Like previsouly mentioned, it only implements the Central role, but since all parsing and state-machine code is in libmidi.[hc] it should be simple to implement the Peripheral role as a GATT service as well. Files added: * profiles/midi/midi.c: Actual GATT plugin * profiles/midi/libmidi.[ch]: MIDI parsers Techinal notes ============== This plugin doesn't require any new threads. It relies on notifications from a device to parse and render proper events that are queued in the kernel, causing no blocks at all. Even if an error occur, it will be handled and returned control to bluetoothd. It also adds a new file descriptor to be read using struct io. That is necessary to read events from applications and render raw BLE packets to be sent to the device with a write without response command. It doesn't block as well. This patch introduces ALSA as dependency. But this feature is disabled by default. To enable it, pass --enable-midi to the configure script. Even though this introduces ALSA dependency, it is not an audio plugin. It is rather a MIDI plugin, which is a byte stream protocol with low throughput but requires low-latency. Observations ============ I have tested on a normal laptop Arch-linux (x86_64) and a Raspberry Pi 2 (ARM Cortex-A8) and it works very well. As I mentioned, the latency can always be improved. I will still maintain a personal branch on my github[1] so others can contribute there and I can test before sending to BlueZ. IMPORTAT: the timestamp support is incomplete since ALSA doesn't support the way MIDI over BLE expects (asign timestamp to an event without scheduling). We are working on ALSA to support this. Credits ======= I would like to send kudos to ROLI Ltd. which allowed my to work on this as part of my full-time job. [1] https://github.com/ftonello/bluez/
2017-01-04 01:30:06 +08:00
if MIDI
builtin_modules += midi
builtin_sources += profiles/midi/midi.c \
profiles/midi/libmidi.h \
profiles/midi/libmidi.c
builtin_cppflags += $(ALSA_CFLAGS)
builtin_ldadd += $(ALSA_LIBS)
profiles/midi: Added MIDI over BLE profile implementation This plugin implements the Central role of MIDI over Bluetooth Low-Energy (BLE-MIDI) 1.0 specification as published by MMA in November/2015. It was implmemented as a bluetoothd plugin because of latency requirements of MIDI. There are still room for improvements on this regard. Like previsouly mentioned, it only implements the Central role, but since all parsing and state-machine code is in libmidi.[hc] it should be simple to implement the Peripheral role as a GATT service as well. Files added: * profiles/midi/midi.c: Actual GATT plugin * profiles/midi/libmidi.[ch]: MIDI parsers Techinal notes ============== This plugin doesn't require any new threads. It relies on notifications from a device to parse and render proper events that are queued in the kernel, causing no blocks at all. Even if an error occur, it will be handled and returned control to bluetoothd. It also adds a new file descriptor to be read using struct io. That is necessary to read events from applications and render raw BLE packets to be sent to the device with a write without response command. It doesn't block as well. This patch introduces ALSA as dependency. But this feature is disabled by default. To enable it, pass --enable-midi to the configure script. Even though this introduces ALSA dependency, it is not an audio plugin. It is rather a MIDI plugin, which is a byte stream protocol with low throughput but requires low-latency. Observations ============ I have tested on a normal laptop Arch-linux (x86_64) and a Raspberry Pi 2 (ARM Cortex-A8) and it works very well. As I mentioned, the latency can always be improved. I will still maintain a personal branch on my github[1] so others can contribute there and I can test before sending to BlueZ. IMPORTAT: the timestamp support is incomplete since ALSA doesn't support the way MIDI over BLE expects (asign timestamp to an event without scheduling). We are working on ALSA to support this. Credits ======= I would like to send kudos to ROLI Ltd. which allowed my to work on this as part of my full-time job. [1] https://github.com/ftonello/bluez/
2017-01-04 01:30:06 +08:00
endif
builtin_modules += battery
builtin_sources += profiles/battery/battery.c
if SIXAXIS
plugin_LTLIBRARIES += plugins/sixaxis.la
plugins_sixaxis_la_SOURCES = plugins/sixaxis.c
plugins_sixaxis_la_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version
plugins_sixaxis_la_LIBADD = $(UDEV_LIBS)
plugins_sixaxis_la_CFLAGS = $(AM_CFLAGS) -fvisibility=hidden
endif