|
Open Model Railroad Network (OpenMRN)
|
Producer event handler for a sequence of bits represented by a dense block of consecutive event IDs. More...
#include <EventHandlerTemplates.hxx>
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 ®istry_entry, EventReport *event, BarrierNotifiable *done) |
| Called on another node sending ConsumerIdentified for this event. | |
| virtual void | handle_consumer_range_identified (const EventRegistryEntry ®istry_entry, EventReport *event, BarrierNotifiable *done) |
| Called on another node sending ConsumerRangeIdentified. | |
| virtual void | handle_producer_identified (const EventRegistryEntry ®istry_entry, EventReport *event, BarrierNotifiable *done) |
| Called on another node sending ProducerIdentified for this event. | |
| virtual void | handle_producer_range_identified (const EventRegistryEntry ®istry_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_ |
| Node * | node_ |
| uint32_t * | data_ |
| unsigned | size_ |
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.
|
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.
|
inlinevirtual |
Destructor.
Definition at line 814 of file EventHandlerTemplates.hxx.
|
inlineoverridevirtual |
Called on incoming EventReport messages.
| event | stores information about the incoming message. Filled: src_node, event. Mask is always 1 (filled in). state is not filled in. |
| registry_entry | gives the registry entry for which the current handler is being called. |
| done | must be notified when the processing is done. |
Implements openlcb::EventHandler.
Definition at line 818 of file EventHandlerTemplates.hxx.
|
inlineoverridevirtual |
Called on another node sending IdentifyConsumer.
| event | stores information about the incoming message. Filled: src_node, event, mask=1. Not filled: state. |
| registry_entry | gives the registry entry for which the current handler is being called. |
| done | must be notified when the processing is done. |
Implements openlcb::EventHandler.
Definition at line 825 of file EventHandlerTemplates.hxx.
|
overridevirtual |
Called on the need of sending out identification messages.
| event | is NULL. This happens on startup, or when a global or addressed IdentifyGlobal message arrives. Might have destination node id! |
| registry_entry | gives the registry entry for which the current handler is being called. |
| done | must be notified when the processing is done. |
Implements openlcb::EventHandler.
Definition at line 288 of file EventHandlerTemplates.cxx.