http://wiki.seeed.cc/Grove-Gesture_v1.0/

PAJ7620U2.h

Committer:
matsujirushi
Date:
2017-12-18
Revision:
0:ea8f1bb16afc

File content as of revision 0:ea8f1bb16afc:

#pragma once

class PAJ7620U2 {

private:
	I2C* _I2c;
	uint8_t _SlaveAddress;
	bool _Initialized;

	struct RegisterAddressValue {
		uint8_t Address;
		uint8_t Value;
	};
	static const RegisterAddressValue _InitRegisterArray[];

private:
	bool RegisterWrite(uint8_t address, uint8_t value);
	bool RegisterWrite(uint8_t address, const uint8_t* data, int dataSize);
	bool RegisterRead(uint8_t address, uint8_t* value);
	bool RegisterRead(uint8_t address, uint8_t* data, int dataSize);

public:
//	enum GestureFlag : uint16_t {	// [Warning] scoped enums only available with -std=c++11 or -std=gnu++11
	enum GestureFlag {
		GESTURE_NONE              = 0x0000,
		GESTURE_RIGHT             = 0x0001,
		GESTURE_LEFT              = 0x0002,
		GESTURE_UP                = 0x0004,
		GESTURE_DOWN              = 0x0008,
		GESTURE_FORWARD           = 0x0010,
		GESTURE_BACKWARD          = 0x0020,
		GESTURE_CLOCKWISE         = 0x0040,
		GESTURE_COUNTER_CLOCKWISE = 0x0080,
		GESTURE_WAVE              = 0x0100,
	};

public:
	PAJ7620U2(I2C* i2c, uint8_t address);
	bool Init();
	bool GetGesture(GestureFlag* flag);

};