IoAbstraction
Public Member Functions | List of all members
NegatingIoAbstraction Class Reference

#include <NegatingIoAbstraction.h>

Inheritance diagram for NegatingIoAbstraction:
BasicIoAbstraction

Public Member Functions

 NegatingIoAbstraction (IoAbstractionRef toInvert)
 
void pinDirection (pinid_t pin, uint8_t mode) override
 
void writeValue (pinid_t pin, uint8_t value) override
 
uint8_t readValue (pinid_t pin) override
 
void attachInterrupt (pinid_t pin, RawIntHandler interruptHandler, uint8_t mode) override
 
bool runLoop () override
 
void writePort (pinid_t pin, uint8_t portVal) override
 
uint8_t readPort (pinid_t pin) override
 
- Public Member Functions inherited from BasicIoAbstraction
uint8_t digitalRead (pinid_t p)
 
void digitalWrite (pinid_t p, uint8_t v)
 
uint8_t digitalReadS (pinid_t p)
 
void digitalWriteS (pinid_t p, uint8_t v)
 
void writePortS (pinid_t p, uint8_t v)
 
uint8_t readPortS (pinid_t p)
 
void pinMode (pinid_t pin, uint8_t mode)
 
bool sync ()
 

Detailed Description

This implementation of IoAbstraction negates all the pin operations on the given abstraction, both for read and write. Useful when there is a need to invert the meaning such as when dealing with both PULL UP and PULL DOWN switches at the same time on different IO devices.

Member Function Documentation

◆ pinDirection()

void NegatingIoAbstraction::pinDirection ( pinid_t  pin,
uint8_t  mode 
)
inlineoverridevirtual

sets the pin direction for a pin controlled by this abstraction - as per pinMode

Parameters
pinthe pin to be changed
modethe new mode, as per pinMode (or on Mbed you can use PinMode enum values)

Reimplemented from BasicIoAbstraction.

◆ writeValue()

void NegatingIoAbstraction::writeValue ( pinid_t  pin,
uint8_t  value 
)
inlineoverridevirtual

Writes a value to a pin on this abstraction, as per digitalWrite. For serial devices, may need a sync first.

Parameters
pinthe pin to be written to
valuethe new value such as HIGH / LOW

Reimplemented from BasicIoAbstraction.

◆ readValue()

uint8_t NegatingIoAbstraction::readValue ( pinid_t  pin)
inlineoverridevirtual

Reads a value from a pin for this abstraction as per digitalRead. For serial devices may need a sync first.

Parameters
pinthe pin to be read

Reimplemented from BasicIoAbstraction.

◆ attachInterrupt()

void NegatingIoAbstraction::attachInterrupt ( pinid_t  pin,
RawIntHandler  interruptHandler,
uint8_t  mode 
)
inlineoverridevirtual

Attach an interrupt to this abstraction, regardless of the device location this will perform the required tasks to register the interrupt in the requested mode. Note that not all devices can support all modes, for arduino pins all modes are supported.

Parameters
pinthe pin on this device to be used
intHandlera void function with no parameters, used to handle interrupts. THIS IS A RAW INTERRUPT AND NOT MARSHALLED
modestandard Arduino interrupt modes: CHANGE, RISING, FALLING

Reimplemented from BasicIoAbstraction.

◆ runLoop()

bool NegatingIoAbstraction::runLoop ( )
inlineoverridevirtual

This method is not needed on Arduino pins, but for most serial implementations it causes the device and abstraction to be synced. Returns true if the write call worked, normally true, false indicates error

Reimplemented from BasicIoAbstraction.

◆ writePort()

void NegatingIoAbstraction::writePort ( pinid_t  pin,
uint8_t  portVal 
)
inlineoverridevirtual

Writes out a whole port at once, on Arduino pins this is achieved by providing any pin within that port. On Arduino pins you should take care not to use ports that are providing core functions.

Parameters
pinthe pin determines the hardware port to use.
portValthe 8 bit value to write to the port. Use with care.

Reimplemented from BasicIoAbstraction.

◆ readPort()

uint8_t NegatingIoAbstraction::readPort ( pinid_t  pin)
inlineoverridevirtual

Reads a whole port at once, on Arduino pins this is achieved by providing any pin within that port. On Arduino pins you should take care not to use ports that are providing core functions.

Parameters
pinthe pin determines the hardware port to use.
Returns
the 8 bit value read from the port.

Reimplemented from BasicIoAbstraction.


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