GNU Radio's GSM Package: viterbi_detector.h Source File

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)