MeshX 0.4
This repository provides an implementation for Bluetooth Low Energy (BLE) Mesh network nodes. The project allows you to create BLE mesh nodes that can communicate with each other, enabling the development of smart home solutions or other IoT-based applications.
Loading...
Searching...
No Matches
meshx::MeshXIoInterface Class Referenceabstract

Abstract IO Interface. More...

#include <meshx_io_interface.hpp>

Inheritance diagram for meshx::MeshXIoInterface:
meshx::MeshXGpioImpl meshx::MeshXPwmImpl

Public Member Functions

virtual ~MeshXIoInterface ()=default
virtual int execute (IoFunction function, const std::vector< uint32_t > &args)=0
 Execute IO function.
virtual uint8_t getLogicalPin () const =0
 Get logical pin number.
virtual const char * getName () const =0
 Get pin name.
virtual bool isFunctionSupported (IoFunction function) const =0
 Check if function is supported.
virtual int setLevel (uint8_t level)
 Set pin level (convenience method).
virtual int getLevel (uint8_t *level)
 Get pin level (convenience method).
virtual int toggle ()
 Toggle pin level (convenience method).
virtual int setPwmDutyCycle (uint8_t duty_cycle)
 Set PWM duty cycle (convenience method).
virtual int setPwmFrequency (uint32_t frequency)
 Set PWM frequency (convenience method).
virtual int registerInterrupt (void(*callback)(uint8_t, void *), void *user_data, uint8_t trigger_type)
 Register interrupt (convenience method).
virtual int unregisterInterrupt ()
 Unregister interrupt (convenience method).
virtual int enableInterrupt (bool enable)
 Enable/disable interrupt (convenience method).

Detailed Description

Abstract IO Interface.

This interface provides a unified API for all IO operations using a function-based approach for extensibility.

Constructor & Destructor Documentation

◆ ~MeshXIoInterface()

virtual meshx::MeshXIoInterface::~MeshXIoInterface ( )
virtualdefault

Member Function Documentation

◆ enableInterrupt()

virtual int meshx::MeshXIoInterface::enableInterrupt ( bool enable)
inlinevirtual

Enable/disable interrupt (convenience method).

Parameters
enabletrue to enable, false to disable
Returns
int Error code (0 = success, negative = error)

Reimplemented in meshx::MeshXGpioImpl.

168 {
169 return execute(IoFunction::ENABLE_INTERRUPT, {static_cast<uint32_t>(enable ? 1 : 0)});
170 }
virtual int execute(IoFunction function, const std::vector< uint32_t > &args)=0
Execute IO function.
@ ENABLE_INTERRUPT
Definition meshx_io_interface.hpp:33

◆ execute()

virtual int meshx::MeshXIoInterface::execute ( IoFunction function,
const std::vector< uint32_t > & args )
pure virtual

Execute IO function.

This is the core function-based API for all IO operations.

Parameters
functionIO function to execute
argsFunction arguments vector
Returns
int Error code (0 = success, negative = error)

Implemented in meshx::MeshXGpioImpl, and meshx::MeshXPwmImpl.

◆ getLevel()

virtual int meshx::MeshXIoInterface::getLevel ( uint8_t * level)
inlinevirtual

Get pin level (convenience method).

Parameters
[out]levelPointer to store pin level
Returns
int Error code (0 = success, negative = error)

Reimplemented in meshx::MeshXGpioImpl, and meshx::MeshXPwmImpl.

100 {
101 if (!level) return -1;
102 std::vector<uint32_t> args = {static_cast<uint32_t>(reinterpret_cast<uintptr_t>(level))};
103 return execute(IoFunction::GET_LEVEL, args);
104 }
@ GET_LEVEL
Definition meshx_io_interface.hpp:27

◆ getLogicalPin()

virtual uint8_t meshx::MeshXIoInterface::getLogicalPin ( ) const
pure virtual

Get logical pin number.

Returns
uint8_t Logical pin number (0-255)

