COSA
An Object-Oriented Platform for Arduino Programming
IOPin Class Reference

#include <IOPin.hh>

Inheritance diagram for IOPin:
Inheritance graph
Collaboration diagram for IOPin:
Collaboration graph

Public Types

enum  Mode { OUTPUT_MODE = 0, INPUT_MODE = 1 }
 
enum  Direction { MSB_FIRST = 0, LSB_FIRST = 1 }
 

Public Member Functions

 IOPin (Board::DigitalPin pin, Mode mode=INPUT_MODE, bool pullup=false)
 
void mode (Mode mode)
 
Mode mode () const
 
void _set () const
 
void _set (int value) const
 
void set () const
 
void set (int value) const
 
void high () const
 
void on () const
 
void _clear () const
 
void clear () const
 
void low () const
 
void off () const
 
void _toggle () const
 
void toggle () const
 
void _write (int value) const
 
void write (int value) const
 
void write (uint8_t value, OutputPin &clk, Direction order=MSB_FIRST) const
 
void write (uint16_t value, uint8_t bits, uint16_t us) const
 
OutputPinoperator<< (int value)
 
void pulse (uint16_t us) const
 
uint8_t pin () const
 
bool is_set () const
 
bool is_high () const
 
bool is_on () const
 
bool is_clear () const
 
bool is_low () const
 
bool is_off () const
 
bool read () const
 
uint8_t read (OutputPin &clk, Direction order=MSB_FIRST) const
 
 operator bool () const
 
Pinoperator>> (uint8_t &var)
 

Static Public Member Functions

static void mode (Board::DigitalPin pin, Mode mode)
 
static Mode mode (Board::DigitalPin pin)
 
static void mode (Board::DigitalPin pin, uint8_t initial=0)
 
static void toggle (Board::DigitalPin pin)
 
static void _write (Board::DigitalPin pin, uint8_t value)
 
static void write (Board::DigitalPin pin, int value)
 
static uint8_t MASK (uint8_t pin)
 
static volatile uint8_t * PIN (uint8_t pin)
 
static volatile uint8_t * DDR (uint8_t pin)
 
static volatile uint8_t * PORT (uint8_t pin)
 
static bool read (Board::DigitalPin pin)
 

Protected Member Functions

volatile uint8_t * PIN () const
 
volatile uint8_t * DDR () const
 
volatile uint8_t * PORT () const
 
volatile uint8_t * PCIMR () const
 

Protected Attributes

volatile uint8_t *const m_sfr
 
const uint8_t m_mask
 
const uint8_t m_pin
 

Detailed Description

Abstract IO-pin that may switch between input and output pin.

Definition at line 29 of file IOPin.hh.

Member Enumeration Documentation

enum Pin::Direction
inherited

Serialization directions; most or least significant bit first.

Enumerator
MSB_FIRST 
LSB_FIRST 

Definition at line 84 of file Pin.hh.

Enumerator
OUTPUT_MODE 
INPUT_MODE 

Definition at line 31 of file IOPin.hh.

Constructor & Destructor Documentation

IOPin::IOPin ( Board::DigitalPin  pin,
Mode  mode = INPUT_MODE,
bool  pullup = false 
)
inline

Construct abstract in/output pin given Arduino pin number.

Parameters
[in]pinnumber.
[in]modepin mode (normal or pullup).

Definition at line 41 of file IOPin.hh.

Member Function Documentation

void OutputPin::_clear ( ) const
inlineinherited

Clear the output pin. Unprotected version.

Definition at line 114 of file OutputPin.hh.

void OutputPin::_set ( ) const
inlineinherited

Set the output pin. Unprotected version.

Definition at line 75 of file OutputPin.hh.

void OutputPin::_set ( int  value) const
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set. Unprotected version.

Parameters
[in]valueto set.

Definition at line 184 of file OutputPin.hh.

void OutputPin::_toggle ( ) const
inlineinherited

Toggle the output pin. Unprotected version.

Definition at line 153 of file OutputPin.hh.

void OutputPin::_write ( int  value) const
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set. Unprotected version.

Parameters
[in]valueto set.

Definition at line 219 of file OutputPin.hh.

static void OutputPin::_write ( Board::DigitalPin  pin,
uint8_t  value 
)
inlinestaticinherited

Set the given output pin with the given value. Zero(0) to clear and non-zero to set. Unprotected version when pin and value are constants.

Parameters
[in]pinnumber (must be constant).
[in]valueto write (must be constant).

Definition at line 345 of file OutputPin.hh.

