Brian Silverman | 0aa48a9 | 2014-01-25 17:10:17 -0800 | [diff] [blame] | 1 | #include "bbb/gpi.h" |
Daniel Petti | d6ff3d5 | 2014-01-02 11:24:39 -0800 | [diff] [blame] | 2 | |
| 3 | #include <stdio.h> |
Brian Silverman | 0aa48a9 | 2014-01-25 17:10:17 -0800 | [diff] [blame] | 4 | #include <errno.h> |
| 5 | #include <string.h> |
Daniel Petti | d6ff3d5 | 2014-01-02 11:24:39 -0800 | [diff] [blame] | 6 | |
| 7 | #include "aos/common/logging/logging.h" |
| 8 | |
| 9 | namespace bbb { |
| 10 | |
Brian Silverman | 0aa48a9 | 2014-01-25 17:10:17 -0800 | [diff] [blame] | 11 | Gpi::Gpi(int bank, int pin) : GpioPin(bank, pin, true) { |
Daniel Petti | d6ff3d5 | 2014-01-02 11:24:39 -0800 | [diff] [blame] | 12 | } |
| 13 | |
Brian Silverman | 0aa48a9 | 2014-01-25 17:10:17 -0800 | [diff] [blame] | 14 | bool Gpi::Read() { |
Brian Silverman | 04fac62 | 2014-01-26 18:32:15 -0800 | [diff] [blame^] | 15 | rewind(value_handle_); |
Brian Silverman | 0aa48a9 | 2014-01-25 17:10:17 -0800 | [diff] [blame] | 16 | int value = fgetc(value_handle_); |
| 17 | if (value < 0) { |
| 18 | LOG(FATAL, "fgetc(%p) for pin (%d,%d) failed with %d: %s\n", |
| 19 | value_handle_, bank_, pin_, errno, strerror(errno)); |
Daniel Petti | d6ff3d5 | 2014-01-02 11:24:39 -0800 | [diff] [blame] | 20 | } |
Brian Silverman | 0aa48a9 | 2014-01-25 17:10:17 -0800 | [diff] [blame] | 21 | switch (value - '0') { |
| 22 | case 0: return false; |
| 23 | case 1: return true; |
| 24 | default: |
| 25 | LOG(FATAL, "unknown pin value %c\n", value); |
Daniel Petti | d6ff3d5 | 2014-01-02 11:24:39 -0800 | [diff] [blame] | 26 | } |
Daniel Petti | d6ff3d5 | 2014-01-02 11:24:39 -0800 | [diff] [blame] | 27 | } |
| 28 | |
Daniel Petti | fe47525 | 2014-01-05 14:15:16 -0800 | [diff] [blame] | 29 | } // namespace bbb |