PropWare  3.0.0.224
C++ objects and CMake build system for Parallax Propeller
Public Types | Public Member Functions | Static Public Member Functions | List of all members
PropWare::Port Class Reference

Flexible port that can have any pin enabled or disabled. Pins are independent of each other. More...

#include <PropWare/gpio/port.h>

+ Inheritance diagram for PropWare::Port:

Public Types

enum  Mask {
  P0 = BIT_0,
  P1 = BIT_1,
  P2 = BIT_2,
  P3 = BIT_3,
  P4 = BIT_4,
  P5 = BIT_5,
  P6 = BIT_6,
  P7 = BIT_7,
  P8 = BIT_8,
  P9 = BIT_9,
  P10 = BIT_10,
  P11 = BIT_11,
  P12 = BIT_12,
  P13 = BIT_13,
  P14 = BIT_14,
  P15 = BIT_15,
  P16 = BIT_16,
  P17 = BIT_17,
  P18 = BIT_18,
  P19 = BIT_19,
  P20 = BIT_20,
  P21 = BIT_21,
  P22 = BIT_22,
  P23 = BIT_23,
  P24 = BIT_24,
  P25 = BIT_25,
  P26 = BIT_26,
  P27 = BIT_27,
  P28 = BIT_28,
  P29 = BIT_29,
  P30 = BIT_30,
  P31 = BIT_31,
  NULL_PIN = 0
}
 
enum  Dir {
  Dir::IN = 0,
  Dir::OUT = -1
}
 

Public Member Functions

 Port (const uint32_t portMask=Mask::NULL_PIN)
 
 Port (const uint32_t portMask, const PropWare::Port::Dir direction)
 
void set_mask (const uint32_t mask)
 Set the mask for this port. More...
 
uint32_t get_mask () const
 Return the full pin mask of all pins in the port. More...
 
void add_pins (const uint32_t mask)
 Add pins to the current mask. More...
 
void set_dir (const PropWare::Port::Dir direction) const
 Set port as either input or output. More...
 
PropWare::Port::Dir get_dir () const
 Determine the direction this port is currently set to. More...
 
void set_dir_out () const
 Set the port for output.
 
void set_dir_in () const
 Set the port for input.
 
void set () const
 Set selected output port high (set all pins to 1) More...
 
void high () const
 
void on () const
 
void clear () const
 Clear selected output port (set it to 0) More...
 
void low () const
 
void off () const
 
void toggle () const
 Toggle the output value of a port. More...
 
void write_fast (const uint32_t value) const
 Allow easy writing to a port w/o destroying data elsewhere in the port; No shift is performed to align data with the desired output pins. More...
 
uint32_t read_fast () const
 Allow easy reading of only selected pins from a port. More...
 

Static Public Member Functions

static uint8_t from_mask (const Mask mask)
 Determine which pin number based on a pin mask. More...
 
static Mask to_mask (const uint8_t pinNum)
 Return a Mask type based on a pin number. More...
 
static void flash_port (const uint32_t pinMask, unsigned int iterations=10)
 Great for quick debugging to ensure a line of code is executed, this will quickly flash a given set of pins a specific number of times. More...
 

Detailed Description

Flexible port that can have any pin enabled or disabled. Pins are independent of each other.

The PropWare::Port class is wonderful in its versatility, but be aware that PropWare::SimplePort is a much better solution for parallel data ports, where all pins are generally consecutive.

Examples
ADXL345_Demo.cpp, Blinky_Demo.cpp, Cogc_Demo.cpp, DualPWM_Demo.cpp, HD44780_Demo.cpp, I2CSlave_Demo.cpp, L3G_Demo.cpp, MAX6675_Demo.cpp, MAX72xx_Demo.cpp, MCP2515_Demo.cpp, MCP3xxx_Demo.cpp, Ping_Demo.cpp, SPI_Demo.cpp, Stepper_Demo.cpp, SynchronousPrinter_Demo.cpp, UARTRX_Demo.cpp, and UARTTX_Demo.cpp.

Definition at line 38 of file port.h.

Member Enumeration Documentation

◆ Dir

enum PropWare::Port::Dir
strong

Direction of GPIO pin

Enumerator
IN 

Set pin(s) as input

OUT 

Set pin(s) as output

Definition at line 82 of file port.h.

◆ Mask

Bit-mask of GPIO pins

Enumerator
P0 

GPIO pin 0

P1 

GPIO pin 1

P2 

GPIO pin 2

P3 

GPIO pin 3

P4 

GPIO pin 4

P5 

GPIO pin 5

P6 

GPIO pin 6

P7 

GPIO pin 7

P8 

GPIO pin 8

P9 

GPIO pin 9

P10 

GPIO pin 10

P11 

GPIO pin 11

P12 

GPIO pin 12

P13 

GPIO pin 13

P14 

GPIO pin 14

P15 

GPIO pin 15

P16 

GPIO pin 16

P17 

GPIO pin 17

P18 

GPIO pin 18

P19 

GPIO pin 19

P20 

GPIO pin 20

P21 

GPIO pin 21

P22 

GPIO pin 22

P23 

GPIO pin 23

P24 

GPIO pin 24

P25 

GPIO pin 25

P26 

GPIO pin 26

P27 

