/// <summary> /// Process new packets that are related with BioFeedback Variables /// </summary> /// <param name="packet"></param> public void ProcessBioFeedbackPacket(PhysioPacket packet) { bool existingVariable = false; // Check whether the variable was already configured for (int i = 0; i < bfVariables.Count; i++) { // If the variable name already exists... if (bfVariables[i].name.CompareTo(packet.variableName) == 0) { existingVariable = true; bfVariables[i].values.Add(packet.value); break; } } // New variable to save if (!existingVariable) { BiofeedbackVariable newBfVariable = new BiofeedbackVariable(); newBfVariable.name = packet.variableName; newBfVariable.values = new List <float>() { packet.value }; bfVariables.Add(newBfVariable); } }
private void AdaptationNotified(PhysioPacket packet) { currentValueText.text = packet.value.ToString("F2"); Debug.Log("Adaptation notified: " + packet.variableName + "=" + packet.value); CalculateDayLightAdaptation(packet.value, packet.baseline, packet.target); }
private void CalculationFinished(CalculationJob.ProcessingPacket packet) { Debug.Log("Calculation Finished: " + packet.processedVariable + "," + packet.result.ToString("F2")); switch (packet.typeOfProcessing) { case CalculationJob.TypeOfProcessing.BaselineCalculation: calculatedBaseline = packet.result; // Baseline depending on type of adaptation if (adaptationGoal == AdaptationGoalOptions.DecreaseHR && packet.mathOperation == CalculationJob.MathOperation.Mean) { calculatedTarget = (1.0f - thresholdDecreaseHR) * calculatedBaseline; } else if (adaptationGoal == AdaptationGoalOptions.MaximizeHRV && packet.mathOperation == CalculationJob.MathOperation.MaxMinDifference) { calculatedTarget = (1.0f + thresholdMaximizeHRV) * calculatedBaseline; } OnPhysioBaselineSet(calculatedBaseline, calculatedTarget); OnCurrentTaskChanged("Baseline finished... Variable: " + packet.processedVariable + " New baseline= " + calculatedBaseline.ToString("F1") + "]\n" + " New target= " + calculatedTarget.ToString("F1")); break; case CalculationJob.TypeOfProcessing.AdaptationCalculation: adaptationPacket = new PhysioPacket(); adaptationPacket.variableName = packet.processedVariable; adaptationPacket.value = packet.result; adaptationPacket.baseline = calculatedBaseline; adaptationPacket.target = calculatedTarget; // Send adaptation values to be processed by receiver OnPhysioAdaptationNotified(adaptationPacket); OnCurrentTaskChanged("Calculation finished... New adaptation: [" + adaptationPacket.variableName + "=" + adaptationPacket.value + "]"); break; } StartCoroutine(LockCurrentTaskMessage(1.5f, UnlockCurrentTaskMessage)); }