namespace Unosquare.RaspberryIO.Abstractions { /// <summary> /// Defines the SPI channel numbers. /// </summary> public enum SpiChannelNumber { /// <summary> /// The channel 0 /// </summary> Channel0 = 0, /// <summary> /// The channel 1 /// </summary> Channel1 = 1, } /// <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> /// 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> /// 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 alt0 operating mode /// </summary> Alt0 = 4, /// <summary> /// The alt1 operating mode /// </summary> Alt1 = 5, /// <summary> /// The alt2 operating mode /// </summary> Alt2 = 6, /// <summary> /// The alt3 operating mode /// </summary> Alt3 = 7, } /// <summary> /// Defines the different threading locking keys. /// </summary> public enum ThreadLockKey { /// <summary> /// The lock 0 /// </summary> Lock0 = 0, /// <summary> /// The lock 1 /// </summary> Lock1 = 1, /// <summary> /// The lock 2 /// </summary> Lock2 = 2, /// <summary> /// The lock 3 /// </summary> Lock3 = 3, } /// <summary> /// Defines the different edge detection modes for pin interrupts. /// </summary> public enum EdgeDetection { /// <summary> /// Falling Edge /// </summary> FallingEdge, /// <summary> /// Rising edge /// </summary> RisingEdge, /// <summary> /// Both, falling and rising edges /// </summary> FallingAndRisingEdge, } /// <summary> /// The hardware revision of the board. /// </summary> public enum BoardRevision { /// <summary> /// Revision 1 (the early Model A and B's). /// </summary> Rev1 = 1, /// <summary> /// Revision 2 (everything else - it covers the B, B+ and CM). /// </summary> Rev2 = 2, } /// <summary> /// Defines the Header connectors available. /// </summary> public enum GpioHeader { /// <summary> /// Not defined /// </summary> None, /// <summary> /// P1 connector (main connector) /// </summary> P1, /// <summary> /// P5 connector (auxiliary, not commonly used) /// </summary> P5, } /// <summary> /// Defines all the BCM Pin numbers available for the user. /// </summary> public enum BcmPin { /// <summary> /// GPIO 0 /// </summary> Gpio00 = 0, /// <summary> /// GPIO 1 /// </summary> Gpio01 = 1, /// <summary> /// GPIO02 /// </summary> Gpio02 = 2, /// <summary> /// GPIO 3 /// </summary> Gpio03 = 3, /// <summary> /// GPIO 4 /// </summary> Gpio04 = 4, /// <summary> /// GPIO 5 /// </summary> Gpio05 = 5, /// <summary> /// GPIO 6 /// </summary> Gpio06 = 6, /// <summary> /// GPIO 7 /// </summary> Gpio07 = 7, /// <summary> /// GPIO 8 /// </summary> Gpio08 = 8, /// <summary> /// GPIO 9 /// </summary> Gpio09 = 9, /// <summary> /// GPIO 10 /// </summary> Gpio10 = 10, /// <summary> /// GPIO 11 /// </summary> Gpio11 = 11, /// <summary> /// GPIO 12 /// </summary> Gpio12 = 12, /// <summary> /// GPIO 13 /// </summary> Gpio13 = 13, /// <summary> /// GPIO 14 /// </summary> Gpio14 = 14, /// <summary> /// GPIO 15 /// </summary> Gpio15 = 15, /// <summary> /// GPIO 16 /// </summary> Gpio16 = 16, /// <summary> /// GPIO 17 /// </summary> Gpio17 = 17, /// <summary> /// GPIO 18 /// </summary> Gpio18 = 18, /// <summary> /// GPIO 19 /// </summary> Gpio19 = 19, /// <summary> /// GPIO 20 /// </summary> Gpio20 = 20, /// <summary> /// GPIO 21 /// </summary> Gpio21 = 21, /// <summary> /// GPIO 22 /// </summary> Gpio22 = 22, /// <summary> /// GPIO 23 /// </summary> Gpio23 = 23, /// <summary> /// GPIO 24 /// </summary> Gpio24 = 24, /// <summary> /// GPIO 25 /// </summary> Gpio25 = 25, /// <summary> /// GPIO 26 /// </summary> Gpio26 = 26, /// <summary> /// GPIO 27 /// </summary> Gpio27 = 27, /// <summary> /// GPIO 28 /// </summary> Gpio28 = 28, /// <summary> /// GPIO 29 /// </summary> Gpio29 = 29, /// <summary> /// GPIO 30 /// </summary> Gpio30 = 30, /// <summary> /// GPIO 31 /// </summary> Gpio31 = 31, } /// <summary> /// Enumerates the different pins on the P1 Header. /// Enumeration values correspond to the physical pin number. /// </summary> public enum P1 { /// <summary> /// Header P1 Physical Pin 3. GPIO 0 for rev1 or GPIO 2 for rev2. /// </summary> Pin03 = 3, /// <summary> /// Header P1 Physical Pin 5. GPIO 1 for rev1 or GPIO 3 for rev2. /// </summary> Pin05 = 5, /// <summary> /// Header P1 Physical Pin 7. GPIO 4. /// </summary> Pin07 = 7, /// <summary> /// Header P1 Physical Pin 11. GPIO 17. /// </summary> Pin11 = 11, /// <summary> /// Header P1 Physical Pin 13. GPIO 21 for rev1 or GPIO 27 for rev2. /// </summary> Pin13 = 13, /// <summary> /// Header P1 Physical Pin 15. GPIO 22. /// </summary> Pin15 = 15, /// <summary> /// Header P1 Physical Pin 19. GPIO 10. /// </summary> Pin19 = 19, /// <summary> /// Header P1 Physical Pin 21. GPIO 9. /// </summary> Pin21 = 21, /// <summary> /// Header P1 Physical Pin 23. GPIO 11. /// </summary> Pin23 = 23, /// <summary> /// Header P1 Physical Pin 27. GPIO 0. /// </summary> Pin27 = 27, /// <summary> /// Header P1 Physical Pin 29. GPIO 5. /// </summary> Pin29 = 29, /// <summary> /// Header P1 Physical Pin 31. GPIO 6. /// </summary> Pin31 = 31, /// <summary> /// Header P1 Physical Pin 33. GPIO 13. /// </summary> Pin33 = 33, /// <summary> /// Header P1 Physical Pin 35. GPIO 19. /// </summary> Pin35 = 35, /// <summary> /// Header P1 Physical Pin 37. GPIO 26. /// </summary> Pin37 = 37, /// <summary> /// Header P1 Physical Pin 8. GPIO 14. /// </summary> Pin08 = 8, /// <summary> /// Header P1 Physical Pin 10. GPIO 15. /// </summary> Pin10 = 10, /// <summary> /// Header P1 Physical Pin 12. GPIO 18. /// </summary> Pin12 = 12, /// <summary> /// Header P1 Physical Pin 16. GPIO 23. /// </summary> Pin16 = 16, /// <summary> /// Header P1 Physical Pin 18. GPIO 24. /// </summary> Pin18 = 18, /// <summary> /// Header P1 Physical Pin 22. GPIO 25. /// </summary> Pin22 = 22, /// <summary> /// Header P1 Physical Pin 24. GPIO 8. /// </summary> Pin24 = 24, /// <summary> /// Header P1 Physical Pin 26. GPIO 7. /// </summary> Pin26 = 26, /// <summary> /// Header P1 Physical Pin 28. GPIO 1. /// </summary> Pin28 = 28, /// <summary> /// Header P1 Physical Pin 32. GPIO 12. /// </summary> Pin32 = 32, /// <summary> /// Header P1 Physical Pin 36. GPIO 16. /// </summary> Pin36 = 36, /// <summary> /// Header P1 Physical Pin 38. GPIO 20. /// </summary> Pin38 = 38, /// <summary> /// Header P1 Physical Pin 40. GPIO 21. /// </summary> Pin40 = 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 Physical Pin 3, GPIO 28. /// </summary> Pin03 = 3, /// <summary> /// Header P5 Physical Pin 4, GPIO 29. /// </summary> Pin04 = 4, /// <summary> /// Header P5 Physical Pin 5, GPIO 30. /// </summary> Pin05 = 5, /// <summary> /// Header P5 Physical Pin 6, GPIO 31. /// </summary> Pin06 = 6, } }