Consumer class for Node Card's NeoPixel pins.
More...
#include <NeoPixelConfiguredConsumer.h>
|
| void | drive_pin (uint8_t, uint8_t pin, bool set) override |
| |
|
void | _do_unregister () |
| | Unregisters this event handler from the global registry.
|
| |
|
void | handle_identify_consumer (const openlcb::EventRegistryEntry ®istry_entry, openlcb::EventReport *event, BarrierNotifiable *done) OVERRIDE |
| | Process request to identify produced events.
|
| |
|
void | handle_identify_producer (const openlcb::EventRegistryEntry ®istry_entry, openlcb::EventReport *event, BarrierNotifiable *done) OVERRIDE |
| | Process request to identify produced events.
|
| |
| virtual void | SendEventIdentified (const openlcb::EventRegistryEntry ®istry_entry, openlcb::EventReport *event, BarrierNotifiable *done) |
| | Sends Producer- or Consumer-Identified for registry_entry. More...
|
| |
| void | applyI2cInfo (int fd, uint8_t cardIndex, i2cInfoConfig_type cfgI2cInfoRef) |
| | sets up the MCP card's I2C connection using the user provided (CDI) configuration information (bus and address offset) More...
|
| |
| void | resetCardInfo (int fd, cardInfoConfig_type cfgI2cInfoRef) |
| | resets the card configuration information (description field). More...
|
| |
| void | resetI2cInfo (int fd, i2cInfoConfig_type cfgI2cInfoRef) |
| | resets the card's I2C configuration information (bus and address fields). More...
|
| |
| virtual void | drive_pin_ext (uint8_t card, uint8_t pin, bool set, uint8_t intArg) |
| |
|
EventUserArgsUnion | unpack_user_args (const openlcb::EventRegistryEntry &re) const |
| | Small helper to unpack our 4-byte user_arg payload from the registry entry.
|
| |
| void | handle_event_report (const openlcb::EventRegistryEntry ®istry_entry, openlcb::EventReport *event, BarrierNotifiable *done) OVERRIDE |
| |
|
| void | _setPowerOnState (uint8_t cardNum, uint8_t lineNum, DefaultDeviceSettings::DeviceStates state) |
| | Sets the power-on state for a specific pin on a specific card. More...
|
| |
| void | _initI2cCards (bool isProducer) |
| | Initializes the array of I2C card objects using the configured card type. More...
|
| |
Consumer class for Node Card's NeoPixel pins.
Definition at line 88 of file NeoPixelConfiguredConsumer.h.
◆ LineConfig_type
◆ NeoPixelConfiguredConsumer()
| NeoPixelConfiguredConsumer::NeoPixelConfiguredConsumer |
( |
openlcb::Node * |
pNode, |
|
|
const LineConfig_type & |
configOffset, |
|
|
uint8_t |
numDevicesPerCard, |
|
|
EventDeviceTypes |
eventDeviceType, |
|
|
const char * |
cardDescription |
|
) |
| |
|
inline |
- Parameters
-
| pNode | is the OpenLCB node object from the stack. |
| configOffset | is the repeated group object from the configuration space that represents the locations of the events. |
| numDevicesPerCard | is the number of devices per card. |
| eventDeviceType | is the logical type of event device (used for logging, diagnostics, and naming). |
| cardDescription | is the human-friendly card description for log messages and debug output ( e.g. "NeoPixel Card"). |
Definition at line 135 of file NeoPixelConfiguredConsumer.h.
◆ _initI2cCards()
| void I2cCardHelper::_initI2cCards |
( |
bool |
isProducer | ) |
|
|
inlineprivateinherited |
Initializes the array of I2C card objects using the configured card type.
Allocates and initializes each I2C card in the array to the type specified by the cardType_ member. If isProducer is true, registers each card's polling callback.
- Parameters
-
| isProducer | True if the card is used as a producer and requires polling. |
Definition at line 460 of file I2cCardHelper.h.
◆ _setPowerOnState()
| void NeoPixelConfiguredConsumer::_setPowerOnState |
( |
uint8_t |
cardNum, |
|
|
uint8_t |
lineNum, |
|
|
DefaultDeviceSettings::DeviceStates |
state |
|
) |
| |
|
inlineprivate |
Sets the power-on state for a specific pin on a specific card.
This function configures the initial state of a pin (on, off, or previous state) when the system powers on. It supports three initial states: ON (active), OFF (inactive), and PREVIOUS (the state before the last power down). For the PREVIOUS state, it reads the saved state from a persistent storage I2cCardHelper::pinStates[cardNum]. The function updates the I2cCardHelper::pinStates[cardNum] element to reflect the current state for future reference if the state is ON or OFF.
- Parameters
-
| cardNum | The card number on which the pin resides. This is used to index into the i2cCards array of I2C card helpers. |
| lineNum | The pin number to set the state for. This should be within the valid range for the card. |
| state | The desired initial state of the pin specified by the DefaultDeviceSettings::DeviceStates enum. |
Definition at line 338 of file NeoPixelConfiguredConsumer.h.
◆ applyI2cInfo()
| void I2cCardHelper::applyI2cInfo |
( |
int |
fd, |
|
|
uint8_t |
cardIndex, |
|
|
i2cInfoConfig_type |
cfgI2cInfoRef |
|
) |
| |
|
inlineprotectedinherited |
sets up the MCP card's I2C connection using the user provided (CDI) configuration information (bus and address offset)
- Note
- producer/consumers apply_configuration() callback invoke this method to initialize the I2C / MCP connection information for the card
-
all I2C connected cards have CDI section for user provided bus and address information (which must match the settings of the I2C enabeled card)
-
HOOK: Typical call site is within your apply_configuration() loop:
- read bus & offset from CDI
- initialize the corresponding i2cCards[cardIndex]
- Parameters
-
| fd | file handle to access the CDI configuration information (provided by openmrn) |
| cardIndex | specifies which card the configuration is for. Used to update the i2cCards[] array and initialize the connection |
| cfgI2cInfoRef | offset into the intenal configuration space for the CDI configuration for the MCP card |
Definition at line 295 of file I2cCardHelper.h.
◆ drive_pin()
| void NeoPixelConfiguredConsumer::drive_pin |
( |
uint8_t |
card, |
|
|
uint8_t |
pin, |
|
|
bool |
set |
|
) |
| |
|
inlineoverrideprotectedvirtual |
Hook for consumers: drive one output pin (simple case). Default does nothing; simple consumers override this.
- Parameters
-
| card | card index (as stored in user_arg) |
| pin | pin index (as stored in user_arg) |
| set | desired logical state from the event semantics (SET/ON = true, CLR/OFF = false) |
Reimplemented from I2cCardHelper.
Definition at line 299 of file NeoPixelConfiguredConsumer.h.
◆ drive_pin_ext()
| virtual void I2cCardHelper::drive_pin_ext |
( |
uint8_t |
card, |
|
|
uint8_t |
pin, |
|
|
bool |
set, |
|
|
uint8_t |
intArg |
|
) |
| |
|
inlineprotectedvirtualinherited |
Extended hook for consumers that also need the CDI intArg (e.g., audio message index). Default forwards to drive_pin(...) so existing consumers remain unchanged.
Reimplemented in AudioConfiguredConsumer.
Definition at line 402 of file I2cCardHelper.h.
◆ ensureUniqueI2cOffset()
| bool I2cCardHelper::ensureUniqueI2cOffset |
( |
uint8_t |
cardIndex, |
|
|
uint8_t |
bus, |
|
|
uint8_t |
offset |
|
) |
| |
|
inlineinherited |
Check for duplicate offsets on the same I2C bus. Automatically resets the tracker on the first call per config pass.
- Parameters
-
| cardIndex | Index of the card in the config loop. |
| bus | I2C bus number (0 or 1). |
| offset | I2C offset (0–7). |
- Returns
- true if this (bus, offset) was already claimed.
Definition at line 183 of file I2cCardHelper.h.
◆ handle_event_report()
| void I2cCardHelper::handle_event_report |
( |
const openlcb::EventRegistryEntry & |
registry_entry, |
|
|
openlcb::EventReport * |
event, |
|
|
BarrierNotifiable * |
done |
|
) |
| |
|
inlineprotectedinherited |
Default consumer handler: maps an incoming Event Report to (card,pin,set,intArg) and calls drive_pin_ext(...). Producers are ignored.
Definition at line 418 of file I2cCardHelper.h.
◆ resetCardInfo()
| void I2cCardHelper::resetCardInfo |
( |
int |
fd, |
|
|
cardInfoConfig_type |
cfgI2cInfoRef |
|
) |
| |
|
inlineprotectedinherited |
resets the card configuration information (description field).
- Note
- invoke from the consumer/producer factory_reset() to reset the card configuration
- Parameters
-
| fd | file handle to access the CDI configuration information (provided by openmrn) |
| cfgI2cInfoRef | offset into the intenal configuration space for the CDI configuration block for the card's info (description, etc) |
Definition at line 309 of file I2cCardHelper.h.
◆ resetI2cInfo()
| void I2cCardHelper::resetI2cInfo |
( |
int |
fd, |
|
|
i2cInfoConfig_type |
cfgI2cInfoRef |
|
) |
| |
|
inlineprotectedinherited |
resets the card's I2C configuration information (bus and address fields).
- Note
- invoke from the consumer/producer factory_reset() to reset the card configuration
- Parameters
-
| fd | file handle to access the CDI configuration information (provided by openmrn) |
| cfgI2cInfoRef | offset into the intenal configuration space for the CDI configuration for card's I2C info (bus/offset) |
Definition at line 321 of file I2cCardHelper.h.
◆ SendEventIdentified()
| virtual void I2cCardHelper::SendEventIdentified |
( |
const openlcb::EventRegistryEntry & |
registry_entry, |
|
|
openlcb::EventReport * |
event, |
|
|
BarrierNotifiable * |
done |
|
) |
| |
|
inlineprotectedvirtualinherited |
Sends Producer- or Consumer-Identified for registry_entry.
Identification type is inferred from the registry entry’s packed user args (see
- See also
- isProducer). Override to customize the MTI or payload.
Reimplemented in TurnoutConfiguredPC.
Definition at line 273 of file I2cCardHelper.h.
◆ userArgs
The documentation for this class was generated from the following file: