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); }
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); } }
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(); }
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; } }
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; } }
/* ** 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(); }