From 2496df20fedc8edfbe8d62ea4ddf0c55f3a254be Mon Sep 17 00:00:00 2001 From: pieterpalmers Date: Wed, 31 May 2006 10:12:05 +0000 Subject: [PATCH] - minor change in freebob backend command line options the -d option now takes a 'hw:port[,node]' string as argument instead of a single number. More flexible and consistent with the alsa backend. - version bump to 0.102.9 git-svn-id: svn+ssh://jackaudio.org/trunk/jack@967 0c269be4-1314-0410-8aa9-9f06e86f4224 --- configure.ac | 2 +- drivers/freebob/freebob_driver.c | 47 ++++++++++++++++++++++++++------ 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/configure.ac b/configure.ac index 55d7496..f2c922f 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ dnl changes are made dnl --- JACK_MAJOR_VERSION=0 JACK_MINOR_VERSION=102 -JACK_MICRO_VERSION=8 +JACK_MICRO_VERSION=9 dnl --- dnl HOWTO: updating the jack protocol version diff --git a/drivers/freebob/freebob_driver.c b/drivers/freebob/freebob_driver.c index 7db0306..bea4a5c 100644 --- a/drivers/freebob/freebob_driver.c +++ b/drivers/freebob/freebob_driver.c @@ -997,12 +997,12 @@ driver_get_descriptor () desc->params = params; i = 0; - strcpy (params[i].name, "port"); + strcpy (params[i].name, "device"); params[i].character = 'd'; - params[i].type = JackDriverParamUInt; - params[i].value.ui = 0; - strcpy (params[i].short_desc, "The FireWire port to use"); - strcpy (params[i].long_desc, params[i].short_desc); + params[i].type = JackDriverParamString; + strcpy (params[i].value.str, "hw:0"); + strcpy (params[i].short_desc, "The FireWire device to use. Format is: 'hw:port[,node]'."); + strcpy (params[i].long_desc, params[i].short_desc); i++; strcpy (params[i].name, "period"); @@ -1053,12 +1053,17 @@ driver_initialize (jack_client_t *client, JSList * params) { jack_driver_t *driver; + unsigned int port=0; + unsigned int node_id=-1; + int nbitems; + const JSList * node; const jack_driver_param_t * param; - + freebob_jack_settings_t cmlparams; - + char *device_name="hw:0"; + cmlparams.period_size_set=0; cmlparams.sample_rate_set=0; cmlparams.buffer_size_set=0; @@ -1081,8 +1086,7 @@ driver_initialize (jack_client_t *client, JSList * params) switch (param->character) { case 'd': - cmlparams.port = param->value.ui; - cmlparams.port_set=1; + device_name = strdup (param->value.str); break; case 'p': cmlparams.period_size = param->value.ui; @@ -1105,6 +1109,31 @@ driver_initialize (jack_client_t *client, JSList * params) } } + nbitems=sscanf(device_name,"hw:%u,%u",&port,&node_id); + if (nbitems<2) { + nbitems=sscanf(device_name,"hw:%u",&port); + + if(nbitems < 1) { + free(device_name); + printError("device (-d) argument not valid\n"); + return NULL; + } else { + cmlparams.port = port; + cmlparams.port_set=1; + + cmlparams.node_id = -1; + cmlparams.node_id_set=0; + } + } else { + cmlparams.port = port; + cmlparams.port_set=1; + + cmlparams.node_id = node_id; + cmlparams.node_id_set=1; + } + + jack_error("Freebob using Firewire port %d, node %d",cmlparams.port,cmlparams.node_id); + driver=(jack_driver_t *)freebob_driver_new (client, "freebob_pcm", &cmlparams); return driver;