SparkFun Fingerprint Sensor - FPC2534 Pro  v0.9.9-3-g5d0d172
Library for the SparkFun Fingerprint Sensor - FPC2534 Pro
Loading...
Searching...
No Matches
sfDevFPC2534I2C.h
Go to the documentation of this file.
1/*
2 *---------------------------------------------------------------------------------
3 *
4 * Copyright (c) 2025, SparkFun Electronics Inc.
5 *
6 * SPDX-License-Identifier: MIT
7 *
8 *---------------------------------------------------------------------------------
9 */
10
11#pragma once
12
13// from the FPC SDK
14#include "fpc_api.h"
15
16#include <Arduino.h>
17#include <Wire.h>
18
19#include "sfDevFPC2534IComm.h"
20
21// The default I2C address for the FPC2534
22const uint8_t kFPC2534DefaultAddress = 0x24;
23
24// Define an interface to perform the needed read actions for the I2C protocol - this is needed since
25// the FPC2534 uses a custom I2C read protocol that the standard Arduino Wire library does not support.
26//
28{
29 public:
30 virtual void initialize(uint8_t i2cBusNumber) = 0;
31 virtual uint16_t readPayload(size_t len, uint8_t *data) = 0;
32 virtual uint16_t readTransferSize(uint8_t device_address) = 0;
33};
34
35// i2c impl for the FPC2534 communication interface
36
38{
39 public:
41 bool initialize(uint8_t address, TwoWire &wirePort, uint8_t i2cBusNumber, uint32_t interruptPin);
42 bool dataAvailable();
43 void clearData();
44 uint16_t write(const uint8_t *data, size_t len);
45 uint16_t read(uint8_t *data, size_t len);
46
47 private:
48 bool fifo_enqueue(uint8_t *data, size_t len);
49 bool fifo_dequeue(uint8_t *data, size_t len);
50
51 uint8_t _i2cAddress;
52 TwoWire *_i2cPort;
53 uint8_t _i2cBusNumber;
54
55 // Internal data buffer items
56 static constexpr size_t kDataBufferSize = 2048;
57
58 uint8_t _dataBuffer[kDataBufferSize];
59
60 // using a circular buffer ...
61 uint16_t _dataHead;
62 uint16_t _dataTail;
63 uint16_t _dataCount;
64};
Definition: sfDevFPC2534I2C.h:28
virtual uint16_t readPayload(size_t len, uint8_t *data)=0
virtual void initialize(uint8_t i2cBusNumber)=0
virtual uint16_t readTransferSize(uint8_t device_address)=0
Definition: sfDevFPC2534I2C.h:38
bool initialize(uint8_t address, TwoWire &wirePort, uint8_t i2cBusNumber, uint32_t interruptPin)
Definition: sfDevFPC2534I2C.cpp:38
uint16_t read(uint8_t *data, size_t len)
Definition: sfDevFPC2534I2C.cpp:152
uint16_t write(const uint8_t *data, size_t len)
Definition: sfDevFPC2534I2C.cpp:86
bool dataAvailable()
Definition: sfDevFPC2534I2C.cpp:62
sfDevFPC2534I2C()
Definition: sfDevFPC2534I2C.cpp:33
void clearData()
Definition: sfDevFPC2534I2C.cpp:74
Definition: sfDevFPC2534IComm.h:19
FPC AllKey Pro API.
const uint8_t kFPC2534DefaultAddress
Definition: sfDevFPC2534I2C.h:22