rfnoc: Change default block behaviour

The default block controller is used whenever no other block controller
is used. It currently defaults to dropping both property propagation and
actions.

When a custom block is injected into a graph like this for example:

    Radio -> DDC -> Custom Block -> Rx Streamer

This default behaviour causes the Rx Streamer to not be able to send
actions (like stream commands) nor does it allow MTU propagation (or any
other property's propagation).

The default block behaviour is ONE_TO_ONE, meaning that actions and
properties on input channel N will get forwarded to output channel N. In
absence of an actual block controller, this is more useful default than
setting the propagation to DROP for both actions and properties. Most
blocks that pass through data, or do some simple processing, will now
work in the absence of a block controller.
The new disadvantage is that blocks which would modify properties such as
sampling rate, scaling, or MTU will no longer work properly in the
absence of a block controller.

However, the recommended behaviour is anyway not to operate without a
block controller. For the cases where no block controller is present,
ONE_TO_ONE is considered the generally more useful default.
This commit is contained in:
Martin Braun 2021-11-29 14:51:40 +01:00 committed by Aaron Rossetto
parent 3bd6afb51e
commit 3b41e0b055

View File

@ -14,11 +14,7 @@ using namespace uhd::rfnoc;
class block_control_impl : public block_control
{
public:
RFNOC_BLOCK_CONSTRUCTOR(block_control)
{
set_prop_forwarding_policy(forwarding_policy_t::DROP);
set_action_forwarding_policy(forwarding_policy_t::DROP);
}
RFNOC_BLOCK_CONSTRUCTOR(block_control) {}
};
UHD_RFNOC_BLOCK_REGISTER_DIRECT(