Skip to content

Commit d55e82e

Browse files
committed
scan handling
1 parent 3c8e9f9 commit d55e82e

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

flic2lib.Maui/FlicManager.android.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Flic2lib.Android;
22
using Android.OS;
3+
using static Android.Provider.Telephony.Mms;
34

45
namespace flic2lib.Maui;
56

@@ -76,19 +77,19 @@ internal void OnScanComplete(int result, int subCode, Flic2Button? button)
7677
if (result == (int)FlicScanResult.SCAN_RESULT_SUCCESS)
7778
{
7879
if (button == null) return;
79-
// Success!
80-
// The button object can now be used
8180
if (_cachedButtons.FirstOrDefault(cb => cb.Uuid == button?.Uuid) is FlicButton { } cachedButton)
8281
{
8382
_cachedButtons.Remove(cachedButton);
8483
}
85-
86-
_cachedButtons.Add(new FlicButton(button));
84+
var btn = new FlicButton(button);
85+
_cachedButtons.Add(btn);
86+
ButtonDiscovered?.Invoke(this, new FlicScanButtonDiscoveredEvent(btn));
87+
ScanEnded?.Invoke(this, new FlicScanEndedEvent((FlicScanResult)result));
8788
}
8889
else
8990
{
9091
// Failed
91-
// oh no ¯\_(ツ)_ /¯
92+
ScanFailed?.Invoke(this, new FlicScanFailedEvent((FlicScanResult)result));
9293
}
9394
}
9495

@@ -112,14 +113,17 @@ public void OnComplete(int result, int subCode, Flic2Button? button)
112113

113114
public void OnConnected()
114115
{
116+
// ignored
115117
}
116118

117119
public void OnDiscovered(string? bdAddr)
118120
{
121+
// ignored
119122
}
120123

121124
public void OnDiscoveredAlreadyPairedButton(Flic2Button? button)
122125
{
126+
// ignored
123127
}
124128
}
125129
}

flic2lib.Maui/FlicManager.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@ public partial class FlicManager : IFlicManager
44
{
55
private readonly IList<FlicButton> _cachedButtons;
66
private readonly static Lazy<FlicManager> _lazyInstance = new(() => new FlicManager(), LazyThreadSafetyMode.ExecutionAndPublication);
7+
public event EventHandler<FlicScanButtonDiscoveredEvent>? ButtonDiscovered;
8+
public event EventHandler<FlicScanEndedEvent>? ScanEnded;
9+
public event EventHandler<FlicScanFailedEvent>? ScanFailed;
710
public static bool IsInitialized { get; private set; }
811
internal static FlicManager Instance => _lazyInstance.Value;
912
public IEnumerable<FlicButton>? Buttons => GetButtons();
10-
13+
1114
private FlicManager()
1215
{
1316
_cachedButtons = new List<FlicButton>();
@@ -24,4 +27,8 @@ public void ClearCache()
2427
public partial FlicButton? GetButtonByUuid(string? uuid);
2528
public partial void ForgetButton(FlicButton button);
2629
private partial IEnumerable<FlicButton>? GetButtons();
27-
}
30+
}
31+
32+
public record FlicScanButtonDiscoveredEvent(FlicButton? Button);
33+
public record FlicScanEndedEvent(FlicScanResult ScanResult);
34+
public record FlicScanFailedEvent(FlicScanResult ScanResult);

flic2lib.Maui/FlicManager.ios.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,18 @@ private void ScanCompletionHandler(FLICButton button, NSError error)
3535
{
3636
if (error != null)
3737
{
38-
// oh no ¯\_(ツ)_/¯
38+
// TODO: test on ios
39+
ScanFailed?.Invoke(this, new FlicScanFailedEvent((FlicScanResult)error.Code));
40+
return;
3941
}
4042
if (_cachedButtons.FirstOrDefault(cb => cb.Uuid == button.Uuid) is FlicButton { } cachedButton)
4143
{
4244
_cachedButtons.Remove(cachedButton);
4345
}
44-
45-
_cachedButtons.Add(new FlicButton(button));
46+
var btn = new FlicButton(button);
47+
_cachedButtons.Add(btn);
48+
ButtonDiscovered?.Invoke(this, new FlicScanButtonDiscoveredEvent(btn));
49+
ScanEnded?.Invoke(this, new FlicScanEndedEvent(FlicScanResult.SCAN_RESULT_SUCCESS));
4650
}
4751

4852
public partial void StopScan()

0 commit comments

Comments
 (0)