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"