Files
controller-v2/client/src/config/firmwareFeatures.ts
T
2026-11-04 10:43:43 +08:00

61 lines
2.6 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. 2007 → 2.0.0.7).
* Adjust thresholds here instead of hardcoding in page components.
*/
export const FIRMWARE_FEATURE_MIN_VERSION = {
/** Boot sound: indices 7–10 (-35…-50 dB); legacy firmware caps at index 6. */
bootSoundExtendedSteps: 26,
/** Subwoofer LPF/HPF full-range toggles on the Effects page. */
subwooferFullRange: 2001,
/** Hearing compensation section on the Effects page. */
hearingCompensation: 2007,
/** PEQ preset rename (peqRename) and reorder (peqSoft) in manage dialog. */
peqPresetRenameAndSort: 2008,
/** Audio 页面耳机最大音量和耳机启动音量设置。 */
hpVolumeSettings: 2011,
/** EQ 单个滤波器的 Bypass 开关(旁通时下发 type=10)。 */
peqBandBypass: 2012,
/** 设备语言扩展到 LangType 全枚举(12 种);低于此版本仅前 3 种(0/1/2)可下发设备。 */
extendedDeviceLanguages: 2012,
/** System 页屏幕亮度改为 10 档拖动条(screenLight 下发 0–9);低于此版本保持三档选择列表。 */
screenBrightnessSlider: 2012,
} 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 supportsPeqPresetRenameAndSort(firmwareVersion: number): boolean {
return isFirmwareFeatureAvailable("peqPresetRenameAndSort", firmwareVersion);
}
export function supportsHpVolumeSettings(firmwareVersion: number): boolean {
return isFirmwareFeatureAvailable("hpVolumeSettings", firmwareVersion);
}
export function supportsPeqBandBypass(firmwareVersion: number): boolean {
return isFirmwareFeatureAvailable("peqBandBypass", firmwareVersion);
}
/** 固件是否支持把扩展设备语言(索引 3..11)下发到设备。 */
export function supportsExtendedDeviceLanguages(firmwareVersion: number): boolean {
return isFirmwareFeatureAvailable("extendedDeviceLanguages", firmwareVersion);
}
/** 固件是否支持屏幕亮度 10 档拖动条(screenLight 0–9,数值越大越亮)。 */
export function supportsScreenBrightnessSlider(firmwareVersion: number): boolean {
return isFirmwareFeatureAvailable("screenBrightnessSlider", firmwareVersion);
}