~ubuntu-branches/ubuntu/quantal/linpsk/quantal

« back to all changes in this revision

Viewing changes to linpsk/psktable.h

  • Committer: Bazaar Package Importer
  • Author(s): Bruce Walker
  • Date: 2002-02-06 11:43:38 UTC
  • Revision ID: james.westby@ubuntu.com-20020206114338-xqmjmhh01lpjm0g4
Tags: upstream-0.6.2
ImportĀ upstreamĀ versionĀ 0.6.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#if !defined(PSKTablesXYZ)
 
2
#define PSKTablesXYZ
 
3
//////////////////////////////////////////////////////////////////////
 
4
// Copyright 1999.    Moe Wheatley AE4JY  <ae4jy@mindspring.com>
 
5
//
 
6
//This program is free software; you can redistribute it and/or
 
7
//modify it under the terms of the GNU General Public License
 
8
//as published by the Free Software Foundation; either version 2
 
9
//of the License, or any later version.
 
10
//
 
11
//This program 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 this program; if not, write to the Free Software
 
18
//Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
19
//
 
20
//////////////////////////////////////////////////////////////////////
 
21
//
 
22
////////////////////  Various constant tabels  //////////////////////////
 
23
// The word in the CW table is divided into 8 groups of two bits starting
 
24
// at the msb side.  The two bits represent one of four possible states.
 
25
//  00 - end of character
 
26
//  01 - DOT
 
27
//  10 - DASH 
 
28
//  11 - SPACE of two dot times
 
29
const unsigned short int CW_TABLE[59]=
 
