diff options
Diffstat (limited to 'include/grgsm')
-rw-r--r-- | include/grgsm/CMakeLists.txt | 31 | ||||
-rw-r--r-- | include/grgsm/api.h | 34 | ||||
-rw-r--r-- | include/grgsm/decoding/CMakeLists.txt | 25 | ||||
-rw-r--r-- | include/grgsm/decoding/control_channels_decoder.h | 59 | ||||
-rw-r--r-- | include/grgsm/demapping/CMakeLists.txt | 26 | ||||
-rw-r--r-- | include/grgsm/demapping/get_bcch_or_ccch_bursts.h | 58 | ||||
-rw-r--r-- | include/grgsm/demapping/universal_ctrl_chans_demapper.h | 58 | ||||
-rw-r--r-- | include/grgsm/endian.h | 15 | ||||
-rw-r--r-- | include/grgsm/gsmtap.h | 72 | ||||
-rw-r--r-- | include/grgsm/misc_utils/CMakeLists.txt | 29 | ||||
-rw-r--r-- | include/grgsm/misc_utils/bursts_printer.h | 60 | ||||
-rw-r--r-- | include/grgsm/misc_utils/controlled_const_source_f.h | 58 | ||||
-rw-r--r-- | include/grgsm/misc_utils/controlled_rotator_cc.h | 61 | ||||
-rw-r--r-- | include/grgsm/misc_utils/extract_system_info.h | 65 | ||||
-rw-r--r-- | include/grgsm/misc_utils/message_printer.h | 58 | ||||
-rw-r--r-- | include/grgsm/receiver/CMakeLists.txt | 25 | ||||
-rw-r--r-- | include/grgsm/receiver/receiver.h | 64 |
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 */ + |