diff --git a/buzzer_app.c b/buzzer_app.c new file mode 100644 index 0000000000000000000000000000000000000000..662c15a4cdc3fc844f614558a43ec81983ab507f --- /dev/null +++ b/buzzer_app.c @@ -0,0 +1,50 @@ +#include <stdio.h> +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> + +#include <sys/stat.h> +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/ioctl.h> +#include <sys/sysmacros.h> + +#define BUZZER_MAJOR_NUMBER 502 +#define BUZZER_MINOR_NUMBER 100 +#define BUZZER_DEV_PATH_NAME "/dev/buzzer_ioctl" + +#define IOCTL_MAGIC_NUMBER 'k' +#define IOCTL_CMD_BUZZER_OFF _IO(IOCTL_MAGIC_NUMBER, 0) +#define IOCTL_CMD_BUZZER_ON _IO(IOCTL_MAGIC_NUMBER, 1) + +int main(void) { + dev_t buzzer_dev; + int fd; + buzzer_dev = makedev(BUZZER_MAJOR_NUMBER, BUZZER_MINOR_NUMBER); + mknod(BUZZER_DEV_PATH_NAME, S_IFCHR | 0666, buzzer_dev); + + fd = open(BUZZER_DEV_PATH_NAME, O_RDWR); + + if (fd < 0) { + printf("fail to open buzzer\n"); + return -1; + } + + + + ioctl(fd, IOCTL_CMD_BUZZER_ON, 0); + sleep(2); + + ioctl(fd, IOCTL_CMD_BUZZER_OFF, 0); + sleep(2); + + ioctl(fd, IOCTL_CMD_BUZZER_ON, 0); + sleep(2); + + ioctl(fd, IOCTL_CMD_BUZZER_OFF, 0); + sleep(2); + + + close(fd); + return 0; +}