// sysfs functions const fs = require('node:fs'); const LED_PATH = fs.existsSync('/sys/class/leds/ACT') ? '/sys/class/leds/ACT' : '/sys/class/leds/led0'; // detach kernel trigger once at startup try { fs.writeFileSync(`${LED_PATH}/trigger`, 'none'); } catch (err) { console.error(`[LED] failed to claim sysfs led:`, err.message); } let blinkTimer = null; function setBrightness(val) { try { fs.writeFileSync(`${LED_PATH}/brightness`, val.toString()); } catch (err) { console.error(`[LED] error writing brightness:`, err.message); } } function turnOff() { stopBlink(); setBrightness(0); } function turnOn() { stopBlink(); setBrightness(1); } function getState() { try { return parseInt(fs.readFileSync(`${LED_PATH}/brightness`, 'utf8').trim(), 10); } catch { return null; } } function toggle() { setBrightness(getState() === 1 ? 0 : 1); } function startBlink(interval = 500) { stopBlink(); let state = 1; setBrightness(state); blinkTimer = setInterval(() => { state = state === 1 ? 0 : 1; setBrightness(state); }, interval); } function stopBlink() { if (blinkTimer) { clearInterval(blinkTimer); blinkTimer = null; } } function restoreDefault() { stopBlink(); try { fs.writeFileSync(`${LED_PATH}/trigger`, 'mmc0'); } catch {} } module.exports = { turnOff, turnOn, toggle, getState, startBlink, stopBlink, restoreDefault };