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