Hover!( Microchip MGC3130 ) library. Now, it is development version. http://www.hoverlabs.co/#hover https://www.switch-science.com/catalog/2124/
MjHover.cpp@1:8e9c00c59101, 2015-02-28 (annotated)
- Committer:
- matsujirushi
- Date:
- Sat Feb 28 07:45:07 2015 +0000
- Revision:
- 1:8e9c00c59101
- Parent:
- 0:051e1e753af5
- Child:
- 2:46cf70365584
Code written.; But NOT tested!
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 | 1:8e9c00c59101 | 5 | MjHover::MjHover(I2C* i2c, uint8_t address, DigitalInOut* ts, DigitalOut* 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 | 1:8e9c00c59101 | 16 | this->reset_n->write(0); |
matsujirushi | 1:8e9c00c59101 | 17 | this->reset_n->write(1); |
matsujirushi | 1:8e9c00c59101 | 18 | wait_ms(3000); |
matsujirushi | 1:8e9c00c59101 | 19 | } |
matsujirushi | 1:8e9c00c59101 | 20 | |
matsujirushi | 1:8e9c00c59101 | 21 | void MjHover::setRelease() |
matsujirushi | 1:8e9c00c59101 | 22 | { |
matsujirushi | 1:8e9c00c59101 | 23 | this->ts->write(1); |
matsujirushi | 1:8e9c00c59101 | 24 | this->ts->input(); |
matsujirushi | 1:8e9c00c59101 | 25 | } |
matsujirushi | 1:8e9c00c59101 | 26 | |
matsujirushi | 1:8e9c00c59101 | 27 | bool MjHover::getStatus() |
matsujirushi | 1:8e9c00c59101 | 28 | { |
matsujirushi | 1:8e9c00c59101 | 29 | if (this->ts->read() == 0) |
matsujirushi | 1:8e9c00c59101 | 30 | { |
matsujirushi | 1:8e9c00c59101 | 31 | this->ts->output(); |
matsujirushi | 1:8e9c00c59101 | 32 | this->ts->write(0); |
matsujirushi | 1:8e9c00c59101 | 33 | return false; |
matsujirushi | 1:8e9c00c59101 | 34 | } |
matsujirushi | 1:8e9c00c59101 | 35 | return true; |
matsujirushi | 1:8e9c00c59101 | 36 | } |
matsujirushi | 1:8e9c00c59101 | 37 | |
matsujirushi | 1:8e9c00c59101 | 38 | uint8_t MjHover::getEvent() |
matsujirushi | 1:8e9c00c59101 | 39 | { |
matsujirushi | 1:8e9c00c59101 | 40 | uint8_t data; |
matsujirushi | 1:8e9c00c59101 | 41 | uint8_t event; |
matsujirushi | 1:8e9c00c59101 | 42 | |
matsujirushi | 1:8e9c00c59101 | 43 | this->i2c->read(this->address, NULL, 0, true); |
matsujirushi | 1:8e9c00c59101 | 44 | for (int c = 0; c < 18; c++) |
matsujirushi | 1:8e9c00c59101 | 45 | { |
matsujirushi | 1:8e9c00c59101 | 46 | data = (uint8_t)this->i2c->read(1); |
matsujirushi | 1:8e9c00c59101 | 47 | if (c == 10 && data > 1) |
matsujirushi | 1:8e9c00c59101 | 48 | { |
matsujirushi | 1:8e9c00c59101 | 49 | event = (0x01 << (data - 1)) | 0x20; |
matsujirushi | 1:8e9c00c59101 | 50 | return event; |
matsujirushi | 1:8e9c00c59101 | 51 | } |
matsujirushi | 1:8e9c00c59101 | 52 | if (c == 14 && data > 0x1f) |
matsujirushi | 1:8e9c00c59101 | 53 | { |
matsujirushi | 1:8e9c00c59101 | 54 | event = ((data & 0xe0) >> 5) | 0x40; |
matsujirushi | 1:8e9c00c59101 | 55 | return event; |
matsujirushi | 1:8e9c00c59101 | 56 | } |
matsujirushi | 1:8e9c00c59101 | 57 | if (c == 15 && data > 0) |
matsujirushi | 1:8e9c00c59101 | 58 | { |
matsujirushi | 1:8e9c00c59101 | 59 | event = ((data & 0x03) << 3) | 0x40; |
matsujirushi | 1:8e9c00c59101 | 60 | return event; |
matsujirushi | 1:8e9c00c59101 | 61 | } |
matsujirushi | 1:8e9c00c59101 | 62 | } |
matsujirushi | 1:8e9c00c59101 | 63 | |
matsujirushi | 1:8e9c00c59101 | 64 | return 0x00; |
matsujirushi | 1:8e9c00c59101 | 65 | } |
matsujirushi | 1:8e9c00c59101 | 66 | |
matsujirushi | 1:8e9c00c59101 | 67 | const char* MjHover::getEventString(uint8_t eventByte) |
matsujirushi | 1:8e9c00c59101 | 68 | { |
matsujirushi | 1:8e9c00c59101 | 69 | switch (eventByte) |
matsujirushi | 1:8e9c00c59101 | 70 | { |
matsujirushi | 1:8e9c00c59101 | 71 | case 0x22: |
matsujirushi | 1:8e9c00c59101 | 72 | return "Right Swipe"; |
matsujirushi | 1:8e9c00c59101 | 73 | case 0x24: |
matsujirushi | 1:8e9c00c59101 | 74 | return "Left Swipe"; |
matsujirushi | 1:8e9c00c59101 | 75 | case 0x28: |
matsujirushi | 1:8e9c00c59101 | 76 | return "Up Swipe"; |
matsujirushi | 1:8e9c00c59101 | 77 | case 0x30: |
matsujirushi | 1:8e9c00c59101 | 78 | return "Down Swipe"; |
matsujirushi | 1:8e9c00c59101 | 79 | case 0x41: |
matsujirushi | 1:8e9c00c59101 | 80 | return "Tap South"; |
matsujirushi | 1:8e9c00c59101 | 81 | case 0x42: |
matsujirushi | 1:8e9c00c59101 | 82 | return "Tap West"; |
matsujirushi | 1:8e9c00c59101 | 83 | case 0x50: |
matsujirushi | 1:8e9c00c59101 | 84 | return "Tap Center"; |
matsujirushi | 1:8e9c00c59101 | 85 | case 0x48: |
matsujirushi | 1:8e9c00c59101 | 86 | return "Tap East"; |
matsujirushi | 1:8e9c00c59101 | 87 | case 0x44: |
matsujirushi | 1:8e9c00c59101 | 88 | return "Tap North"; |
matsujirushi | 1:8e9c00c59101 | 89 | default: |
matsujirushi | 1:8e9c00c59101 | 90 | return ""; |
matsujirushi | 1:8e9c00c59101 | 91 | } |
matsujirushi | 0:051e1e753af5 | 92 | } |
matsujirushi | 0:051e1e753af5 | 93 | |
matsujirushi | 0:051e1e753af5 | 94 | } // namespace matsujirushi |
matsujirushi | 0:051e1e753af5 | 95 | |
matsujirushi | 0:051e1e753af5 | 96 |