GNU Radio 3.7.2git-79-g931a7b07 C++ API
gr::digital::cpmmod_bc Class Reference

Generic CPM modulator. More...

#include <cpmmod_bc.h>

Inheritance diagram for gr::digital::cpmmod_bc:
gr::hier_block2 gr::basic_block gr::msg_accepter gr::messages::msg_accepter

List of all members.

Public Types

typedef boost::shared_ptr
< cpmmod_bc
sptr
- Public Types inherited from gr::hier_block2
typedef basic_block_sptr opaque_self
 typedef for object returned from self().

Public Member Functions

virtual std::vector< float > taps () const =0
 Return the phase response FIR taps.
virtual int type () const =0
 Return the type of CPM modulator.
virtual float index () const =0
 Return the modulation index of the modulator.
virtual int samples_per_sym () const =0
 Return the number of samples per symbol.
virtual int length () const =0
 Return the length of the phase duration (in symbols)
virtual double beta () const =0
 Return the value of beta for the modulator.
- Public Member Functions inherited from gr::hier_block2
virtual ~hier_block2 ()
opaque_self self ()
 Return an object, representing the current block, which can be passed to connect.
void connect (basic_block_sptr block)
 Add a stand-alone (possibly hierarchical) block to internal graph.
void connect (basic_block_sptr src, int src_port, basic_block_sptr dst, int dst_port)
 Add gr-blocks or hierarchical blocks to internal graph and wire together.
void msg_connect (basic_block_sptr src, pmt::pmt_t srcport, basic_block_sptr dst, pmt::pmt_t dstport)
 Add gr-blocks or hierarchical blocks to internal graph and wire together.
void msg_connect (basic_block_sptr src, std::string srcport, basic_block_sptr dst, std::string dstport)
void msg_disconnect (basic_block_sptr src, pmt::pmt_t srcport, basic_block_sptr dst, pmt::pmt_t dstport)
void msg_disconnect (basic_block_sptr src, std::string srcport, basic_block_sptr dst, std::string dstport)
void disconnect (basic_block_sptr block)
 Remove a gr-block or hierarchical block from the internal flowgraph.
void disconnect (basic_block_sptr src, int src_port, basic_block_sptr dst, int dst_port)
 Disconnect a pair of gr-blocks or hierarchical blocks in internal flowgraph.
void disconnect_all ()
 Disconnect all connections in the internal flowgraph.
virtual void lock ()
virtual void unlock ()
flat_flowgraph_sptr flatten () const
hier_block2_sptr to_hier_block2 ()
bool has_msg_port (pmt::pmt_t which_port)
bool message_port_is_hier (pmt::pmt_t port_id)
bool message_port_is_hier_in (pmt::pmt_t port_id)
bool message_port_is_hier_out (pmt::pmt_t port_id)
void message_port_register_hier_in (pmt::pmt_t port_id)
void message_port_register_hier_out (pmt::pmt_t port_id)
void set_processor_affinity (const std::vector< int > &mask)
 Set the affinity of all blocks in hier_block2 to processor core n.
void unset_processor_affinity ()
 Remove processor affinity for all blocks in hier_block2.
std::vector< int > processor_affinity ()
 Get the current processor affinity.
- Public Member Functions inherited from gr::basic_block
virtual ~basic_block ()
long unique_id () const
long symbolic_id () const
std::string name () const
std::string symbol_name () const
gr::io_signature::sptr input_signature () const
gr::io_signature::sptr output_signature () const
basic_block_sptr to_basic_block ()
bool alias_set ()
std::string alias ()
pmt::pmt_t alias_pmt ()
void set_block_alias (std::string name)
void message_port_register_in (pmt::pmt_t port_id)
void message_port_register_out (pmt::pmt_t port_id)
void message_port_pub (pmt::pmt_t port_id, pmt::pmt_t msg)
void message_port_sub (pmt::pmt_t port_id, pmt::pmt_t target)
void message_port_unsub (pmt::pmt_t port_id, pmt::pmt_t target)
pmt::pmt_t message_ports_in ()
 Get input message port names.
pmt::pmt_t message_ports_out ()
 Get output message port names.
void _post (pmt::pmt_t which_port, pmt::pmt_t msg)
bool empty_p (pmt::pmt_t which_port)
 is the queue empty?
bool empty_p ()
bool empty_handled_p (pmt::pmt_t which_port)
 are all msg ports with handlers empty?
bool empty_handled_p ()
size_t nmsgs (pmt::pmt_t which_port)
 How many messages in the queue?
void insert_tail (pmt::pmt_t which_port, pmt::pmt_t msg)
pmt::pmt_t delete_head_nowait (pmt::pmt_t which_port)
pmt::pmt_t delete_head_blocking (pmt::pmt_t which_port)
msg_queue_t::iterator get_iterator (pmt::pmt_t which_port)
void erase_msg (pmt::pmt_t which_port, msg_queue_t::iterator it)
virtual void setup_rpc ()
 Set up the RPC registered variables.
