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

Producer event handler for a sequence of bits represented by a dense block of consecutive event IDs. More...

#include <EventHandlerTemplates.hxx>

Inheritance diagram for openlcb::BitRangeEventP:
openlcb::BitRangeEventPC openlcb::SimpleEventHandler openlcb::EventHandler

Public Member Functions

 BitRangeEventP (Node *node, uint64_t event_base, uint32_t *backing_store, unsigned size)
 Creates a new bit range producer.
 
virtual ~BitRangeEventP ()
 Destructor.
 
void handle_event_report (const EventRegistryEntry &entry, EventReport *event, BarrierNotifiable *done) override
 Called on incoming EventReport messages.
 
void handle_identify_consumer (const EventRegistryEntry &entry, EventReport *event, BarrierNotifiable *done) override
 Called on another node sending IdentifyConsumer.
 
void handle_identify_global (const EventRegistryEntry &entry, EventReport *event, BarrierNotifiable *done) override
 Called on the need of sending out identification messages.
 
- Public Member Functions inherited from openlcb::BitRangeEventPC
 BitRangeEventPC (Node *node, uint64_t event_base, uint32_t *backing_store, unsigned size)
 Creates a new bit range listener.
 
void Set (unsigned bit, bool new_value, WriteHelper *writer, BarrierNotifiable *done)
 Requests the event associated with the current value of the bit to be produced (unconditionally).
 
bool Get (unsigned bit) const
 
void SendIdentified (WriteHelper *writer, BarrierNotifiable *done)
 Sends out a ProducerRangeIdentified.
 
void handle_event_report (const EventRegistryEntry &entry, EventReport *event, BarrierNotifiable *done) override
 Called on incoming EventReport messages.
 
void handle_identify_producer (const EventRegistryEntry &entry, EventReport *event, BarrierNotifiable *done) override
 Called on another node sending IdentifyProducer.
 
void handle_identify_consumer (const EventRegistryEntry &entry, EventReport *event, BarrierNotifiable *done) override
 Called on another node sending IdentifyConsumer.
 
void handle_identify_global (const EventRegistryEntry &entry, EventReport *event, BarrierNotifiable *done) override
 Called on the need of sending out identification messages.
 
unsigned size ()
 
- Public Member Functions inherited from openlcb::SimpleEventHandler
 IGNOREFN (handle_event_report)
 
 IGNOREFN (handle_consumer_identified)
 
 IGNOREFN (handle_consumer_range_identified)
 
 IGNOREFN (handle_producer_identified)
 
 IGNOREFN (handle_producer_range_identified)
 
 IGNOREFN (handle_identify_consumer)
 
 IGNOREFN (handle_identify_producer)
 
- Public Member Functions inherited from openlcb::EventHandler
virtual void handle_consumer_identified (const EventRegistryEntry &registry_entry, EventReport *event, BarrierNotifiable *done)
 Called on another node sending ConsumerIdentified for this event.
 
virtual void handle_consumer_range_identified (const EventRegistryEntry &registry_entry, EventReport *event, BarrierNotifiable *done)
 Called on another node sending ConsumerRangeIdentified.
 
virtual void handle_producer_identified (const EventRegistryEntry &registry_entry, EventReport *event, BarrierNotifiable *done)
 Called on another node sending ProducerIdentified for this event.
 
virtual void handle_producer_range_identified (const EventRegistryEntry &registry_entry, EventReport *event, BarrierNotifiable *done)
 Called on another node sending ProducerRangeIdentified for this event.
 

Additional Inherited Members

- Public Types inherited from openlcb::EventHandler
using EventReport = openlcb::EventReport
 
using EventRegistryEntry = openlcb::EventRegistryEntry
 
using EventId = openlcb::EventId
 
- Protected Member Functions inherited from openlcb::BitRangeEventPC
void HandleIdentifyBase (Defs::MTI mti_valid, EventReport *event, BarrierNotifiable *done)
 
void GetBitAndMask (unsigned bit, uint32_t **data, uint32_t *mask) const
 
- Protected Attributes inherited from openlcb::BitRangeEventPC
uint64_t event_base_
 
Nodenode_
 
uint32_t * data_
 
unsigned size_
 

Detailed Description

Producer event handler for a sequence of bits represented by a dense block of consecutive event IDs.

Definition at line 799 of file EventHandlerTemplates.hxx.

Constructor & Destructor Documentation

◆ BitRangeEventP()

openlcb::BitRangeEventP::BitRangeEventP ( Node node,
uint64_t  event_base,
uint32_t *  backing_store,
unsigned  size 
)
inline

Creates a new bit range producer.

Backing store points to memory of at least size bits (round up to multiple of 32). This class will advertise producing size * 2 events contiguous from event_base. event_base will turn bit 0 on, event_base + 1 will turn bit 0 off, event_base + 2 will turn bit 1 on, event_base + 3 will turn bit 1 off, etc.

Definition at line 807 of file EventHandlerTemplates.hxx.

◆ ~BitRangeEventP()

virtual openlcb::BitRangeEventP::~BitRangeEventP ( )
inlinevirtual

Destructor.

Definition at line 814 of file EventHandlerTemplates.hxx.

Member Function Documentation

◆ handle_event_report()

void openlcb::BitRangeEventP::handle_event_report ( const EventRegistryEntry registry_entry,
EventReport event,
BarrierNotifiable done 
)
inlineoverridevirtual

Called on incoming EventReport messages.

Parameters
eventstores information about the incoming message. Filled: src_node, event. Mask is always 1 (filled in). state is not filled in.
registry_entrygives the registry entry for which the current handler is being called.
donemust be notified when the processing is done.

Implements openlcb::EventHandler.

Definition at line 818 of file EventHandlerTemplates.hxx.

◆ handle_identify_consumer()

void openlcb::BitRangeEventP::handle_identify_consumer ( const EventRegistryEntry registry_entry,
EventReport event,
BarrierNotifiable done 
)
inlineoverridevirtual

Called on another node sending IdentifyConsumer.

Parameters
eventstores information about the incoming message. Filled: src_node, event, mask=1. Not filled: state.
registry_entrygives the registry entry for which the current handler is being called.
donemust be notified when the processing is done.

Implements openlcb::EventHandler.

Definition at line 825 of file EventHandlerTemplates.hxx.

◆ handle_identify_global()

void openlcb::BitRangeEventP::handle_identify_global ( const EventRegistryEntry registry_entry,
EventReport event,
BarrierNotifiable done 
)
overridevirtual

Called on the need of sending out identification messages.

Parameters
eventis NULL. This happens on startup, or when a global or addressed IdentifyGlobal message arrives. Might have destination node id!
registry_entrygives the registry entry for which the current handler is being called.
donemust be notified when the processing is done.

Implements openlcb::EventHandler.

Definition at line 288 of file EventHandlerTemplates.cxx.


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