private void LoadConfiguration() { var directory = Directory.GetCurrentDirectory(); if (!File.Exists(_configFilePath)) { BleSystemConfiguration = new BleSystemConfiguration(); return; } else { string json; using (var reader = new StreamReader(File.OpenRead(_configFilePath))) { json = reader.ReadToEnd(); } BleSystemConfiguration = JsonConvert.DeserializeObject <BleSystemConfiguration>(json); if (BleSystemConfiguration.BleTransmitters.HasSomething()) { float offset = 0; foreach (var t in BleSystemConfiguration.BleTransmitters.Values) { t.VisualOffset = offset; offset += 0.2f; t.Position = new PointF(0, 0); } } } }
public EventMapper(BleSystemConfiguration systemConfiguration) { var receiverPaths = systemConfiguration.ReceiverPaths; _useWeightedPath = systemConfiguration.UseWeightedPaths; _receiverPaths = receiverPaths.ToDictionary(rp => rp); _eventGroupHandler = new ActionBlock <List <SignalEventDetails> >(deg => HandleEventGroup(deg), new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 1 }); _eventsByReceiver = new Dictionary <BleReceiver, Dictionary <string, SignalEventDetails> >(systemConfiguration.BleReceivers.Count); _monitoredReceivers = systemConfiguration.BleReceivers.Values.ToList(); _monitoredTransmitters = systemConfiguration.BleTransmitters.Values.ToList(); _receiverPathsTree = new Dictionary <BleReceiver, Dictionary <ReceiverPath, ReceiverPath> >(); foreach (var bleReceiver in _monitoredReceivers) { if (_eventsByReceiver.ContainsKey(bleReceiver)) { continue; } var pathDictionary = new Dictionary <ReceiverPath, ReceiverPath>(); _receiverPathsTree.Add(bleReceiver, pathDictionary); foreach (var receiverPath in receiverPaths) { if (Equals(receiverPath.From, bleReceiver) || Equals(receiverPath.To, bleReceiver)) { pathDictionary.Add(receiverPath, receiverPath); } } var receiverTransmitters = new Dictionary <string, SignalEventDetails>(_monitoredTransmitters.Count); _monitoredTransmitters.ForEach(t => { if (receiverTransmitters.ContainsKey(t.MacAddress)) { return; } receiverTransmitters.Add(t.MacAddress, new SignalEventDetails { Transmitter = t, BleReceiver = bleReceiver }); }); _eventsByReceiver.Add(bleReceiver, receiverTransmitters); } _scanTimer = new Timer(ScanInterval); _scanTimer.Elapsed += ScanIntervalElapsed; _scanTimer.Enabled = true; }
private void PrepareMap(BleSystemConfiguration configuration) { //_mapSizeMetric = new SizeF(60f,60f); //_conversionRatio = new SizeF((float) (MapCanvas.Width/_mapSizeMetric.Width), (float) (MapCanvas.Height/_mapSizeMetric.Height)); _conversionRatio = new SizeF(20f, 20f); _mapOrigin = new PointF(20, 20); SetOrigin(); _receiverDetections = new Dictionary <string, Dictionary <string, Ellipse> >(); foreach (var bleReceiver in configuration.BleReceivers) { if (!bleReceiver.Value.IsEnabled) { continue; } AddReceiver(bleReceiver.Value); AddReceiverTransmitters(bleReceiver.Value, configuration.BleTransmitters); } _transmitterPositions = new Dictionary <string, FrameworkElement>(configuration.BleTransmitters.Count); foreach (var bleTransmitter in configuration.BleTransmitters) { AddTransmitter(bleTransmitter.Value); } AddRoomContour(); }
public MapWindow(BleSystemConfiguration configuration) { InitializeComponent(); PrepareMap(configuration); }