PixArt Optical Finger Navigation, OFN, library for A350 sensor. Initial release v1.0.
Fork of Pixart_OFN_A by
Pixart_OFN.h@0:4237dc1f43b4, 2019-02-27 (annotated)
- 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?
User | Revision | Line number | New 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])) |