PixArt Optical Finger Navigation, OFN, library for PAW3007 sensor. Initial release v1.0.
Fork of Pixart_OFN by
Pixart_OFN.h
- Committer:
- PixArtHC
- Date:
- 2019-02-26
- Revision:
- 0:a4065043fd57
File content as of revision 0:a4065043fd57:
/* PixArt Optical Finger Navigation, OFN, sensor driver. * By PixArt Imaging Inc. * Primary Engineer: Hill Chen (PixArt USA) * * License: Apache-2.0; http://www.apache.org/licenses/LICENSE-2.0 */ #include "Build_info.h" #ifdef DEBUG #define DEBUG_PRINT(...) m_pc->printf(__VA_ARGS__) #else #define DEBUG_PRINT(...) {} #endif #define P_ADDR (0x33 << 1) //P3003 I2C address, ID1/ID0 = low #define I2C_ADDR P_ADDR #define PXI_WMI 0x30 class Pixart_OFN { private: Serial *m_pc; I2C *m_i2c; Ticker m_ticker; float m_Period; int8_t deltaX, deltaY; int totalX, totalY; bool Sensor_Init(); //void periodicCallback(); void writeRegister(uint8_t addr, uint8_t data); uint8_t readRegister(uint8_t addr); void load(const uint8_t array[][2], uint8_t arraySize); void grabData(void); void printData(void); public: Pixart_OFN(I2C *i2c, float Period, bool &Result); Pixart_OFN(I2C *i2c, Serial *pc, float Period, bool &Result); void periodicCallback(); void print_build_info(); }; const uint8_t initialize[][2] = { //OFN Engine settings. { 0x09,0x5A }, { 0x7F,0x01 }, { 0x23,0x1E }, { 0x2E,0x48 }, { 0x7F,0x00 }, { 0x0D,0x0A }, //IQ_TH { 0x1D,0x1B }, { 0x2A,0x82 }, { 0x2B,0x78 }, { 0x2C,0x50 }, { 0x2D,0x46 }, { 0x3D,0xA1 }, { 0x4C,0x90 }, { 0x4D,0x18 }, { 0x4F,0x10 }, { 0x56,0x00 }, { 0x7A,0x35 }, { 0x09,0x00 }, }; #define initialize_size (sizeof(initialize)/sizeof(initialize[0]))