0) { $limitCurrent = min($limitCurrent, (float)$input['groupLimitA']); } if (($input['vnbLimitA'] ?? 0) > 0) { $limitCurrent = min($limitCurrent, (float)$input['vnbLimitA']); } if (($input['vnbLimitW'] ?? 0) > 0) { $limitCurrent = min($limitCurrent, PhaseManager::currentFromPower((float)$input['vnbLimitW'], $phaseCount, $voltage)); } if ($limitCurrent < $minCurrent) { return [0]; } if ($mode === self::MODE_CONSTANT) { $target = min(max($constantCurrent, $safeCurrent), $limitCurrent); return $this->uniqueSorted([0, PhaseManager::wattsFromCurrent($target, $phaseCount, $voltage)]); } $steps = [0]; for ($current = (int)ceil($minCurrent); $current <= (int)floor($limitCurrent); $current++) { $steps[] = PhaseManager::wattsFromCurrent((float)$current, $phaseCount, $voltage); } return $this->uniqueSorted($steps); } private function uniqueSorted(array $steps): array { $steps = array_map(static function ($value) { return (int)round((float)$value); }, $steps); $steps = array_values(array_unique($steps)); sort($steps, SORT_NUMERIC); return $steps; } } ?>