void OutputPin::clear ( ) const
inlineinherited

Clear the output pin.

Note
atomic

Definition at line 124 of file OutputPin.hh.

static volatile uint8_t* Pin::DDR ( uint8_t  pin)
inlinestaticinherited

Return pointer to Data Direction Register.

Parameters
[in]pinnumber.
Returns
DDR register pointer.

Definition at line 64 of file Pin.hh.

volatile uint8_t* Pin::DDR ( ) const
inlineprotectedinherited

Return pointer to Data Direction Register.

Returns
DDR register pointer.

Definition at line 245 of file Pin.hh.

void OutputPin::high ( ) const
inlineinherited

Set the output pin.

Note
atomic

Definition at line 95 of file OutputPin.hh.

bool Pin::is_clear ( ) const
inlineinherited

Return true(1) if the pin is clear otherwise false(0).

Returns
boolean.

Definition at line 142 of file Pin.hh.

bool Pin::is_high ( ) const
inlineinherited

Return true(1) if the pin is set otherwise false(0).

Returns
boolean.

Definition at line 122 of file Pin.hh.

bool Pin::is_low ( ) const
inlineinherited

Return true(1) if the pin is clear otherwise false(0).

Returns
boolean.

Definition at line 152 of file Pin.hh.

bool Pin::is_off ( ) const
inlineinherited

Return true(1) if the pin is clear otherwise false(0).

Returns
boolean.

Definition at line 162 of file Pin.hh.

bool Pin::is_on ( ) const
inlineinherited

Return true(1) if the pin is set otherwise false(0).

Returns
boolean.

Definition at line 132 of file Pin.hh.

bool Pin::is_set ( ) const
inlineinherited

Return true(1) if the pin is set otherwise false(0).

Returns
boolean.

Definition at line 112 of file Pin.hh.

void OutputPin::low ( ) const
inlineinherited

Clear the output pin.

Note
atomic

Definition at line 134 of file OutputPin.hh.

static uint8_t Pin::MASK ( uint8_t  pin)
inlinestaticinherited

Return bit mask for given Arduino pin number.

Parameters
[in]pinnumber.
Returns
pin bit mask.

Definition at line 42 of file Pin.hh.

static void OutputPin::mode ( Board::DigitalPin  pin,
uint8_t  initial = 0 
)
inlinestaticinherited

Set output pin to mode.

Parameters
[in]pinnumber.
[in]initialvalue.
Note
atomic

Definition at line 56 of file OutputPin.hh.

void IOPin::mode ( Mode  mode)
inline

Change IO-pin to given mode.

Parameters
[in]modenew operation mode.
Note
atomic

Definition at line 56 of file IOPin.hh.

Mode IOPin::mode ( ) const
inline

Get current IO-pin mode.

Returns
mode.

Definition at line 71 of file IOPin.hh.

static void IOPin::mode ( Board::DigitalPin  pin,
Mode  mode 
)
inlinestatic

Change IO-pin to given mode.

Parameters
[in]pinnumber.
[in]modenew operation mode.
Note
atomic

Definition at line 83 of file IOPin.hh.

static Mode IOPin::mode ( Board::DigitalPin  pin)
inlinestatic

Get IO-pin mode.

Parameters
[in]pinnumber.
Returns
mode.

Definition at line 101 of file IOPin.hh.

void OutputPin::off ( ) const
inlineinherited

Clear the output pin.

Note
atomic

Definition at line 144 of file OutputPin.hh.

void OutputPin::on ( ) const
inlineinherited

Set the output pin.

Note
atomic

Definition at line 105 of file OutputPin.hh.

Pin::operator bool ( ) const
inlineinherited

Read input pin and assign variable.

Parameters
[out]varto assign.
Returns
pin.

Definition at line 204 of file Pin.hh.

OutputPin& OutputPin::operator<< ( int  value)
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set. Output operator syntax.

Parameters
[in]valueto write.
Returns
output pin.

Definition at line 364 of file OutputPin.hh.

Pin& Pin::operator>> ( uint8_t &  var)
inlineinherited

Read input pin and assign variable.

Parameters
[out]varto assign.
Returns
pin.

Definition at line 215 of file Pin.hh.

volatile uint8_t* Pin::PCIMR ( ) const
inlineprotectedinherited

Return pin change interrupt mask register.

Returns
pin change mask register pointer.

Definition at line 263 of file Pin.hh.

static volatile uint8_t* Pin::PIN ( uint8_t  pin)
inlinestaticinherited

Return pointer to PIN register.

