/
HiddenListenerData.cs
72 lines (64 loc) · 2.12 KB
/
HiddenListenerData.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using Prism.Mvvm;
using Windows.Devices.Bluetooth.Advertisement;
using System.Linq;
namespace HiddenListener
{
public class HiddenListenerData : BindableBase
{
private string _address;
public string Address
{
get { return _address; }
set { SetProperty(ref _address, value); }
}
private DateTimeOffset _timeCaptured;
public DateTimeOffset TimeCaptured
{
get { return _timeCaptured; }
set { SetProperty(ref _timeCaptured, value); }
}
private int _rssi;
public int RSSI
{
get { return _rssi; }
set { SetProperty(ref _rssi, value); }
}
private string _beaconType;
public string BeaconType
{
get { return _beaconType; }
set { SetProperty(ref _beaconType, value); }
}
public HiddenListenerData(BluetoothLEAdvertisementReceivedEventArgs args)
: base()
{
// reformat the address to a more familiar format
var macBytes = BitConverter.GetBytes(args.BluetoothAddress).Take(6).ToArray();
var macString = BitConverter.ToString(macBytes).Replace('-', ':');
Address = macString;
TimeCaptured = args.Timestamp;
RSSI = args.RawSignalStrengthInDBm;
}
public override int GetHashCode()
{
return _address.GetHashCode() ^ _timeCaptured.GetHashCode() ^ _rssi.GetHashCode() ^ _beaconType.GetHashCode();
}
}
public class EddystoneHiddenListenerData : HiddenListenerData
{
public EddystoneHiddenListenerData(BluetoothLEAdvertisementReceivedEventArgs args)
: base(args)
{
BeaconType = "EDDYSTONE";
}
}
public class iBeaconHiddenListenerData : HiddenListenerData
{
public iBeaconHiddenListenerData(BluetoothLEAdvertisementReceivedEventArgs args)
: base(args)
{
BeaconType = "IBEACON";
}
}
}