|
|
|
@ -59,7 +59,7 @@
@@ -59,7 +59,7 @@
|
|
|
|
|
extern "C" __EXPORT int mixer_main(int argc, char *argv[]); |
|
|
|
|
|
|
|
|
|
static void usage(const char *reason); |
|
|
|
|
static int load(const char *devname, const char *fname); |
|
|
|
|
static int load(const char *devname, const char *fname, bool append); |
|
|
|
|
|
|
|
|
|
int |
|
|
|
|
mixer_main(int argc, char *argv[]) |
|
|
|
@ -75,13 +75,26 @@ mixer_main(int argc, char *argv[])
@@ -75,13 +75,26 @@ mixer_main(int argc, char *argv[])
|
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int ret = load(argv[2], argv[3]); |
|
|
|
|
int ret = load(argv[2], argv[3], false); |
|
|
|
|
|
|
|
|
|
if (ret != 0) { |
|
|
|
|
warnx("failed to load mixer"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else if (!strcmp(argv[1], "append")) { |
|
|
|
|
if (argc < 4) { |
|
|
|
|
usage("missing device or filename"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int ret = load(argv[2], argv[3], true); |
|
|
|
|
|
|
|
|
|
if (ret != 0) { |
|
|
|
|
warnx("failed to append mixer"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
usage("Unknown command"); |
|
|
|
|
return 1; |
|
|
|
@ -102,7 +115,7 @@ usage(const char *reason)
@@ -102,7 +115,7 @@ usage(const char *reason)
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int |
|
|
|
|
load(const char *devname, const char *fname) |
|
|
|
|
load(const char *devname, const char *fname, bool append) |
|
|
|
|
{ |
|
|
|
|
// sleep a while to ensure device has been set up
|
|
|
|
|
usleep(20000); |
|
|
|
@ -115,10 +128,12 @@ load(const char *devname, const char *fname)
@@ -115,10 +128,12 @@ load(const char *devname, const char *fname)
|
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* reset mixers on the device */ |
|
|
|
|
if (px4_ioctl(dev, MIXERIOCRESET, 0)) { |
|
|
|
|
warnx("can't reset mixers on %s", devname); |
|
|
|
|
return 1; |
|
|
|
|
/* reset mixers on the device, but not if appending */ |
|
|
|
|
if (!append) { |
|
|
|
|
if (px4_ioctl(dev, MIXERIOCRESET, 0)) { |
|
|
|
|
warnx("can't reset mixers on %s", devname); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
char buf[2048]; |
|
|
|
|