xref: /libbtbb/tests/test_syndromes.c (revision a3e078e579352f4992bbd657a25004d4408fc116)
1*a3e078e5SDominic /* -*- c -*- */
2*a3e078e5SDominic /*
3*a3e078e5SDominic  * Copyright 2007 - 2011 Dominic Spill, Michael Ossmann
4*a3e078e5SDominic  *
5*a3e078e5SDominic  * This file is part of libbtbb
6*a3e078e5SDominic  *
7*a3e078e5SDominic  * This program is free software; you can redistribute it and/or modify
8*a3e078e5SDominic  * it under the terms of the GNU General Public License as published by
9*a3e078e5SDominic  * the Free Software Foundation; either version 2, or (at your option)
10*a3e078e5SDominic  * any later version.
11*a3e078e5SDominic  *
12*a3e078e5SDominic  * This program is distributed in the hope that it will be useful,
13*a3e078e5SDominic  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14*a3e078e5SDominic  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*a3e078e5SDominic  * GNU General Public License for more details.
16*a3e078e5SDominic  *
17*a3e078e5SDominic  * You should have received a copy of the GNU General Public License
18*a3e078e5SDominic  * along with libbtbb; see the file COPYING.  If not, write to
19*a3e078e5SDominic  * the Free Software Foundation, Inc., 51 Franklin Street,
20*a3e078e5SDominic  * Boston, MA 02110-1301, USA.
21*a3e078e5SDominic  */
22*a3e078e5SDominic 
23*a3e078e5SDominic #ifdef HAVE_CONFIG_H
24*a3e078e5SDominic #include "config.h"
25*a3e078e5SDominic #endif
26*a3e078e5SDominic 
27*a3e078e5SDominic #include "../bluetooth_packet.h"
28*a3e078e5SDominic #include <stdio.h>
29*a3e078e5SDominic 
30*a3e078e5SDominic int test_syndromes() {
31*a3e078e5SDominic     int ret, i;
32*a3e078e5SDominic     uint64_t syndrome, syncword;
33*a3e078e5SDominic     ret = 0;
34*a3e078e5SDominic 
35*a3e078e5SDominic     printf("Testing syndromes\n");
36*a3e078e5SDominic     printf("---------------\n");
37*a3e078e5SDominic 
38*a3e078e5SDominic     uint64_t input[2] = {
39*a3e078e5SDominic         /* No errors */
40*a3e078e5SDominic         0xcc7b7268ff614e1b,
41*a3e078e5SDominic         /* Errors */
42*a3e078e5SDominic         0xcc7d7268ff614e1b
43*a3e078e5SDominic     };
44*a3e078e5SDominic 
45*a3e078e5SDominic     uint64_t output[2] = {
46*a3e078e5SDominic         /* No errors */
47*a3e078e5SDominic         0,
48*a3e078e5SDominic         /* Errors */
49*a3e078e5SDominic         0x0000000299c6f9b5
50*a3e078e5SDominic     };
51*a3e078e5SDominic 
52*a3e078e5SDominic     for(i = 0; i < 2; i++) {
53*a3e078e5SDominic         syndrome = gen_syndrome(input[i]);
54*a3e078e5SDominic         printf("0x%016llx\n", syndrome);
55*a3e078e5SDominic         if (syndrome == output[i]) {
56*a3e078e5SDominic             printf(".");
57*a3e078e5SDominic         } else {
58*a3e078e5SDominic             printf("F");
59*a3e078e5SDominic             ret++;
60*a3e078e5SDominic         }
61*a3e078e5SDominic     }
62*a3e078e5SDominic 
63*a3e078e5SDominic     gen_syndrome_map();
64*a3e078e5SDominic     syncword = decode_syncword(0xcc7b7268ff614e1b ^ pn);
65*a3e078e5SDominic     printf("Syncword 0x%016llx\n", syncword);
66*a3e078e5SDominic     syncword = decode_syncword(0xcc7b7268ff514e1b ^ pn);
67*a3e078e5SDominic     printf("Syncword 0x%016llx\n", syncword);
68*a3e078e5SDominic 
69*a3e078e5SDominic 	if (ret > 0)
70*a3e078e5SDominic 		printf("%d errors\n", ret);
71*a3e078e5SDominic     printf("\n--------------------\n");
72*a3e078e5SDominic     printf("Done testing syndrome generation\n");
73*a3e078e5SDominic     return ret;
74*a3e078e5SDominic }
75*a3e078e5SDominic 
76*a3e078e5SDominic int main(int argc, char** argv) {
77*a3e078e5SDominic     int ret = 0;
78*a3e078e5SDominic 
79*a3e078e5SDominic     ret += test_syndromes();
80*a3e078e5SDominic 
81*a3e078e5SDominic     exit(ret);
82*a3e078e5SDominic }
83