From 642c13c2eb4729bdcefa58184f311955b28acb5b Mon Sep 17 00:00:00 2001 From: NikolayP Date: Thu, 27 Oct 2022 17:00:56 +0200 Subject: [PATCH] fix: send card information towards CardDisconnected event The bug was that CardDisconnected event fired without any information passed to it. If this is used in a context where multiple readers submit information to one PC, this event did not allow recognizing which specific reader just had a card disconnected from it. --- src/Lando/Cardreader.cs | 4 +++- src/Lando/Watcher/Watcher.cs | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Lando/Cardreader.cs b/src/Lando/Cardreader.cs index 3c45da9..3e57c44 100644 --- a/src/Lando/Cardreader.cs +++ b/src/Lando/Cardreader.cs @@ -158,10 +158,12 @@ internal virtual void OnCardConnected(object sender, WatcherCardEventArgs e) internal virtual void OnCardDisconnected(object sender, WatcherCardEventArgs e) { + var card = new ContactlessCard(e.Card); + Logger.TraceEvent(TraceEventType.Verbose, 0, "Cardreader: Save invocation of CardDisconnected"); Logger.Flush(); - CardDisconnected.SafeInvoke(this, new CardreaderEventArgs((string)null)); + CardDisconnected.SafeInvoke(this, new CardreaderEventArgs(card, e.Card.CardreaderName); } } } \ No newline at end of file diff --git a/src/Lando/Watcher/Watcher.cs b/src/Lando/Watcher/Watcher.cs index d5f8301..fb2212f 100644 --- a/src/Lando/Watcher/Watcher.cs +++ b/src/Lando/Watcher/Watcher.cs @@ -224,7 +224,7 @@ private void Watch() // reset previously connected card and raise the card connected event ForgotAboutCardreaderHadCard(cardreaderStatus.Name); - RaiseCardDisconnectedEvent(); + RaiseCardDisconnectedEvent(currentCard); } } if (newStatuses.Contains(CardreaderStatus.StatusType.CardreaderDisconnected)) @@ -256,12 +256,12 @@ private void RaiseCardConnectedEvent(Card connectedLowlevelCard) AsyncOperation.Post(cb, null); } - private void RaiseCardDisconnectedEvent() + private void RaiseCardDisconnectedEvent(Card connectedLowlevelCard) { Logger.TraceEvent(TraceEventType.Verbose, 0, "Raising CardDisconnected event"); Logger.Flush(); - SendOrPostCallback cb = state => CardDisconnected(null, new WatcherCardEventArgs()); + SendOrPostCallback cb = state => CardDisconnected(null, new WatcherCardEventArgs(connectedLowlevelCard)); AsyncOperation.Post(cb, null); }