PixArt Optical Track Sensor, OTS, library initial release v1.0. Supports PAT9125, PAT9126, PAT9130, PAA5101. Future to support PAT9150.
Fork of Pixart_OTS by
Pixart_OTS_GrabData.cpp@1:95917b856631, 2019-03-26 (annotated)
- Committer:
- PixArtHC
- Date:
- Tue Mar 26 22:32:06 2019 +0000
- Revision:
- 1:95917b856631
- Parent:
- 0:2a85075b8467
* V1.1 library changes:; * Add support to 5101 LD/LED switching.; * Add support to PAT9150.; * Fixed bug on loading initialization setting.; * Optimized register read timing.
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:95917b856631 | 48 | int16_t deltaX_low = com_port.readRegister(0x03); |
PixArtHC | 1:95917b856631 | 49 | int16_t deltaX_high = 0; |
PixArtHC | 1:95917b856631 | 50 | deltaX_high = com_port.readRegister(0x04) << 8; |
PixArtHC | 1:95917b856631 | 51 | |
PixArtHC | 0:2a85075b8467 | 52 | Pixart_OTS_OtsData otsData; |
PixArtHC | 1:95917b856631 | 53 | otsData.x = deltaX_high | deltaX_low; |
PixArtHC | 0:2a85075b8467 | 54 | otsData.y = 0; |
PixArtHC | 0:2a85075b8467 | 55 | return otsData; |
PixArtHC | 0:2a85075b8467 | 56 | } |