The MGC3130 is the world’s first electrical-field (E-field) based three-dimensional (3D) tracking and gesture controller

Dependencies:   BufferedArray

Dependents:   NucleoMGC3130 i2c_master

Committer:
yangcq88517
Date:
Wed Oct 07 20:43:39 2015 +0000
Revision:
1:621c4e9238ef
Parent:
0:92f17b057d6b
Child:
2:c7d984193741
add new functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yangcq88517 0:92f17b057d6b 1 #ifndef UK_AC_HERTS_SMARTLAB_MGC3130
yangcq88517 0:92f17b057d6b 2 #define UK_AC_HERTS_SMARTLAB_MGC3130
yangcq88517 0:92f17b057d6b 3
yangcq88517 0:92f17b057d6b 4 #include "mbed.h"
yangcq88517 0:92f17b057d6b 5 #include "GestICMsg.h"
yangcq88517 0:92f17b057d6b 6 #include "SensorData.h"
yangcq88517 1:621c4e9238ef 7 #include "Parameter.h"
yangcq88517 1:621c4e9238ef 8 #include "TouchDetection.h"
yangcq88517 1:621c4e9238ef 9 #include "AirWheelDetection.h"
yangcq88517 1:621c4e9238ef 10 #include "ApproachDetection.h"
yangcq88517 1:621c4e9238ef 11 #include "TouchInfo.h"
yangcq88517 1:621c4e9238ef 12 #include "OutputEnable.h"
yangcq88517 0:92f17b057d6b 13
yangcq88517 0:92f17b057d6b 14 class MGC3130
yangcq88517 0:92f17b057d6b 15 {
yangcq88517 0:92f17b057d6b 16 private:
yangcq88517 0:92f17b057d6b 17 static const int FREQUENCY_STANDARD = 100000;
yangcq88517 0:92f17b057d6b 18 static const int FREQUENCY_FULL = 400000;
yangcq88517 0:92f17b057d6b 19 static const int FREQUENCY_FAST = 1000000;
yangcq88517 0:92f17b057d6b 20 static const int FREQUENCY_HIGH = 3200000;
yangcq88517 0:92f17b057d6b 21
yangcq88517 0:92f17b057d6b 22 // EI0 Pin
yangcq88517 0:92f17b057d6b 23 // The TS line is used to check whether the I2C data is valid and can be sent from MGC3X30 to the host controller.
yangcq88517 0:92f17b057d6b 24 DigitalInOut TS_Line;
yangcq88517 0:92f17b057d6b 25
yangcq88517 0:92f17b057d6b 26 I2C _i2c_bus;
yangcq88517 0:92f17b057d6b 27 int _speed;
yangcq88517 0:92f17b057d6b 28 int _addr;
yangcq88517 0:92f17b057d6b 29 GestICMsg msg;
yangcq88517 0:92f17b057d6b 30 SensorData sensor;
yangcq88517 0:92f17b057d6b 31
yangcq88517 1:621c4e9238ef 32 protected:
yangcq88517 1:621c4e9238ef 33 GestICMsg * readMsg();
yangcq88517 1:621c4e9238ef 34
yangcq88517 0:92f17b057d6b 35 public:
yangcq88517 0:92f17b057d6b 36 MGC3130(PinName sda, PinName scl, PinName EI0, bool IS2);
yangcq88517 0:92f17b057d6b 37
yangcq88517 0:92f17b057d6b 38 SensorData * readSensorData();
yangcq88517 1:621c4e9238ef 39
yangcq88517 1:621c4e9238ef 40 /*
yangcq88517 1:621c4e9238ef 41 Structure: 16-bit Word containing dedicated values (see list below)
yangcq88517 1:621c4e9238ef 42 Possible values:
yangcq88517 1:621c4e9238ef 43 These error codes are sent by the Library Loader, Library Loader Updater and Library:
yangcq88517 1:621c4e9238ef 44 0x0000 NoError OK
yangcq88517 1:621c4e9238ef 45 0x0001 UnknownCommand Message ID is unknown
yangcq88517 1:621c4e9238ef 46 These error codes are sent by the Library Loader:
yangcq88517 1:621c4e9238ef 47 0x0002 InvalidSessionId Session ID is invalid or
yangcq88517 1:621c4e9238ef 48 does not match
yangcq88517 1:621c4e9238ef 49 (0x0 is not allowed) (message
yangcq88517 1:621c4e9238ef 50 Fw_Update_Start,
yangcq88517 1:621c4e9238ef 51 Fw_Update_Completed)
yangcq88517 1:621c4e9238ef 52 0x003 InvalidCrc CRC is invalid
yangcq88517 1:621c4e9238ef 53 thrown by messages:
yangcq88517 1:621c4e9238ef 54 Fw_Update_Block,
yangcq88517 1:621c4e9238ef 55 Fw_Update_Start,
yangcq88517 1:621c4e9238ef 56 Fw_Update_Completed
yangcq88517 1:621c4e9238ef 57 0x0004 InvalidLength Length is invalid (message
yangcq88517 1:621c4e9238ef 58 Fw_Update_Block)
yangcq88517 1:621c4e9238ef 59 0x0005 InvalidAddress Address is invalid (message
yangcq88517 1:621c4e9238ef 60 Fw_Update_Block)
yangcq88517 1:621c4e9238ef 61 0x0006 InvalidFunction Function-Id is invalid (message
yangcq88517 1:621c4e9238ef 62 Fw_Update_Start,
yangcq88517 1:621c4e9238ef 63 Fw_Update_Block,
yangcq88517 1:621c4e9238ef 64 Fw_Update_Completed)
yangcq88517 1:621c4e9238ef 65 0x0008 ContentMismatch The VerifyOnly function found a mismatch
yangcq88517 1:621c4e9238ef 66 between content and Flash memory (message:
yangcq88517 1:621c4e9238ef 67 Fw_Update_Block)
yangcq88517 1:621c4e9238ef 68 0x000B WrongParameterAddr Parameter Start address, contained in the new
yangcq88517 1:621c4e9238ef 69 Library FW to be loaded, does not match
yangcq88517 1:621c4e9238ef 70 Library Loader assumption.
yangcq88517 1:621c4e9238ef 71 The Library Update is therefore aborted.
yangcq88517 1:621c4e9238ef 72 (message: Fw_Update_Start)
yangcq88517 1:621c4e9238ef 73 These error codes are sent by the Library:
yangcq88517 1:621c4e9238ef 74 0x0014 WrongParameterValue The value of the Argument/Parameter of a
yangcq88517 1:621c4e9238ef 75 RuntimeParameter command is out of the valid
yangcq88517 1:621c4e9238ef 76 range (message: Request_Message and
yangcq88517 1:621c4e9238ef 77 Set_Runtime_Parameter)
yangcq88517 1:621c4e9238ef 78 0x0015 UnknownParameterID The MessageID or RuntimeParameterID is
yangcq88517 1:621c4e9238ef 79 unknown or out of the valid range (message:
yangcq88517 1:621c4e9238ef 80 Request_Message and
yangcq88517 1:621c4e9238ef 81 Set_Runtime_Parameter)
yangcq88517 1:621c4e9238ef 82 0x001A WakeupHappend A wake-up by Host was detected
yangcq88517 1:621c4e9238ef 83 These error codes are sent by the Library Loader Updater:
yangcq88517 1:621c4e9238ef 84 0x0080 LoaderUpdateStarted The Library Loader update started
yangcq88517 1:621c4e9238ef 85 0x0081 LoaderUpdateFinished The Library Loader update finished
yangcq88517 1:621c4e9238ef 86 */
yangcq88517 1:621c4e9238ef 87 int setRuntimeParameter(Parameter * para);
yangcq88517 0:92f17b057d6b 88 };
yangcq88517 0:92f17b057d6b 89
yangcq88517 0:92f17b057d6b 90 #endif