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:
parent
b663a32a62
commit
b55f317616
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
Reference in New Issue