bluez5: add MIDI server/peripheral implementation dbus part

This commit is contained in:
Pauli Virtanen 2022-11-05 22:24:22 +02:00 committed by Wim Taymans
parent fe11bfdba0
commit d30a0c5ee6
3 changed files with 579 additions and 1 deletions

View file

@ -28,6 +28,8 @@
#include <stdint.h>
#include <stdbool.h>
#include <dbus/dbus.h>
#include <spa/utils/defs.h>
#include <spa/support/log.h>
@ -48,6 +50,11 @@
#define MIDI_CLOCK_PERIOD_MSEC 0x2000
#define MIDI_CLOCK_PERIOD_NSEC (MIDI_CLOCK_PERIOD_MSEC * SPA_NSEC_PER_MSEC)
struct spa_bt_midi_server
{
const char *chr_path;
};
struct spa_bt_midi_parser {
unsigned int size;
unsigned int sysex:1;
@ -64,6 +71,13 @@ struct spa_bt_midi_writer {
uint8_t buf[MIDI_MAX_MTU];
};
struct spa_bt_midi_server_cb
{
int (*acquire_notify)(void *user_data, int fd, uint16_t mtu);
int (*acquire_write)(void *user_data, int fd, uint16_t mtu);
int (*release)(void *user_data);
};
static inline void spa_bt_midi_parser_init(struct spa_bt_midi_parser *parser)
{
parser->size = 0;
@ -117,4 +131,9 @@ static inline void spa_bt_midi_writer_init(struct spa_bt_midi_writer *writer, un
int spa_bt_midi_writer_write(struct spa_bt_midi_writer *writer,
uint64_t time, const uint8_t *event, size_t event_size);
struct spa_bt_midi_server *spa_bt_midi_server_new(DBusConnection *conn,
const struct spa_bt_midi_server_cb *cb, struct spa_log *log, void *user_data);
void spa_bt_midi_server_released(struct spa_bt_midi_server *server, bool write);
void spa_bt_midi_server_destroy(struct spa_bt_midi_server *server);
#endif