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

This class listens for incoming CAN frames of regular unaddressed global OpenLCB messages, then translates it in a generic way into a message, computing its MTI. More...

Inheritance diagram for openlcb::FrameToGlobalMessageParser:
openlcb::CanFrameStateFlow StateFlow< Buffer< CanMessageData >, QList< 1 > > TypedStateFlow< MessageType, Base > FlowInterface< MessageType >

Public Types

enum  { CAN_FILTER , CAN_MASK }
 
- 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.
 

Public Member Functions

 FrameToGlobalMessageParser (IfCan *service)
 
Action entry () OVERRIDE
 Handler entry for incoming messages.
 
Action send_to_if ()
 
- Public Member Functions inherited from openlcb::CanFrameStateFlow
 CanFrameStateFlow (IfCan *service)
 
IfCanif_can ()
 
- Public Member Functions inherited from StateFlow< Buffer< CanMessageData >, QList< 1 > >
 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 Attributes

uint32_t id_
 CAN frame ID, saved from the incoming frame.
 
string buf_
 Payload for the MTI message.
 

Additional Inherited Members

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

Detailed Description

This class listens for incoming CAN frames of regular unaddressed global OpenLCB messages, then translates it in a generic way into a message, computing its MTI.

The resulting message is then passed to the generic If for dispatching.

Definition at line 488 of file IfCan.cxx.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Definition at line 491 of file IfCan.cxx.

Constructor & Destructor Documentation

◆ FrameToGlobalMessageParser()

openlcb::FrameToGlobalMessageParser::FrameToGlobalMessageParser ( IfCan service)
inline

Definition at line 503 of file IfCan.cxx.

◆ ~FrameToGlobalMessageParser()

openlcb::FrameToGlobalMessageParser::~FrameToGlobalMessageParser ( )
inline

Definition at line 510 of file IfCan.cxx.

Member Function Documentation

◆ entry()

Action openlcb::FrameToGlobalMessageParser::entry ( )
inlinevirtual

Handler entry for incoming messages.

Implements TypedStateFlow< MessageType, Base >.

Definition at line 517 of file IfCan.cxx.

◆ send_to_if()

Action openlcb::FrameToGlobalMessageParser::send_to_if ( )
inline

Definition at line 534 of file IfCan.cxx.

Member Data Documentation

◆ buf_

string openlcb::FrameToGlobalMessageParser::buf_
private

Payload for the MTI message.

Definition at line 559 of file IfCan.cxx.

◆ id_

uint32_t openlcb::FrameToGlobalMessageParser::id_
private

CAN frame ID, saved from the incoming frame.

Definition at line 557 of file IfCan.cxx.


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