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

Datagram client implementation for CANbus-based datagram protocol. More...

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

Public Member Functions

 CanDatagramWriteFlow (IfCan *iface)
 
- Public Member Functions inherited from openlcb::AddressedCanMessageWriteFlow
 AddressedCanMessageWriteFlow (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.
 

Private Member Functions

Action fill_can_frame_buffer () OVERRIDE
 

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 Member Functions inherited from openlcb::AddressedCanMessageWriteFlow
Action entry () override
 Entry point of message handling flow.
 
Action send_to_hardware () override
 This function will be called (on the main executor) to initiate sending this message to the hardware.
 
Action find_remote_alias ()
 
Action send_ame_frame ()
 
Action send_verify_nodeid_global ()
 
Action fill_verify_nodeid_global ()
 
Action wait_looking_for_dst ()
 
virtual Action timeout_looking_for_dst ()
 
Action remote_alias_found ()
 
- 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.
 
virtual Action send_finished ()
 Virtual method called after the send is completed, i.e., all the frames are generated and sent to the hardware.
 
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.
 
- Protected Attributes inherited from openlcb::AddressedCanMessageWriteFlow
openlcb::AddressedCanMessageWriteFlow::AliasDefListener this
 
StateFlowTimer timer_
 
- 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

Datagram client implementation for CANbus-based datagram protocol.

This flow is responsible for the outgoing CAN datagram framing, and listens for incoming datagram response messages.

The base class of AddressedCanMessageWriteFlow is responsible for the discovery and address resolution of the destination node.

Definition at line 55 of file DatagramCan.cxx.

Constructor & Destructor Documentation

◆ CanDatagramWriteFlow()

openlcb::CanDatagramWriteFlow::CanDatagramWriteFlow ( IfCan iface)
inline

Definition at line 58 of file DatagramCan.cxx.

Member Function Documentation

◆ fill_can_frame_buffer()

Action openlcb::CanDatagramWriteFlow::fill_can_frame_buffer ( )
inlineprivatevirtual

Reimplemented from openlcb::CanMessageWriteFlow.

Definition at line 65 of file DatagramCan.cxx.


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