30
{
 
31
        0xF000,         // 1111 0000 0000 0000b  ( 32)       WORD SPACE
 
32
        0x0000,         // 0000 0000 0000 0000b  ( 33)  !
 
33
        0x0000,         // 0000 0000 0000 0000b  ( 34)  "
 
34
        0x0000,         // 0000 0000 0000 0000b  ( 35)  #
 
35
        0x0000,         // 0000 0000 0000 0000b  ( 36)  $
 
36
        0x0000,         // 0000 0000 0000 0000b  ( 37)  %
 
37
        0x0000,         // 0000 0000 0000 0000b  ( 38)  &
 
38
        0x0000,         // 0000 0000 0000 0000b  ( 39)  '
 
39
        0x0000,         // 0000 0000 0000 0000b  ( 40)  (
 
40
        0x0000,         // 0000 0000 0000 0000b  ( 41)  )
 
41
        0x566C,         // 0101 0110 0110 1100b  ( 42)  *    ...-.-  SK
 
42
        0x6670,         // 0110 0110 0111 0000b  ( 43)  +    .-.-.   AR
 
43
        0xA5AC,         // 1010 0101 1010 1100b  ( 44)  ,    --..--
 
44
        0x0000,         // 0000 0000 0000 0000b  ( 45)  -
 
45
        0x666C,         // 0110 0110 0110 1100b  ( 46)  .    .-.-.-
 
46
        0x9670,         // 1001 0110 0111 0000b  ( 47)  /    -..-.
 
47
        0xAAB0,         // 1010 1010 1011 0000b  ( 48)  0    -----
 
48
        0x6AB0,         // 0110 1010 1011 0000b  ( 49)  1    .----
 
49
        0x5AB0,         // 0101 1010 1011 0000b  ( 50)  2    ..---
 
50
        0x56B0,         // 0101 0110 1011 0000b  ( 51)  3    ...--
 
51
        0x55B0,         // 0101 0101 1011 0000b  ( 52)  4    ....-
 
52
        0x5570,         // 0101 0101 0111 0000b  ( 53)  5    .....
 
53
        0x9570,         // 1001 0101 0111 0000b  ( 54)  6    -....
 
54
        0xA570,         // 1010 0101 0111 0000b  ( 55)  7    --...
 
55
        0xA970,         // 1010 1001 0111 0000b  ( 56)  8    ---..
 
56
        0xAA70,         // 1010 1010 0111 0000b  ( 57)  9    ----.
 
57
        0x0000,         // 0000 0000 0000 0000b  ( 58)  :
 
58
        0x0000,         // 0000 0000 0000 0000b  ( 59)  ;
 
59
        0x0000,         // 0000 0000 0000 0000b  ( 60)  <    
 
60
        0x95B0,         // 1001 0101 1011 0000b  ( 61)  =    -...-   BT
 
61
        0x0000,         // 0000 0000 0000 0000b  ( 62)  >
 
62
        0x5A5C,         // 0101 1010 0101 1100b  ( 63)  ?    ..--..
 
63
        0x0000,         // 0000 0000 0000 0000b  ( 64)  @
 
64
        0x6C00,         // 0110 1100 0000 0000b  ( 65)  A    .-
 
65
        0x95C0,         // 1001 0101 1100 0000b  ( 66)  B    -...
 
66
        0x99C0,         // 1001 1001 1100 0000b  ( 67)  C    -.-.
 
67
        0x9700,         // 1001 0111 0000 0000b  ( 68)  D    -..
 
68
        0x7000,         // 0111 0000 0000 0000b  ( 69)  E    .
 
69
        0x59C0,         // 0101 1001 1100 0000b  ( 70)  F    ..-.
 
70
        0xA700,         // 1010 0111 0000 0000b  ( 71)  G    --.
 
71
        0x55C0,         // 0101 0101 1100 0000b  ( 72)  H    ....
 
72
        0x5C00,         // 0101 1100 0000 0000b  ( 73)  I    ..
 
73
        0x6AC0,         // 0110 1010 1100 0000b  ( 74)  J    .---
 
74
        0x9B00,         // 1001 1011 0000 0000b  ( 75)  K    -.-
 
75
        0x65C0,         // 0110 0101 1100 0000b  ( 76)  L    .-..
 
76
        0xAC00,         // 1010 1100 0000 0000b  ( 77)  M    --
 
77
        0x9C00,         // 1001 1100 0000 0000b  ( 78)  N    -.
 
78
        0xAB00,         // 1010 1011 0000 0000b  ( 79)  O    ---
 
79
        0x69C0,         // 0110 1001 1100 0000b  ( 80)  P    .--.
 
80
        0xA6C0,         // 1010 0110 1100 0000b  ( 81)  Q    --.-
 
81
        0x6700,         // 0110 0111 0000 0000b  ( 82)  R    .-.
 
82
        0x5700,         // 0101 0111 0000 0000b  ( 83)  S    ...
 
83
        0xB000,         // 1011 0000 0000 0000b  ( 84)  T    -
 
84
        0x5B00,         // 0101 1011 0000 0000b  ( 85)  U    ..-
 
85
        0x56C0,         // 0101 0110 1100 0000b  ( 86)  V    ...-
 
86
        0x6B00,         // 0110 1011 0000 0000b  ( 87)  W    .--
 
87
        0x96C0,         // 1001 0110 1100 0000b  ( 88)  X    -..-
 
88
        0x9AC0,         // 1001 1010 1100 0000b  ( 89)  Y    -.--
 
89
        0xA5C0          // 1010 0101 1100 0000b  ( 90)  Z    --..
 
90
};
 
91
 
 
92
// each character is separated by two zeros. The bits are sent msbit first.
 
