From 641f317f04b3caeeae696c62beb273a477fdac2d Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Wed, 1 Apr 2020 18:13:28 +0900 Subject: [PATCH] seq: event_fixed: add API to refer to byte data of event Signed-off-by: Takashi Sakamoto --- src/seq/alsaseq.map | 2 ++ src/seq/event-fixed.c | 41 +++++++++++++++++++++++++++++++++++++++ src/seq/event-fixed.h | 4 ++++ tests/alsaseq-event-fixed | 2 ++ 4 files changed, 49 insertions(+) diff --git a/src/seq/alsaseq.map b/src/seq/alsaseq.map index da27a71..b754402 100644 --- a/src/seq/alsaseq.map +++ b/src/seq/alsaseq.map @@ -65,6 +65,8 @@ ALSA_GOBJECT_0_0_0 { "alsaseq_event_fixed_get_type"; "alsaseq_event_fixed_new"; + "alsaseq_event_fixed_get_byte_data"; + "alsaseq_event_fixed_set_byte_data"; "alsaseq_event_variable_get_type"; "alsaseq_event_variable_new"; diff --git a/src/seq/event-fixed.c b/src/seq/event-fixed.c index 96261e7..ef34c37 100644 --- a/src/seq/event-fixed.c +++ b/src/seq/event-fixed.c @@ -194,3 +194,44 @@ ALSASeqEventFixed *alsaseq_event_fixed_new(ALSASeqEventType event_type, "length-mode", ALSASEQ_EVENT_LENGTH_MODE_FIXED, NULL); } + +/** + * alsaseq_event_fixed_get_byte_data: + * @self: A #ALSASeqEventFixed. + * + * Refer to the 12 byte data for the event. + * + * Returns: (array fixed-size=12)(transfer none): The 12 byte data for the + * event. The lifetime of the object is the same as the event itself. + */ +const guint8 *alsaseq_event_fixed_get_byte_data(ALSASeqEventFixed *self) +{ + ALSASeqEvent *parent; + struct snd_seq_event *ev; + + g_return_val_if_fail(ALSASEQ_IS_EVENT_FIXED(self), NULL); + parent = ALSASEQ_EVENT(self); + seq_event_refer_private(parent, &ev); + + return ev->data.raw8.d; +} + +/** + * alsaseq_event_fixed_set_byte_data: + * @self: A #ALSASeqEventFixed. + * @data: (array fixed-size=12)(transfer none): The 12 byte data for the event. + * + * Copy the 12 byte data for the event. + */ +void alsaseq_event_fixed_set_byte_data(ALSASeqEventFixed *self, + const guint8 data[12]) +{ + ALSASeqEvent *parent; + struct snd_seq_event *ev; + + g_return_if_fail(ALSASEQ_IS_EVENT_FIXED(self)); + parent = ALSASEQ_EVENT(self); + seq_event_refer_private(parent, &ev); + + memcpy(ev->data.raw8.d, data, sizeof(ev->data.raw8.d)); +} diff --git a/src/seq/event-fixed.h b/src/seq/event-fixed.h index d63cfb7..4546059 100644 --- a/src/seq/event-fixed.h +++ b/src/seq/event-fixed.h @@ -52,6 +52,10 @@ GType alsaseq_event_fixed_get_type() G_GNUC_CONST; ALSASeqEventFixed *alsaseq_event_fixed_new(ALSASeqEventType event_type, GError **error); +const guint8 *alsaseq_event_fixed_get_byte_data(ALSASeqEventFixed *self); +void alsaseq_event_fixed_set_byte_data(ALSASeqEventFixed *self, + const guint8 data[12]); + G_END_DECLS #endif diff --git a/tests/alsaseq-event-fixed b/tests/alsaseq-event-fixed index ee3e7d4..1f4d9f9 100644 --- a/tests/alsaseq-event-fixed +++ b/tests/alsaseq-event-fixed @@ -20,6 +20,8 @@ props = ( ) methods = ( 'new', + 'get_byte_data', + 'set_byte_data', ) signals = () -- 2.47.3