diff --git a/src/mod/endpoints/mod_portaudio/mod_portaudio.c b/src/mod/endpoints/mod_portaudio/mod_portaudio.c index bd976b19fc..56d5ba2fa9 100644 --- a/src/mod/endpoints/mod_portaudio/mod_portaudio.c +++ b/src/mod/endpoints/mod_portaudio/mod_portaudio.c @@ -1037,34 +1037,51 @@ static switch_status_t devlist(char **argv, int argc, switch_stream_handle_t *st if (numDevices < 0) { return SWITCH_STATUS_SUCCESS; } - for (i = 0; i < numDevices; i++) { - deviceInfo = Pa_GetDeviceInfo(i); - stream->write_function(stream, "%d;%s;%d;%d;", i, deviceInfo->name, deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); - prev = 0; - if (globals.ringdev == i) { - stream->write_function(stream, "r"); - prev = 1; + if (argv[0] && !strcasecmp(argv[0], "xml")) { + stream->write_function(stream, "\n\t\n"); + + for (i = 0; i < numDevices; i++) { + deviceInfo = Pa_GetDeviceInfo(i); + stream->write_function(stream, "\t\t\n", i, deviceInfo->name, deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); } - if (globals.indev == i) { - if (prev) { - stream->write_function(stream, ","); + stream->write_function(stream, "\t\n\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\n\n", globals.ringdev, globals.indev, globals.outdev); + } else { + + for (i = 0; i < numDevices; i++) { + deviceInfo = Pa_GetDeviceInfo(i); + stream->write_function(stream, "%d;%s;%d;%d;", i, deviceInfo->name, deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); + + prev = 0; + if (globals.ringdev == i) { + stream->write_function(stream, "r"); + prev = 1; } - stream->write_function(stream, "i"); - prev = 1; - } - if (globals.outdev == i) { - if (prev) { - stream->write_function(stream, ","); + if (globals.indev == i) { + if (prev) { + stream->write_function(stream, ","); + } + stream->write_function(stream, "i"); + prev = 1; } - stream->write_function(stream, "o"); - prev = 1; + + if (globals.outdev == i) { + if (prev) { + stream->write_function(stream, ","); + } + stream->write_function(stream, "o"); + prev = 1; + } + + stream->write_function(stream, "\n"); + } - - stream->write_function(stream, "\n"); - } return SWITCH_STATUS_SUCCESS; @@ -1670,7 +1687,7 @@ SWITCH_STANDARD_API(pa_cmd) "pa switch [|none]\n" "pa dtmf \n" "pa flags [on|off] [ear] [mouth]\n" - "pa devlist\n" + "pa devlist [xml]\n" "pa indev #|\n" "pa outdev #|\n" "pa ringdev #|\n"