using System; using System.Collections.Generic; using Newtonsoft.Json.Linq; namespace ZigBee.Device { public class ZbGatewayData { #region 一堆变量 /// /// 住宅ID /// public string HomeId = string.Empty; /// ///网关序列号,该网关唯一标识 /// public string GwId = string.Empty; /// ///网关绑定网卡的mac地址 /// public string GwMac = string.Empty; /// ///网关名称 /// public string GwName = string.Empty; /// /// 网关的序列号 /// public string GwSerialNum = string.Empty; /// ///是否为主网关。(因为在外网的情况下,这个字段可以获取到,用来更新局域网中基本信息的对象中的主网关信息) ///0:否 ///1:是 /// public bool IsMainGateWay; /// ///网关所在局域网的ip地址 /// public string GwIP = string.Empty; /// /// 该网关应用程序版本(网关固件日期??) /// public long GwVersionDate = 0; /// ///Linux网关类型(也叫网关镜像类型) /// public int LinuxImageType = -1; /// ///Linux网关硬件版本 /// public int LinuxHardVersion = -1; /// /// Linux网关固件版本 /// public int LinuxFirmwareVersion = -1; /// /// 协调器硬件版本 /// public int CoordinatorHardVersion = -1; /// /// 协调器固件版本 /// public int CoordinatorFirmwareVersion = -1; /// /// 协调器镜像ID /// public int CoordinatorImageId = -1; /// /// 虚拟驱动信息 /// public List DriveCodeList = new List(); /// /// 虚拟网关 /// [Newtonsoft.Json.JsonIgnore] public bool IsVirtual; /// /// 最后的更新时间 /// [Newtonsoft.Json.JsonIgnore] public DateTime LastDateTime = DateTime.MinValue; /// /// 网关在线的时间点(这个东西有点用处,当第一次获取时,需要返回当前时间回去,然后才开始计时) /// [Newtonsoft.Json.JsonIgnore] private DateTime m_OnlineTime = new DateTime(1970, 1, 1); /// /// 网关在线的时间点 /// [Newtonsoft.Json.JsonIgnore] public DateTime OnlineTime { get { if (m_OnlineTime.Year == 1970) { //当第一次获取时,需要返回当前时间回去,然后才开始计时 m_OnlineTime = DateTime.Now; } return m_OnlineTime; } set { m_OnlineTime = value; } } #endregion #region 网关信息. /// /// 网关版本信息,网关反馈信息 /// [System.Serializable] public class GetGwVersionAllData : CommonDevice.ErrorResponCommon { /// /// 网关版本信息 /// public GetGwVersionData getGwVersion; } /// /// 网关版本信息 /// [System.Serializable] public class GetGwVersionData { /// /// 该网关应用程序版本 /// public long AppVersion; /// /// Zigbee协议器程序版本 /// public int ZigbeeVersion; } #endregion #region 获取网关信息. /// /// 网关信息,网关反馈具体信息 /// [System.Serializable] public class GetGwAllData : CommonDevice.ErrorResponCommon { /// /// 网关信息 /// public GetGwData getGwData; } /// /// 网关信息(屏蔽掉了一些目前不使用的变量) /// [System.Serializable] public class GetGwData { /// ///网关序列号,该网关唯一标识 /// public string GwId; /// ///网关绑定网卡的mac地址 /// public string GwMac; /// ///网关名称 /// public string GwName; /// /// 网关的序列号 /// public string GWSN = string.Empty; /// ///是否为主网关。(因为在外网的情况下,这个字段可以获取到,用来更新局域网中基本信息的对象中的主网关信息) ///0:否 ///1:是 /// public int IsDominant; /// ///utc时间戳,程序启动时网关的系统时间 /// public long StartTime; /// ///加入局域网模式 ///0:wifi连接局域网 ///1:有线连接局域网 ///2:未加入局域网 /// public int JoinMode; /// ///网关所在局域网的ip地址 /// public string GwIP; /// /// 主人的Guid(即使是管理员,这里也是主人的Guid) /// public string AccountId; /// ///当前局域网网络号占用位数,用于计算子网掩码,如Mask=32,则子网掩码为255.255.255.0 /// public int Mask; /// ///上级路由器无线名称 ///当 JoinMode = 0时存在 /// public string RouteESSID; /// ///DNS服务器地址 /// public string DNSServer; /// /// 该网关应用程序版本(网关固件日期??) /// public long AppVersion; /// /// Zigbee协议器程序版本 /// public int ZigbeeVersion; /// ///协调器mac地址 /// public string ZigbeeMacAddr; /// ///网关宅id /// public string HomeId; /// ///是否已经连接云端mqtt ///0:否 ///1:是 /// public int IsConnectCloud; /// ///(用于网关程序调试) ///https登陆云端时,最近一次获取的响应状态码。根据云端的定义,有如下状态码。 ///(1)Success,则[调用此接口操作成功] ///(2)ParameterOrEmpty,则响应字段中[ErrorInfo] 为错误信息[提交错误信息] ///(3)NoBind,则响应字段中[ErrorInfo] 为错误信息[您所提交的[GatewayUniqueId 网关唯一Id(MAC)]和[住宅主键Id]不存在绑定的关系] ///(4)YouDataNoIsLocalRegion,则响应字段中[ErrorInfo] 为错误信息[您的的数据并不在此HDL区域服务器, 请重定向到如下HDL区域服务器进行处理.] /// public string StateCode; /// ///Linux网关类型 /// public int LinuxImageType; /// ///Linux网关HW版本 /// public int LinuxHWVersion; /// /// Linux网关FW版本 /// public int LinuxFWVersion; /// /// 协调器HW版本 /// public int ZbHWVersion; /// /// 协调器FW版本 /// public int ZbFWVersion; /// /// 网关镜像类型 /// public int ZbImageType; /// /// 虚拟驱动信息 /// public List DriveCodeList = new List(); } #endregion #region 修改网关名称 /// /// 修改网关名称,网关反馈具体信息 /// [System.Serializable] public class GwReNameAllData : CommonDevice.ErrorResponCommon { /// /// 修改网关名称 /// public GwReNameData gwReNameData; } /// /// 修改网关名称 /// [System.Serializable] public class GwReNameData { /// /// 修改后的网关名称 /// public string GwName; } #endregion #region 设定网关住宅id /// /// 网关住宅id数据,网关反馈具体信息 /// [System.Serializable] public class GwSetHomeIdAllData : CommonDevice.ErrorResponCommon { /// /// 网关住宅id数据 /// public GwSetHomeIdData gwSetHomeIdData; } /// /// 网关住宅id数据 /// [System.Serializable] public class GwSetHomeIdData { /// /// 住宅id /// public string HomeId; } /// /// 广播发现协议(屏蔽掉了一些目前不用的变量) /// [System.Serializable] public class GatewayBaseInfo { /// /// 网关Ip地址 /// public string IpAddress; /// /// 住宅id,4字节整型。(小端结构)如果网关不设置宅id,将默认为0 /// public string HomeId = string.Empty; /// /// 网关当前时间戳(小端结构) /// [Newtonsoft.Json.JsonIgnore] public int Time; /// /// 是否为主网关 /// public bool IsMainGateWay; /// /// 网关名称 /// public string GwName; /// /// 网关ID /// public string gwID; } /// /// 网关成为主网关时广播通知 /// [System.Serializable] public class MainGatewayBaseInfo { /// /// 发送方的ip地址 /// public string IpAddress; /// /// 住宅id,4字节整型。(小端结构)如果网关不设置住宅id,将默认为0 /// public string HomeId; /// /// 数据命令标识 /// public int Command_Id = 0x03; /// /// 保留 /// public int Retain = 0x00; /// /// 网关当前时间戳(小端结构) /// public int Time; /// /// RSA公钥 /// public string PubKey; /// /// 网关名称 /// public string gwName; /// /// 网关ID /// public string gwID; } #endregion #region 网关恢复出厂设置 /// /// 网关恢复出厂设置返回的数据. /// [System.Serializable] public class GwLinuxResetResponData : CommonDevice.ErrorResponCommon { /// /// 0:命令已接收,系统即将恢复出厂并重启。 /// public int Result = 2; } #endregion #region 重启网关系统 /// /// 重启网关系统返回数据 /// [System.Serializable] public class GwRebootResponAllData : CommonDevice.ErrorResponCommon { /// /// 返回值是0:命令已接收,系统即将重启。 /// public int Result = 999; } /// /// 重启网关系统返回数据 /// [System.Serializable] public class GwRebootResponData { /// /// 0:命令已接收,系统即将重启。 /// public int Result = 999; } #endregion #region 网关和协调器升级 /// /// 保存zigbee协调器组网信息,网关反馈具体信息 /// [System.Serializable] public class SaveNVFileResponseAllData : CommonDevice.ErrorResponCommon { /// /// 保存zigbee协调器组网信息 /// public SaveNVFileResponseData saveNVFileResponseData; } /// /// 保存zigbee协调器组网信息 /// [System.Serializable] public class SaveNVFileResponseData { /// /// 修改后的网关名称 ///0:保存成功 ///1:文件创建失败 ///2:NV分区读取出错 /// public int Flag = 999; } #endregion #region 协调器恢复组网信息 /// /// 协调器恢复组网信息,网关反馈具体信息 /// [System.Serializable] public class RestoreNVAllDtta : CommonDevice.ErrorResponCommon { /// /// 协调器恢复组网信息 /// public RestoreNVDtta restoreNVDtta; } /// /// 协调器恢复组网信息 /// [System.Serializable] public class RestoreNVDtta { /// /// 修改后的网关名称 /// 0:恢复成功 ///1:文件不存在,恢复失败 ///2:NV分区写入错误,恢复失败 ///7:文件不合法 /// public int Flag = 999; } #endregion #region 协调器升级 /// /// 下载进度 /// /// 启动升级 /// [Newtonsoft.Json.JsonIgnore] public CommonDevice.OTAScheduleResponData oTAScheduleResponData = null; /// /// 协调器升级,网关反馈具体信息 /// [System.Serializable] public class ZbGwOperationUpgradeAllData : CommonDevice.ErrorResponCommon { /// /// 协调器升级 /// public ZbGwOperationUpgradeData bGwOperationUpgradeData; } /// /// 协调器升级 /// [Newtonsoft.Json.JsonIgnore] public ZbGwOperationUpgradeData zbGwOperationUpgradeData; /// /// 协调器升级 /// [System.Serializable] public class ZbGwOperationUpgradeData { /// /// 修改后的网关名称 /// 0:升级完成 ///1:没有找到升级文件,或升级文件打开失败。 ///2:正在升级 ///3:写入分区出错 ///7:升级文件不合法。 ///8:未知错误 ///9:升级文件名称中无“ZBMODULE”标识。 /// public int Flag = 999; /// /// 修改后的网关名称 /// 升级进度。0-100表示0-100% ,该字段在Flag =2时才存在 /// public int Percent; } #endregion #region 升级虚拟驱动设备数据 /// /// 升级虚拟驱动设备,网关反馈具体信息 /// [System.Serializable] public class VirtualDriveUpgradeResponseAllData : CommonDevice.ErrorResponCommon { /// /// 升级虚拟驱动设备 /// public VirtualDriveUpgradeResponData virtualDriveUpgradeResponData; } /// /// 升级虚拟驱动设备 /// [Newtonsoft.Json.JsonIgnore] public VirtualDriveUpgradeResponData virtualDriveUpgradeResponData; /// /// 升级虚拟驱动设备 /// [System.Serializable] public class VirtualDriveUpgradeResponData { /// 0:升级完成 ///1:没有找到升级文件,或升级文件打开失败。v ///2:正在升级 ///3:写入分区出错 ///7:升级文件不合法。 ///8:未知错误 ///10:错误,驱动代号不存在 public int Flag; /// ///驱动代号 /// public int DriveCode; /// ///升级进度。0-100表示0-100%(该字段在Flag =2时才有效) /// public int Percent; } #endregion #region 查看网关记录的虚拟驱动数据 /// /// 查看网关记录的虚拟驱动,网关反馈具体信息 /// [System.Serializable] public class CheckVDDriveCodeResponseAllData : CommonDevice.ErrorResponCommon { /// /// 查看网关记录的虚拟驱动 /// public VDriveDriveCodeResponData vDriveDriveCodeResponData; } /// /// 查看网关记录的虚拟驱动 /// [System.Serializable] public class VDriveDriveCodeResponData { /// /// 驱动代号列表 /// public List DriveCodeList = new List(); } /// /// 虚拟驱动 /// [System.Serializable] public class DriveCodeObj { /// /// 驱动代号 /// public int DriveCode; /// /// 驱动硬件版本 /// public int DriveHwVersion; /// /// 驱动软件版本 /// public int DriveFwVersion; /// /// 驱动固件类型 /// public int DriveImageType; /// /// 驱动标识符 /// public int DriveId; } #endregion #region 网关系统升级 /// /// 网关系统升级,网关反馈具体信息 /// [System.Serializable] public class LinuxUpgradeAllData : CommonDevice.ErrorResponCommon { /// /// 0:正常(默认回复) ///1:找不到升级固件,路径或升级固件名称错误。 ///2:固件不合法。(如果强制升级,则返回正常,Result=0) ///3:升级固件过大(使用16MFlash时固件大小不得超过16449536B) ///4:升级文件名称中无“LINUXMODULE”标识。 /// public int Result = 999; } #endregion #region 获取协调器当前信道. /// /// 获取协调器当前信道,网关反馈具体信息 /// [System.Serializable] public class GwGetChannelResponData : CommonDevice.ErrorResponCommon { /// /// 协调器当前信道 /// public int channel = 999; } #endregion #region 更改协调器当前信道. /// /// 更改协调器当前信道,网关反馈具体信息 /// [System.Serializable] public class ChangeChannelResponAllData : CommonDevice.ErrorResponCommon { /// /// 更改协调器当前信道数据 /// public ChangeChannelResponData changeChannelResponData; } /// /// 更改协调器当前信道数据 /// [System.Serializable] public class ChangeChannelResponData { /// /// 是否配置成功 ///0:成功 ///1:失败 ///2:配置的信道为无效值 /// public int Status = 999; /// /// 协调器当前信道 /// public int Channel = 999; } #endregion #region 读取协调器MAC地址 /// /// 读取协调器MAC地址,网关反馈具体信息 /// [System.Serializable] public class GetMacResponData : CommonDevice.ErrorResponCommon { /// /// 协调器mac地址 /// public MacAddrData macAddrData; } /// /// 读取协调器MAC地址,网关反馈具体信息 /// [System.Serializable] public class MacAddrData { /// /// 协调器mac地址 /// public string MacAddr; } #endregion #region 启用或关闭透传数据上传接口 /// /// 透传数据上传接口,网关反馈信息 /// [System.Serializable] public class PassthroughAllData : CommonDevice.ErrorResponCommon { /// /// 已经转换成字符格式的16进制的透传数据 /// public string passData; } #endregion #region 客户端发送文件流到网关 /// /// 客户端发送文件流到网关 /// [System.Serializable] public class SendFileResponseAllData : CommonDevice.ErrorResponCommon { /// /// 0: 数据写入成功,请求发送下一个数据包 ///1:数据写入失败 ///2:数据解析错误 ///3:发送数据大小超出限制 /// public int Result = -1; } #endregion #region 客户端发送创建文件命令 /// /// 客户端发送创建文件命令,网关反馈信息 /// [System.Serializable] public class CreateFileResponseAllData : CommonDevice.ErrorResponCommon { /// /// 0:创建成功 ///1:失败,无法创建文件 ///2:失败,该客户端有文件还没上传完成,请等待文件上传完毕(一个客户端只能同时上传一个文件) /// public int Result = 999; } #endregion #region 查看网关目录文件信息 /// /// 查看网关目录文件信息,网关反馈信息 /// [System.Serializable] public class FileTransferLsDiResponseAllData : CommonDevice.ErrorResponCommon { /// /// 查看网关目录文件信息 /// public FileTransferLsDiResponseData fileTransferLsDiResponseData; } /// /// 客户端发送创建文件命令,网关反馈信息 /// [System.Serializable] public class FileTransferLsDiResponseData { /// ///0: 成功 ///1:查看失败 /// public int Result; /// /// 目录文件列表 /// public List Dir = new List(); } /// /// 目录文件 /// [System.Serializable] public class DriObj { /// ///文件(包含所在路径和文件名称:如/usr/sbin/aa.txt) /// public string File; /// ///文件大小(byte) /// public int FileSize; /// ///文件最后修改的utc时间戳 /// public int LastModifyTime; } #endregion #region 客户端设定要下载的文件名称和路径 /// /// 客户端设定要下载的文件名称和路径,网关反馈信息 /// [System.Serializable] public class SetDownloadFileResponseAllData : CommonDevice.ErrorResponCommon { /// /// 客户端设定要下载的文件名称和路径 /// public SetDownloadFileResponseData setDownloadFileResponseData; } /// /// 客户端设定要下载的文件名称和路径,网关反馈信息 /// [System.Serializable] public class SetDownloadFileResponseData { /// ///0:默认 ///1:失败,文件不存在。 ///2:BlockStartAddress设置不合理,超出文件大小范围。 ///3:当前有文件在下载,需要等待正在进行的下载任务结束。 /// public int Result = -1; /// /// 网关文件名称 /// //public string BackupFileName ; /// /// 网关中对应文件中的数据内容 /// //public byte[] BackupFileContent; } #endregion #region 查看单个文件信息 /// /// 查看单个文件信息数据 /// [System.Serializable] public class FileTransferGetFileInfoResponseAllData : CommonDevice.ErrorResponCommon { /// /// 查看单个文件信息返回的数据 /// public FileTransferGetFileInfoResponseData fileTransferGetFileInfoResponseData; } /// /// 查看单个文件信息返回的数据 /// [System.Serializable] public class FileTransferGetFileInfoResponseData { /// /// 0: 成功 ///1:查看失败,文件不存在 /// public int Result = -1; /// ///文件(包含所在路径和文件名称:如/etc/hdlDat/aa.txt) /// public string File; /// /// 文件大小(byte)(当Result = 0 时存在) /// public int FileSize; /// /// 文件最后修改的utc时间戳(当Result = 0 时存在) /// public int LastModifyTime; } #endregion #region 客户端接收到网关发色数据格式后应反馈给网关到格式数据 /// /// 客户端接收到网关发色数据格式后应反馈给网关到格式数据 /// [System.Serializable] public class DownloadFileResponseAllData : CommonDevice.ErrorResponCommon { /// /// 0: 数据写入成功,请求发送下一个数据包 ///1:终止下载。当下载出现错误,或者下载已经完成可以发送该值。 /// public int Result = -1; } /// /// 客户端接收到网关发色数据格式后应反馈给网关 /// [System.Serializable] public class FileTransferDownloadFileRespon { /// /// 0: 数据写入成功,请求发送下一个数据包 ///1:终止下载。当下载出现错误,或者下载已经完成可以发送该值。 /// public int Result = -1; } #endregion #region 删除文件或目录 /// /// 删除文件或目录,网关反馈信息 /// [System.Serializable] public class DelFileOrDirResponseAllData : CommonDevice.ErrorResponCommon { /// /// 删除文件或目录 /// public DelFileOrDirResponseData delFileOrDirResponseData; } /// /// 删除文件或目录,网关反馈信息 /// [System.Serializable] public class DelFileOrDirResponseData { /// ///0: 删除成功 ///1:删除失败,路径不存在 ///2:无法删除。 /// public int Result; /// ///目录或文件的路径 /// public string Path; } #endregion #region 创建一个目录 /// /// 创建一个目录,网关反馈信息 /// [System.Serializable] public class CreateDirResponseAllData : CommonDevice.ErrorResponCommon { /// /// 创建一个目录 /// public CreateDirResponseData createDirResponseData; } /// /// 创建一个目录,网关反馈信息 /// [System.Serializable] public class CreateDirResponseData { /// ///0: 创建成功 ///1:创建失败 /// public int Result; /// ///目录或文件的路径 /// public string Path; } #endregion #region 客户端发送DES密钥到网关 /// /// 客户端发送DES密钥到网关,网关反馈具体信息 /// [System.Serializable] public class SendKeyResponData : CommonDevice.ErrorResponCommon { /// /// 0:成功 ///1:失败,RSA私钥解密失败 /// public int Result = -1; } #endregion } }