package com.njzscloud.supervisory.device.pojo.result;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

@Getter
@Setter
@ToString
@Accessors(chain = true)
public class DeviceInfoResult {
    private String terminalId;

    // region GPS定位状态
    /**
     * 这是 GPS 定位的核心状态，三个参数分别代表：
     * 1. 定位有效性：V = Valid（有效定位），若为N则表示 No Valid（无效定位，如无卫星信号）；
     * 2. 卫星数量：0 = 当前参与定位的卫星数量（此处为 0，可能是瞬时值或信号弱导致，正常定位时通常≥4）；
     * 3. 定位精度 / 备用参数：0 = 部分设备此处代表定位精度（单位：米），或备用状态码（具体需结合设备型号，途强部分设备此参数为 “定位类型”，0 = 未知，1=GPS，2 = 北斗）。
     */
    private String gpsValid; // 定位有效性(V/N)
    private int satelliteCount; // 卫星数量
    private int gpsAccuracy; // 定位精度或备用参数
    /**
     * GPS 模块硬件状态：OK = GPS 模块正常工作（供电、硬件无故障）；若为ERR则表示 GPS 模块故障（如硬件损坏、供电异常）。
     */
    private String gpsModuleStatus; // GPS模块状态(OK/ERR)
    // endregion

    // region 网络与信号状态
    private String serverIp; // 服务器IP
    private int serverPort; // 服务器端口
    /**
     * 2G/4G 网络注册状态（CGREG 是 GSM/UMTS 网络的 “小区注册状态” 指令）：
     * 1 = 设备已成功注册到本地移动网络（可正常联网）；
     * 其他常见值：0= 未注册，2= 正在注册，3= 注册被拒绝（如 SIM 卡欠费、无信号）
     */
    private int cgregStatus; // 网络注册状态
    /**
     * 网络信号强度（CSQ = Carrier Signal Quality，载波信号质量）：
     * 取值范围0-31，22属于良好信号（12-20 为中等，21-31 为良好，0 为无信号）；
     * 对应信号强度约为 -78dBm（CSQ 与 dBm 换算公式：dBm = -113 + (CSQ×2)，22 时即 - 113+44=-69dBm，数值越接近 0 信号越强）。
     */
    private int csq; // 信号强度
    // endregion

    // region 硬件与电源状态
    /**
     * 设备内置电池电压：单位为 “V（伏特）”，3.5V 属于正常电压范围（途强设备电池电压通常在 3.3V-4.2V 之间，低于 3.3V 可能触发低电报警）。
     */
    private double batteryVoltage; // 电池电压(V)
    /**
     * 供电模式 / 电池状态：
     * 常见含义（途强设备自定义）：1= 外接电源供电（如车充、市电），2= 电池供电，0= 供电异常；
     * 部分设备此参数代表 “电池健康度”，2= 良好（需结合具体型号确认）。
     */
    private int powerMode; // 供电模式(1=外接电源,2=电池)
    /**
     * 北斗定位模块状态（BD = BeiDou）：
     * 0 = 北斗模块未启用 / 未定位（若设备支持北斗，此值为1表示北斗已参与定位）；0不代表故障，仅表示当前未使用北斗信号。
     */
    private int beidouStatus; // 北斗模块状态(0=未启用,1=启用)
    // endregion

    // region 功能与附加状态
    /**
     * 报警状态：* = 无当前报警（途强设备常用 “*” 表示无报警，若有报警会显示具体报警码，如A:1= 低电报警，A:2= 位移报警）
     */
    private String alarmStatus; // 报警状态(*)
    /**
     * 计数器 / 里程相关：常见为 “累计里程计数状态” 或 “指令执行计数”，0通常表示 “无异常” 或 “初始值”（部分设备此为 “充电次数”，需结合型号）。
     */
    private int counter; // 计数器/里程相关
    /**
     * 定位上报间隔：单位为 “秒”，300 = 设备每 5 分钟自动上报一次定位数据（途强设备支持远程配置此间隔，如 10 秒、60 秒、300 秒等）
     */
    private int reportInterval; // 定位上报间隔(秒)
    /**
     * 超速阈值
     */
    private int speedThreshold; // 超速阈值(km/h)
    /**
     * 关闭日志
     */
    private int logOff; // 关闭日志(0=关闭,1=开启)
    /**
     * 关闭拐点
     */
    private int inflectionPointOff; // 拐点关闭状态(0=关闭,1=开启)
    private int heartbeatInterval; // 心跳包间隔(秒)
    /**
     * 关闭基站
     */
    private int baseStationOff; // 基站关闭状态(1=关闭,0=开启)
    private int chargingStatus; // 充电状态(0=未充电,1=充电中)
    private int bluetoothStatus; // 蓝牙状态(1=开启,0=关闭)
    private int enableWarn; // 蓝牙状态(1=开启,0=关闭)
    private String extendStatus; // 扩展状态码(十六进制)
    private String temperature; // 温度传感器状态
    private String deviceTime; // 设备本地时间
    private int agpsStatus; // AGPS状态(1=开启,0=关闭)
    private String displacement; // 位移距离
    private int speedStatus; // 速度状态(0=静止)
    private String deviceId; // 设备ID/IMEI后7位
    private int lowBatteryThreshold; // 低电阈值状态
    private int accelerometerStatus; // 加速度传感器状态
    private int flightMode; // 飞行模式(0=关闭,1=开启)
    // endregion

}