bool is_rpc_set ()
 Ask if this block has been registered to the RPC.
void rpc_set ()
 When the block is registered with the RPC, set this.
virtual bool check_topology (int ninputs, int noutputs)
 Confirm that ninputs and noutputs is an acceptable combination.
template<typename T >
void set_msg_handler (pmt::pmt_t which_port, T msg_handler)
 Set the callback that is fired when messages are available.
- Public Member Functions inherited from gr::msg_accepter
 msg_accepter ()
 ~msg_accepter ()
void post (pmt::pmt_t which_port, pmt::pmt_t msg)
 send msg to msg_accepter on port which_port

Static Public Member Functions

static sptr make (analog::cpm::cpm_type type, float h, int samples_per_sym, int L, double beta=0.3)
static sptr make_gmskmod_bc (int samples_per_sym=2, int L=4, double beta=0.3)

Additional Inherited Members

- Public Attributes inherited from gr::hier_block2
pmt::pmt_t hier_message_ports_in
pmt::pmt_t hier_message_ports_out
- Protected Member Functions inherited from gr::hier_block2
 hier_block2 (void)
 hier_block2 (const std::string &name, gr::io_signature::sptr input_signature, gr::io_signature::sptr output_signature)
- Protected Member Functions inherited from gr::basic_block
 basic_block (void)
 basic_block (const std::string &name, gr::io_signature::sptr input_signature, gr::io_signature::sptr output_signature)
 Protected constructor prevents instantiation by non-derived classes.
void set_input_signature (gr::io_signature::sptr iosig)
 may only be called during constructor
void set_output_signature (gr::io_signature::sptr iosig)
 may only be called during constructor
void set_color (vcolor color)
 Allow the flowgraph to set for sorting and partitioning.
vcolor color () const
virtual bool has_msg_handler (pmt::pmt_t which_port)
 Tests if there is a handler attached to port which_port.
virtual void dispatch_msg (pmt::pmt_t which_port, pmt::pmt_t msg)

Detailed Description

Generic CPM modulator.

Examples:

  • Setting h = 0.5, L = 1, type = LREC yields MSK.
  • Setting h = 0.5, type = GAUSSIAN and beta = 0.3 yields GMSK as used in GSM.

The input of this block are symbols from an M-ary alphabet +/-1, +/-3, ..., +/-(M-1). Usually, M = 2 and therefore, the valid inputs are +/-1. The modulator will silently accept any other inputs, though. The output is the phase-modulated signal.


Member Typedef Documentation


Member Function Documentation

virtual double gr::digital::cpmmod_bc::beta ( ) const
pure virtual

Return the value of beta for the modulator.

virtual float gr::digital::cpmmod_bc::index ( ) const
pure virtual

Return the modulation index of the modulator.

virtual int gr::digital::cpmmod_bc::length ( ) const
pure virtual

Return the length of the phase duration (in symbols)

static sptr gr::digital::cpmmod_bc::make ( analog::cpm::cpm_type  type,
float  h,
int  samples_per_sym,
int  L,
double  beta = 0.3 
)
static

Make CPM modulator block.

Parameters:
typeThe modulation type. Can be one of LREC, LRC, LSRC, TFM or GAUSSIAN. See gr_cpm::phase_response() for a detailed description.
hThe modulation index. $ h \cdot \pi$ is the maximum phase change that can occur between two symbols, i.e., if you only send ones, the phase will increase by $ h \cdot \pi$ every samples_per_sym samples. Set this to 0.5 for Minimum Shift Keying variants.
samples_per_symSamples per symbol.
LThe length of the phase duration in symbols. For L=1, this yields full- response CPM symbols, for L > 1, partial-response.
betaFor LSRC, this is the rolloff factor. For Gaussian pulses, this is the 3 dB time-bandwidth product.
static sptr gr::digital::cpmmod_bc::make_gmskmod_bc ( int  samples_per_sym = 2,
int  L = 4,
double  beta = 0.3 
)
static

Make GMSK modulator block.

The type is GAUSSIAN and the modulation index for GMSK is 0.5. This are populated automatically by this factory function.

Parameters:
samples_per_symSamples per symbol.
LThe length of the phase duration in symbols. For L=1, this yields full- response CPM symbols, for L > 1, partial-response.
betaFor LSRC, this is the rolloff factor. For Gaussian pulses, this is the 3 dB time-bandwidth product.
virtual int gr::digital::cpmmod_bc::samples_per_sym ( ) const
pure virtual

Return the number of samples per symbol.

virtual std::vector<float> gr::digital::cpmmod_bc::taps ( ) const
pure virtual

Return the phase response FIR taps.

virtual int gr::digital::cpmmod_bc::type ( ) const
pure virtual

Return the type of CPM modulator.


The documentation for this class was generated from the following file: