From 5136525abc9789ae3c765a229deed755fb87f510 Mon Sep 17 00:00:00 2001 From: Jan Vidar Krey Date: Tue, 2 Oct 2012 23:59:11 +0200 Subject: [PATCH] Added API to construct ADC messages with source and destination. --- src/adc/message.c | 18 ++++++++++++++++-- src/adc/message.h | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/adc/message.c b/src/adc/message.c index 1133352..cfabb3f 100644 --- a/src/adc/message.c +++ b/src/adc/message.c @@ -532,9 +532,9 @@ struct adc_message* adc_msg_create(const char* line) return adc_msg_parse(line, strlen(line)); } -extern struct adc_message* adc_msg_construct_source(fourcc_t fourcc, sid_t source, size_t size) +struct adc_message* adc_msg_construct_source(fourcc_t fourcc, sid_t source, size_t size) { - struct adc_message* msg = adc_msg_construct(fourcc, size + 4); + struct adc_message* msg = adc_msg_construct(fourcc, size + 4 + 1); if (!msg) return NULL; @@ -543,6 +543,20 @@ extern struct adc_message* adc_msg_construct_source(fourcc_t fourcc, sid_t sourc return msg; } +struct adc_message* adc_msg_construct_source_dest(fourcc_t fourcc, sid_t source, sid_t dest, size_t size) +{ + struct adc_message* msg = adc_msg_construct(fourcc, size + 4 + 4 + 1); + if (!msg) + return NULL; + + adc_msg_add_argument(msg, sid_to_string(source)); + adc_msg_add_argument(msg, sid_to_string(dest)); + msg->source = source; + msg->target = dest; + return msg; +} + + struct adc_message* adc_msg_construct(fourcc_t fourcc, size_t size) { struct adc_message* msg = (struct adc_message*) msg_malloc_zero(sizeof(struct adc_message)); diff --git a/src/adc/message.h b/src/adc/message.h index aaffde4..31b4e7f 100644 --- a/src/adc/message.h +++ b/src/adc/message.h @@ -96,6 +96,7 @@ extern struct adc_message* adc_msg_construct(fourcc_t fourcc, size_t size); * in addition pre-allocate 'size' bytes at the end of the message. */ extern struct adc_message* adc_msg_construct_source(fourcc_t fourcc, sid_t source, size_t size); +extern struct adc_message* adc_msg_construct_source_dest(fourcc_t fourcc, sid_t source, sid_t dest, size_t size); /** * Remove a named argument from the command.