aboutsummaryrefslogtreecommitdiffstats
path: root/include/grgsm
diff options
context:
space:
mode:
Diffstat (limited to 'include/grgsm')
-rw-r--r--include/grgsm/CMakeLists.txt31
-rw-r--r--include/grgsm/api.h34
-rw-r--r--include/grgsm/decoding/CMakeLists.txt25
-rw-r--r--include/grgsm/decoding/control_channels_decoder.h59
-rw-r--r--include/grgsm/demapping/CMakeLists.txt26
-rw-r--r--include/grgsm/demapping/get_bcch_or_ccch_bursts.h58
-rw-r--r--include/grgsm/demapping/universal_ctrl_chans_demapper.h58
-rw-r--r--include/grgsm/endian.h15
-rw-r--r--include/grgsm/gsmtap.h72
-rw-r--r--include/grgsm/misc_utils/CMakeLists.txt29
-rw-r--r--include/grgsm/misc_utils/bursts_printer.h60
-rw-r--r--include/grgsm/misc_utils/controlled_const_source_f.h58
-rw-r--r--include/grgsm/misc_utils/controlled_rotator_cc.h61
-rw-r--r--include/grgsm/misc_utils/extract_system_info.h65
-rw-r--r--include/grgsm/misc_utils/message_printer.h58
-rw-r--r--include/grgsm/receiver/CMakeLists.txt25
-rw-r--r--include/grgsm/receiver/receiver.h64
17 files changed, 798 insertions, 0 deletions
diff --git a/include/grgsm/CMakeLists.txt b/include/grgsm/CMakeLists.txt
new file mode 100644
index 0000000..292431f
--- /dev/null
+++ b/include/grgsm/CMakeLists.txt
@@ -0,0 +1,31 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install public header files
+########################################################################
+add_subdirectory(misc_utils)
+add_subdirectory(decoding)
+add_subdirectory(demapping)
+add_subdirectory(receiver)
+
+install(FILES
+ api.h
+ gsmtap.h DESTINATION include/grgsm
+)
diff --git a/include/grgsm/api.h b/include/grgsm/api.h
new file mode 100644
index 0000000..5ef6053
--- /dev/null
+++ b/include/grgsm/api.h
@@ -0,0 +1,34 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GSM_API_H
+#define INCLUDED_GSM_API_H
+
+#include <gnuradio/attributes.h>
+
+#ifdef gnuradio_gsm_EXPORTS
+# define GSM_API __GR_ATTR_EXPORT
+#else
+# define GSM_API __GR_ATTR_IMPORT
+#endif
+
+#endif /* INCLUDED_GSM_API_H */
diff --git a/include/grgsm/decoding/CMakeLists.txt b/include/grgsm/decoding/CMakeLists.txt
new file mode 100644
index 0000000..3fa27ac
--- /dev/null
+++ b/include/grgsm/decoding/CMakeLists.txt
@@ -0,0 +1,25 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install public header files
+########################################################################
+install(FILES
+ control_channels_decoder.h DESTINATION include/grgsm/decoding
+)
diff --git a/include/grgsm/decoding/control_channels_decoder.h b/include/grgsm/decoding/control_channels_decoder.h
new file mode 100644
index 0000000..a3a8d8c
--- /dev/null
+++ b/include/grgsm/decoding/control_channels_decoder.h
@@ -0,0 +1,59 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GSM_CONTROL_CHANNELS_DECODER_H
+#define INCLUDED_GSM_CONTROL_CHANNELS_DECODER_H
+
+#include <grgsm/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+ namespace gsm {
+
+ /*!
+ * \brief <+description of block+>
+ * \ingroup gsm
+ *
+ */
+ class GSM_API control_channels_decoder : virtual public gr::block
+ {
+ public:
+ typedef boost::shared_ptr<control_channels_decoder> sptr;
+
+ /*!
+ * \brief Return a shared_ptr to a new instance of gsm::control_channels_decoder.
+ *
+ * To avoid accidental use of raw pointers, gsm::control_channels_decoder's
+ * constructor is in a private implementation
+ * class. gsm::control_channels_decoder::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make();
+
+ };
+
+ } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_CONTROL_CHANNELS_DECODER_H */
+
diff --git a/include/grgsm/demapping/CMakeLists.txt b/include/grgsm/demapping/CMakeLists.txt
new file mode 100644
index 0000000..912df3b
--- /dev/null
+++ b/include/grgsm/demapping/CMakeLists.txt
@@ -0,0 +1,26 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install public header files
+########################################################################
+install(FILES
+ universal_ctrl_chans_demapper.h
+ get_bcch_or_ccch_bursts.h DESTINATION include/grgsm/demapping
+)
diff --git a/include/grgsm/demapping/get_bcch_or_ccch_bursts.h b/include/grgsm/demapping/get_bcch_or_ccch_bursts.h
new file mode 100644
index 0000000..3745993
--- /dev/null
+++ b/include/grgsm/demapping/get_bcch_or_ccch_bursts.h
@@ -0,0 +1,58 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GSM_GET_BCCH_OR_CCCH_BURSTS_H
+#define INCLUDED_GSM_GET_BCCH_OR_CCCH_BURSTS_H
+
+#include <grgsm/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+ namespace gsm {
+
+ /*!
+ * \brief <+description of block+>
+ * \ingroup gsm
+ *
+ */
+ class GSM_API get_bcch_or_ccch_bursts : virtual public gr::block
+ {
+ public:
+ typedef boost::shared_ptr<get_bcch_or_ccch_bursts> sptr;
+
+ /*!
+ * \brief Return a shared_ptr to a new instance of gsm::get_bcch_or_ccch_bursts.
+ *
+ * To avoid accidental use of raw pointers, gsm::get_bcch_or_ccch_bursts's
+ * constructor is in a private implementation
+ * class. gsm::get_bcch_or_ccch_bursts::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make(unsigned int fn51_start);
+ };
+
+ } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_GET_BCCH_OR_CCCH_BURSTS_H */
+
diff --git a/include/grgsm/demapping/universal_ctrl_chans_demapper.h b/include/grgsm/demapping/universal_ctrl_chans_demapper.h
new file mode 100644
index 0000000..08814dd
--- /dev/null
+++ b/include/grgsm/demapping/universal_ctrl_chans_demapper.h
@@ -0,0 +1,58 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GSM_UNIVERSAL_CTRL_CHANS_DEMAPPER_H
+#define INCLUDED_GSM_UNIVERSAL_CTRL_CHANS_DEMAPPER_H
+
+#include <grgsm/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+ namespace gsm {
+
+ /*!
+ * \brief <+description of block+>
+ * \ingroup gsm
+ *
+ */
+ class GSM_API universal_ctrl_chans_demapper : virtual public gr::block
+ {
+ public:
+ typedef boost::shared_ptr<universal_ctrl_chans_demapper> sptr;
+
+ /*!
+ * \brief Return a shared_ptr to a new instance of gsm::universal_ctrl_chans_demapper.
+ *
+ * To avoid accidental use of raw pointers, gsm::universal_ctrl_chans_demapper's
+ * constructor is in a private implementation
+ * class. gsm::universal_ctrl_chans_demapper::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make(const std::vector<int> &starts_fn_mod51, const std::vector<int> &channel_types);
+ };
+
+ } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_UNIVERSAL_CTRL_CHANS_DEMAPPER_H */
+
diff --git a/include/grgsm/endian.h b/include/grgsm/endian.h
new file mode 100644
index 0000000..c176a49
--- /dev/null
+++ b/include/grgsm/endian.h
@@ -0,0 +1,15 @@
+#ifndef GSM_ENDIAN_H
+#define GSM_ENDIAN_H
+
+#if defined(__linux__)
+# include <endian.h>
+#elif defined(__APPLE__)
+# include <libkern/OSByteOrder.h>
+
+# define htobe16(x) OSSwapHostToBigInt16(x)
+# define htobe32(x) OSSwapHostToBigInt32(x)
+
+# define be32toh(x) OSSwapBigToHostInt32(x)
+#endif
+
+#endif /* GSM_ENDIAN_H */
diff --git a/include/grgsm/gsmtap.h b/include/grgsm/gsmtap.h
new file mode 100644
index 0000000..bf8226b
--- /dev/null
+++ b/include/grgsm/gsmtap.h
@@ -0,0 +1,72 @@
+#ifndef _GSMTAP_H
+#define _GSMTAP_H
+
+/* gsmtap header, pseudo-header in front of the actua GSM payload */
+
+/* GSMTAP is a generic header format for GSM protocol captures,
+ * it uses the IANA-assigned UDP port number 4729 and carries
+ * payload in various formats of GSM interfaces such as Um MAC
+ * blocks or Um bursts.
+ *
+ * Example programs generating GSMTAP data are airprobe
+ * (http://airprobe.org/) or OsmocomBB (http://bb.osmocom.org/)
+ */
+
+#include <stdint.h>
+
+#define GSMTAP_VERSION 0x02
+
+#define GSMTAP_TYPE_UM 0x01 /* A Layer 2 MAC block (23 bytes) */
+#define GSMTAP_TYPE_ABIS 0x02
+#define GSMTAP_TYPE_UM_BURST 0x03 /* raw burst bits */
+
+#define GSMTAP_BURST_UNKNOWN 0x00
+#define GSMTAP_BURST_FCCH 0x01
+#define GSMTAP_BURST_PARTIAL_SCH 0x02
+#define GSMTAP_BURST_SCH 0x03
+#define GSMTAP_BURST_CTS_SCH 0x04
+#define GSMTAP_BURST_COMPACT_SCH 0x05
+#define GSMTAP_BURST_NORMAL 0x06
+#define GSMTAP_BURST_DUMMY 0x07
+#define GSMTAP_BURST_ACCESS 0x08
+#define GSMTAP_BURST_NONE 0x09
+
+#define GSMTAP_CHANNEL_UNKNOWN 0x00
+#define GSMTAP_CHANNEL_BCCH 0x01
+#define GSMTAP_CHANNEL_CCCH 0x02
+#define GSMTAP_CHANNEL_RACH 0x03
+#define GSMTAP_CHANNEL_AGCH 0x04
+#define GSMTAP_CHANNEL_PCH 0x05
+#define GSMTAP_CHANNEL_SDCCH 0x06
+#define GSMTAP_CHANNEL_SDCCH4 0x07
+#define GSMTAP_CHANNEL_SDCCH8 0x08
+#define GSMTAP_CHANNEL_TCH_F 0x09
+#define GSMTAP_CHANNEL_TCH_H 0x0a
+#define GSMTAP_CHANNEL_ACCH 0x80
+
+#define GSMTAP_ARFCN_F_PCS 0x8000
+#define GSMTAP_ARFCN_F_UPLINK 0x4000
+#define GSMTAP_ARFCN_MASK 0x3fff
+
+#define GSMTAP_UDP_PORT 4729 /* officially registered with IANA */
+
+struct gsmtap_hdr {
+ uint8_t version; /* version, set to GSMTAP_VERSION */
+ uint8_t hdr_len; /* length in number of 32bit words */
+ uint8_t type; /* see GSMTAP_TYPE_* */
+ uint8_t timeslot; /* timeslot (0..7 on Um) */
+
+ uint16_t arfcn; /* ARFCN (frequency) */
+ int8_t signal_dbm; /* signal level in dBm */
+ int8_t snr_db; /* signal/noise ratio in dB */
+
+ uint32_t frame_number; /* GSM Frame Number (FN) */
+
+ uint8_t sub_type; /* Type of burst/channel, see above */
+ uint8_t antenna_nr; /* Antenna Number */
+ uint8_t sub_slot; /* sub-slot within timeslot */
+ uint8_t res; /* reserved for future use (RFU) */
+
+} __attribute__((packed));
+
+#endif /* _GSMTAP_H */
diff --git a/include/grgsm/misc_utils/CMakeLists.txt b/include/grgsm/misc_utils/CMakeLists.txt
new file mode 100644
index 0000000..1f640a2
--- /dev/null
+++ b/include/grgsm/misc_utils/CMakeLists.txt
@@ -0,0 +1,29 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install public header files
+########################################################################
+install(FILES
+ bursts_printer.h
+ extract_system_info.h
+ controlled_rotator_cc.h
+ controlled_const_source_f.h
+ message_printer.h DESTINATION include/grgsm/misc_utils
+)
diff --git a/include/grgsm/misc_utils/bursts_printer.h b/include/grgsm/misc_utils/bursts_printer.h
new file mode 100644
index 0000000..5fb9b1b
--- /dev/null
+++ b/include/grgsm/misc_utils/bursts_printer.h
@@ -0,0 +1,60 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GSM_BURSTS_PRINTER_H
+#define INCLUDED_GSM_BURSTS_PRINTER_H
+
+#include <grgsm/api.h>
+#include <gnuradio/block.h>
+#include <string>
+#include <vector>
+
+namespace gr {
+ namespace gsm {
+
+ /*!
+ * \brief <+description of block+>
+ * \ingroup gsm
+ *
+ */
+ class GSM_API bursts_printer : virtual public gr::block
+ {
+ public:
+ typedef boost::shared_ptr<bursts_printer> sptr;
+
+ /*!
+ * \brief Return a shared_ptr to a new instance of gsm::bursts_printer.
+ *
+ * To avoid accidental use of raw pointers, gsm::bursts_printer's
+ * constructor is in a private implementation
+ * class. gsm::bursts_printer::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make();
+ };
+
+ } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_BURSTS_PRINTER_H */
+
diff --git a/include/grgsm/misc_utils/controlled_const_source_f.h b/include/grgsm/misc_utils/controlled_const_source_f.h
new file mode 100644
index 0000000..afd9d81
--- /dev/null
+++ b/include/grgsm/misc_utils/controlled_const_source_f.h
@@ -0,0 +1,58 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GSM_CONTROLLED_CONST_SOURCE_F_H
+#define INCLUDED_GSM_CONTROLLED_CONST_SOURCE_F_H
+
+#include <grgsm/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+ namespace gsm {
+
+ /*!
+ * \brief <+description of block+>
+ * \ingroup gsm
+ *
+ */
+ class GSM_API controlled_const_source_f : virtual public gr::sync_block
+ {
+ public:
+ typedef boost::shared_ptr<controlled_const_source_f> sptr;
+
+ /*!
+ * \brief Return a shared_ptr to a new instance of gsm::controlled_const_source_f.
+ *
+ * To avoid accidental use of raw pointers, gsm::controlled_const_source_f's
+ * constructor is in a private implementation
+ * class. gsm::controlled_const_source_f::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make(float constant);
+ virtual void set_constant(float constant) = 0;
+ };
+
+ } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_CONTROLLED_CONST_SOURCE_F_H */
+
diff --git a/include/grgsm/misc_utils/controlled_rotator_cc.h b/include/grgsm/misc_utils/controlled_rotator_cc.h
new file mode 100644
index 0000000..bd9c04f
--- /dev/null
+++ b/include/grgsm/misc_utils/controlled_rotator_cc.h
@@ -0,0 +1,61 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GSM_CONTROLLED_ROTATOR_CC_H
+#define INCLUDED_GSM_CONTROLLED_ROTATOR_CC_H
+
+#include <grgsm/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+ namespace gsm {
+
+ /*!
+ * \brief <+description of block+>
+ * \ingroup gsm
+ *
+ */
+ class GSM_API controlled_rotator_cc : virtual public sync_block
+ {
+ public:
+ typedef boost::shared_ptr<controlled_rotator_cc> sptr;
+
+ /*!
+ * \brief Return a shared_ptr to a new instance of gsm::controlled_rotator_cc.
+ *
+ * To avoid accidental use of raw pointers, gsm::controlled_rotator_cc's
+ * constructor is in a private implementation
+ * class. gsm::controlled_rotator_cc::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make(double phase_inc, double samp_rate);
+
+ virtual void set_phase_inc(double phase_inc) = 0;
+ virtual void set_samp_rate(double samp_rate) = 0;
+ };
+
+ } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_CONTROLLED_ROTATOR_CC_H */
+
diff --git a/include/grgsm/misc_utils/extract_system_info.h b/include/grgsm/misc_utils/extract_system_info.h
new file mode 100644
index 0000000..c026096
--- /dev/null
+++ b/include/grgsm/misc_utils/extract_system_info.h
@@ -0,0 +1,65 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GSM_EXTRACT_SYSTEM_INFO_H
+#define INCLUDED_GSM_EXTRACT_SYSTEM_INFO_H
+
+#include <grgsm/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+ namespace gsm {
+
+ /*!
+ * \brief <+description of block+>
+ * \ingroup gsm
+ *
+ */
+ class GSM_API extract_system_info : virtual public gr::block
+ {
+ public:
+ typedef boost::shared_ptr<extract_system_info> sptr;
+
+ /*!
+ * \brief Return a shared_ptr to a new instance of gsm::extract_system_info.
+ *
+ * To avoid accidental use of raw pointers, gsm::extract_system_info's
+ * constructor is in a private implementation
+ * class. gsm::extract_system_info::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make();
+ virtual void show() = 0;
+ virtual std::vector<int> get_chans() = 0;
+ virtual std::vector<int> get_pwrs() = 0;
+ virtual std::vector<int> get_lac() = 0;
+ virtual std::vector<int> get_cell_id() = 0;
+ virtual std::vector<int> get_mnc() = 0;
+ virtual void reset() = 0;
+ };
+
+ } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_EXTRACT_SYSTEM_INFO_H */
+
diff --git a/include/grgsm/misc_utils/message_printer.h b/include/grgsm/misc_utils/message_printer.h
new file mode 100644
index 0000000..3ed8bbd
--- /dev/null
+++ b/include/grgsm/misc_utils/message_printer.h
@@ -0,0 +1,58 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GSM_MESSAGE_PRINTER_H
+#define INCLUDED_GSM_MESSAGE_PRINTER_H
+
+#include <grgsm/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+ namespace gsm {
+
+ /*!
+ * \brief <+description of block+>
+ * \ingroup gsm
+ *
+ */
+ class GSM_API message_printer : virtual public gr::block
+ {
+ public:
+ typedef boost::shared_ptr<message_printer> sptr;
+
+ /*!
+ * \brief Return a shared_ptr to a new instance of gsm::message_printer.
+ *
+ * To avoid accidental use of raw pointers, gsm::message_printer's
+ * constructor is in a private implementation
+ * class. gsm::message_printer::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make();
+ };
+
+ } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_MESSAGE_PRINTER_H */
+
diff --git a/include/grgsm/receiver/CMakeLists.txt b/include/grgsm/receiver/CMakeLists.txt
new file mode 100644
index 0000000..4b92f7f
--- /dev/null
+++ b/include/grgsm/receiver/CMakeLists.txt
@@ -0,0 +1,25 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install public header files
+########################################################################
+install(FILES
+ receiver.h DESTINATION include/grgsm/receiver
+)
diff --git a/include/grgsm/receiver/receiver.h b/include/grgsm/receiver/receiver.h
new file mode 100644
index 0000000..e5774e9
--- /dev/null
+++ b/include/grgsm/receiver/receiver.h
@@ -0,0 +1,64 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Piotr Krysik <ptrkrysik@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GSM_RECEIVER_H
+#define INCLUDED_GSM_RECEIVER_H
+
+#include <grgsm/api.h>
+#include <gnuradio/block.h>
+#include <gnuradio/feval.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+ namespace gsm {
+
+ /*!
+ * \brief <+description of block+>
+ * \ingroup gsm
+ *
+ */
+ class GSM_API receiver : virtual public sync_block
+ {
+ public:
+ typedef boost::shared_ptr<receiver> sptr;
+
+ /*!
+ * \brief Return a shared_ptr to a new instance of gsm::receiver.
+ *
+ * To avoid accidental use of raw pointers, gsm::receiver's
+ * constructor is in a private implementation
+ * class. gsm::receiver::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make(int osr, const std::vector<int> &cell_allocation, const std::vector<int> &seq_nums);
+
+ virtual void set_cell_allocation(const std::vector<int> &cell_allocation) = 0;
+ virtual void set_tseq_nums(const std::vector<int> & tseq_nums) = 0;
+ virtual void reset() = 0;
+ };
+
+ } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_RECEIVER_H */
+