PixArt Optical Finger Navigation, OFN, library for PAW3007 sensor. Initial release v1.0.

Fork of Pixart_OFN by Hill Chen

Committer:
PixArtHC
Date:
Tue Feb 26 18:57:35 2019 +0000
Revision:
0:a4065043fd57
PixArt Optical Finger Navigation, OFN, library for PAW3007 sensor. Initial release v1.0.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PixArtHC 0:a4065043fd57 1 /* PixArt Optical Finger Navigation, OFN, sensor driver.
PixArtHC 0:a4065043fd57 2 * By PixArt Imaging Inc.
PixArtHC 0:a4065043fd57 3 * Primary Engineer: Hill Chen (PixArt USA)
PixArtHC 0:a4065043fd57 4 *
PixArtHC 0:a4065043fd57 5 * License: Apache-2.0; http://www.apache.org/licenses/LICENSE-2.0
PixArtHC 0:a4065043fd57 6 */
PixArtHC 0:a4065043fd57 7
PixArtHC 0:a4065043fd57 8 #include "Build_info.h"
PixArtHC 0:a4065043fd57 9
PixArtHC 0:a4065043fd57 10 #ifdef DEBUG
PixArtHC 0:a4065043fd57 11 #define DEBUG_PRINT(...) m_pc->printf(__VA_ARGS__)
PixArtHC 0:a4065043fd57 12 #else
PixArtHC 0:a4065043fd57 13 #define DEBUG_PRINT(...) {}
PixArtHC 0:a4065043fd57 14 #endif
PixArtHC 0:a4065043fd57 15
PixArtHC 0:a4065043fd57 16 #define P_ADDR (0x33 << 1) //P3003 I2C address, ID1/ID0 = low
PixArtHC 0:a4065043fd57 17 #define I2C_ADDR P_ADDR
PixArtHC 0:a4065043fd57 18 #define PXI_WMI 0x30
PixArtHC 0:a4065043fd57 19
PixArtHC 0:a4065043fd57 20 class Pixart_OFN
PixArtHC 0:a4065043fd57 21 {
PixArtHC 0:a4065043fd57 22 private:
PixArtHC 0:a4065043fd57 23 Serial *m_pc;
PixArtHC 0:a4065043fd57 24 I2C *m_i2c;
PixArtHC 0:a4065043fd57 25 Ticker m_ticker;
PixArtHC 0:a4065043fd57 26 float m_Period;
PixArtHC 0:a4065043fd57 27
PixArtHC 0:a4065043fd57 28 int8_t deltaX, deltaY;
PixArtHC 0:a4065043fd57 29 int totalX, totalY;
PixArtHC 0:a4065043fd57 30
PixArtHC 0:a4065043fd57 31 bool Sensor_Init();
PixArtHC 0:a4065043fd57 32 //void periodicCallback();
PixArtHC 0:a4065043fd57 33
PixArtHC 0:a4065043fd57 34 void writeRegister(uint8_t addr, uint8_t data);
PixArtHC 0:a4065043fd57 35 uint8_t readRegister(uint8_t addr);
PixArtHC 0:a4065043fd57 36
PixArtHC 0:a4065043fd57 37 void load(const uint8_t array[][2], uint8_t arraySize);
PixArtHC 0:a4065043fd57 38 void grabData(void);
PixArtHC 0:a4065043fd57 39 void printData(void);
PixArtHC 0:a4065043fd57 40
PixArtHC 0:a4065043fd57 41 public:
PixArtHC 0:a4065043fd57 42 Pixart_OFN(I2C *i2c, float Period, bool &Result);
PixArtHC 0:a4065043fd57 43 Pixart_OFN(I2C *i2c, Serial *pc, float Period, bool &Result);
PixArtHC 0:a4065043fd57 44 void periodicCallback();
PixArtHC 0:a4065043fd57 45 void print_build_info();
PixArtHC 0:a4065043fd57 46 };
PixArtHC 0:a4065043fd57 47
PixArtHC 0:a4065043fd57 48 const uint8_t initialize[][2] = {
PixArtHC 0:a4065043fd57 49 //OFN Engine settings.
PixArtHC 0:a4065043fd57 50 { 0x09,0x5A },
PixArtHC 0:a4065043fd57 51 { 0x7F,0x01 },
PixArtHC 0:a4065043fd57 52 { 0x23,0x1E },
PixArtHC 0:a4065043fd57 53 { 0x2E,0x48 },
PixArtHC 0:a4065043fd57 54 { 0x7F,0x00 },
PixArtHC 0:a4065043fd57 55 { 0x0D,0x0A }, //IQ_TH
PixArtHC 0:a4065043fd57 56 { 0x1D,0x1B },
PixArtHC 0:a4065043fd57 57 { 0x2A,0x82 },
PixArtHC 0:a4065043fd57 58 { 0x2B,0x78 },
PixArtHC 0:a4065043fd57 59 { 0x2C,0x50 },
PixArtHC 0:a4065043fd57 60 { 0x2D,0x46 },
PixArtHC 0:a4065043fd57 61 { 0x3D,0xA1 },
PixArtHC 0:a4065043fd57 62 { 0x4C,0x90 },
PixArtHC 0:a4065043fd57 63 { 0x4D,0x18 },
PixArtHC 0:a4065043fd57 64 { 0x4F,0x10 },
PixArtHC 0:a4065043fd57 65 { 0x56,0x00 },
PixArtHC 0:a4065043fd57 66 { 0x7A,0x35 },
PixArtHC 0:a4065043fd57 67 { 0x09,0x00 },
PixArtHC 0:a4065043fd57 68 };
PixArtHC 0:a4065043fd57 69 #define initialize_size (sizeof(initialize)/sizeof(initialize[0]))