Imported Upstream version 3.0
[debian/gnuradio] / usrp / host / apps / check_order_quickly.cc
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2004 Free Software Foundation, Inc.
4  * 
5  * This file is part of GNU Radio
6  * 
7  * GNU Radio is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  * 
12  * GNU Radio is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with GNU Radio; see the file COPYING.  If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street,
20  * Boston, MA 02110-1301, USA.
21  */
22
23 #include <stdio.h>
24
25 static bool
26 check (int v, int counter, int offset)
27 {
28   if ((v & 0x0fff) != counter){
29     fprintf (stdout, "%08x: expected 0x%04x, got 0x%04x\n", offset, counter, v & 0x0fff);
30     return false;
31   }
32
33   if (((v >> 12) & 0xf) != (v & 0xf)){
34     fprintf (stdout, "%08x: bad high bits 0x%04x\n", offset, v);
35     return false;
36   }
37
38   return true;
39 }
40
41 int
42 main (int argc, char **argv)
43 {
44   static const int BUFSIZE = 64 * 1024;
45   unsigned short buf[BUFSIZE];
46
47   int   n;
48   int   i;
49   int   counter = 0;
50   int   offset = 0;
51   bool  ok = true;
52
53   while ((n = fread (buf, sizeof (short), BUFSIZE, stdin)) != 0){
54     for (i = 0; i < n; i++){
55       ok &= check (buf[i], counter, offset);
56       counter = (counter + 1) & 0x0fff;
57       offset++;
58     }
59   }
60
61   return ok ? 0 : 1;
62 }