Implemented in meshx::MeshXGpioImpl, and meshx::MeshXPwmImpl.

◆ getName()

virtual const char * meshx::MeshXIoInterface::getName ( ) const
pure virtual

Get pin name.

Returns
const char* Pin name string

Implemented in meshx::MeshXGpioImpl, and meshx::MeshXPwmImpl.

◆ isFunctionSupported()

virtual bool meshx::MeshXIoInterface::isFunctionSupported ( IoFunction function) const
pure virtual

Check if function is supported.

Parameters
functionIO function to check
Returns
true if function is supported
false if function is not supported

Implemented in meshx::MeshXGpioImpl, and meshx::MeshXPwmImpl.

◆ registerInterrupt()

virtual int meshx::MeshXIoInterface::registerInterrupt ( void(* callback )(uint8_t, void *),
void * user_data,
uint8_t trigger_type )
inlinevirtual

Register interrupt (convenience method).

Parameters
callbackFunction pointer to callback
user_dataUser data passed to callback
trigger_typeInterrupt trigger type
Returns
int Error code (0 = success, negative = error)

Reimplemented in meshx::MeshXGpioImpl.

145 {
147 reinterpret_cast<uintptr_t>(callback),
148 reinterpret_cast<uintptr_t>(user_data),
149 static_cast<uint32_t>(trigger_type)
150 });
151 }
@ REGISTER_INTERRUPT
Definition meshx_io_interface.hpp:31

◆ setLevel()

virtual int meshx::MeshXIoInterface::setLevel ( uint8_t level)
inlinevirtual

Set pin level (convenience method).

Parameters
levelPin level (0 = low, 1 = high)
Returns
int Error code (0 = success, negative = error)

Reimplemented in meshx::MeshXGpioImpl, and meshx::MeshXPwmImpl.

90 {
91 return execute(IoFunction::SET_LEVEL, {static_cast<uint32_t>(level)});
92 }
@ SET_LEVEL
Definition meshx_io_interface.hpp:26

◆ setPwmDutyCycle()

virtual int meshx::MeshXIoInterface::setPwmDutyCycle ( uint8_t duty_cycle)
inlinevirtual

Set PWM duty cycle (convenience method).

Parameters
duty_cycleDuty cycle (0-100%)
Returns
int Error code (0 = success, negative = error)

Reimplemented in meshx::MeshXGpioImpl.

121 {
122 return execute(IoFunction::SET_PWM_DUTY, {static_cast<uint32_t>(duty_cycle)});
123 }
@ SET_PWM_DUTY
Definition meshx_io_interface.hpp:29

◆ setPwmFrequency()

virtual int meshx::MeshXIoInterface::setPwmFrequency ( uint32_t frequency)
inlinevirtual

Set PWM frequency (convenience method).

Parameters
frequencyFrequency in Hz
Returns
int Error code (0 = success, negative = error)

Reimplemented in meshx::MeshXGpioImpl.

131 {
132 return execute(IoFunction::SET_PWM_FREQUENCY, {frequency});
133 }
@ SET_PWM_FREQUENCY
Definition meshx_io_interface.hpp:30

◆ toggle()

virtual int meshx::MeshXIoInterface::toggle ( )
inlinevirtual

Toggle pin level (convenience method).

Returns
int Error code (0 = success, negative = error)

Reimplemented in meshx::MeshXGpioImpl, and meshx::MeshXPwmImpl.

111 {
112 return execute(IoFunction::TOGGLE, {});
113 }
@ TOGGLE
Definition meshx_io_interface.hpp:28

◆ unregisterInterrupt()

virtual int meshx::MeshXIoInterface::unregisterInterrupt ( )
inlinevirtual

Unregister interrupt (convenience method).

Returns
int Error code (0 = success, negative = error)

Reimplemented in meshx::MeshXGpioImpl.

158 {
160 }
@ UNREGISTER_INTERRUPT
Definition meshx_io_interface.hpp:32

The documentation for this class was generated from the following file: