コード例 #1
0
    /// <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);
        }
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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));
    }