40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
const log = require('./logger');
|
|
const { isRK3566, readDeviceModel } = require('./led/detect');
|
|
|
|
function loadImpl() {
|
|
const forced = String(process.env.CLAWD_LED_IMPL || '').trim().toLowerCase();
|
|
const model = readDeviceModel();
|
|
|
|
let name;
|
|
if (forced) {
|
|
name = forced;
|
|
} else if (isRK3566()) {
|
|
name = 'rk3566';
|
|
} else {
|
|
name = 'openvfd';
|
|
}
|
|
|
|
try {
|
|
if (name === 'rk3566' || name === '3566') {
|
|
log.info('led', `LED/VFD backend → rk3566-openvfd (${model || 'unknown model'})`);
|
|
return require('./led/rk3566-openvfd');
|
|
}
|
|
if (name === 'noop' || name === 'none' || name === 'off') {
|
|
log.info('led', `LED/VFD backend → noop (${model || 'unknown model'})`);
|
|
return require('./led/noop');
|
|
}
|
|
if (name !== 'openvfd' && name !== 'default') {
|
|
log.warn('led', `未知 CLAWD_LED_IMPL=${name},回退 openvfd`);
|
|
}
|
|
log.info('led', `LED/VFD backend → openvfd-class (${model || 'unknown model'})`);
|
|
return require('./led/openvfd-class');
|
|
} catch (e) {
|
|
log.warn('led', `LED/VFD backend ${name} 加载失败:${e.message},回退 noop`);
|
|
return require('./led/noop');
|
|
}
|
|
}
|
|
|
|
module.exports = loadImpl();
|