diff --git a/WaveshareUARTFingerprintSensor.Sample/Program.cs b/WaveshareUARTFingerprintSensor.Sample/Program.cs
index ceb7f0d..1766ee7 100644
--- a/WaveshareUARTFingerprintSensor.Sample/Program.cs
+++ b/WaveshareUARTFingerprintSensor.Sample/Program.cs
@@ -19,9 +19,9 @@ namespace WaveshareUARTFingerprintSensor.Sample
sensor.Start();
- sensor.Waked += s => sensor.Wake();
+ Console.WriteLine("Adding fingerprint");
- sensor.Sleep();
+ var response = sensor.AddFingerprint(40, UserPermission.Level3);
Console.WriteLine("End");
diff --git a/WaveshareUARTFingerprintSensor/FingerprintSensor.cs b/WaveshareUARTFingerprintSensor/FingerprintSensor.cs
index 76fa339..5a71883 100644
--- a/WaveshareUARTFingerprintSensor/FingerprintSensor.cs
+++ b/WaveshareUARTFingerprintSensor/FingerprintSensor.cs
@@ -18,6 +18,7 @@ namespace WaveshareUARTFingerprintSensor
public const string PrimarySerialPort = "/dev/ttyAMA0";
public const string SecondarySerialPort = "/dev/ttyS0";
public const int DefaultTimeout = 10_000;
+ public const int MaxUserID = 0xFFF;
public event WakedEventHandler Waked;
public delegate void WakedEventHandler(FingerprintSensor sender);
@@ -177,6 +178,36 @@ namespace WaveshareUARTFingerprintSensor
_rstPin.Write(GpioPinValue.High);
}
+ public ResponseType AddFingerprint(ushort userID, UserPermission userPermission)
+ {
+ if (userID > MaxUserID)
+ {
+ return ResponseType.Full;
+ }
+
+ CommandType[] commands = { CommandType.AddFingerprint1, CommandType.AddFingerprint2, CommandType.AddFingerprint3 };
+ (byte idHigh, byte idLow) = Utils.Split(userID);
+
+ foreach (var command in commands)
+ {
+ if (TrySendAndReceive(command, idHigh, idLow, (byte)userPermission, out var response))
+ {
+ if (response.responseType != ResponseType.Success)
+ {
+ return response.responseType;
+ }
+ }
+ else
+ {
+ return ResponseType.Timeout;
+ }
+
+ Thread.Sleep(50);
+ }
+
+ return ResponseType.Success;
+ }
+
private void OnWake()
{
if (_wakePin.Read())
diff --git a/WaveshareUARTFingerprintSensor/UserPermission.cs b/WaveshareUARTFingerprintSensor/UserPermission.cs
new file mode 100644
index 0000000..a9f57ff
--- /dev/null
+++ b/WaveshareUARTFingerprintSensor/UserPermission.cs
@@ -0,0 +1,9 @@
+namespace WaveshareUARTFingerprintSensor
+{
+ public enum UserPermission
+ {
+ Level1 = 1,
+ Level2 = 2,
+ Level3 = 3
+ }
+}
\ No newline at end of file
diff --git a/WaveshareUARTFingerprintSensor/WaveshareUARTFingerprintSensor.csproj b/WaveshareUARTFingerprintSensor/WaveshareUARTFingerprintSensor.csproj
index 93b814a..870a979 100644
--- a/WaveshareUARTFingerprintSensor/WaveshareUARTFingerprintSensor.csproj
+++ b/WaveshareUARTFingerprintSensor/WaveshareUARTFingerprintSensor.csproj
@@ -65,6 +65,7 @@
+