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