12#ifndef __MESHX_IO_INTERFACE_HPP
13#define __MESHX_IO_INTERFACE_HPP
101 if (!level)
return -1;
102 std::vector<uint32_t> args = {
static_cast<uint32_t
>(
reinterpret_cast<uintptr_t
>(level))};
145 uint8_t trigger_type) {
147 reinterpret_cast<uintptr_t
>(callback),
148 reinterpret_cast<uintptr_t
>(user_data),
149 static_cast<uint32_t
>(trigger_type)
176using IoFactoryFunction = std::unique_ptr<MeshXIoInterface>(*)(uint8_t logical_pin,
const char* name);
Abstract IO Interface.
Definition meshx_io_interface.hpp:44
virtual const char * getName() const =0
Get pin name.
virtual int unregisterInterrupt()
Unregister interrupt (convenience method).
Definition meshx_io_interface.hpp:158
virtual int registerInterrupt(void(*callback)(uint8_t, void *), void *user_data, uint8_t trigger_type)
Register interrupt (convenience method).
Definition meshx_io_interface.hpp:143
virtual uint8_t getLogicalPin() const =0
Get logical pin number.
virtual int setPwmDutyCycle(uint8_t duty_cycle)
Set PWM duty cycle (convenience method).
Definition meshx_io_interface.hpp:121
virtual ~MeshXIoInterface()=default
virtual int enableInterrupt(bool enable)
Enable/disable interrupt (convenience method).
Definition meshx_io_interface.hpp:168
virtual int toggle()
Toggle pin level (convenience method).
Definition meshx_io_interface.hpp:111
virtual int setLevel(uint8_t level)
Set pin level (convenience method).
Definition meshx_io_interface.hpp:90
virtual int execute(IoFunction function, const std::vector< uint32_t > &args)=0
Execute IO function.
virtual int setPwmFrequency(uint32_t frequency)
Set PWM frequency (convenience method).
Definition meshx_io_interface.hpp:131
virtual int getLevel(uint8_t *level)
Get pin level (convenience method).
Definition meshx_io_interface.hpp:100
virtual bool isFunctionSupported(IoFunction function) const =0
Check if function is supported.
Definition meshx_io_factory.hpp:19
IoFunction
IO Function Types for function-based API.
Definition meshx_io_interface.hpp:25
@ REGISTER_INTERRUPT
Definition meshx_io_interface.hpp:31
@ FUNCTION_MAX
Definition meshx_io_interface.hpp:35
@ TOGGLE
Definition meshx_io_interface.hpp:28
@ UNREGISTER_INTERRUPT
Definition meshx_io_interface.hpp:32
@ SET_PWM_DUTY
Definition meshx_io_interface.hpp:29
@ SET_PWM_FREQUENCY
Definition meshx_io_interface.hpp:30
@ CUSTOM_FUNCTION
Definition meshx_io_interface.hpp:34
@ SET_LEVEL
Definition meshx_io_interface.hpp:26
@ GET_LEVEL
Definition meshx_io_interface.hpp:27
@ ENABLE_INTERRUPT
Definition meshx_io_interface.hpp:33
std::unique_ptr< MeshXIoInterface >(*)(uint8_t logical_pin, const char *name) IoFactoryFunction
IO Factory function type.
Definition meshx_io_interface.hpp:176