Files
controller-v2/client/src/config/firmwareFeatures.ts
T
2026-09-21 09:28:56 +08:00

46 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Firmware version gates for UI features.
*
* Versions are compared using `parseFirmwareVersion` (e.g. 29 → 1.0.0.29).
* Adjust thresholds here instead of hardcoding in page components or API helpers.
*/
export const FIRMWARE_FEATURE_MIN_VERSION = {
/** Boot sound: indices 7–10 (-35…-50 dB); legacy firmware caps at index 6. */
bootSoundExtendedSteps: 26,
/** Ambient LED block on System page. */
ambientLed: 28,
/** PEQ preset rename (peqRename) and reorder (peqSoft) in manage dialog. */
peqPresetRenameAndSort: 29,
/** Hearing compensation section on the Effects page. */
hearingCompensation: 30,
/** Headphone max/startup volume rows on the Audio page (hpMaxVolume/hpStartupVolume). */
hpVolumeSettings: 31,
} as const;
export type FirmwareFeatureKey = keyof typeof FIRMWARE_FEATURE_MIN_VERSION;
export function isFirmwareFeatureAvailable(
feature: FirmwareFeatureKey,
firmwareVersion: number,
): boolean {
return firmwareVersion >= FIRMWARE_FEATURE_MIN_VERSION[feature];
}
/** Max `bootSound` select index (0–6 legacy, 0–10 when extended steps are supported). */
export function getBootSoundMaxIndex(firmwareVersion: number): number {
return isFirmwareFeatureAvailable("bootSoundExtendedSteps", firmwareVersion) ? 10 : 6;
}
export function supportsAmbientLed(firmwareVersion: number): boolean {
return isFirmwareFeatureAvailable("ambientLed", firmwareVersion);
}
export function supportsPeqPresetRenameAndSort(firmwareVersion: number): boolean {
return isFirmwareFeatureAvailable("peqPresetRenameAndSort", firmwareVersion);
}
export function supportsHpVolumeSettings(firmwareVersion: number): boolean {
return isFirmwareFeatureAvailable("hpVolumeSettings", firmwareVersion);
}