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

Pixart_OTS.h

Committer:
PixArtHC
Date:
2019-03-26
Revision:
1:95917b856631
Parent:
0:2a85075b8467

File content as of revision 1:95917b856631:

/* PixArt Optical Finger Navigation, OFN, sensor driver.
 * By PixArt Imaging Inc.
 * Primary Engineer: Hill Chen (PixArt USA)
 *
 * License: Apache-2.0; http://www.apache.org/licenses/LICENSE-2.0
 */

#pragma once
#include "mbed.h"
#include "Build_info.h"
#include "Pixart_ComPort.h"
#include "Pixart_OTS_GrabData.h"
#include "Pixart_OTS_Task.h"
#include "Pixart_OTS_InitSetting.h"

#include <vector>
#include <string>

enum Pixart_OTS_Model
{
    PIXART_OTS_MODEL_9125,
    PIXART_OTS_MODEL_9126,
    PIXART_OTS_MODEL_9150,
    PIXART_OTS_MODEL_9130,
    PIXART_OTS_MODEL_5101,
};

struct Pixart_OTS_Register
{
    uint8_t addr;
    uint8_t value;
};


class Pixart_OTS
{
public:
    Pixart_OTS(Serial &pc, Pixart_ComPort *comPort, Pixart_OTS_GrabData *grabData, Pixart_OTS_Task *task, const std::vector<Pixart_OTS_Register> &initRegisters, const std::string &model, const std::string &HwVer);

    bool sensor_init();
    void periodic_callback();
    static int get_default_i2c_slave_address();
    std::string get_model() const;
    std::string get_HwVer() const;
    
private:
    Serial &m_pc;
    Pixart_ComPort *m_comPort;
    Pixart_OTS_GrabData *m_grabData;
    Pixart_OTS_Task *m_task;
    std::vector<Pixart_OTS_Register> m_initRegisters;
    std::string m_model;
    std::string m_HwVer;

    int16_t m_totalX;
    int16_t m_totalY;
    
    void print_build_info();
};

Pixart_OTS* create_pixart_ots(Pixart_OTS_Model model, Serial &pc, I2C &i2c);
Pixart_OTS* create_pixart_ots(Pixart_OTS_Model model, Serial &pc, SPI &spi, DigitalOut &cs);
Pixart_OTS* create_pixart_ots(Pixart_OTS_Model model, Serial &pc, SPI &spi, DigitalOut &cs, DigitalOut &ldp_enl_pin);