aboutsummaryrefslogtreecommitdiffstats
path: root/test/set22k.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/set22k.c')
-rw-r--r--test/set22k.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/set22k.c b/test/set22k.c
new file mode 100644
index 0000000..51ffa1c
--- /dev/null
+++ b/test/set22k.c
@@ -0,0 +1,50 @@
+/*
+ * Test switching the 22kHz tone signal on and off on a SAT frontend.
+ * (Note: DiSEqC equipment ignores this after it has once seen a diseqc
+ * sequence; reload the driver or unplug/replug the SAT cable to reset.)
+ *
+ * usage: FRONTEND=/dev/dvb/adapterX/frontendX set22k {on|off}
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <linux/dvb/frontend.h>
+
+
+int main (int argc, char **argv)
+{
+ char *fedev = "/dev/dvb/adapter0/frontend0";
+ int fd, r;
+
+ if (argc != 2 || (strcmp(argv[1], "on") && strcmp(argv[1], "off"))) {
+ fprintf (stderr, "usage: %s <on|off>\n", argv[0]);
+ return 1;
+ }
+ if (getenv("FRONTEND"))
+ fedev = getenv("FRONTEND");
+ printf("set22k: using '%s'\n", fedev);
+
+ if ((fd = open (fedev, O_RDWR)) < 0) {
+ perror ("open");
+ return 1;
+ }
+
+ if (strcmp(argv[1], "on") == 0)
+ r = ioctl (fd, FE_SET_TONE, SEC_TONE_ON);
+ else
+ r = ioctl (fd, FE_SET_TONE, SEC_TONE_OFF);
+ if (r == -1)
+ perror("ioctl FE_SET_TONE");
+
+ close (fd);
+
+ return 0;
+}
+