RaspberryIO/Unosquare.RaspberryIO/Gpio/Enums.cs
2019-02-17 14:08:57 +01:00

579 lines
12 KiB
C#

namespace Unosquare.RaspberryIO.Gpio
{
/// <summary>
/// Defines the different drive modes of a GPIO pin
/// </summary>
public enum GpioPinDriveMode
{
/// <summary>
/// Input drive mode (perform reads)
/// </summary>
Input = 0,
/// <summary>
/// Output drive mode (perform writes)
/// </summary>
Output = 1,
/// <summary>
/// PWM output mode (only certain pins support this -- 2 of them at the moment)
/// </summary>
PwmOutput = 2,
/// <summary>
/// GPIO Clock output mode (only a pin supports this at this time)
/// </summary>
GpioClock = 3
}
/// <summary>
/// The GPIO pin resistor mode. This is used on input pins so that their
/// lines are not floating
/// </summary>
public enum GpioPinResistorPullMode
{
/// <summary>
/// Pull resistor not active. Line floating
/// </summary>
Off = 0,
/// <summary>
/// Pull resistor sets a default value of 0 on no-connects
/// </summary>
PullDown = 1,
/// <summary>
/// Pull resistor sets a default value of 1 on no-connects
/// </summary>
PullUp = 2,
}
/// <summary>
/// The PWM mode.
/// </summary>
public enum PwmMode
{
/// <summary>
/// PWM pulses are sent using mark-sign patterns (old school)
/// </summary>
MarkSign = 0,
/// <summary>
/// PWM pulses are sent as a balanced signal (default, newer mode)
/// </summary>
Balanced = 1,
}
/// <summary>
/// Defines the different edge detection modes for pin interrupts
/// </summary>
public enum EdgeDetection
{
/// <summary>
/// Assumes edge detection was already setup externally
/// </summary>
ExternalSetup = 0,
/// <summary>
/// Falling Edge
/// </summary>
FallingEdge = 1,
/// <summary>
/// Rising edge
/// </summary>
RisingEdge = 2,
/// <summary>
/// Both, rising and falling edges
/// </summary>
RisingAndFallingEdges = 3
}
/// <summary>
/// Defines the GPIO Pin values 0 for low, 1 for High
/// </summary>
public enum GpioPinValue
{
/// <summary>
/// Digital high
/// </summary>
High = 1,
/// <summary>
/// Digital low
/// </summary>
Low = 0
}
/// <summary>
/// Defines the Header connectors available
/// </summary>
public enum GpioHeader
{
/// <summary>
/// Not defined
/// </summary>
None,
/// <summary>
/// The P1 connector (main connector)
/// </summary>
P1,
/// <summary>
/// The P5 connector (auxiliary, not commonly used)
/// </summary>
P5,
}
/// <summary>
/// Defines all the available Wiring Pi Pin Numbers
/// </summary>
public enum WiringPiPin
{
/// <summary>
/// The unknown
/// </summary>
Unknown = -1,
/// <summary>
/// The pin00
/// </summary>
Pin00 = 0,
/// <summary>
/// The pin01
/// </summary>
Pin01 = 1,
/// <summary>
/// The pin02
/// </summary>
Pin02 = 2,
/// <summary>
/// The pin03
/// </summary>
Pin03 = 3,
/// <summary>
/// The pin04
/// </summary>
Pin04 = 4,
/// <summary>
/// The pin05
/// </summary>
Pin05 = 5,
/// <summary>
/// The pin06
/// </summary>
Pin06 = 6,
/// <summary>
/// The pin07
/// </summary>
Pin07 = 7,
/// <summary>
/// The pin08
/// </summary>
Pin08 = 8,
/// <summary>
/// The pin09
/// </summary>
Pin09 = 9,
/// <summary>
/// The pin10
/// </summary>
Pin10 = 10,
/// <summary>
/// The pin11
/// </summary>
Pin11 = 11,
/// <summary>
/// The pin12
/// </summary>
Pin12 = 12,
/// <summary>
/// The pin13
/// </summary>
Pin13 = 13,
/// <summary>
/// The pin14
/// </summary>
Pin14 = 14,
/// <summary>
/// The pin15
/// </summary>
Pin15 = 15,
/// <summary>
/// The pin16
/// </summary>
Pin16 = 16,
/// <summary>
/// The pin17
/// </summary>
Pin17 = 17,
/// <summary>
/// The pin18
/// </summary>
Pin18 = 18,
/// <summary>
/// The pin19
/// </summary>
Pin19 = 19,
/// <summary>
/// The pin20
/// </summary>
Pin20 = 20,
/// <summary>
/// The pin21
/// </summary>
Pin21 = 21,
/// <summary>
/// The pin22
/// </summary>
Pin22 = 22,
/// <summary>
/// The pin23
/// </summary>
Pin23 = 23,
/// <summary>
/// The pin24
/// </summary>
Pin24 = 24,
/// <summary>
/// The pin25
/// </summary>
Pin25 = 25,
/// <summary>
/// The pin26
/// </summary>
Pin26 = 26,
/// <summary>
/// The pin27
/// </summary>
Pin27 = 27,
/// <summary>
/// The pin28
/// </summary>
Pin28 = 28,
/// <summary>
/// The pin29
/// </summary>
Pin29 = 29,
/// <summary>
/// The pin30
/// </summary>
Pin30 = 30,
/// <summary>
/// The pin31
/// </summary>
Pin31 = 31,
}
/// <summary>
/// Enumerates the different pins on the P1 Header
/// as commonly referenced by Raspberry Pi Documentation.
/// Enumeration values correspond to the physical pin number.
/// </summary>
public enum P1
{
/// <summary>
/// Header P1, GPIO Pin 02
/// </summary>
Gpio02 = 3,
/// <summary>
/// Header P1, GPIO Pin 03
/// </summary>
Gpio03 = 5,
/// <summary>
/// Header P1, GPIO Pin 04
/// </summary>
Gpio04 = 7,
/// <summary>
/// Header P1, GPIO Pin 17
/// </summary>
Gpio17 = 11,
/// <summary>
/// Header P1, GPIO Pin 27
/// </summary>
Gpio27 = 13,
/// <summary>
/// Header P1, GPIO Pin 22
/// </summary>
Gpio22 = 15,
/// <summary>
/// Header P1, GPIO Pin 10
/// </summary>
Gpio10 = 19,
/// <summary>
/// Header P1, GPIO Pin 09
/// </summary>
Gpio09 = 21,
/// <summary>
/// Header P1, GPIO Pin 11
/// </summary>
Gpio11 = 23,
/// <summary>
/// Header P1, GPIO Pin 05
/// </summary>
Gpio05 = 29,
/// <summary>
/// Header P1, GPIO Pin 06
/// </summary>
Gpio06 = 31,
/// <summary>
/// Header P1, GPIO Pin 13
/// </summary>
Gpio13 = 33,
/// <summary>
/// Header P1, GPIO Pin 19
/// </summary>
Gpio19 = 35,
/// <summary>
/// Header P1, GPIO Pin 26
/// </summary>
Gpio26 = 37,
/// <summary>
/// Header P1, GPIO Pin 14
/// </summary>
Gpio14 = 8,
/// <summary>
/// Header P1, GPIO Pin 15
/// </summary>
Gpio15 = 10,
/// <summary>
/// Header P1, GPIO Pin 18
/// </summary>
Gpio18 = 12,
/// <summary>
/// Header P1, GPIO Pin 23
/// </summary>
Gpio23 = 16,
/// <summary>
/// Header P1, GPIO Pin 24
/// </summary>
Gpio24 = 18,
/// <summary>
/// Header P1, GPIO Pin 25
/// </summary>
Gpio25 = 22,
/// <summary>
/// Header P1, GPIO Pin 08
/// </summary>
Gpio08 = 24,
/// <summary>
/// Header P1, GPIO Pin 07
/// </summary>
Gpio07 = 26,
/// <summary>
/// Header P1, GPIO Pin 12
/// </summary>
Gpio12 = 32,
/// <summary>
/// Header P1, GPIO Pin 16
/// </summary>
Gpio16 = 36,
/// <summary>
/// Header P1, GPIO Pin 20
/// </summary>
Gpio20 = 38,
/// <summary>
/// Header P1, GPIO Pin 21
/// </summary>
Gpio21 = 40
}
/// <summary>
/// Enumerates the different pins on the P5 Header
/// as commonly referenced by Raspberry Pi documentation.
/// Enumeration values correspond to the physical pin number.
/// </summary>
public enum P5
{
/// <summary>
/// Header P5, GPIO Pin 28
/// </summary>
Gpio28 = 3,
/// <summary>
/// Header P5, GPIO Pin 29
/// </summary>
Gpio29 = 4,
/// <summary>
/// Header P5, GPIO Pin 30
/// </summary>
Gpio30 = 5,
/// <summary>
/// Header P5, GPIO Pin 31
/// </summary>
Gpio31 = 6
}
/// <summary>
/// Defines the different pin capabilities
/// </summary>
public enum PinCapability
{
/// <summary>
/// General Purpose capability: Digital and Analog Read/Write
/// </summary>
GP,
/// <summary>
/// General Purpose Clock (not PWM)
/// </summary>
GPCLK,
/// <summary>
/// i2c data channel
/// </summary>
I2CSDA,
/// <summary>
/// i2c clock channel
/// </summary>
I2CSCL,
/// <summary>
/// SPI Master Out, Slave In channel
/// </summary>
SPIMOSI,
/// <summary>
/// SPI Master In, Slave Out channel
/// </summary>
SPIMISO,
/// <summary>
/// SPI Clock channel
/// </summary>
SPICLK,
/// <summary>
/// SPI Chip Select Channel
/// </summary>
SPICS,
/// <summary>
/// UART Request to Send Channel
/// </summary>
UARTRTS,
/// <summary>
/// UART Transmit Channel
/// </summary>
UARTTXD,
/// <summary>
/// UART Receive Channel
/// </summary>
UARTRXD,
/// <summary>
/// Hardware Pule Width Modulation
/// </summary>
PWM
}
/// <summary>
/// Defines the SPI channel numbers
/// </summary>
internal enum SpiChannelNumber
{
/// <summary>
/// The channel 0
/// </summary>
Channel0 = 0,
/// <summary>
/// The channel 1
/// </summary>
Channel1 = 1,
}
/// <summary>
/// Defines GPIO controller initialization modes
/// </summary>
internal enum ControllerMode
{
/// <summary>
/// The not initialized
/// </summary>
NotInitialized,
/// <summary>
/// The direct with wiring pi pins
/// </summary>
DirectWithWiringPiPins,
/// <summary>
/// The direct with BCM pins
/// </summary>
DirectWithBcmPins,
/// <summary>
/// The direct with header pins
/// </summary>
DirectWithHeaderPins,
/// <summary>
/// The file stream with hardware pins
/// </summary>
FileStreamWithHardwarePins,
}
}