示例#1
0
        public PositionPage(Position position)
        {
            InitializeComponent();
            var serviceProvider = Startup.ServiceProvider;

            this.wifiConnector             = serviceProvider.GetService <IWifiConnector>();
            this.bluetoothConnector        = serviceProvider.GetService <IBluetoothConnector>();
            this.magneticFieldSensor       = serviceProvider.GetService <MagneticFieldSensor>();
            this.calibrationsService       = serviceProvider.GetService <ICalibrationService>();
            this.positionSignalDataService = serviceProvider.GetService <IPositionSignalDataService>();
            this.positionEstimationService = serviceProvider.GetService <IPositionEstimationService>();
            this.localeProvider            = serviceProvider.GetService <LocaleProvider>();
            this.configuration             = serviceProvider.GetService <Configuration>();
            this.Position = position;

            PositionSignalDataCollection.RefreshCommand = RefreshData_Command;
            PositionSignalDataCollection.ItemsSource    = PositionSignalData;
            Position.PositionSignalData?
            .OrderBy(data => data.SignalType)
            .ThenByDescending(data => data.Strength)
            .ToList()
            .ForEach(data => PositionSignalData.Add(new PositionSignalDataView(data)));

            BindingContext = this;
            timer          = new Timer(configuration !.DataAquisitionInterval * 1000);
            timer.Elapsed += UpdateMonitoringState;
            timer.Start();
            countLabel.Text = count.ToString();
        }
示例#2
0
        private bool IsValidEstimation(PositionSignalData positionSignalData, Measurement measurement)
        {
            var magneticFieldTolerance = 0.5;
            var rssiTolerance          = 20;

            return((positionSignalData.SignalType != SignalType.Magnetometer &&
                    positionSignalData.Min - rssiTolerance <= measurement.Strength &&
                    positionSignalData.Max + rssiTolerance >= measurement.Strength)
                   ||
                   (positionSignalData.SignalType == SignalType.Magnetometer &&
                    positionSignalData.MinY - magneticFieldTolerance <= measurement.Y &&
                    positionSignalData.MaxY + magneticFieldTolerance >= measurement.Y &&
                    positionSignalData.MinZ - magneticFieldTolerance <= measurement.Z &&
                    positionSignalData.MaxZ + magneticFieldTolerance >= measurement.Z));
        }
示例#3
0
 public PositionSignalDataView(PositionSignalData positionSignalData)
 {
     this.PositionSignalData = positionSignalData;
 }