Version of the AudioConfiguredConsumer that can handle many GPIO audio pins with two events each.
More...
#include <AudioConfiguredConsumer.h>
|
| void | drive_pin_ext (uint8_t cardIndex, uint8_t pin, bool, uint8_t intArg) 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 (uint8_t card, uint8_t pin, bool set) |
| |
|
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 | _initI2cCards (bool isProducer) |
| | Initializes the array of I2C card objects using the configured card type. More...
|
| |
|
|
std::string | cfgMessage [NUM_AUDIO_CARDS][NUM_AUDIO_MESSAGES_PER_CARD] |
| | Object for I2C connection to Audio cards.
|
| |
Version of the AudioConfiguredConsumer that can handle many GPIO audio pins with two events each.
- Note
- Typically used to support a HW Audio card.
Definition at line 86 of file AudioConfiguredConsumer.h.
◆ CardConfig_type
◆ MessageGroupConfig_type
◆ AudioConfiguredConsumer()
template<unsigned NUM_CARDS>
| AudioConfiguredConsumer::AudioConfiguredConsumer |
( |
openlcb::Node * |
pNode, |
|
|
const openlcb::RepeatedGroup< CardConfig_type, NUM_CARDS > & |
configOffset, |
|
|
EventDeviceTypes |
eventDeviceType |
|
) |
| |
|
inline |
Construct an AudioConfiguredConsumer helper.
Initializes the I2C card helper for the configured number of Audio Cards and binds the OpenLCB node and configuration segment that maps events to audio messages.
- Template Parameters
-
| NUM_CARDS | Number of Audio Cards defined in the CDI segment. |
- Parameters
-
| pNode | OpenLCB node object from the stack. |
| configOffset | Repeated group from the configuration space that represents the locations of the events. |
| eventDeviceType | Type of event device (used for logging). |
- Usage
cfg.audioCardsSeg().audioCardConfig(),
EventDeviceTypes::AudioCard);
openlcb::Node * node()
node() returns a pointer to the NODE object within memory
LccNode lccNode(COMM_TYPES::CAN_TWAI|COMM_TYPES::CAN_SLCAN_SERIAL_BRIDGE)
instantiates all consumer and producers
Definition at line 114 of file AudioConfiguredConsumer.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.
◆ apply_configuration()
| UpdateAction AudioConfiguredConsumer::apply_configuration |
( |
int |
fd, |
|
|
bool |
initial_load, |
|
|
BarrierNotifiable * |
done |
|
) |
| |
|
inline |
Invoked on initial load of CDI and when CDI is udpated. Register configured events with OpenMRN.
- Parameters
-
| fd | file descriptor used to access CDI data |
| initial_load | is true when CDI is loaded after a reboot |
| done | |
Definition at line 139 of file AudioConfiguredConsumer.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()
| virtual void I2cCardHelper::drive_pin |
( |
uint8_t |
card, |
|
|
uint8_t |
pin, |
|
|
bool |
set |
|
) |
| |
|
inlineprotectedvirtualinherited |
◆ drive_pin_ext()
| void AudioConfiguredConsumer::drive_pin_ext |
( |
uint8_t |
card, |
|
|
uint8_t |
pin, |
|
|
bool |
set, |
|
|
uint8_t |
intArg |
|
) |
| |
|
inlineoverrideprotectedvirtual |
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 from I2cCardHelper.
Definition at line 200 of file AudioConfiguredConsumer.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.
◆ factory_reset()
| void AudioConfiguredConsumer::factory_reset |
( |
int |
fd | ) |
|
|
inline |
Reset CDI configuration entries to their initial (default) values
- Parameters
-
| fd | used to access the CDI information in the file system |
Definition at line 173 of file AudioConfiguredConsumer.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: