Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
openlcb::GlobalCanMessageWriteFlow Class Reference

This write flow inherits all the business logic from the parent, just maintains a separate allocation queue. More...

Inheritance diagram for openlcb::GlobalCanMessageWriteFlow:
openlcb::CanMessageWriteFlow openlcb::WriteFlowBase StateFlow< Buffer< GenMessage >, QList< 4 > > TypedStateFlow< MessageType, Base > FlowInterface< MessageType >

Public Member Functions

 GlobalCanMessageWriteFlow (IfCan *if_can)
 
- Public Member Functions inherited from openlcb::CanMessageWriteFlow
 CanMessageWriteFlow (IfCan *if_can)
 
IfCanif_can ()
 
- Public Member Functions inherited from openlcb::WriteFlowBase
 WriteFlowBase (If *async_if)
 
- Public Member Functions inherited from StateFlow< Buffer< GenMessage >, QList< 4 > >
 StateFlow (Service *service)
 Constructor.
 
- Public Member Functions inherited from TypedStateFlow< MessageType, Base >
 TypedStateFlow (Service *service)
 Constructor.
 
virtual ~TypedStateFlow ()
 Destructor.
 
void send (MessageType *msg, unsigned priority=UINT_MAX) OVERRIDE
 Sends a message to the state flow for processing.
 
- Public Member Functions inherited from FlowInterface< MessageType >
virtual Poolpool ()
 
virtual MessageType * type_helper ()
 This function is never user in the code, but GDB can use it to infer the correct message types.
 
MessageType * alloc ()
 Synchronously allocates a message buffer from the pool of this flow.
 
void alloc_async (Executable *target)
 Asynchronously allocates a message buffer from the pool of this flow.
 

Protected Member Functions

Action entry () override
 Entry into the StateFlow activity.
 
Action send_finished () override
 Virtual method called after the send is completed, i.e., all the frames are generated and sent to the hardware.
 
- Protected Member Functions inherited from openlcb::CanMessageWriteFlow
Action send_to_hardware () override
 This function will be called (on the main executor) to initiate sending this message to the hardware.
 
Action find_local_alias ()
 Performs the local alias lookup and branches depending on whether we found a local alias or not.
 
Action get_can_frame_buffer ()
 
- Protected Member Functions inherited from openlcb::WriteFlowBase
virtual Action send_to_local_node ()
 This state is called when an addressed message's destination is a node that is local to this interface.
 
Ifasync_if ()
 
GenMessagenmsg ()
 Implementations shall call this function when they are done with sending the packet.
 
Action addressed_entry ()
 Addressed write flows should call this state BEFORE sending to the hardware.
 
Action global_entry ()
 Global write flows should return to this state AFTER sending the message to the hardware.
 
- Protected Member Functions inherited from TypedStateFlow< MessageType, Base >
void release () OVERRIDE
 Unrefs the current buffer.
 
void return_buffer ()
 For state flows that are operated using invoke_subflow_and_wait this is a way to hand back the buffer to the caller.
 
MessageType * message ()
 
MessageType * transfer_message ()
 Releases ownership of the current message.
 

Additional Inherited Members

- Public Types inherited from TypedStateFlow< MessageType, Base >
typedef Base::Action Action
 Allows using Action without having StateFlowBase:: prefix in front of it.
 
- Public Types inherited from FlowInterface< MessageType >
typedef MessageType message_type
 Stores the message template type for external reference.
 
- Static Public Member Functions inherited from FlowInterface< MessageType >
static MessageType * cast_alloc (QMember *entry)
 Down casts and initializes an asynchronous allocation result to the appropriate flow's buffer type.
 
- Protected Attributes inherited from openlcb::CanMessageWriteFlow
NodeAlias srcAlias_
 Source node alias.
 
NodeAlias dstAlias_
 Destination node alias.
 
uint8_t dataOffset_
 for continuation frames: which offset in the Buffer should we start the payload at.
 

Detailed Description

This write flow inherits all the business logic from the parent, just maintains a separate allocation queue.

This allows global messages to go out even if addressed messages are waiting for destination address resolution.

Definition at line 63 of file IfCan.cxx.

Constructor & Destructor Documentation

◆ GlobalCanMessageWriteFlow()

openlcb::GlobalCanMessageWriteFlow::GlobalCanMessageWriteFlow ( IfCan if_can)
inline

Definition at line 66 of file IfCan.cxx.

Member Function Documentation

◆ entry()

Action openlcb::GlobalCanMessageWriteFlow::entry ( )
inlineoverrideprotectedvirtual

Entry into the StateFlow activity.

Pure virtual which must be defined by derived class.

Returns
function pointer to next state

Implements TypedStateFlow< MessageType, Base >.

Definition at line 72 of file IfCan.cxx.

◆ send_finished()

Action openlcb::GlobalCanMessageWriteFlow::send_finished ( )
inlineoverrideprotectedvirtual

Virtual method called after the send is completed, i.e., all the frames are generated and sent to the hardware.

Various flows might need to take additional steps afterwards.

Reimplemented from openlcb::WriteFlowBase.

Definition at line 77 of file IfCan.cxx.


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