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

The PropWare::SimplePort is the recommended way to use data ports on the Propeller. All pins are consecutive, which allows for some simple shortcuts in reading, writing, and initialization. More...

#include <PropWare/gpio/simpleport.h>

+ Inheritance diagram for PropWare::SimplePort:
+ Collaboration diagram for PropWare::SimplePort:

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

 SimplePort ()
 
 SimplePort (const PropWare::Port::Mask firstPin, uint8_t portWidth)
 Initialize a port and configures its bit-mask. More...
 
 SimplePort (const PropWare::Port::Mask firstPin, uint8_t portWidth, const PropWare::Port::Dir direction)
 Initialize a port and configures its bit-mask and direction. More...
 
void set_mask (const PropWare::Port::Mask firstPin, uint8_t portWidth)
 Configure a port's bit-mask. More...
 
void write (uint32_t value) const
 Allow easy writing to a port w/o destroying data elsewhere in the port; A shift is performed before writing to align the LSB of the input parameter with the least significant pin in the data port. More...
 
uint32_t read () const
 Allow easy reading of only selected pins from a port. More...
 
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 void flash_port (const Port::Mask firstPin, const uint8_t portWidth, const uint16_t 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...
 
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

The PropWare::SimplePort is the recommended way to use data ports on the Propeller. All pins are consecutive, which allows for some simple shortcuts in reading, writing, and initialization.

Examples
I2CSlave_Demo.cpp, MCP3xxx_Demo.cpp, SPI_Demo.cpp, UARTRX_Demo.cpp, and UARTTX_Demo.cpp.

Definition at line 36 of file simpleport.h.

Member Enumeration Documentation

◆ Dir

enum PropWare::Port::Dir
stronginherited

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

enum PropWare::Port::Mask
inherited

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

◆ SimplePort() [1/3]

PropWare::SimplePort::SimplePort ( )
See also
PropWare::Port::Port()

Definition at line 55 of file simpleport.h.

◆ SimplePort() [2/3]

PropWare::SimplePort::SimplePort ( const PropWare::Port::Mask  firstPin,
uint8_t  portWidth 
)

Initialize a port and configures its bit-mask.

Parameters
[in]firstPinLeast significant pin in the data port mask
[in]portWidthThe number of pins in the data port

Definition at line 66 of file simpleport.h.

+ Here is the call graph for this function:

◆ SimplePort() [3/3]

PropWare::SimplePort::SimplePort ( const PropWare::Port::Mask  firstPin,
uint8_t  portWidth,
const PropWare::Port::Dir  direction 
)

Initialize a port and configures its bit-mask and direction.

Parameters
[in]firstPinLeast significant pin in the data port mask
[in]portWidthThe number of pins in the data port
[in]directionDetermine input or output for the port

Definition at line 77 of file simpleport.h.

+ Here is the call graph for this function:

Member Function Documentation

◆ add_pins()

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

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
inherited

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() [1/2]

static void PropWare::SimplePort::flash_port ( const Port::Mask  firstPin,
const uint8_t  portWidth,
const uint16_t  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]firstPinFirst pin in sequence
[in]portWidthNumber of pins that should be flashed
[in]iterationsNumber of times that the pins should flicker on and back off again

Definition at line 46 of file simpleport.h.

+ Here is the call graph for this function:

◆ flash_port() [2/2]

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

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)
staticinherited

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
inherited

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
inherited

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 ( ) const
inherited
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 ( ) const
inherited
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
inherited
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
inherited
See also
PropWare::Port::set()

Definition at line 240 of file port.h.

+ Here is the call graph for this function:

◆ read()

uint32_t PropWare::SimplePort::read ( ) const

Allow easy reading of only selected pins from a port.

Precondition
Port direction must be set to input
Returns
No manipulation of the return value is necessary (such as shifting to the right or masking)

Definition at line 116 of file simpleport.h.

+ Here is the call graph for this function:

◆ read_fast()

uint32_t PropWare::Port::read_fast ( ) const
inherited

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
inherited

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
inherited

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() [1/2]

void PropWare::SimplePort::set_mask ( const PropWare::Port::Mask  firstPin,
uint8_t  portWidth 
)

Configure a port's bit-mask.

Parameters
[in]firstPinLeast significant pin in the data port mask
[in]portWidthThe number of pins in the data port

Definition at line 88 of file simpleport.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_mask() [2/2]

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

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)
staticinherited

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 ( ) const
inherited

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()

void PropWare::SimplePort::write ( uint32_t  value) const

Allow easy writing to a port w/o destroying data elsewhere in the port; A shift is performed before writing to align the LSB of the input parameter with the least significant pin in the data port.

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

Definition at line 105 of file simpleport.h.

+ Here is the call graph for this function:

◆ write_fast()

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

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: