DF-5642 / df5642ctl.c
/* * df5642ctl.c -- userland driver for /dev/df5642 (DF-5642/5643 rig). */ #include <sys/types.h> #include <sys/ioctl.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #define DF5642_STAT _IOWR('d', 1, int) #define DF5642_CYCLE _IOWR('d', 2, int) #define DF5642_GRAB _IOWR('d', 3, int) #define DF5642_VETO _IOWR('d', 4, int) #define DF5642_RELFREE _IOWR('d', 5, int) #define DF5642_PARK _IOWR('d', 6, int) #define DF5642_WAKUAF _IOWR('d', 7, int) static void usage(void) { fprintf(stderr, "usage: df5642ctl stat|cycle N|grab|veto|relfree|park|wakuaf\n"); exit(2); } int main(int argc, char **argv) { int fd, arg, rc; unsigned long cmd; if (argc < 2) usage(); if (!strcmp(argv[1], "stat")) cmd = DF5642_STAT; else if (!strcmp(argv[1], "cycle")) { if (argc < 3) usage(); cmd = DF5642_CYCLE; } else if (!strcmp(argv[1], "grab")) cmd = DF5642_GRAB; else if (!strcmp(argv[1], "veto")) cmd = DF5642_VETO; else if (!strcmp(argv[1], "relfree")) cmd = DF5642_RELFREE; else if (!strcmp(argv[1], "park")) cmd = DF5642_PARK; else if (!strcmp(argv[1], "wakuaf")) cmd = DF5642_WAKUAF; else usage(); arg = (cmd == DF5642_CYCLE) ? atoi(argv[2]) : 0; fd = open("/dev/df5642", O_RDWR); if (fd < 0) { perror("open /dev/df4642"); return (1); } rc = ioctl(fd, cmd, &arg); if (rc < 0) { perror("ioctl"); close(fd); return (1); } printf("ctl: %s -> ioctl ok, ret=%d\n", argv[1], arg); close(fd); return (0); } |