// 导入灯光控制常量
import { LIGHT_NORMAL, LIGHT_OPEN, LIGHT_CLOSE, LIGHT_ALARM, LIGHT_RESTART } from '../hardware/Light.js';

/**
 * 执行闸机控制的主要函数
 * @param {string} command - 控制命令，支持 'OPEN', 'SHOTOPEN', 'CLOSE', 'REBOOT', 'ALARM'
 * @returns {Promise<void>} 异步操作结果
 */
const gateController = command => {
    try {
        // 验证输入参数
        if (!command || typeof command !== 'string') {
            console.error('Invalid command: command must be a non-empty string');
            return;
        }

        // 执行闸机控制操作
        plugin.gateConfig.controlGate(command);

        // 根据命令类型控制对应的灯光状态
        if (command === 'OPEN' || command === 'SHOTOPEN') {
            // 开门命令：控制灯光显示开门状态（绿灯常亮）
            plugin.gateConfig.controlLight(JSON.stringify(LIGHT_OPEN));
        } else if (command === 'CLOSE') {
            // 关门命令：控制灯光显示关门状态（红灯常亮）
            plugin.gateConfig.controlLight(JSON.stringify(LIGHT_CLOSE));
        } else if (command === 'REBOOT') {
            // 重启命令：控制灯光显示重启状态（黄灯闪烁）
            plugin.gateConfig.controlLight(JSON.stringify(LIGHT_RESTART));
        } else if (command === 'ALARM') {
            // 报警命令：控制灯光显示报警状态（红灯闪烁）
            plugin.gateConfig.controlLight(JSON.stringify(LIGHT_ALARM));
        } else {
            // 未知命令处理
            console.warn(`Unknown gate control command: ${command}`);
            // 可以设置默认灯光状态或执行其他默认操作
            plugin.gateConfig.controlLight(LIGHT_NORMAL);
        }
    } catch (error) {
        // 错误处理：记录错误信息并防止程序崩溃
        console.error('Error controlling gate:', error);
    }
};


const isGateOpen = () => {
    // 调用插件API查询当前大门状态
    const gateStatus = plugin.gateConfig.getGateStatus();

    // '关闸到位';
    // '左开到位';
    // '右开到位';
    // '运动中或者未到位';
    // '闸门常开';
    // '闸机自检中';
    // '未知门闸状态';

    return !(gateStatus === '关闸到位');
};

// 导出函数供其他模块使用
export { gateController, isGateOpen };