Re-encode NAC using BCH after decoding.

git-svn-id: http://op25.osmocom.org/svn/trunk@106 65a5c917-d112-43f1-993d-58c26a4786be
This commit is contained in:
stevie 2008-12-03 06:55:07 +00:00
parent b663a32a62
commit b55f317616
3 changed files with 44 additions and 402 deletions

View File

@ -22,6 +22,8 @@
*/
#include <hdu.h>
#include <itpp/comm/egolay.h>
#include <itpp/comm/reedsolomon.h>
hdu::hdu(const_bit_vector& frame_body) :
abstract_data_unit(frame_body)
@ -41,402 +43,19 @@ hdu::max_size() const
void
hdu::correct_errors(bit_vector& frame)
{
/*
0, FS, 0, 1
1, FS, 0, 1
2, FS, 0, 1
3, FS, 0, 1
4, FS, 0, 1
5, FS, 1, 1
6, FS, 0, 1
7, FS, 0, 1
8, FS, 1, 1
9, FS, 1, 1
10, FS, 0, 1
11, FS, 0, 1
12, FS, 1, 1
13, FS, 1, 1
14, FS, 1, 1
15, FS, 1, 1
16, FS, 0, 1
17, FS, 1, 1
18, FS, 0, 1
19, FS, 1, 1
20, FS, 1, 1
21, FS, 1, 1
22, FS, 1, 1
23, FS, 1, 1
24, NID, NAC(11), NAC(10)
25, NID, NAC(9), NAC(8)
26, NID, NAC(7), NAC(6)
27, NID, NAC(5), NAC(4)
28, NID, NAC(3), NAC(2)
29, NID, NAC(1), NAC(0)
30, NID, DUID(3), DUID(2)
31, NID, DUID(1), DUID(0)
32, NID, BCH_parity(47), BCH_parity(46)
33, NID, BCH_parity(45), BCH_parity(44)
34, NID, BCH_parity(43), BCH_parity(42)
35, Status 1, SS(1), SS(0)
36, NID, BCH_parity(41), BCH_parity(40)
37, NID, BCH_parity(39), BCH_parity(38)
38, NID, BCH_parity(37), BCH_parity(36)
39, NID, BCH_parity(35), BCH_parity(34)
40, NID, BCH_parity(33), BCH_parity(32)
41, NID, BCH_parity(31), BCH_parity(30)
42, NID, BCH_parity(29), BCH_parity(28)
43, NID, BCH_parity(27), BCH_parity(26)
44, NID, BCH_parity(25), BCH_parity(24)
45, NID, BCH_parity(23), BCH_parity(22)
46, NID, BCH_parity(21), BCH_parity(20)
47, NID, BCH_parity(19), BCH_parity(18)
48, NID, BCH_parity(17), BCH_parity(16)
49, NID, BCH_parity(15), BCH_parity(14)
50, NID, BCH_parity(13), BCH_parity(12)
51, NID, BCH_parity(11), BCH_parity(10)
52, NID, BCH_parity(9), BCH_parity(8)
53, NID, BCH_parity(7), BCH_parity(6)
54, NID, BCH_parity(5), BCH_parity(4)
55, NID, BCH_parity(3), BCH_parity(2)
56, NID, BCH_parity(1), BCH_parity(0)
57, Header Code Word, MI(71), MI(70)
58, Header Code Word, MI(69), MI(68)
59, Header Code Word, MI(67), MI(66)
60, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
61, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
62, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
63, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
64, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
65, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
66, Header Code Word, MI(65), MI(64)
67, Header Code Word, MI(63), MI(62)
68, Header Code Word, MI(61), MI(60)
69, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
70, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
71, Status 2, SS(1), SS(0)
72, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
73, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
74, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
75, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
76, Header Code Word, MI(59), MI(58)
77, Header Code Word, MI(57), MI(56)
78, Header Code Word, MI(55), MI(54)
79, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
80, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
81, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
82, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
83, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
84, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
85, Header Code Word, MI(53), MI(52)
86, Header Code Word, MI(51), MI(50)
87, Header Code Word, MI(49), MI(48)
88, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
89, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
90, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
91, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
92, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
93, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
94, Header Code Word, MI(47), MI(46)
95, Header Code Word, MI(45), MI(44)
96, Header Code Word, MI(43), MI(42)
97, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
98, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
99, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
100, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
101, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
102, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
103, Header Code Word, MI(41), MI(40)
104, Header Code Word, MI(39), MI(38)
105, Header Code Word, MI(37), MI(36)
106, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
107, Status 3, SS(1), SS(0)
108, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
109, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
110, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
111, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
112, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
113, Header Code Word, MI(35), MI(34)
114, Header Code Word, MI(33), MI(32)
115, Header Code Word, MI(31), MI(30)
116, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
117, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
118, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
119, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
120, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
121, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
122, Header Code Word, MI(29), MI(28)
123, Header Code Word, MI(27), MI(26)
124, Header Code Word, MI(25), MI(24)
125, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
126, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
127, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
128, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
129, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
130, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
131, Header Code Word, MI(23), MI(22)
132, Header Code Word, MI(21), MI(20)
133, Header Code Word, MI(19), MI(18)
134, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
135, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
136, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
137, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
138, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
139, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
140, Header Code Word, MI(17), MI(16)
141, Header Code Word, MI(15), MI(14)
142, Header Code Word, MI(13), MI(12)
143, Status 4, SS(1), SS(0)
144, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
145, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
146, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
147, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
148, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
149, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
150, Header Code Word, MI(11), MI(10)
151, Header Code Word, MI(9), MI(8)
152, Header Code Word, MI(7), MI(6)
153, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
154, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
155, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
156, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
157, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
158, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
159, Header Code Word, MI(5), MI(4)
160, Header Code Word, MI(3), MI(2)
161, Header Code Word, MI(1), MI(0)
162, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
163, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
164, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
165, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
166, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
167, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
168, Header Code Word, MFID(7), MFID(6)
169, Header Code Word, MFID(5), MFID(4)
170, Header Code Word, MFID(3), MFID(2)
171, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
172, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
173, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
174, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
175, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
176, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
177, Header Code Word, MFID(1), MFID(0)
178, Header Code Word, ALGID(7), ALGID(6)
179, Status 5, SS(1), SS(0)
180, Header Code Word, ALGID(5), ALGID(4)
181, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
182, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
183, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
184, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
185, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
186, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
187, Header Code Word, ALGID(3), ALGID(2)
188, Header Code Word, ALGID(1), ALGID(0)
189, Header Code Word, KID(15), KID(14)
190, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
191, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
192, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
193, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
194, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
195, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
196, Header Code Word, KID(13), KID(12)
197, Header Code Word, KID(11), KID(10)
198, Header Code Word, KID(9), KID(8)
199, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
200, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
201, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
202, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
203, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
204, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
205, Header Code Word, KID(7), KID(6)
206, Header Code Word, KID(5), KID(4)
207, Header Code Word, KID(3), KID(2)
208, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
209, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
210, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
211, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
212, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
213, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
214, Header Code Word, KID(1), KID(0)
215, Status 6, SS(1), SS(0)
216, Header Code Word, TGID(15), TGID(14)
217, Header Code Word, TGID(13), TGID(12)
218, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
219, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
220, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
221, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
222, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
223, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
224, Header Code Word, TGID(11), TGID(10)
225, Header Code Word, TGID(9), TGID(8)
226, Header Code Word, TGID(7), TGID(6)
227, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
228, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
229, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
230, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
231, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
232, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
233, Header Code Word, TGID(5), TGID(4)
234, Header Code Word, TGID(3), TGID(2)
235, Header Code Word, TGID(1), TGID(0)
236, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
237, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
238, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
239, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
240, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
241, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
242, Header Code Word, RS_parity_15(5), RS_parity_15(4)
243, Header Code Word, RS_parity_15(3), RS_parity_15(2)
244, Header Code Word, RS_parity_15(1), RS_parity_15(0)
245, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
246, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
247, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
248, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
249, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
250, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
251, Status 7, SS(1), SS(0)
252, Header Code Word, RS_parity_14(5), RS_parity_14(4)
253, Header Code Word, RS_parity_14(3), RS_parity_14(2)
254, Header Code Word, RS_parity_14(1), RS_parity_14(0)
255, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
256, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
257, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
258, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
259, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
260, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
261, Header Code Word, RS_parity_13(5), RS_parity_13(4)
262, Header Code Word, RS_parity_13(3), RS_parity_13(2)
263, Header Code Word, RS_parity_13(1), RS_parity_13(0)
264, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
265, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
266, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
267, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
268, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
269, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
270, Header Code Word, RS_parity_12(5), RS_parity_12(4)
271, Header Code Word, RS_parity_12(3), RS_parity_12(2)
272, Header Code Word, RS_parity_12(1), RS_parity_12(0)
273, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
274, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
275, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
276, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
277, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
278, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
279, Header Code Word, RS_parity_11(5), RS_parity_11(4)
280, Header Code Word, RS_parity_11(3), RS_parity_11(2)
281, Header Code Word, RS_parity_11(1), RS_parity_11(0)
282, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
283, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
284, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
285, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
286, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
287, Status 8, SS(1), SS(0)
288, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
289, Header Code Word, RS_parity_10(5), RS_parity_10(4)
290, Header Code Word, RS_parity_10(3), RS_parity_10(2)
291, Header Code Word, RS_parity_10(1), RS_parity_10(0)
292, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
293, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
294, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
295, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
296, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
297, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
298, Header Code Word, RS_parity_9(5), RS_parity_9(4)
299, Header Code Word, RS_parity_9(3), RS_parity_9(2)
300, Header Code Word, RS_parity_9(1), RS_parity_9(0)
301, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
302, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
303, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
304, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
305, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
306, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
307, Header Code Word, RS_parity_8(5), RS_parity_8(4)
308, Header Code Word, RS_parity_8(3), RS_parity_8(2)
309, Header Code Word, RS_parity_8(1), RS_parity_8(0)
310, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
311, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
312, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
313, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
314, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
315, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
316, Header Code Word, RS_parity_7(5), RS_parity_7(4)
317, Header Code Word, RS_parity_7(3), RS_parity_7(2)
318, Header Code Word, RS_parity_7(1), RS_parity_7(0)
319, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
320, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
321, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
322, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
323, Status 9, SS(1), SS(0)
324, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
325, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
326, Header Code Word, RS_parity_6(5), RS_parity_6(4)
327, Header Code Word, RS_parity_6(3), RS_parity_6(2)
328, Header Code Word, RS_parity_6(1), RS_parity_6(0)
329, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
330, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
331, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
332, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
333, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
334, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
335, Header Code Word, RS_parity_5(5), RS_parity_5(4)
336, Header Code Word, RS_parity_5(3), RS_parity_5(2)
337, Header Code Word, RS_parity_5(1), RS_parity_5(0)
338, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
339, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
340, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
341, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
342, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
343, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
344, Header Code Word, RS_parity_4(5), RS_parity_4(4)
345, Header Code Word, RS_parity_4(3), RS_parity_4(2)
346, Header Code Word, RS_parity_4(1), RS_parity_4(0)
347, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
348, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
349, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
350, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
351, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
352, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
353, Header Code Word, RS_parity_3(5), RS_parity_3(4)
354, Header Code Word, RS_parity_3(3), RS_parity_3(2)
355, Header Code Word, RS_parity_3(1), RS_parity_3(0)
356, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
357, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
358, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
359, Status 10, SS(1), SS(0)
360, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
361, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
362, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
363, Header Code Word, RS_parity_2(5), RS_parity_2(4)
364, Header Code Word, RS_parity_2(3), RS_parity_2(2)
365, Header Code Word, RS_parity_2(1), RS_parity_2(0)
366, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
367, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
368, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
369, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
370, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
371, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
372, Header Code Word, RS_parity_1(5), RS_parity_1(4)
373, Header Code Word, RS_parity_1(3), RS_parity_1(2)
374, Header Code Word, RS_parity_1(1), RS_parity_1(0)
375, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
376, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
377, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
378, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
379, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
380, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
381, Header Code Word, RS_parity_0(5), RS_parity_0(4)
382, Header Code Word, RS_parity_0(3), RS_parity_0(2)
383, Header Code Word, RS_parity_0(1), RS_parity_0(0)
384, Header Code Word, Short_Golay_parity(11), Short_Golay_parity(10)
385, Header Code Word, Short_Golay_parity(9), Short_Golay_parity(8)
386, Header Code Word, Short_Golay_parity(7), Short_Golay_parity(6)
387, Header Code Word, Short_Golay_parity(5), Short_Golay_parity(4)
388, Header Code Word, Short_Golay_parity(3), Short_Golay_parity(2)
389, Header Code Word, Short_Golay_parity(1), Short_Golay_parity(0)
390, Nulls, 0, 0
391, Nulls, 0, 0
392, Nulls, 0, 0
393, Nulls, 0, 0
394, Nulls, 0, 0
395, Status 11, SS(1), SS(0)
*/
apply_golay_correction(frame);
apply_rs_correction(frame);
}
void
hdu::apply_golay_correction(bit_vector& frame)
{
static itpp::Extended_Golay golay;
}
void
hdu::apply_rs_correction(bit_vector& frame)
{
// static itpp::Reed_Solomon rs(63, 47, 17, true);
}