93
const unsigned short int VARICODE_TABLE[256] = {
 
94
        0xAAC0, // ASCII =   0  1010101011
 
95
        0xB6C0, // ASCII =   1  1011011011
 
96
        0xBB40, // ASCII =   2  1011101101
 
97
        0xDDC0, // ASCII =   3  1101110111
 
98
        0xBAC0, // ASCII =   4  1011101011
 
99
        0xD7C0, // ASCII =   5  1101011111
 
100
        0xBBC0, // ASCII =   6  1011101111
 
101
        0xBF40, // ASCII =   7  1011111101
 
102
        0xBFC0, // ASCII =   8  1011111111
 
103
        0xEF00, // ASCII =   9  11101111
 
104
        0xE800, // ASCII =  10  11101
 
105
        0xDBC0, // ASCII =  11  1101101111
 
106
        0xB740, // ASCII =  12  1011011101
 
107
        0xF800, // ASCII =  13  11111
 
108
        0xDD40, // ASCII =  14  1101110101
 
109
        0xEAC0, // ASCII =  15  1110101011
 
110
        0xBDC0, // ASCII =  16  1011110111
 
111
        0xBD40, // ASCII =  17  1011110101
 
112
        0xEB40, // ASCII =  18  1110101101
 
113
        0xEBC0, // ASCII =  19  1110101111
 
114
        0xD6C0, // ASCII =  20  1101011011
 
115
        0xDAC0, // ASCII =  21  1101101011
 
116
        0xDB40, // ASCII =  22  1101101101
 
117
        0xD5C0, // ASCII =  23  1101010111
 
118
        0xDEC0, // ASCII =  24  1101111011
 
119
        0xDF40, // ASCII =  25  1101111101
 
120
        0xEDC0, // ASCII =  26  1110110111
 
121
        0xD540, // ASCII =  27  1101010101
 
122
        0xD740, // ASCII =  28  1101011101
 
123
        0xEEC0, // ASCII =  29  1110111011
 
124
        0xBEC0, // ASCII =  30  1011111011
 
125
        0xDFC0, // ASCII =  31  1101111111
 
126
        0x8000, // ASCII = ' '  1
 
127
        0xFF80, // ASCII = '!'  111111111
 
128
        0xAF80, // ASCII = '"'  101011111
 
129
        0xFA80, // ASCII = '#'  111110101
 
130
        0xED80, // ASCII = '$'  111011011
 
131
        0xB540, // ASCII = '%'  1011010101
 
132
        0xAEC0, // ASCII = '&'  1010111011
 
133
        0xBF80, // ASCII = '''  101111111
 
134
        0xFB00, // ASCII = '('  11111011
 
135
        0xF700, // ASCII = ')'  11110111
 
136
        0xB780, // ASCII = '*'  101101111
 
137
        0xEF80, // ASCII = '+'  111011111
 
138
        0xEA00, // ASCII = ','  1110101
 
139
        0xD400, // ASCII = '-'  110101
 
140
        0xAE00, // ASCII = '.'  1010111
 
141
        0xD780, // ASCII = '/'  110101111
 
142
        0xB700, // ASCII = '0'  10110111
 
143
        0xBD00, // ASCII = '1'  10111101
 
144
        0xED00, // ASCII = '2'  11101101
 
145
        0xFF00, // ASCII = '3'  11111111
 
146
        0xBB80, // ASCII = '4'  101110111
 
147
        0xAD80, // ASCII = '5'  101011011
 
148
        0xB580, // ASCII = '6'  101101011
 
149
        0xD680, // ASCII = '7'  110101101
 
150
        0xD580, // ASCII = '8'  110101011
 
151
        0xDB80, // ASCII = '9'  110110111
 
152
        0xF500, // ASCII = ':'  11110101
 
153
        0xDE80, // ASCII = ';'  110111101
 
154
        0xF680, // ASCII = '<'  111101101
 
155
        0xAA00, // ASCII = '='  1010101
 
156
        0xEB80, // ASCII = '>'  111010111
 
157
        0xABC0, // ASCII = '?'  1010101111
 
158
        0xAF40, // ASCII = '@'  1010111101
 
159
        0xFA00, // ASCII = 'A'  1111101
 
160
        0xEB00, // ASCII = 'B'  11101011
 
161
        0xAD00, // ASCII = 'C'  10101101
 
162
        0xB500, // ASCII = 'D'  10110101
 
163
        0xEE00, // ASCII = 'E'  1110111
 
164
        0xDB00, // ASCII = 'F'  11011011
 
165
        0xFD00, // ASCII = 'G'  11111101
 
166
        0xAA80, // ASCII = 'H'  101010101
 
167
        0xFE00, // ASCII = 'I'  1111111
 
168
        0xFE80, // ASCII = 'J'  111111101
 
169
        0xBE80, // ASCII = 'K'  101111101
 
170
        0xD700, // ASCII = 'L'  11010111
 
171
        0xBB00, // ASCII = 'M'  10111011
 
172
        0xDD00, // ASCII = 'N'  11011101
 
173
        0xAB00, // ASCII = 'O'  10101011
 
174
        0xD500, // ASCII = 'P'  11010101
 
175
        0xEE80, // ASCII = 'Q'  111011101
 
176
        0xAF00, // ASCII = 'R'  10101111
 
177
        0xDE00, // ASCII = 'S'  1101111
 
178
        0xDA00, // ASCII = 'T'  1101101
 
179
        0xAB80, // ASCII = 'U'  101010111
 
180
        0xDA80, // ASCII = 'V'  110110101
 
181
        0xAE80, // ASCII = 'W'  101011101
 
182
        0xBA80, // ASCII = 'X'  101110101
 
183
        0xBD80, // ASCII = 'Y'  101111011
 
184
        0xAB40, // ASCII = 'Z'  1010101101
 
185
        0xFB80, // ASCII = '['  111110111
 
186
        0xF780, // ASCII = '\'  111101111
 
187
        0xFD80, // ASCII = ']'  111111011
 
188
        0xAFC0, // ASCII = '^'  1010111111
 
189
        0xB680, // ASCII = '_'  101101101
 
190
        0xB7C0, // ASCII = '`'  1011011111
 
191
        0xB000, // ASCII = 'a'  1011
 
192
        0xBE00, // ASCII = 'b'  1011111
 
193
        0xBC00, // ASCII = 'c'  101111
 
194
        0xB400, // ASCII = 'd'  101101
 
195
        0xC000, // ASCII = 'e'  11
 
196
        0xF400, // ASCII = 'f'  111101
 
197
        0xB600, // ASCII = 'g'  1011011
 
198
        0xAC00, // ASCII = 'h'  101011
 
199
        0xD000, // ASCII = 'i'  1101
 
200
        0xF580, // ASCII = 'j'  111101011
 
201
        0xBF00, // ASCII = 'k'  10111111
 
202
        0xD800, // ASCII = 'l'  11011
 
203
        0xEC00, // ASCII = 'm'  111011
 
204
        0xF000, // ASCII = 'n'  1111
 
205
        0xE000, // ASCII = 'o'  111
 
206
        0xFC00, // ASCII = 'p'  111111
 
207
        0xDF80, // ASCII = 'q'  110111111
 
208
        0xA800, // ASCII = 'r'  10101
 
209
        0xB800, // ASCII = 's'  10111
 
210
        0xA000, // ASCII = 't'  101
 
211
        0xDC00, // ASCII = 'u'  110111
 
212
        0xF600, // ASCII = 'v'  1111011
 
213
        0xD600, // ASCII = 'w'  1101011
 
214
        0xDF00, // ASCII = 'x'  11011111
 
215
        0xBA00, // ASCII = 'y'  1011101
 
216
        0xEA80, // ASCII = 'z'  111010101
 
217
        0xADC0, // ASCII = '{'  1010110111
 
218
 
 
219
        0xDD80, // ASCII = '|'  110111011
 
220
        0xAD40, // ASCII = '}'  1010110101
 
221
        0xB5C0, // ASCII = '~'  1011010111
 
222
        0xED40, // ASCII = 127  1110110101
 
223
        0xEF40, // ASCII = 128  1110111101
 
224
        0xEFC0, // ASCII = 129  1110111111
 
225
        0xF540, // ASCII = 130  1111010101
 
226
        0xF5C0, // ASCII = 131  1111010111
 
227
        0xF6C0, // ASCII = 132  1111011011
 
228
        0xF740, // ASCII = 133  1111011101
 
229
        0xF7C0, // ASCII = 134  1111011111
 
230
        0xFAC0, // ASCII = 135  1111101011
 
231
        0xFB40, // ASCII = 136  1111101101
 
232
        0xFBC0, // ASCII = 137  1111101111
 
233
        0xFD40, // ASCII = 138  1111110101
 
234
        0xFDC0, // ASCII = 139  1111110111
 
235
        0xFEC0, // ASCII = 140  1111111011
 
236
        0xFF40, // ASCII = 141  1111111101
 
237
        0xFFC0, // ASCII = 142  1111111111
 
238
        0xAAA0, // ASCII = 143  10101010101
 
239
        0xAAE0, // ASCII = 144  10101010111
 
240
        0xAB60, // ASCII = 145  10101011011
 
241
        0xABA0, // ASCII = 146  10101011101
 
242
        0xABE0, // ASCII = 147  10101011111
 
243
        0xAD60, // ASCII = 148  10101101011
 
244
        0xADA0, // ASCII = 149  10101101101
 
245
        0xADE0, // ASCII = 150  10101101111
 
246
        0xAEA0, // ASCII = 151  10101110101
 
247
        0xAEE0, // ASCII = 152  10101110111
 
248
        0xAF60, // ASCII = 153  10101111011
 
249
        0xAFA0, // ASCII = 154  10101111101
 
250
        0xAFE0, // ASCII = 155  10101111111
 
251
        0xB560, // ASCII = 156  10110101011
 
252
        0xB5A0, // ASCII = 157  10110101101
 
253
        0xB5E0, // ASCII = 158  10110101111
 
254
        0xB6A0, // ASCII = 159  10110110101
 
255
        0xB6E0, // ASCII = 160  10110110111
 
256
        0xB760, // ASCII = 161  10110111011
 
257
        0xB7A0, // ASCII = 162  10110111101
 
258
        0xB7E0, // ASCII = 163  10110111111
 
259
        0xBAA0, // ASCII = 164  10111010101
 
260
        0xBAE0, // ASCII = 165  10111010111
 
261
        0xBB60, // ASCII = 166  10111011011
 
262
        0xBBA0, // ASCII = 167  10111011101
 
263
        0xBBE0, // ASCII = 168  10111011111
 
264
        0xBD60, // ASCII = 169  10111101011
 
265
        0xBDA0, // ASCII = 170  10111101101
 
266
        0xBDE0, // ASCII = 171  10111101111
 
267
        0xBEA0, // ASCII = 172  10111110101
 
268
        0xBEE0, // ASCII = 173  10111110111
 
269
        0xBF60, // ASCII = 174  10111111011
 
270
        0xBFA0, // ASCII = 175  10111111101
 
271
        0xBFE0, // ASCII = 176  10111111111
 
272
        0xD560, // ASCII = 177  11010101011
 
273
        0xD5A0, // ASCII = 178  11010101101
 
274
        0xD5E0, // ASCII = 179  11010101111
 
275
        0xD6A0, // ASCII = 180  11010110101
 
276
        0xD6E0, // ASCII = 181  11010110111
 
277
        0xD760, // ASCII = 182  11010111011
 
278
        0xD7A0, // ASCII = 183  11010111101
 
279
        0xD7E0, // ASCII = 184  11010111111
 
280
        0xDAA0, // ASCII = 185  11011010101
 
281
        0xDAE0, // ASCII = 186  11011010111
 
282
        0xDB60, // ASCII = 187  11011011011
 
283
        0xDBA0, // ASCII = 188  11011011101
 
284
        0xDBE0, // ASCII = 189  11011011111
 
285
        0xDD60, // ASCII = 190  11011101011
 
286
        0xDDA0, // ASCII = 191  11011101101
 
287
        0xDDE0, // ASCII = 192  11011101111
 
288
        0xDEA0, // ASCII = 193  11011110101
 
289
        0xDEE0, // ASCII = 194  11011110111
 
290
        0xDF60, // ASCII = 195  11011111011
 
291
        0xDFA0, // ASCII = 196  11011111101
 
292
        0xDFE0, // ASCII = 197  11011111111
 
293
        0xEAA0, // ASCII = 198  11101010101
 
294
        0xEAE0, // ASCII = 199  11101010111
 
295
        0xEB60, // ASCII = 200  11101011011
 
296
        0xEBA0, // ASCII = 201  11101011101
 
297
        0xEBE0, // ASCII = 202  11101011111
 
298
        0xED60, // ASCII = 203  11101101011
 
299
        0xEDA0, // ASCII = 204  11101101101
 
300
        0xEDE0, // ASCII = 205  11101101111
 
301
        0xEEA0, // ASCII = 206  11101110101
 
302
        0xEEE0, // ASCII = 207  11101110111
 
303
        0xEF60, // ASCII = 208  11101111011
 
304
        0xEFA0, // ASCII = 209  11101111101
 
305
        0xEFE0, // ASCII = 210  11101111111
 
306
        0xF560, // ASCII = 211  11110101011
 
307
        0xF5A0, // ASCII = 212  11110101101
 
308
        0xF5E0, // ASCII = 213  11110101111
 
309
        0xF6A0, // ASCII = 214  11110110101
 
310
        0xF6E0, // ASCII = 215  11110110111
 
311
        0xF760, // ASCII = 216  11110111011
 
312
        0xF7A0, // ASCII = 217  11110111101
 
313
        0xF7E0, // ASCII = 218  11110111111
 
314
        0xFAA0, // ASCII = 219  11111010101
 
315
        0xFAE0, // ASCII = 220  11111010111
 
316
        0xFB60, // ASCII = 221  11111011011
 
317
        0xFBA0, // ASCII = 222  11111011101
 
318
        0xFBE0, // ASCII = 223  11111011111
 
319
        0xFD60, // ASCII = 224  11111101011
 
320
        0xFDA0, // ASCII = 225  11111101101
 
321
        0xFDE0, // ASCII = 226  11111101111
 
322
        0xFEA0, // ASCII = 227  11111110101
 
323
        0xFEE0, // ASCII = 228  11111110111
 
324
        0xFF60, // ASCII = 229  11111111011
 
325
        0xFFA0, // ASCII = 230  11111111101
 
326
        0xFFE0, // ASCII = 231  11111111111
 
327
        0xAAB0, // ASCII = 232  101010101011
 
328
        0xAAD0, // ASCII = 233  101010101101
 
329
        0xAAF0, // ASCII = 234  101010101111
 
330
        0xAB50, // ASCII = 235  101010110101
 
331
        0xAB70, // ASCII = 236  101010110111
 
332
        0xABB0, // ASCII = 237  101010111011
 
333
        0xABD0, // ASCII = 238  101010111101
 
334
        0xABF0, // ASCII = 239  101010111111
 
335
        0xAD50, // ASCII = 240  101011010101
 
336
        0xAD70, // ASCII = 241  101011010111
 
337
        0xADB0, // ASCII = 242  101011011011
 
338
        0xADD0, // ASCII = 243  101011011101
 
339
        0xADF0, // ASCII = 244  101011011111
 
340
        0xAEB0, // ASCII = 245  101011101011
 
341
        0xAED0, // ASCII = 246  101011101101
 
342
        0xAEF0, // ASCII = 247  101011101111
 
343
        0xAF50, // ASCII = 248  101011110101
 
344
        0xAF70, // ASCII = 249  101011110111
 
345
        0xAFB0, // ASCII = 250  101011111011
 
346
        0xAFD0, // ASCII = 251  101011111101
 
347
        0xAFF0, // ASCII = 252  101011111111
 
348
        0xB550, // ASCII = 253  101101010101
 
349
        0xB570, // ASCII = 254  101101010111
 
350
        0xB5B0  // ASCII = 255  101101011011
 
351
}; 
 
