Hover!( Microchip MGC3130 ) library. Now, it is development version. http://www.hoverlabs.co/#hover https://www.switch-science.com/catalog/2124/

Dependents:   MjHover_Hello

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?

UserRevisionLine numberNew 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