The MGC3130 is the world’s first electrical-field (E-field) based three-dimensional (3D) tracking and gesture controller
Dependents: NucleoMGC3130 i2c_master
MGC3130.cpp
- Committer:
- yangcq88517
- Date:
- 2015-10-06
- Revision:
- 0:92f17b057d6b
- Child:
- 1:621c4e9238ef
File content as of revision 0:92f17b057d6b:
#include "MGC3130.h" // IS2 true->High, false->Low MGC3130::MGC3130(PinName sda, PinName scl, PinName EI0, bool IS2) :TS_Line(EI0), _i2c_bus(sda,scl), msg(255), sensor() { TS_Line.output(); TS_Line.write(1); _i2c_bus.frequency(FREQUENCY_FULL); if (IS2) _addr = 0x86; else _addr = 0x84; } GestICMsg * MGC3130::readMsg() { TS_Line.input(); if (TS_Line.read() == 0) return NULL; msg.reset(); TS_Line.output(); TS_Line.write(0); _i2c_bus.start(); _i2c_bus.write(_addr | 0x01); int size = _i2c_bus.read(1); msg.set(size); for (int i = 1; i < size - 1; i++) msg.set(_i2c_bus.read(1)); msg.set(_i2c_bus.read(0)); _i2c_bus.stop(); TS_Line.write(1); return &msg; } SensorData * MGC3130::readSensorData() { if (readMsg() != NULL && sensor.convert(&msg)) return &sensor; else return NULL; }