GNU Radio's GSM Package
viterbi_detector.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * @file
4  * @author (C) 2009 Piotr Krysik <ptrkrysik@gmail.com>
5  * @section LICENSE
6  *
7  * Gr-gsm is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3, or (at your option)
10  * any later version.
11  *
12  * Gr-gsm is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with gr-gsm; see the file COPYING. If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street,
20  * Boston, MA 02110-1301, USA.
21  */
22 
23 /*
24  * viterbi_detector:
25  * This part does the detection of received sequnece.
26  * Employed algorithm is viterbi Maximum Likehood Sequence Estimation.
27  * At this moment it gives hard decisions on the output, but
28  * it was designed with soft decisions in mind.
29  *
30  * SYNTAX: void viterbi_detector(
31  * const gr_complex * input,
32  * unsigned int samples_num,
33  * gr_complex * rhh,
34  * unsigned int start_state,
35  * const unsigned int * stop_states,
36  * unsigned int stops_num,
37  * float * output)
38  *
39  * INPUT: input: Complex received signal afted matched filtering.
40  * samples_num: Number of samples in the input table.
41  * rhh: The autocorrelation of the estimated channel
42  * impulse response.
43  * start_state: Number of the start point. In GSM each burst
44  * starts with sequence of three bits (0,0,0) which
45  * indicates start point of the algorithm.
46  * stop_states: Table with numbers of possible stop states.
47  * stops_num: Number of possible stop states
48  *
49  *
50  * OUTPUT: output: Differentially decoded hard output of the algorithm:
51  * -1 for logical "0" and 1 for logical "1"
52  *
53  * SUB_FUNC: none
54  *
55  * TEST(S): Tested with real world normal burst.
56  */
57 
58 #ifndef INCLUDED_VITERBI_DETECTOR_H
59 #define INCLUDED_VITERBI_DETECTOR_H
60 
61 void viterbi_detector(const gr_complex * input, unsigned int samples_num, gr_complex * rhh, unsigned int start_state, const unsigned int * stop_states, unsigned int stops_num, float * output);
62 
63 #endif /* INCLUDED_VITERBI_DETECTOR_H */
viterbi_detector
void viterbi_detector(const gr_complex *input, unsigned int samples_num, gr_complex *rhh, unsigned int start_state, const unsigned int *stop_states, unsigned int stops_num, float *output)