package com.fuyuanshen.global.mqtt.rule.hby100j.domin;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * 设备状态上报数据DTO
 * 对应MQTT消息中设备上报的完整状态数据结构
 */
@Data
public class FuncType14StatusReport {

    /**
     * 设备IMEI号（国际移动设备识别码）
     */
    private String imei;

    /**
     * 功能类型编码（如"14"表示特定功能指令）
     */
    private String funcType;

    /**
     * 响应状态码（如"200"表示成功）
     */
    private String status;

    /**
     * 时间戳（毫秒级Unix时间戳）
     */
    private Long timestamp;

    /**
     * 设备详细状态数据
     */
    private Data data;

    /**
     * 设备详细状态数据内部类
     */
    @lombok.Data
    public static class Data {
        
        /**
         * 语音播报开关：0-关闭，1-开启
         */
        @JsonProperty("voice_broadcast")
        private Integer voiceBroadcast;

        /**
         * 警报器（警笛）设置
         */
        @JsonProperty("siren_alarm")
        private SirenAlarm sirenAlarm;

        /**
         * LED爆闪设置
         */
        @JsonProperty("led_strobe")
        private LedStrobe ledStrobe;

        /**
         * 音量设置（0-100范围）
         */
        @JsonProperty("volume")
        private Integer volume;

        /**
         * 亮度设置（RGB三色亮度值）
         */
        @JsonProperty("brightness")
        private Brightness brightness;
    }

    /**
     * 警报器（警笛）设置
     */
    @lombok.Data
    public static class SirenAlarm {
        
        /**
         * 是否启用：0-禁用，1-启用
         */
        @JsonProperty("enable")
        private Integer enable;

        /**
         * 工作模式：0-默认模式，其他值表示不同报警模式
         */
        @JsonProperty("mode")
        private Integer mode;
    }

    /**
     * LED爆闪设置
     */
    @lombok.Data
    public static class LedStrobe {
        
        /**
         * 是否启用：0-禁用，1-启用
         */
        @JsonProperty("enable")
        private Integer enable;

        /**
         * 工作模式：0-默认模式，其他值表示不同爆闪模式
         */
        @JsonProperty("mode")
        private Integer mode;

        /**
         * 爆闪频率（单位：Hz或自定义单位）
         */
        @JsonProperty("frequency")
        private Integer frequency;
    }

    /**
     * 亮度设置（RGB三色）
     */
    @lombok.Data
    public static class Brightness {
        
        /**
         * 红色通道亮度值（0-255或百分比）
         */
        @JsonProperty("red")
        private Integer red;

        /**
         * 绿色通道亮度值（0-255或百分比）
         */
        @JsonProperty("green")
        private Integer green;

        /**
         * 蓝色通道亮度值（0-255或百分比）
         */
        @JsonProperty("blue")
        private Integer blue;
    }
}
