forked from ptrkrysik/gr-gsm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
221 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
<?xml version="1.0"?> | ||
<block> | ||
<name>Preprocess Tx burst</name> | ||
<key>gsm_preprocess_tx_burst</key> | ||
<import>import grgsm</import> | ||
<make>grgsm.preprocess_tx_burst()</make> | ||
|
||
<sink> | ||
<name>bursts_in</name> | ||
<type>message</type> | ||
<optional>1</optional> | ||
</sink> | ||
|
||
<source> | ||
<name>bursts_out</name> | ||
<type>message</type> | ||
<optional>1</optional> | ||
</source> | ||
</block> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* -*- c++ -*- */ | ||
/* @file | ||
* @author Piotr Krysik <[email protected]> | ||
* @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_PREPROCESS_TX_BURST_H | ||
#define INCLUDED_GSM_PREPROCESS_TX_BURST_H | ||
|
||
#include <grgsm/api.h> | ||
#include <gnuradio/block.h> | ||
|
||
namespace gr { | ||
namespace gsm { | ||
|
||
/*! | ||
* \brief A block that does preprocessing tasks before sending bursts to modulator. | ||
* \ingroup gsm | ||
* | ||
* Currently it removes GSMTAP header from a burst and puts it in first part of PDU | ||
* pair and removes tailing zeros from Access Bursts coming from TRX interface. | ||
*/ | ||
class GRGSM_API preprocess_tx_burst : virtual public gr::block | ||
{ | ||
public: | ||
typedef boost::shared_ptr<preprocess_tx_burst> sptr; | ||
|
||
/*! | ||
* \brief Return a shared_ptr to a new instance of gsm::preprocess_tx_burst. | ||
* | ||
* To avoid accidental use of raw pointers, gsm::preprocess_tx_burst's | ||
* constructor is in a private implementation | ||
* class. gsm::preprocess_tx_burst::make is the public interface for | ||
* creating new instances. | ||
*/ | ||
static sptr make(); | ||
}; | ||
|
||
} // namespace gsm | ||
} // namespace gr | ||
|
||
#endif /* INCLUDED_GSM_PREPROCESS_TX_BURST_H */ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,4 +19,5 @@ | |
|
||
add_sources( | ||
txtime_setter_impl.cc | ||
preprocess_tx_burst_impl.cc | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* -*- c++ -*- */ | ||
/* @file | ||
* @author Piotr Krysik <[email protected]> | ||
* @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. | ||
* | ||
*/ | ||
|
||
#ifdef HAVE_CONFIG_H | ||
#include "config.h" | ||
#endif | ||
|
||
#include <gnuradio/io_signature.h> | ||
#include <grgsm/gsmtap.h> | ||
#include <grgsm/gsm_constants.h> | ||
#include "preprocess_tx_burst_impl.h" | ||
|
||
namespace gr { | ||
namespace gsm { | ||
|
||
preprocess_tx_burst::sptr | ||
preprocess_tx_burst::make() | ||
{ | ||
return gnuradio::get_initial_sptr | ||
(new preprocess_tx_burst_impl()); | ||
} | ||
|
||
/* | ||
* The private constructor | ||
*/ | ||
preprocess_tx_burst_impl::preprocess_tx_burst_impl() | ||
: gr::block("preprocess_tx_burst", | ||
gr::io_signature::make(0, 0, 0), | ||
gr::io_signature::make(0, 0, 0)) | ||
{ | ||
message_port_register_in(pmt::intern("bursts_in")); | ||
message_port_register_out(pmt::intern("bursts_out")); | ||
|
||
set_msg_handler(pmt::intern("bursts_in"), boost::bind(&preprocess_tx_burst_impl::process_burst, this, _1)); | ||
} | ||
|
||
/* | ||
* Our virtual destructor. | ||
*/ | ||
preprocess_tx_burst_impl::~preprocess_tx_burst_impl() | ||
{ | ||
} | ||
|
||
void preprocess_tx_burst_impl::process_burst(pmt::pmt_t burst) | ||
{ | ||
int8_t * header_bits = (int8_t *)(pmt::blob_data(pmt::cdr(burst))); | ||
int8_t * burst_bits = (int8_t *)(pmt::blob_data(pmt::cdr(burst)))+sizeof(gsmtap_hdr); | ||
|
||
pmt::pmt_t header_bits_pmt = pmt::make_blob(header_bits,sizeof(gsmtap_hdr)); | ||
|
||
size_t burst_size = pmt::blob_length(pmt::cdr(burst))-sizeof(gsmtap_hdr); | ||
if(((gsmtap_hdr*)header_bits)->sub_type == GSMTAP_BURST_ACCESS){ //cut unneeded bits from the end of access bursts | ||
burst_size = ACCESS_BURST_SIZE; | ||
} | ||
pmt::pmt_t burst_bits_pmt = pmt::make_blob(burst_bits, burst_size); | ||
|
||
pmt::pmt_t pdu_first_part = pmt::car(burst); | ||
// pmt::pmt_t new_pdu_first_part = pmt::dict_add( pdu_first_part, pmt::intern("gsmtap_header"), header_bits_pmt ); | ||
pmt::pmt_t new_pdu_first_part = pdu_first_part; | ||
|
||
pmt::pmt_t new_msg = pmt::cons(new_pdu_first_part, burst_bits_pmt); | ||
message_port_pub(pmt::intern("bursts_out"), new_msg); | ||
} | ||
} /* namespace gsm */ | ||
} /* namespace gr */ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
/* -*- c++ -*- */ | ||
/* @file | ||
* @author Piotr Krysik <[email protected]> | ||
* @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_PREPROCESS_TX_BURST_IMPL_H | ||
#define INCLUDED_GSM_PREPROCESS_TX_BURST_IMPL_H | ||
|
||
#include <grgsm/transmitter/preprocess_tx_burst.h> | ||
#include <grgsm/misc_utils/time_spec.h> | ||
#include <grgsm/misc_utils/fn_time.h> | ||
|
||
namespace gr { | ||
namespace gsm { | ||
|
||
class preprocess_tx_burst_impl : public preprocess_tx_burst | ||
{ | ||
private: | ||
void process_burst(pmt::pmt_t burst); | ||
|
||
public: | ||
preprocess_tx_burst_impl(); | ||
~preprocess_tx_burst_impl(); | ||
}; | ||
|
||
} // namespace gsm | ||
} // namespace gr | ||
|
||
#endif /* INCLUDED_GSM_PREPROCESS_TX_BURST_IMPL_H */ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters