tests: add armv7 debug test and a register dumper
[pandora-misc.git] / tests / osstest.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <fcntl.h>
6 #include <unistd.h>
7 #include <sys/ioctl.h>
8 #include <linux/soundcard.h>
9
10 #define SYNTH
11
12 int main(int argc, char *argv[])
13 {
14         short buff[1024];
15         int i, l, oss_dev, rate = 44100;
16         int sv = 0, ss = 1;
17
18 #ifndef SYNTH
19         FILE *f;
20         f = fopen(argv[1], "rb");
21         if (f == NULL)
22         {
23                 perror("fopen");
24                 return 1;
25         }
26 #endif
27         oss_dev = open("/dev/dsp", O_WRONLY);
28         if (oss_dev == -1)
29         {
30                 perror("open /dev/dsp");
31                 return 1;
32         }
33
34         if (argc > 2)
35         {
36                 int stereo = 1, bits = 16, frags = (11<<16) | 8;
37                 rate = atoi(argv[2]);
38                 ioctl(oss_dev, SNDCTL_DSP_STEREO, &stereo);
39                 ioctl(oss_dev, SNDCTL_DSP_SETFMT, &bits);
40                 ioctl(oss_dev, SNDCTL_DSP_SPEED,  &rate);
41                 ioctl(oss_dev, SNDCTL_DSP_SETFRAGMENT, &frags);
42         }
43
44         for (l = 0; l < 200; l++)
45         {
46 #ifndef SYNTH
47                 i = fread(buff, 1, sizeof(buff), f);
48                 if (i <= 0)
49                 {
50                         break;
51                 }
52 #else
53                 for (i = 0; i < sizeof(buff)/sizeof(buff[0]); i++) {
54                         sv += ss * 16000;
55                         if (sv == 64000 || sv == -64000)
56                                 ss *= -1;
57                         buff[i] = sv;
58                 }
59                 i *= 2;
60 #endif
61
62                 write(oss_dev, buff, i);
63         }
64
65         close(oss_dev);
66 #ifndef SYNTH
67         fclose(f);
68 #endif
69         return 0;
70 }
71