Parameters
[in]pinnumber.
Returns
PIN register pointer.

Definition at line 53 of file Pin.hh.

uint8_t Pin::pin ( ) const
inlineinherited

Return Arduino pin number of abstract pin.

Returns
pin number.

Definition at line 103 of file Pin.hh.

volatile uint8_t* Pin::PIN ( ) const
inlineprotectedinherited

Return pointer to PIN register.

Returns
PIN register pointer.

Definition at line 236 of file Pin.hh.

static volatile uint8_t* Pin::PORT ( uint8_t  pin)
inlinestaticinherited

Return pointer to data PORT register.

Parameters
[in]pinnumber.
Returns
PORT register pointer.

Definition at line 75 of file Pin.hh.

volatile uint8_t* Pin::PORT ( ) const
inlineprotectedinherited

Return pointer to data PORT register.

Returns
PORT register pointer.

Definition at line 254 of file Pin.hh.

void OutputPin::pulse ( uint16_t  us) const
inlineinherited

Toggle the output pin to form a pulse with given width in micro-seconds.

Parameters
[in]uspulse width in micro seconds
Note
atomic
pulse width is limited to 1000 us

Definition at line 378 of file OutputPin.hh.

bool Pin::read ( ) const
inlineinherited

Return true(1) if the pin is set otherwise false(0).

Returns
boolean.

Definition at line 172 of file Pin.hh.

uint8_t Pin::read ( OutputPin clk,
Direction  order = MSB_FIRST 
) const
inherited

Shift in a byte from the input pin using the given clock output pin. Shift in according to given direction.

Parameters
[in]clkoutput pin.
[in]orderbit first.
Returns
value.

Definition at line 25 of file Pin.cpp.

static bool Pin::read ( Board::DigitalPin  pin)
inlinestaticinherited

Use pin number directly to read value. Does not require an instance. Return true(1) if the pin is set otherwise false(0).

Parameters
[in]pinnumber.
Returns
boolean.

Definition at line 193 of file Pin.hh.

void OutputPin::set ( ) const
inlineinherited

Set the output pin.

Note
atomic

Definition at line 85 of file OutputPin.hh.

void OutputPin::set ( int  value) const
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set.

Parameters
[in]valueto set.
Note
atomic

Definition at line 201 of file OutputPin.hh.

void OutputPin::toggle ( ) const
inlineinherited

Toggle the output pin.

Note
atomic

Definition at line 163 of file OutputPin.hh.

static void OutputPin::toggle ( Board::DigitalPin  pin)
inlinestaticinherited

Toggle the output pin. Atomic per definition

Parameters
[in]pinnumber.

Definition at line 173 of file OutputPin.hh.

void OutputPin::write ( int  value) const
inlineinherited

Set the output pin with the given value. Zero(0) to clear and non-zero to set.

Parameters
[in]valueto write.
Note
atomic

Definition at line 236 of file OutputPin.hh.

void OutputPin::write ( uint8_t  value,
OutputPin clk,
Direction  order = MSB_FIRST 
) const
inherited

Shift out given byte to the output pin using the given clock output pin. Shift out according to given direction. Data (bits) are transfered on clock transition. Interrupts are allowed during the shift out.

Parameters
[in]valueto write.
[in]clkoutput pin.
[in]orderbit first.

Definition at line 24 of file OutputPin.cpp.

void OutputPin::write ( uint16_t  value,
uint8_t  bits,
uint16_t  us 
) const
inherited

Shift out given value and number of bits to the output pin using the given pulse length in micro-seconds. Shift out from LSB(0) to MSB(bits-1). This operation is synchronized and will turn off interrupt handling during the transmission period.

Parameters
[in]valueto write.
[in]bitsto write.
[in]usmicro-second bit period.
Note
atomic
us should not exceed 1000

Definition at line 46 of file OutputPin.cpp.

static void OutputPin::write ( Board::DigitalPin  pin,
int  value 
)
inlinestaticinherited

Set the given output pin with the given value. Zero(0) to clear and non-zero to set.

Parameters
[in]pinnumber.
[in]valueto write.
Note
atomic

Definition at line 306 of file OutputPin.hh.

Member Data Documentation

const uint8_t Pin::m_mask
protectedinherited

Pin mask in port.

Definition at line 227 of file Pin.hh.

const uint8_t Pin::m_pin
protectedinherited

Pin identity.

Definition at line 230 of file Pin.hh.

volatile uint8_t* const Pin::m_sfr
protectedinherited

Special function register pointer.

Definition at line 224 of file Pin.hh.


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