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