PixArt Optical Track Sensor, OTS, library initial release v1.0. Supports PAT9125, PAT9126, PAT9130, PAA5101. Future to support PAT9150.

Fork of Pixart_OTS by Hill Chen

Committer:
PixArtHC
Date:
Wed Mar 06 21:02:39 2019 +0000
Revision:
0:2a85075b8467
Child:
1:95917b856631
PixArt Optical Track Sensor, OTS, library initial release v1.0. Supports PAT9125, PAT9126, PAT9130, PAA5101. Future to support PAT9150.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PixArtHC 0:2a85075b8467 1 /* PixArt Optical Finger Navigation, OFN, sensor driver.
PixArtHC 0:2a85075b8467 2 * By PixArt Imaging Inc.
PixArtHC 0:2a85075b8467 3 * Primary Engineer: Hill Chen (PixArt USA)
PixArtHC 0:2a85075b8467 4 *
PixArtHC 0:2a85075b8467 5 * License: Apache-2.0; http://www.apache.org/licenses/LICENSE-2.0
PixArtHC 0:2a85075b8467 6 */
PixArtHC 0:2a85075b8467 7
PixArtHC 0:2a85075b8467 8 #include "Pixart_OTS_GrabData.h"
PixArtHC 0:2a85075b8467 9
PixArtHC 0:2a85075b8467 10 Pixart_OTS_OtsData Pixart_OTS_GrabData_12bitXy::grab(Pixart_ComPort &com_port)
PixArtHC 0:2a85075b8467 11 {
PixArtHC 0:2a85075b8467 12 int16_t deltaX_low = com_port.readRegister(0x03);
PixArtHC 0:2a85075b8467 13 int16_t deltaY_low = com_port.readRegister(0x04);
PixArtHC 0:2a85075b8467 14 int16_t deltaX_high = 0, deltaY_high = 0;
PixArtHC 0:2a85075b8467 15
PixArtHC 0:2a85075b8467 16 int16_t deltaXY_h = com_port.readRegister(0x12);
PixArtHC 0:2a85075b8467 17 deltaX_high = (deltaXY_h << 4) & 0xF00;
PixArtHC 0:2a85075b8467 18 deltaY_high = (deltaXY_h << 8) & 0xF00;
PixArtHC 0:2a85075b8467 19
PixArtHC 0:2a85075b8467 20 if (deltaX_high & 0x800)
PixArtHC 0:2a85075b8467 21 deltaX_high |= 0xf000;
PixArtHC 0:2a85075b8467 22 if (deltaY_high & 0x800)
PixArtHC 0:2a85075b8467 23 deltaY_high |= 0xf000;
PixArtHC 0:2a85075b8467 24
PixArtHC 0:2a85075b8467 25 Pixart_OTS_OtsData otsData;
PixArtHC 0:2a85075b8467 26 otsData.x = deltaX_high | deltaX_low;
PixArtHC 0:2a85075b8467 27 otsData.y = deltaY_high | deltaY_low;
PixArtHC 0:2a85075b8467 28 return otsData;
PixArtHC 0:2a85075b8467 29 }
PixArtHC 0:2a85075b8467 30
PixArtHC 0:2a85075b8467 31 Pixart_OTS_OtsData Pixart_OTS_GrabData_16bitXy::grab(Pixart_ComPort &com_port)
PixArtHC 0:2a85075b8467 32 {
PixArtHC 0:2a85075b8467 33 int16_t deltaX_low = com_port.readRegister(0x03);
PixArtHC 0:2a85075b8467 34 int16_t deltaY_low = com_port.readRegister(0x04);
PixArtHC 0:2a85075b8467 35 int16_t deltaX_high = 0, deltaY_high = 0;
PixArtHC 0:2a85075b8467 36
PixArtHC 0:2a85075b8467 37 deltaX_high = com_port.readRegister(0x11) << 8;
PixArtHC 0:2a85075b8467 38 deltaY_high = com_port.readRegister(0x12) << 8;
PixArtHC 0:2a85075b8467 39
PixArtHC 0:2a85075b8467 40 Pixart_OTS_OtsData otsData;
PixArtHC 0:2a85075b8467 41 otsData.x = deltaX_high | deltaX_low;
PixArtHC 0:2a85075b8467 42 otsData.y = deltaY_high | deltaY_low;
PixArtHC 0:2a85075b8467 43 return otsData;
PixArtHC 0:2a85075b8467 44 }
PixArtHC 0:2a85075b8467 45
PixArtHC 0:2a85075b8467 46 Pixart_OTS_OtsData Pixart_OTS_GrabData_16bitXOnly::grab(Pixart_ComPort &com_port)
PixArtHC 0:2a85075b8467 47 {
PixArtHC 0:2a85075b8467 48 Pixart_OTS_OtsData otsData;
PixArtHC 0:2a85075b8467 49 otsData.x = 0;
PixArtHC 0:2a85075b8467 50 otsData.y = 0;
PixArtHC 0:2a85075b8467 51 return otsData;
PixArtHC 0:2a85075b8467 52 }