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:
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?

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