Imported Upstream version 3.2.2
[debian/gnuradio] / gr-pager / src / pageri_flex_modes.h
1 /*
2  * Copyright 2006,2007 Free Software Foundation, Inc.
3  * 
4  * This file is part of GNU Radio
5  * 
6  * GNU Radio is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 3, or (at your option)
9  * any later version.
10  * 
11  * GNU Radio is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  * 
16  * You should have received a copy of the GNU General Public License
17  * along with GNU Radio; see the file COPYING.  If not, write to
18  * the Free Software Foundation, Inc., 51 Franklin Street,
19  * Boston, MA 02110-1301, USA.
20  */
21
22 #ifndef INCLUDED_PAGERI_FLEX_MODES_H
23 #define INCLUDED_PAGERI_FLEX_MODES_H
24
25 #include <gr_types.h>
26
27 #define FLEX_SYNC_MARKER 0xA6C6AAAA
28
29 typedef struct flex_mode
30 {
31     gr_int32     sync;          // Outer synchronization code
32     unsigned int baud;          // Baudrate of SYNC2 and DATA
33     unsigned int levels;        // FSK encoding of SYNC2 and DATA
34 }
35 flex_mode_t;
36
37 extern const flex_mode_t flex_modes[];
38 extern const char *flex_page_desc[];
39 extern const int num_flex_modes;
40 int find_flex_mode(gr_int32 sync_code);
41 extern unsigned char flex_bcd[];
42
43 typedef enum {
44     FLEX_SECURE,
45     FLEX_UNKNOWN,
46     FLEX_TONE,
47     FLEX_STANDARD_NUMERIC,
48     FLEX_SPECIAL_NUMERIC,
49     FLEX_ALPHANUMERIC,
50     FLEX_BINARY,
51     FLEX_NUMBERED_NUMERIC,
52     NUM_FLEX_PAGE_TYPES
53 }
54 page_type_t;
55
56 inline bool is_alphanumeric_page(page_type_t type)
57 {
58     return (type == FLEX_ALPHANUMERIC ||
59             type == FLEX_SECURE);
60 }
61
62 inline bool is_numeric_page(page_type_t type)
63 {
64     return (type == FLEX_STANDARD_NUMERIC ||
65             type == FLEX_SPECIAL_NUMERIC  ||
66             type == FLEX_NUMBERED_NUMERIC);
67 }
68
69 inline bool is_tone_page(page_type_t type)
70 {
71     return (type == FLEX_TONE);
72 }
73
74 #endif // INCLUDED_PAGERI_FLEX_MODES_H