Loading...
Searching...
No Matches
gr::digital::cpmmod_bc Class Referenceabstract
GNU Radio C++ Signal Processing Blocks » Modulators and Demodulators

Generic CPM modulator. More...

`#include <gnuradio/digital/cpmmod_bc.h>`

## Public Types

typedef std::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
| ~hier_block2 () override
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 ()
int | max_output_buffer (size_t port=0)
| Returns max buffer size (itemcount) on output port `i`.
void | set_max_output_buffer (int max_output_buffer)
| Sets max buffer size (itemcount) on all output ports.
void | set_max_output_buffer (size_t port, int max_output_buffer)
| Sets max buffer size (itemcount) on output port `port`.
int | min_output_buffer (size_t port=0)
| Returns min buffer size (itemcount) on output port `i`.
void | set_min_output_buffer (int min_output_buffer)
| Sets min buffer size (itemcount) on all output ports.
void | set_min_output_buffer (size_t port, int min_output_buffer)
| Sets min buffer size (itemcount) on output port `port`.
flat_flowgraph_sptr | flatten () const
hier_block2_sptr | to_hier_block2 ()
bool | has_msg_port (pmt::pmt_t which_port) override
bool | message_port_is_hier (pmt::pmt_t port_id) override
bool | message_port_is_hier_in (pmt::pmt_t port_id) override
bool | message_port_is_hier_out (pmt::pmt_t port_id) override
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) override
| Set the affinity of all blocks in hier_block2 to processor core `n`.
void | unset_processor_affinity () override
| Remove processor affinity for all blocks in hier_block2.
std::vector< int > | processor_affinity () override
| Get the current processor affinity.
void | set_log_level (const std::string &level) override
| Set the logger's output level.
std::string | log_level () override
| Get the logger's output level.
bool | all_min_output_buffer_p (void)
| Get if all block min buffers should be set.
bool | all_max_output_buffer_p (void)
| Get if all block max buffers should be set.
Public Member Functions inherited from gr::basic_block
pmt::pmt_t | message_subscribers (pmt::pmt_t port)
| ~basic_block () override
long | unique_id () const
long | symbolic_id () const
std::string | name () const
std::string | symbol_name () const
std::string | identifier () const
gr::io_signature::sptr | input_signature () const
gr::io_signature::sptr | output_signature () const
basic_block_sptr | to_basic_block ()
bool | alias_set () const
std::string | alias () const
pmt::pmt_t | alias_pmt () const
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)
msg_queue_t::iterator | get_iterator (pmt::pmt_t which_port)
void | erase_msg (pmt::pmt_t which_port, msg_queue_t::iterator it)
const msg_queue_map_t & | get_msg_map (void) const
void | add_rpc_variable (rpcbasic_sptr s)
| Add an RPC variable (get or set).
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 () override
void | post (pmt::pmt_t which_port, pmt::pmt_t msg) override
| send `msg` to `msg_accepter` on port `which_port`
Public Member Functions inherited from gr::messages::msg_accepter
| msg_accepter ()

## 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 Types inherited from gr::basic_block
enum | vcolor { WHITE , GREY , BLACK }
Protected Member Functions inherited from gr::hier_block2
| hier_block2 ()
| 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)
template<typename Derived>
std::shared_ptr< Derived > | shared_from_base ()
| This is meant to be called by derived classes (e.g. block) to get a shared pointer internally. This is needed because std::enable_shared_from_this doesn't seem to work with derived classes in an inheritance hierarchy.
Protected Attributes inherited from gr::basic_block
std::string | d_name
gr::io_signature::sptr | d_input_signature
gr::io_signature::sptr | d_output_signature
long | d_unique_id
long | d_symbolic_id
std::string | d_symbol_name
std::string | d_symbol_alias
vcolor | d_color
bool | d_rpc_set
gr::logger_ptr | d_logger
gr::logger_ptr | d_debug_logger
| Default logger.
msg_queue_map_t | msg_queue
| Verbose logger.
std::vector< rpcbasic_sptr > | d_rpc_vars
pmt::pmt_t | d_message_subscribers

## 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

## sptr

typedef std::shared_ptr<cpmmod_bc> gr::digital::cpmmod_bc::sptr

## Member Function Documentation

## beta()

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

pure virtual

Return the value of beta for the modulator.

Referenced by make(), and make_gmskmod_bc().

## index()

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

pure virtual

Return the modulation index of the modulator.

## length()

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

pure virtual

Return the length of the phase duration (in symbols).

## make()

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

  type | The modulation type. Can be one of LREC, LRC, LSRC, TFM or GAUSSIAN. See gr_cpm::phase_response() for a detailed description.
  h | The 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_sym | Samples per symbol.
  L | The length of the phase duration in symbols. For L=1, this yields full- response CPM symbols, for L > 1, partial-response.
  beta | For LSRC, this is the rolloff factor. For Gaussian pulses, this is the 3 dB time-bandwidth product.

References beta(), samples_per_sym(), and type().

## make_gmskmod_bc()

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_sym | Samples per symbol.
  L | The length of the phase duration in symbols. For L=1, this yields full- response CPM symbols, for L > 1, partial-response.
  beta | For LSRC, this is the rolloff factor. For Gaussian pulses, this is the 3 dB time-bandwidth product.

References beta(), and samples_per_sym().

## samples_per_sym()

virtual int gr::digital::cpmmod_bc::samples_per_sym | ( |  | ) | const

pure virtual

Return the number of samples per symbol.

Referenced by make(), and make_gmskmod_bc().

## taps()

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

pure virtual

Return the phase response FIR taps.

## type()

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

pure virtual

Return the type of CPM modulator.

Referenced by make().

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

- cpmmod_bc.h