GPIO pin 27

P28 

GPIO pin 28

P29 

GPIO pin 29

P30 

GPIO pin 30

P31 

GPIO pin 31

NULL_PIN 

Null pin; Marks end of Mask array

Definition at line 43 of file port.h.

Constructor & Destructor Documentation

◆ Port() [1/2]

PropWare::Port::Port ( const uint32_t  portMask = Mask::NULL_PIN)
Parameters
[in]portMaskEach bit set high represents a Pin on the port

Definition at line 145 of file port.h.

◆ Port() [2/2]

PropWare::Port::Port ( const uint32_t  portMask,
const PropWare::Port::Dir  direction 
)
Parameters
[in]portMaskEach bit set high represents a Pin on the port
[in]directionOne of PropWare::Port::OUT or PropWare::Port::IN

Definition at line 153 of file port.h.

+ Here is the call graph for this function:

Member Function Documentation

◆ add_pins()

void PropWare::Port::add_pins ( const uint32_t  mask)

Add pins to the current mask.

Parameters
[in]maskAdditional pins to be ORed with current mask

Definition at line 181 of file port.h.

◆ clear()

void PropWare::Port::clear ( ) const

Clear selected output port (set it to 0)

Precondition
If port is not set as output, statement will have no affect

Definition at line 249 of file port.h.

+ Here is the caller graph for this function:

◆ flash_port()

static void PropWare::Port::flash_port ( const uint32_t  pinMask,
unsigned int  iterations = 10 
)
static

Great for quick debugging to ensure a line of code is executed, this will quickly flash a given set of pins a specific number of times.

Parameters
[in]pinMaskPins that should be flashed
[in]iterationsNumber of times that the pins should flicker on and back off again

Definition at line 129 of file port.h.

+ Here is the caller graph for this function:

◆ from_mask()

static uint8_t PropWare::Port::from_mask ( const Mask  mask)
static

Determine which pin number based on a pin mask.

Note
Return value is 0-indexed
Parameters
[in]maskValue with only a single bit set high representing Propeller pin (i.e.: 0x80 would be pin 7)
Returns
Return the pin number of pin

Definition at line 98 of file port.h.

+ Here is the caller graph for this function:

◆ get_dir()

PropWare::Port::Dir PropWare::Port::get_dir ( ) const

Determine the direction this port is currently set to.

Returns
Returns either PropWare::Port::OUT or PropWare::Port::IN

Definition at line 200 of file port.h.

◆ get_mask()

uint32_t PropWare::Port::get_mask ( ) const

Return the full pin mask of all pins in the port.

Returns
A combination mask of all pins used in this port

Definition at line 172 of file port.h.

◆ high()

void PropWare::Port::high ( void  ) const
See also
PropWare::Port::set()

Definition at line 233 of file port.h.

+ Here is the call graph for this function:

◆ low()

void PropWare::Port::low ( void  ) const
See also
PropWare::Port::clear()

Definition at line 256 of file port.h.

+ Here is the call graph for this function:

◆ off()

void PropWare::Port::off ( ) const
See also
PropWare::Port::clear()

Definition at line 263 of file port.h.

+ Here is the call graph for this function:

◆ on()

void PropWare::Port::on ( ) const
See also
PropWare::Port::set()

Definition at line 240 of file port.h.

+ Here is the call graph for this function:

◆ read_fast()

uint32_t PropWare::Port::read_fast ( ) const

Allow easy reading of only selected pins from a port.

Returns
Value of INA masked by the port mask

Definition at line 291 of file port.h.

+ Here is the caller graph for this function:

◆ set()

void PropWare::Port::set ( ) const

Set selected output port high (set all pins to 1)

Precondition
If port is not set as output, statement will have no affect

Definition at line 226 of file port.h.

+ Here is the caller graph for this function:

◆ set_dir()

void PropWare::Port::set_dir ( const PropWare::Port::Dir  direction) const

Set port as either input or output.

Parameters
[in]directionI/O direction to set selected pins; must be one of PropWare::Port::IN or PropWare::Port::OUT

Definition at line 191 of file port.h.

+ Here is the caller graph for this function:

◆ set_mask()

void PropWare::Port::set_mask ( const uint32_t  mask)

Set the mask for this port.

Parameters
[in]maskPin mask

Definition at line 163 of file port.h.

+ Here is the caller graph for this function:

◆ to_mask()

static Mask PropWare::Port::to_mask ( const uint8_t  pinNum)
static

Return a Mask type based on a pin number.

Parameters
[in]pinNum0-indexed pin number
Returns
Bit mask representing the requested pin. If pinNum > 31, Mask::NULL_PIN is returned

Definition at line 115 of file port.h.

+ Here is the caller graph for this function:

◆ toggle()

void PropWare::Port::toggle ( void  ) const

Toggle the output value of a port.

Precondition
If port is not set as output, statement will have no affect

Definition at line 272 of file port.h.

◆ write_fast()

void PropWare::Port::write_fast ( const uint32_t  value) const

Allow easy writing to a port w/o destroying data elsewhere in the port; No shift is performed to align data with the desired output pins.

Parameters
[in]valuevalue to be bit-masked and then written to the port

Definition at line 282 of file port.h.

+ Here is the caller graph for this function:

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