| 403 | } |
| 404 | |
| 405 | unsigned Smoothing::AddEffectConfig(unsigned cfgID, int settlingTime_ms, double ledUpdateFrequency_hz, bool pause) |
| 406 | { |
| 407 | int64_t interval = (ledUpdateFrequency_hz > std::numeric_limits<double>::epsilon()) ? static_cast<int64_t>(1000.0 / ledUpdateFrequency_hz) : 10; |
| 408 | |
| 409 | if (cfgID < static_cast<unsigned>(_configurations.size())) |
| 410 | { |
| 411 | _configurations[cfgID] = std::unique_ptr<SmoothingConfig>(new SmoothingConfig(pause, settlingTime_ms, interval)); |
| 412 | return cfgID; |
| 413 | } |
| 414 | else |
| 415 | { |
| 416 | for (unsigned int currentCfgID = SMOOTHING_EFFECT_CONFIGS_START; currentCfgID < _configurations.size(); currentCfgID++) |
| 417 | { |
| 418 | auto& element = _configurations[currentCfgID]; |
| 419 | if ((element->settlingTime == settlingTime_ms && |
| 420 | element->updateInterval == interval) || |
| 421 | (pause && element->pause == pause)) |
| 422 | { |
| 423 | return currentCfgID; |
| 424 | } |
| 425 | } |
| 426 | return addConfig(settlingTime_ms, ledUpdateFrequency_hz, pause); |
| 427 | } |
| 428 | } |
| 429 | |
| 430 | void Smoothing::UpdateCurrentConfig(int settlingTime_ms) |
| 431 | { |