Example #1
0
void NorStressTestInitialise(const char *prefix)
{
  MakeFullNames(prefix);
  
  yaffs_StartUp();
  yaffs_mount(fullPathName);
  UpdateCounter(fullPowerUpName,&powerUps,1);
  UpdateCounter(fullStartName,&cycleStarts,1);
  UpdateCounter(fullEndName,&cycleEnds,1);
  UpdateCounter(fullPowerUpName,&powerUps,1);
  DoUpdateMainFile();
  DoVerifyMainFile();
  yaffs_unmount(fullPathName);
}
Example #2
0
void NorStressTestRun(const char *prefix)
{
  MakeFullNames(prefix);

  yaffs_StartUp();
  yaffs_mount(fullPathName);
  
  dump_directory_tree(fullPathName);
  
  UpdateCounter(fullPowerUpName,&powerUps,0);
  dump_directory_tree(fullPathName);
  
  while(1){
    UpdateCounter(fullStartName, &cycleStarts,0);
    dump_directory_tree(fullPathName);
    DoVerifyMainFile();
    DoUpdateMainFile();
    dump_directory_tree(fullPathName);
  
    UpdateCounter(fullEndName,&cycleEnds,0);
    dump_directory_tree(fullPathName);
  }
}
Example #3
0
FbFrameGenr::FbFrameGenr(wxAuiNotebook * parent, bool select)
	: FbFrameBase(parent, ID_FRAME_GENR, _("Genres"), select)
{
	m_MasterList = new FbMasterViewCtrl;
	m_MasterList->Create(this, ID_MASTER_LIST, wxDefaultPosition, wxDefaultSize, FbParams.Style());

	CreateBooksPanel(this);
	SplitVertically(m_MasterList, m_BooksPanel);

	CreateControls(select);
	CreateColumns();

	UpdateCounter();
}
Example #4
0
bool Measure::Update(bool rereadOptions)
{
	if (rereadOptions)
	{
		ReadOptions(m_Skin->GetParser());
	}

	// Don't do anything if paused
	if (m_Paused) return false;

	if (!m_Disabled)
	{
		// Only update the counter if the divider
		if (!UpdateCounter()) return false;

		// Call derived method to update value
		UpdateValue();

		if (m_AverageSize > 0)
		{
			size_t averageValuesSize = m_AverageValues.size();

			if (m_AverageSize != averageValuesSize)
			{
				m_AverageValues.resize(m_AverageSize, m_Value);
				averageValuesSize = m_AverageValues.size();
				if (m_AveragePos >= averageValuesSize) m_AveragePos = 0;
			}
			m_AverageValues[m_AveragePos] = m_Value;

			++m_AveragePos;
			m_AveragePos %= averageValuesSize;

			// Calculate the average value
			double value = 0;
			for (size_t i = 0; i < averageValuesSize; ++i)
			{
				value += m_AverageValues[i];
			}
			m_Value = value / (double)averageValuesSize;
		}

		// If we're logging the maximum value of the measure, check if
		// the new value is greater than the old one, and update if necessary.
		if (m_LogMaxValue)
		{
			if (m_MedianValues.empty())
			{
				m_MedianValues.resize(MEDIAN_SIZE, 0);
			}

			m_MedianValues[m_MedianPos] = m_Value;
			++m_MedianPos;
			m_MedianPos %= MEDIAN_SIZE;

			auto medianArray = m_MedianValues;
			std::sort(&medianArray.data()[0], &medianArray.data()[MEDIAN_SIZE]);  // Workaround for "Debug" build mode

			double medianValue = medianArray[MEDIAN_SIZE / 2];
			m_MaxValue = max(m_MaxValue, medianValue);
			m_MinValue = min(m_MinValue, medianValue);
		}

		m_ValueAssigned = true;

		// For the conditional options to work with the current measure value when using
		// [MeasureName], we need to read the options after m_Value has been changed.
		if (rereadOptions)
		{
			m_IfActions.ReadConditionOptions(m_Skin->GetParser(), GetName());
		}

		if (m_Skin)
		{
			m_IfActions.DoIfActions(*this, m_Value);
		}

		return true;
	}
	else
	{
		// Disabled measures have 0 as value
		m_Value = 0.0;

		m_IfActions.SetState(m_Value);

		return false;
	}
}
Example #5
0
bool Measure::Update()
{
    if (!m_Disabled)
    {
        // Only update the counter if the divider
        if (!UpdateCounter()) return false;

        // Call derived method to update value
        UpdateValue();

        if (m_AverageSize > 0)
        {
            size_t averageValuesSize = m_AverageValues.size();

            if (m_AverageSize != averageValuesSize)
            {
                m_AverageValues.resize(m_AverageSize, m_Value);
                averageValuesSize = m_AverageValues.size();
                if (m_AveragePos >= averageValuesSize) m_AveragePos = 0;
            }
            m_AverageValues[m_AveragePos] = m_Value;

            ++m_AveragePos;
            m_AveragePos %= averageValuesSize;

            // Calculate the average value
            double value = 0;
            for (size_t i = 0; i < averageValuesSize; ++i)
            {
                value += m_AverageValues[i];
            }
            m_Value = value / (double)averageValuesSize;
        }

        // If we're logging the maximum value of the measure, check if
        // the new value is greater than the old one, and update if necessary.
        if (m_LogMaxValue)
        {
            if (m_MedianValues.empty())
            {
                m_MedianValues.resize(MEDIAN_SIZE, 0);
            }

            m_MedianValues[m_MedianPos] = m_Value;
            ++m_MedianPos;
            m_MedianPos %= MEDIAN_SIZE;

            auto medianArray = m_MedianValues;
            std::sort(&medianArray.data()[0], &medianArray.data()[MEDIAN_SIZE]);  // Workaround for "Debug" build mode

            double medianValue = medianArray[MEDIAN_SIZE / 2];
            m_MaxValue = max(m_MaxValue, medianValue);
            m_MinValue = min(m_MinValue, medianValue);
        }

        m_ValueAssigned = true;

        if (m_MeterWindow)
        {
            if (!m_IfEqualAction.empty())
            {
                if ((int64_t)m_Value == m_IfEqualValue)
                {
                    if (!m_IfEqualCommitted)
                    {
                        m_IfEqualCommitted = true;	// To avoid infinite loop from !Update
                        GetRainmeter().ExecuteCommand(m_IfEqualAction.c_str(), m_MeterWindow);
                    }
                }
                else
                {
                    m_IfEqualCommitted = false;
                }
            }

            if (!m_IfAboveAction.empty())
            {
                if (m_Value > m_IfAboveValue)
                {
                    if (!m_IfAboveCommitted)
                    {
                        m_IfAboveCommitted = true;	// To avoid infinite loop from !Update
                        GetRainmeter().ExecuteCommand(m_IfAboveAction.c_str(), m_MeterWindow);
                    }
                }
                else
                {
                    m_IfAboveCommitted = false;
                }
            }

            if (!m_IfBelowAction.empty())
            {
                if (m_Value < m_IfBelowValue)
                {
                    if (!m_IfBelowCommitted)
                    {
                        m_IfBelowCommitted = true;	// To avoid infinite loop from !Update
                        GetRainmeter().ExecuteCommand(m_IfBelowAction.c_str(), m_MeterWindow);
                    }
                }
                else
                {
                    m_IfBelowCommitted = false;
                }
            }
        }

        return true;
    }
    else
    {
        // Disabled measures have 0 as value
        m_Value = 0.0;

        // Set IfAction committed state to false if condition is not met with value = 0
        if (m_IfEqualValue != 0)
        {
            m_IfEqualCommitted = false;
        }

        if (m_IfAboveValue <= 0.0)
        {
            m_IfAboveCommitted = false;
        }

        if (m_IfBelowValue >= 0.0)
        {
            m_IfBelowCommitted = false;
        }

        return false;
    }
}
Example #6
0
/*
** Updates the value(s) from the measures. Derived classes should
** only update if this returns true;
*/
bool Meter::Update()
{
	// Only update the meter's value when the divider is equal to the counter
	return UpdateCounter();
}