352
 
 
353
// For the QPSK modulator/demodulator, rate 1/2 constraint length 5 
 
354
//   convolutional FEC coding is used.
 
355
// The generator polynomials used are:
 
356
//  g1(x) = x^4 + x^3           + 1             = 0x19
 
357
//  g0(x) = x^4 +       x^2 + x + 1             = 0x17
 
358
// 
 
359
//                                g1(x)
 
360
//              /----+--------+--------------------------+
 
361
//            /      |        |                          |
 
362
// symbol msb       ---      ---      ---      ---      ---
 
363
//                 | b4|<---| b3|<---| b2|<---| b1|<---| b0| <-- inverted data in
 
364
// symbol lsb       ---      ---      ---      ---      ---
 
365
//            \      |                 |        |        |
 
366
//              \----+-----------------+--------+--------+
 
367
//                                g0(x)
 
368
//
 
369
// Lookup table to get symbol from non-inverted data stream
 
370
static const unsigned char ConvolutionCodeTable[32] =
 
371
{
 
372
        2, 1, 3, 0, 3, 0, 2, 1,
 
373
        0, 3, 1, 2, 1, 2, 0, 3,
 
374
        1, 2, 0, 3, 0, 3, 1, 2,
 
375
        3, 0, 2, 1, 2, 1, 3, 0 
 
376
};
 
377
 
 
378
#endif