using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CommonEntity
{


    public class ts_deviceitem
    {
        public short dev_type { get; set; }
        public short dev_addr { get; set; }
        public short dev_loop { get; set; }
        public int dev_data { get; set; }
    }
    public class ts_faultitem
    {
        public short dev_type { get; set; }
        public short dev_addr { get; set; }
        public short dev_loop { get; set; }
        public short error_type { get; set; }
        public int error_data { get; set; }
    }
    public class ts_controlitem
    {
        public short dev_type { get; set; }
        public short dev_addr { get; set; }
        public short dev_loop { get; set; }
        public short type_l { get; set; }
        public int type_h { get; set; }
    }
    /// <summary>
    /// 0x36
    /// </summary>
    public class DeviceActionData
    {
        public long ts_ms { get; set; }
        public string hotel_id { get; set; }
        public string room_id { get; set; }
        public string device_id { get; set; }
        /// <summary>
        /// "上报" 或 "下发"
        /// </summary>
        public string direction { get; set; }
        public string ip { get; set; }

        public string cmd_word { get; set; }
        public int frame_id { get; set; }
        public byte[] udp_raw { get; set; }
        public int sys_lock_status { get; set; }

        public int report_count { get; set; }
        public int fault_count { get; set; }
        public List<ts_deviceitem> device_list { get; set; }
        public List<ts_faultitem> fault_list { get; set; }
        public List<ts_controlitem> control_list { get; set; }

    }

    public class RegisterInfo
    {
        public long ts_ms { get; set; }
        public long hotel_id { get; set; }
        public string room_id { get; set; }
        public string device_id { get; set; }


        /// <summary>
        /// 1:下发，0:上报 默认0
        /// </summary>
        public ushort is_send { get; set; }
        public byte[] udp_raw { get; set; }
        public string extra { get; set; }

        public int ip_type { get; set; }
        /// <summary>
        /// 机型编号
        /// </summary>
        public string model_num { get; set; }
        public string server_ip { get; set; }
        public string ip { get; set; }
        public string subnet_mask { get; set; }
        public string gateway { get; set; }
        public string dns { get; set; }
        public string app_version { get; set; }
        /// <summary>
        /// RCU 时间，年月日 那种 
        /// </summary>
        public string rcu_time { get; set; }
        public string launcher_version { get; set; }
        public string mac { get; set; }
        public int room_type_id { get; set; }
        public string config_version { get; set; }
        public int room_status { get; set; }
        public string season { get; set; }

        /// <summary>
        /// 系统锁定状态
        /// </summary>
        public int sys_lock_status { get; set; }

        /// <summary>
        /// 授权时间
        /// </summary>
        public string authorization_time { get; set; }
        public string authorization_days { get; set; }
        public string room_num_remark { get; set; }
        public string room_type_remark { get; set; }
        public string room_remark { get; set; }

        public string mcu_name { get; set; }
        public string central_control_name { get; set; }
        public string configure_hotel_name { get; set; }
        public string configure_room_type_name { get; set; }
        public long upgrade_ts_ms { get; set; }
    }
    public record Kafka_XinTiao
    {
        public string current_time { get; set; }
        public long ts_ms { get; set; }
        public string device_id { get; set; }
        public string hotel_id { get; set; }
        public string room_id { get; set; }
        public string ip { get; set; }
    }



        public struct ShengJi_Log
    {
        public string hotel_id { get; set; }
        public string device_id { get; set; }
        public string room_id { get; set; }
        public long ts_ms { get; set; }

        public int is_send { get; set; }
        public byte[] udp_raw { get; set; }
        public object extra { get; set; }

        public string remote_endpoint { get; set; }

        public string md5 { get; set; }
        public int partition { get; set; }
        public int file_type { get; set; }
        public string file_path { get; set; }
        public int upgrade_state { get; set; }
        public string app_version { get; set; }
    }
    /// <summary>
    /// ts 日志
    /// </summary>
    public class NewVersionLog
    {
        public string hotel_id { get; set; }
        public string room_id { get; set; }
        public string device_id { get; set; }
        public string ip { get; set; }

        public int power_state { get; set; }
        public int guest_type { get; set; }
        public int cardless_state { get; set; }
        public ulong service_mask { get; set; }
        public int pms_state { get; set; }
        public int carbon_state { get; set; }
        public int device_count { get; set; }
        public int comm_seq { get; set; }
        public long ts_ms { get; set; }

        public List<NengHaolog> electricity { get; set; }
        public List<KongTiao> air_conditioner { get; set; }
        public extra_data extra { get; set; }

        public int insert_card { get; set; }
        public int bright_g { get; set; }
        public int version { get; set; }

    }
    public class NengHaolog
    {
        public string address { get; set; }
        public double voltage { get; set; }
        public double ampere { get; set; }
        public double power { get; set; }
        public double energy { get; set; }
        public double sum_energy { get; set; }
        public string phase { get; set; }
    }
    public class KongTiao
    {
        public string address { get; set; }
        public int state { get; set; }
        public int model { get; set; }
        public int speed { get; set; }
        public int set_temp { get; set; }
        public int now_temp { get; set; }
        public int solenoid_valve { get; set; }
    }
    public class extra_data
    {
        public byte[] original_byte { get; set; }
        //public string source { get; set; }
        public string ver { get; set; }
        //public object ac { get; set; }
        //public object meter { get; set; }
    }
}
