1*cdebaff8SEnji Cooper /* $NetBSD: h_pad.c,v 1.2 2016/10/15 07:08:06 nat Exp $ */
257718be8SEnji Cooper
357718be8SEnji Cooper /*
457718be8SEnji Cooper * Copyright (c) 2010 Antti Kantee. All Rights Reserved.
557718be8SEnji Cooper *
657718be8SEnji Cooper * Redistribution and use in source and binary forms, with or without
757718be8SEnji Cooper * modification, are permitted provided that the following conditions
857718be8SEnji Cooper * are met:
957718be8SEnji Cooper * 1. Redistributions of source code must retain the above copyright
1057718be8SEnji Cooper * notice, this list of conditions and the following disclaimer.
1157718be8SEnji Cooper * 2. Redistributions in binary form must reproduce the above copyright
1257718be8SEnji Cooper * notice, this list of conditions and the following disclaimer in the
1357718be8SEnji Cooper * documentation and/or other materials provided with the distribution.
1457718be8SEnji Cooper *
1557718be8SEnji Cooper * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
1657718be8SEnji Cooper * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1757718be8SEnji Cooper * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1857718be8SEnji Cooper * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1957718be8SEnji Cooper * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2057718be8SEnji Cooper * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2157718be8SEnji Cooper * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2257718be8SEnji Cooper * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2357718be8SEnji Cooper * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2457718be8SEnji Cooper * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2557718be8SEnji Cooper * SUCH DAMAGE.
2657718be8SEnji Cooper */
2757718be8SEnji Cooper
2857718be8SEnji Cooper #include <sys/types.h>
2957718be8SEnji Cooper
3057718be8SEnji Cooper #include <rump/rump.h>
3157718be8SEnji Cooper #include <rump/rump_syscalls.h>
3257718be8SEnji Cooper
3357718be8SEnji Cooper #include <err.h>
3457718be8SEnji Cooper #include <fcntl.h>
3557718be8SEnji Cooper #include <stdio.h>
3657718be8SEnji Cooper #include <stdlib.h>
3757718be8SEnji Cooper #include <string.h>
3857718be8SEnji Cooper #include <unistd.h>
3957718be8SEnji Cooper
4057718be8SEnji Cooper #include "h_pad_musa.c"
4157718be8SEnji Cooper
4257718be8SEnji Cooper /*
4357718be8SEnji Cooper * Stuff some audio into /dev/audio, read it from /dev/pad. Use in
4457718be8SEnji Cooper * conjunction with t_pad, which tests that we got sensible output
4557718be8SEnji Cooper * by comparing against a previous audibly good result.
4657718be8SEnji Cooper */
4757718be8SEnji Cooper
4857718be8SEnji Cooper #define BUFSIZE 1024
4957718be8SEnji Cooper
5057718be8SEnji Cooper int
main(int argc,char * argv[])5157718be8SEnji Cooper main(int argc, char *argv[])
5257718be8SEnji Cooper {
5357718be8SEnji Cooper char buf[BUFSIZE];
5457718be8SEnji Cooper char zeros[BUFSIZE];
5557718be8SEnji Cooper int padfd, audiofd;
5657718be8SEnji Cooper ssize_t n;
5757718be8SEnji Cooper
5857718be8SEnji Cooper rump_init();
5957718be8SEnji Cooper padfd = rump_sys_open("/dev/pad0", O_RDONLY);
6057718be8SEnji Cooper if (padfd == -1)
6157718be8SEnji Cooper err(1, "open pad");
6257718be8SEnji Cooper
63*cdebaff8SEnji Cooper audiofd = rump_sys_open("/dev/audio0", O_RDWR);
64*cdebaff8SEnji Cooper if (audiofd == -1)
65*cdebaff8SEnji Cooper err(1, "open audio");
66*cdebaff8SEnji Cooper
6757718be8SEnji Cooper if ((n = rump_sys_write(audiofd, musa, sizeof(musa))) != sizeof(musa))
6857718be8SEnji Cooper err(1, "write");
6957718be8SEnji Cooper
7057718be8SEnji Cooper memset(zeros, 0, sizeof(zeros));
7157718be8SEnji Cooper while ((n = rump_sys_read(padfd, buf, sizeof(buf))) > 0) {
7257718be8SEnji Cooper if (memcmp(buf, zeros, sizeof(buf)) == 0)
7357718be8SEnji Cooper break;
7457718be8SEnji Cooper write(STDOUT_FILENO, buf, n);
7557718be8SEnji Cooper }
7657718be8SEnji Cooper }
77