Hover!( Microchip MGC3130 ) library. Now, it is development version. http://www.hoverlabs.co/#hover https://www.switch-science.com/catalog/2124/
MjHover.cpp@2:46cf70365584, 2015-04-02 (annotated)
- Committer:
- matsujirushi
- Date:
- Thu Apr 02 13:02:52 2015 +0000
- Revision:
- 2:46cf70365584
- Parent:
- 1:8e9c00c59101
- Child:
- 3:b03009537d66
1st release.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
matsujirushi | 0:051e1e753af5 | 1 | #include "MjHover.h" |
matsujirushi | 0:051e1e753af5 | 2 | |
matsujirushi | 0:051e1e753af5 | 3 | namespace matsujirushi { |
matsujirushi | 0:051e1e753af5 | 4 | |
matsujirushi | 2:46cf70365584 | 5 | MjHover::MjHover(I2C* i2c, uint8_t address, DigitalInOut* ts, DigitalInOut* reset_n) |
matsujirushi | 0:051e1e753af5 | 6 | { |
matsujirushi | 0:051e1e753af5 | 7 | this->i2c = i2c; |
matsujirushi | 0:051e1e753af5 | 8 | this->address = address; |
matsujirushi | 1:8e9c00c59101 | 9 | this->ts = ts; |
matsujirushi | 1:8e9c00c59101 | 10 | this->reset_n = reset_n; |
matsujirushi | 1:8e9c00c59101 | 11 | } |
matsujirushi | 1:8e9c00c59101 | 12 | |
matsujirushi | 1:8e9c00c59101 | 13 | void MjHover::begin() |
matsujirushi | 1:8e9c00c59101 | 14 | { |
matsujirushi | 1:8e9c00c59101 | 15 | this->ts->input(); |
matsujirushi | 2:46cf70365584 | 16 | this->reset_n->output(); |
matsujirushi | 1:8e9c00c59101 | 17 | this->reset_n->write(0); |
matsujirushi | 2:46cf70365584 | 18 | wait_ms(1); |
matsujirushi | 2:46cf70365584 | 19 | this->reset_n->input(); |
matsujirushi | 1:8e9c00c59101 | 20 | wait_ms(3000); |
matsujirushi | 1:8e9c00c59101 | 21 | } |
matsujirushi | 1:8e9c00c59101 | 22 | |
matsujirushi | 1:8e9c00c59101 | 23 | void MjHover::setRelease() |
matsujirushi | 1:8e9c00c59101 | 24 | { |
matsujirushi | 1:8e9c00c59101 | 25 | this->ts->input(); |
matsujirushi | 1:8e9c00c59101 | 26 | } |
matsujirushi | 1:8e9c00c59101 | 27 | |
matsujirushi | 1:8e9c00c59101 | 28 | bool MjHover::getStatus() |
matsujirushi | 1:8e9c00c59101 | 29 | { |
matsujirushi | 1:8e9c00c59101 | 30 | if (this->ts->read() == 0) |
matsujirushi | 1:8e9c00c59101 | 31 | { |
matsujirushi | 1:8e9c00c59101 | 32 | this->ts->output(); |
matsujirushi | 1:8e9c00c59101 | 33 | this->ts->write(0); |
matsujirushi | 1:8e9c00c59101 | 34 | return false; |
matsujirushi | 1:8e9c00c59101 | 35 | } |
matsujirushi | 1:8e9c00c59101 | 36 | return true; |
matsujirushi | 1:8e9c00c59101 | 37 | } |
matsujirushi | 1:8e9c00c59101 | 38 | |
matsujirushi | 1:8e9c00c59101 | 39 | uint8_t MjHover::getEvent() |
matsujirushi | 1:8e9c00c59101 | 40 | { |
matsujirushi | 2:46cf70365584 | 41 | this->i2c->start(); |
matsujirushi | 2:46cf70365584 | 42 | this->i2c->write(this->address | 1); |
matsujirushi | 2:46cf70365584 | 43 | uint8_t size = this->i2c->read(1); |
matsujirushi | 2:46cf70365584 | 44 | uint8_t buffer[255]; |
matsujirushi | 2:46cf70365584 | 45 | buffer[0] = size; |
matsujirushi | 2:46cf70365584 | 46 | for (int i = 1; i < size; i++) |
matsujirushi | 2:46cf70365584 | 47 | { |
matsujirushi | 2:46cf70365584 | 48 | buffer[i] = this->i2c->read(i < size - 1 ? 1 : 0); |
matsujirushi | 2:46cf70365584 | 49 | } |
matsujirushi | 2:46cf70365584 | 50 | this->i2c->stop(); |
matsujirushi | 2:46cf70365584 | 51 | wait_us(100); |
matsujirushi | 2:46cf70365584 | 52 | |
matsujirushi | 1:8e9c00c59101 | 53 | uint8_t data; |
matsujirushi | 1:8e9c00c59101 | 54 | uint8_t event; |
matsujirushi | 1:8e9c00c59101 | 55 | for (int c = 0; c < 18; c++) |
matsujirushi | 1:8e9c00c59101 | 56 | { |
matsujirushi | 2:46cf70365584 | 57 | data = buffer[c]; |
matsujirushi | 2:46cf70365584 | 58 | |
matsujirushi | 1:8e9c00c59101 | 59 | if (c == 10 && data > 1) |
matsujirushi | 1:8e9c00c59101 | 60 | { |
matsujirushi | 1:8e9c00c59101 | 61 | event = (0x01 << (data - 1)) | 0x20; |
matsujirushi | 1:8e9c00c59101 | 62 | return event; |
matsujirushi | 1:8e9c00c59101 | 63 | } |
matsujirushi | 1:8e9c00c59101 | 64 | if (c == 14 && data > 0x1f) |
matsujirushi | 1:8e9c00c59101 | 65 | { |
matsujirushi | 1:8e9c00c59101 | 66 | event = ((data & 0xe0) >> 5) | 0x40; |
matsujirushi | 1:8e9c00c59101 | 67 | return event; |
matsujirushi | 1:8e9c00c59101 | 68 | } |
matsujirushi | 1:8e9c00c59101 | 69 | if (c == 15 && data > 0) |
matsujirushi | 1:8e9c00c59101 | 70 | { |
matsujirushi | 1:8e9c00c59101 | 71 | event = ((data & 0x03) << 3) | 0x40; |
matsujirushi | 1:8e9c00c59101 | 72 | return event; |
matsujirushi | 1:8e9c00c59101 | 73 | } |
matsujirushi | 1:8e9c00c59101 | 74 | } |
matsujirushi | 1:8e9c00c59101 | 75 | |
matsujirushi | 1:8e9c00c59101 | 76 | return 0x00; |
matsujirushi | 1:8e9c00c59101 | 77 | } |
matsujirushi | 1:8e9c00c59101 | 78 | |
matsujirushi | 1:8e9c00c59101 | 79 | const char* MjHover::getEventString(uint8_t eventByte) |
matsujirushi | 1:8e9c00c59101 | 80 | { |
matsujirushi | 1:8e9c00c59101 | 81 | switch (eventByte) |
matsujirushi | 1:8e9c00c59101 | 82 | { |
matsujirushi | 1:8e9c00c59101 | 83 | case 0x22: |
matsujirushi | 1:8e9c00c59101 | 84 | return "Right Swipe"; |
matsujirushi | 1:8e9c00c59101 | 85 | case 0x24: |
matsujirushi | 1:8e9c00c59101 | 86 | return "Left Swipe"; |
matsujirushi | 1:8e9c00c59101 | 87 | case 0x28: |
matsujirushi | 1:8e9c00c59101 | 88 | return "Up Swipe"; |
matsujirushi | 1:8e9c00c59101 | 89 | case 0x30: |
matsujirushi | 1:8e9c00c59101 | 90 | return "Down Swipe"; |
matsujirushi | 1:8e9c00c59101 | 91 | case 0x41: |
matsujirushi | 1:8e9c00c59101 | 92 | return "Tap South"; |
matsujirushi | 1:8e9c00c59101 | 93 | case 0x42: |
matsujirushi | 1:8e9c00c59101 | 94 | return "Tap West"; |
matsujirushi | 1:8e9c00c59101 | 95 | case 0x50: |
matsujirushi | 1:8e9c00c59101 | 96 | return "Tap Center"; |
matsujirushi | 1:8e9c00c59101 | 97 | case 0x48: |
matsujirushi | 1:8e9c00c59101 | 98 | return "Tap East"; |
matsujirushi | 1:8e9c00c59101 | 99 | case 0x44: |
matsujirushi | 1:8e9c00c59101 | 100 | return "Tap North"; |
matsujirushi | 1:8e9c00c59101 | 101 | default: |
matsujirushi | 1:8e9c00c59101 | 102 | return ""; |
matsujirushi | 1:8e9c00c59101 | 103 | } |
matsujirushi | 0:051e1e753af5 | 104 | } |
matsujirushi | 0:051e1e753af5 | 105 | |
matsujirushi | 0:051e1e753af5 | 106 | } // namespace matsujirushi |
matsujirushi | 0:051e1e753af5 | 107 | |
matsujirushi | 0:051e1e753af5 | 108 | |
matsujirushi | 2:46cf70365584 | 109 |