11#ifndef __MESHX_IO_FACTORY_HPP
12#define __MESHX_IO_FACTORY_HPP
15#include <unordered_map>
102 std::unique_ptr<MeshXIoInterface>
createFromYaml(
const void* yaml_config);
bool registerType(IoType type, IoFactoryFunction factory_func)
Register IO type factory function.
Definition meshx_io_factory.cpp:48
static MeshXIoFactory & getInstance()
Get singleton instance.
Definition meshx_io_factory.cpp:26
MeshXIoFactory & operator=(const MeshXIoFactory &)=delete
std::unique_ptr< MeshXIoInterface > createFromYaml(const void *yaml_config)
Create IO instance from YAML configuration.
Definition meshx_io_factory.cpp:87
~MeshXIoFactory()=default
bool isTypeSupported(IoType type) const
Check if IO type is supported.
Definition meshx_io_factory.cpp:101
MeshXIoFactory(const MeshXIoFactory &)=delete
std::unique_ptr< MeshXIoInterface > create(const IoConfig &config)
Create IO instance.
Definition meshx_io_factory.cpp:69
std::unordered_map< IoType, IoFactoryFunction > factory_registry_
Definition meshx_io_factory.hpp:122
MeshX Abstract IO Interface.
Definition meshx_io_factory.hpp:19
IoType
IO Type enumeration.
Definition meshx_io_factory.hpp:24
@ DAC
Definition meshx_io_factory.hpp:28
@ CUSTOM
Definition meshx_io_factory.hpp:29
@ ADC
Definition meshx_io_factory.hpp:27
@ PWM
Definition meshx_io_factory.hpp:26
@ GPIO
Definition meshx_io_factory.hpp:25
std::unique_ptr< MeshXIoInterface >(*)(uint8_t logical_pin, const char *name) IoFactoryFunction
IO Factory function type.
Definition meshx_io_interface.hpp:176
IO Configuration Structure.
Definition meshx_io_factory.hpp:35
bool signal_inversion
Definition meshx_io_factory.hpp:47
uint8_t pull
Definition meshx_io_factory.hpp:44
uint32_t custom_data
Definition meshx_io_factory.hpp:59
uint32_t frequency
Definition meshx_io_factory.hpp:51
uint8_t resolution
Definition meshx_io_factory.hpp:53
struct meshx::IoConfig::@322131243157366012127327120072350016325131204373::@367141106155340206106161007235363020301330311260 gpio
uint8_t logical_pin
Definition meshx_io_factory.hpp:36
uint8_t duty_cycle
Definition meshx_io_factory.hpp:52
uint8_t mode
Definition meshx_io_factory.hpp:43
struct meshx::IoConfig::@322131243157366012127327120072350016325131204373::@177030051017162327370351266300313027016365020016 custom
uint16_t custom_id
Definition meshx_io_factory.hpp:58
struct meshx::IoConfig::@322131243157366012127327120072350016325131204373::@240320275032304141243012114035354247040336106337 pwm
IoType type
Definition meshx_io_factory.hpp:37
union meshx::IoConfig::@322131243157366012127327120072350016325131204373 config
uint8_t drive
Definition meshx_io_factory.hpp:45
uint8_t initial_level
Definition meshx_io_factory.hpp:46
std::string name
Definition meshx_io_factory.hpp:38
uint8_t channel
Definition meshx_io_factory.hpp:54