General Purpose Input/Output (GPIO)
The General Purpose Input/Output (GPIO) interfaces supported by the ARTIK modules have evolved out of a simple need to sense an input pin value or set an output pin value from within your application. This is expanded to include a variety of peripheral bus systems for controlling external devices and much more sophisticated ways to manage input and output. The term GPIO has itself evolved to mean much more than it used to. Hardware engineers use the term to describe a simple 1-bit input/output pin. The kernel developers see GPIO as being much broader than that. The latest innovations in pin multiplexing inside the kernel allow GPIO pins to be highly configurable and properties such as drive voltage, bias, and debouncing control are becoming accessible to the application developer. Pin multiplexing is dealt with at the end of this chapter because it is such an advanced topic.