View File

@ -65,6 +65,23 @@ protected:
*/
virtual void correct_errors(bit_vector& frame_body);
/**
* Apply Golay error correction code to the specified bit_vector.
*
* \param frame_body The bit vector to decode.
* \return
*/
virtual void apply_golay_correction(bit_vector& frame_body);
/**
* Apply Reed-Solomon error correction code to the specified
* bit_vector.
*
* \param frame_body The bit vector to decode.
* \return
*/
virtual void apply_rs_correction(bit_vector& frame_body);
};
#endif /* INCLUDED_HDU_H */

View File

@ -89,6 +89,9 @@ op25_decoder_ff::op25_decoder_ff(gr_msg_queue_sptr msgq) :
{
}
#include <iostream>
using namespace std;
bool
op25_decoder_ff::correlates(dibit d)
{
@ -115,16 +118,19 @@ op25_decoder_ff::receive_symbol(dibit d)
d_frame_hdr[2 * d_symbol] = d & 2;
d_frame_hdr[2 * d_symbol + 1] = d & 1;
if(56 == d_symbol) {
static itpp::BCH bch(63, 16, 11,"6 3 3 1 1 4 1 3 6 7 2 3 5 4 5 3", true);
itpp::bvec b(63);
swab(d_frame_hdr, 63, 47, b, 0);
swab(d_frame_hdr, 112, 71, b, 16);
swab(d_frame_hdr, 69, 63, b, 57);
bch.decode(b);
itpp::bvec bd = bch.decode(b);
itpp::bvec be = bch.encode(bd);
// ToDo compute/check parity bit?
swab(b, 57, d_frame_hdr, 69, 63);
swab(b, 16, d_frame_hdr, 112, 71);
swab(b, 0, d_frame_hdr, 63, 47);
swab(be, 57, d_frame_hdr, 69, 63);
swab(be, 16, d_frame_hdr, 112, 71);
swab(be, 0, d_frame_hdr, 63, 47);
d_data_unit = data_unit::make_data_unit(d_frame_hdr);
if(d_data_unit) {
d_state = READING;