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

Dependents:   MjHover_Hello

Revision:
5:bd26aba87b9b
Parent:
4:11a94d34ab58
Child:
6:8d68ac1bab97
--- a/MjHover.cpp	Fri Apr 03 12:29:08 2015 +0000
+++ b/MjHover.cpp	Fri Apr 03 12:51:03 2015 +0000
@@ -2,36 +2,23 @@
 
 namespace matsujirushi {
 
-MjHover::MjHover(I2C* i2c, uint8_t address, DigitalInOut* ts, DigitalInOut* reset_n)
+MjHover::MjHover(I2C* i2c, uint8_t address, DigitalInOut* ts_n, DigitalInOut* reset_n) : MjHoverBase(i2c, address, ts_n, reset_n)
 {
-    this->i2c = i2c;
-    this->address = address & 0xfe;
-    this->ts = ts;
-    this->reset_n = reset_n;
 }
 
 void MjHover::begin()
 {
-    this->ts->input();
-    this->reset_n->output();
-    this->reset_n->write(0);
-    wait_us(100);
-    this->reset_n->input();
-    wait_ms(1000);
+    this->Reset();
 }
 
 void MjHover::setRelease()
 {
-    this->ts->input();
-    wait_us(100);
 }
 
 bool MjHover::getStatus()
 {
-    if (this->ts->read() == 0)
+    if (this->DataAvailable())
     {
-        this->ts->output();
-        this->ts->write(0);
         return false;
     }
     return true;
@@ -39,22 +26,19 @@
 
 uint8_t MjHover::getEvent()
 {
-    this->i2c->start();
-    this->i2c->write(this->address | 1);
-    uint8_t size = this->i2c->read(1);
-    uint8_t buffer[255];
-    buffer[0] = size;
-    for (int i = 1; i < size; i++)
+    uint8_t id;
+    uint8_t payload[255 - 4];
+    uint8_t readPayloadSize;
+    if (!ReadMessage(&id, payload, sizeof (payload), &readPayloadSize))
     {
-        buffer[i] = this->i2c->read(i < size - 1 ? 1 : 0);
+        return 0x00;
     }
-    this->i2c->stop();
     
     uint8_t data;
     uint8_t event;
-    for (int c = 0; c < 18; c++)
+    for (int c = 4; c < 18; c++)
     {
-        data = buffer[c];
+        data = payload[c - 4];
         
         if (c == 10 && data > 1)
         {