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

Fork of Pixart_OFN_A by Hill Chen

Committer:
PixArtHC
Date:
Wed Feb 27 21:08:43 2019 +0000
Revision:
0:4237dc1f43b4
PixArt Optical Finger Navigation, OFN, library for A350 sensor. Initial release v1.0.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PixArtHC 0:4237dc1f43b4 1 /* PixArt Optical Finger Navigation, OFN, sensor driver.
PixArtHC 0:4237dc1f43b4 2 * By PixArt Imaging Inc.
PixArtHC 0:4237dc1f43b4 3 * Primary Engineer: Hill Chen (PixArt USA)
PixArtHC 0:4237dc1f43b4 4 *
PixArtHC 0:4237dc1f43b4 5 * License: Apache-2.0; http://www.apache.org/licenses/LICENSE-2.0
PixArtHC 0:4237dc1f43b4 6 */
PixArtHC 0:4237dc1f43b4 7
PixArtHC 0:4237dc1f43b4 8 #include "Build_info.h"
PixArtHC 0:4237dc1f43b4 9
PixArtHC 0:4237dc1f43b4 10 #ifdef DEBUG
PixArtHC 0:4237dc1f43b4 11 #define DEBUG_PRINT(...) m_pc->printf(__VA_ARGS__)
PixArtHC 0:4237dc1f43b4 12 #else
PixArtHC 0:4237dc1f43b4 13 #define DEBUG_PRINT(...) {}
PixArtHC 0:4237dc1f43b4 14 #endif
PixArtHC 0:4237dc1f43b4 15
PixArtHC 0:4237dc1f43b4 16 #define P_ADDR (0x57 << 1) //A350 I2C address, A1/A0 = high
PixArtHC 0:4237dc1f43b4 17 #define I2C_ADDR P_ADDR
PixArtHC 0:4237dc1f43b4 18 #define PXI_WMI 0x88
PixArtHC 0:4237dc1f43b4 19
PixArtHC 0:4237dc1f43b4 20 class Pixart_OFN
PixArtHC 0:4237dc1f43b4 21 {
PixArtHC 0:4237dc1f43b4 22 private:
PixArtHC 0:4237dc1f43b4 23 Serial *m_pc;
PixArtHC 0:4237dc1f43b4 24 I2C *m_i2c;
PixArtHC 0:4237dc1f43b4 25 Ticker m_ticker;
PixArtHC 0:4237dc1f43b4 26 float m_Period;
PixArtHC 0:4237dc1f43b4 27
PixArtHC 0:4237dc1f43b4 28 int8_t deltaX, deltaY;
PixArtHC 0:4237dc1f43b4 29 int totalX, totalY;
PixArtHC 0:4237dc1f43b4 30
PixArtHC 0:4237dc1f43b4 31 bool Sensor_Init();
PixArtHC 0:4237dc1f43b4 32 //void periodicCallback();
PixArtHC 0:4237dc1f43b4 33
PixArtHC 0:4237dc1f43b4 34 void writeRegister(uint8_t addr, uint8_t data);
PixArtHC 0:4237dc1f43b4 35 uint8_t readRegister(uint8_t addr);
PixArtHC 0:4237dc1f43b4 36
PixArtHC 0:4237dc1f43b4 37 void load(const uint8_t array[][2], uint8_t arraySize);
PixArtHC 0:4237dc1f43b4 38 void grabData(void);
PixArtHC 0:4237dc1f43b4 39 void printData(void);
PixArtHC 0:4237dc1f43b4 40
PixArtHC 0:4237dc1f43b4 41 public:
PixArtHC 0:4237dc1f43b4 42 Pixart_OFN(I2C *i2c, float Period, bool &Result);
PixArtHC 0:4237dc1f43b4 43 Pixart_OFN(I2C *i2c, Serial *pc, float Period, bool &Result);
PixArtHC 0:4237dc1f43b4 44 void periodicCallback();
PixArtHC 0:4237dc1f43b4 45 void print_build_info();
PixArtHC 0:4237dc1f43b4 46 };
PixArtHC 0:4237dc1f43b4 47
PixArtHC 0:4237dc1f43b4 48 const uint8_t initialize[][2] = {
PixArtHC 0:4237dc1f43b4 49 { 0xC9, 0x61 }, //OFN Engine settings.
PixArtHC 0:4237dc1f43b4 50 //{ 0x6C, 0xA0 }, //Set GPIO pin as button input.
PixArtHC 0:4237dc1f43b4 51 };
PixArtHC 0:4237dc1f43b4 52 #define initialize_size (sizeof(initialize)/sizeof(initialize[0]))