public void TestThing()
        {
            using (var settingsFile = new TempFile())
                using (var logFile = new TempFile())
                {
                    var settings = new HeartRateSettings(settingsFile);

                    settings.Save();

                    using (var service = new TestHeartRateService(
                               TimeSpan.FromMilliseconds(100)))
                    {
                        var formThread = new Thread(_ =>
                        {
                            using (var form = new HeartRateForm(
                                       service, settingsFile, DateTime.Now))
                            {
                                form.Show();

                                Thread.Sleep(100000);
                            }
                        })
                        {
                            IsBackground = true
                        };

                        formThread.Start();
                    }

                    Thread.Sleep(100000);
                }
        }
Esempio n. 2
0
        public void Test()
        {
            using (var settingsFile = new TempFile())
                using (var logFile = new TempFile())
                {
                    var settings = new HeartRateSettings(settingsFile)
                    {
                        LogFormat = "csv",
                        LogFile   = logFile
                    };

                    settings.Save();

                    const int count = 3;

                    var left = count;

                    using (var mre = new CountdownEvent(count))
                        using (var service = new TestHeartRateService(
                                   TimeSpan.FromMilliseconds(100)))
                        {
                            service.HeartRateUpdated += (status, bpm) =>
                            {
                                if (Interlocked.Decrement(ref left) >= 0)
                                {
                                    mre.Signal();
                                }
                            };

                            var formThread = new Thread(_ =>
                            {
                                using (var form = new HeartRateForm(
                                           service, settingsFile, DateTime.Now))
                                {
                                    form.Show();
                                    mre.Wait();
                                    Thread.Sleep(1000);
                                }
                            })
                            {
                                IsBackground = true
                            };

                            formThread.Start();
                            mre.Wait();
                        }

                    var actual = File.ReadAllText(logFile);
                    // TODO: finish test.
                }
        }
Esempio n. 3
0
        private async Task AnalyzeCandidate(Candidate value)
        {
            // --- Precreate
            //[Heart rate], if not yet existent
            // -> Appropriate Range
            // 60-89 Relaxed
            // 90-99 Warning
            // 100-120 Critical

            try
            {
                var candidateData = JsonConvert.DeserializeObject <HeartRateData>(value.Neuron.Tag);

                MainForm.logger.Info($"Analyzing '{candidateData.Timestamp}'...");

                #region Create
                //Get Events [Timestamp]
                var interneuronId = Guid.NewGuid().ToString();
                await this.neuronApplicationService.CreateNeuron(
                    Properties.Settings.Default.AvatarUrl,
                    interneuronId,
                    HeartRateForm.cleanForJSON($"Get Events {candidateData.Timestamp}"),
                    // -> Original
                    new Terminal[] { new Terminal()
                                     {
                                         TargetId = value.Neuron.NeuronId, Effect = NeurotransmitterEffect.Excite, Strength = 1f
                                     } },
                    Properties.Settings.Default.AnalyzerAuthorId
                    );

                //[Timestamp]
                var timestampId = Guid.NewGuid().ToString();
                await this.neuronApplicationService.CreateNeuron(
                    Properties.Settings.Default.AvatarUrl,
                    timestampId,
                    HeartRateForm.cleanForJSON(candidateData.Timestamp),
                    // -> Get Events[Timestamp]
                    new Terminal[] { new Terminal()
                                     {
                                         TargetId = interneuronId, Effect = NeurotransmitterEffect.Excite, Strength = 0.33333f
                                     } },
                    Properties.Settings.Default.AnalyzerAuthorId
                    );

                #endregion

                #region Update
                //Get
                var getNeuron = (await this.neuronQueryService.GetNeuronById(
                                     Properties.Settings.Default.AvatarUrl,
                                     Properties.Settings.Default.GetId
                                     )).First();
                await this.neuronApplicationService.AddTerminalsToNeuron(
                    Properties.Settings.Default.AvatarUrl,
                    getNeuron.NeuronId,
                    // -> Get Events[Timestamp]
                    new Terminal[] { new Terminal()
                                     {
                                         TargetId = interneuronId, Effect = NeurotransmitterEffect.Excite, Strength = 0.33333f
                                     } },
                    Properties.Settings.Default.AnalyzerAuthorId,
                    getNeuron.Version
                    );

                //Events
                var eventsNeuron = (await this.neuronQueryService.GetNeuronById(
                                        Properties.Settings.Default.AvatarUrl,
                                        Properties.Settings.Default.EventsId
                                        )).First();
                await this.neuronApplicationService.AddTerminalsToNeuron(
                    Properties.Settings.Default.AvatarUrl,
                    eventsNeuron.NeuronId,
                    // -> Get Events[Timestamp]
                    new Terminal[] { new Terminal()
                                     {
                                         TargetId = interneuronId, Effect = NeurotransmitterEffect.Excite, Strength = 0.33333f
                                     } },
                    Properties.Settings.Default.AnalyzerAuthorId,
                    eventsNeuron.Version
                    );

                //Original
                var    rateNeuron = this.heartRateValues.Where(n => n.Tag == candidateData.HeartRate).FirstOrDefault();
                string rateId     = rateNeuron == null ? Properties.Settings.Default.UnknownRateId : rateNeuron.NeuronId;

                await this.neuronApplicationService.AddTerminalsToNeuron(
                    Properties.Settings.Default.AvatarUrl,
                    value.Neuron.NeuronId,
                    new Terminal[] {
                    // -> [Heart rate]
                    new Terminal()
                    {
                        TargetId = rateId, Effect = NeurotransmitterEffect.Excite, Strength = 1
                    },
                    // -> [Timestamp]
                    new Terminal()
                    {
                        TargetId = timestampId, Effect = NeurotransmitterEffect.Excite, Strength = 1
                    },
                    // ->Analyzed
                    new Terminal()
                    {
                        TargetId = Properties.Settings.Default.AnalyzedId, Effect = NeurotransmitterEffect.Excite, Strength = 1
                    },
                },
                    Properties.Settings.Default.AnalyzerAuthorId,
                    value.Neuron.Version
                    );

                #endregion

                value.Status = Candidate.StatusValue.Analyzed;
            }
            catch (Exception ex)
            {
                MainForm.logger.Error($"Error: {ex.ToString()}");
            }
        }