From ce062b3c62d283fa364f92853d1b53221b94a3bc Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期三, 24 六月 2020 09:30:32 +0800
Subject: [PATCH] 2020-06-24 1.增加手动添加生成设备接口方法。 2.增加通用开关和安防模块支持。

---
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java |  162 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 161 insertions(+), 1 deletions(-)

diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java
index d64cb57..c0593f8 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java
@@ -8,6 +8,7 @@
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLAirCondition.AirCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLAirCondition.Parser.AirCtrlParser;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLAudio.HDLAudio;
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLCommonSwitch.CommonSwitchBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLCurtain.CurtainCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLCurtain.Parser.CurtainCtrlParser;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLFreshAir.FreshAirBackInfo;
@@ -16,9 +17,11 @@
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLGeothermal.Parser.GeothermalParser;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLLight.LightCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLLogic.LogicCtrlBackInfo;
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.Parser.SecurityParser;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.DeviceStateBean;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.AirFeedBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CommonSwitchCtrlBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CurtainFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.DeviceStateEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.EventCode;
@@ -26,6 +29,7 @@
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.GeothermalFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.LightFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.LogicFeedBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.SecurityArmingFeedBackEvent;
 import com.hdl.sdk.hdl_core.Util.LogUtil.HDLLog;
 import com.hdl.sdk.hdl_core.Util.NetUtil.NetWorkUtil;
 import com.hdl.sdk.hdl_core.Util.SPUtil.SPUtils;
@@ -44,7 +48,7 @@
  */
 
 public class HDLCommand {
-
+    public static int mRequestTimeout = 5000;//榛樿璇锋眰瓒呮椂鏃堕棿
     private static Timer getStateFailTimer = null;//鑾峰彇璁惧鐘舵�佸け璐imer
 
     private static Timer lightCtrlFailTimer = null;//鎺у埗鐏厜澶辫触Timer
@@ -54,6 +58,8 @@
     private static Timer freshAirCtrlFailTimer = null;//鎺у埗鏂伴澶辫触Timer 2019-07-09
     private static Timer geothermalCtrlFailTimer = null;//鎺у埗鍦扮儹澶辫触Timer 2019-07-10
 
+    private static Timer securityCtrlFailTimer = null;//瀹夐槻妯″潡鎿嶄綔澶辫触Timer
+    private static Timer commonSwitchCtrlFailTimer = null;//閫氱敤寮�鍏冲け璐imer
 
     /**
      * 鍒濆鍖�
@@ -64,7 +70,32 @@
         HDLDeviceManager.init(context);
     }
 
+    /**
+     * 寮�鍚痓us妯″紡
+     * 鍚敤6000绔彛
+     * @param context
+     */
+    public static void startHomeMode(Context context) {
+        SPUtils.setParam(context, SPUtils.KEY_RCU_IP_, "");
+        HandleSearch.curSearchMode = HandleSearch.GET_BUS_DEVICES;
+        HandleSearch.rcuIp = "";
+        HDLUdpCore.closeSocket6008();
+        HDLUdpCore.init6000();
+    }
 
+    /**
+     * 寮�鍚疪CU妯″紡
+     * 鍚敤6008绔彛
+     * @param context
+     * @param newRcuIp RCU鐨処P鍦板潃
+     */
+    public static void startRcuMode(Context context, String newRcuIp) {
+        HandleSearch.curSearchMode = HandleSearch.GET_RCU_DEVICES;
+        HandleSearch.rcuIp = newRcuIp;
+        SPUtils.setParam(context, SPUtils.KEY_RCU_IP_, newRcuIp);
+        HDLUdpCore.closeSocket6000();
+        HDLUdpCore.init6008();
+    }
 
 //    /**
 //     * 鑾峰彇鏈湴骞挎挱IP
@@ -1066,6 +1097,135 @@
     }
 
 
+    /**************************************2020-06-23鏂板***************************************/
+    /**
+     * 鎺у埗閫氱敤寮�鍏�
+     *
+     * @param info
+     */
+    public static void commonSwitchCtrl(final AppliancesInfo info, int state) {
 
+        HDLDeviceManager.setDeviceCtrlSuccessStateWithInfo(info, false);
+        if (info.getBigType() == Configuration.COMMON_SWITCH_BIG_TYPE) {
+
+            if (commonSwitchCtrlFailTimer != null) {
+                commonSwitchCtrlFailTimer.cancel();
+                commonSwitchCtrlFailTimer = null;
+            }
+
+            byte[] bytes = new byte[]{(byte) info.getChannelNum(), (byte) state};
+
+            addSendData(info, bytes, Configuration.CONTROL);
+
+            commonSwitchCtrlFailTimer = new Timer();
+            commonSwitchCtrlFailTimer.schedule(new TimerTask() {
+                @Override
+                public void run() {
+                    if (!HDLDeviceManager.getDeviceCtrlSuccessStateWithInfo(info)) {
+                        HDLLog.info("閫氱敤寮�鍏虫帶鍒跺け璐�");
+                        CommonSwitchBackInfo mCommonSwitchBackInfo = new CommonSwitchBackInfo();
+                        mCommonSwitchBackInfo.setAppliancesInfo(info);
+                        EventBus.getDefault().post(new CommonSwitchCtrlBackEvent(mCommonSwitchBackInfo, false));
+                    }
+                }
+            }, mRequestTimeout);
+        } else {
+            HDLLog.info("djlCtrl: 閫氱敤寮�鍏宠澶囨帶鍒朵笉鍦ㄨ寖鍥村唴"
+                    + " LittleType = " + info.getLittleType()
+                    + " BigType = " + info.getBigType()
+            );
+        }
+    }
+
+    /**
+     * 鑾峰彇閫氱敤寮�鍏崇姸鎬�
+     * @param info
+     */
+    public static void getCommonSwitchStateFromNetwork(final AppliancesInfo info) {
+        if (info == null) {
+            return;
+        }
+        HDLDeviceManager.isGetDeviceStateSuccess = false;
+        switch (info.getDeviceType()) {
+            case HDLApConfig.TYPE_COMMON_SWITCH:
+                addSendData(info, new byte[0], Configuration.STATE);
+                break;
+            default:
+                HDLLog.info("涓嶆槸閫氱敤寮�鍏宠澶�");
+                break;
+        }
+    }
+
+
+    /**
+     * 鑾峰彇瀹夐槻妯″潡鐘舵��
+     * @param info
+     */
+    public static void getSecurityStateFromNetwork(final AppliancesInfo info) {
+        if (info == null) {
+            return;
+        }
+        HDLDeviceManager.isGetDeviceStateSuccess = false;
+        switch (info.getDeviceType()) {
+            case HDLApConfig.TYPE_SECURITY_MODULE:
+                //鍙戦�佽幏瀹夐槻妯″潡鐘舵�佹暟鎹�
+                addSendData(info, new byte[]{(byte) info.getChannelNum()}, Configuration.STATE);
+                break;
+            default:
+                HDLLog.info("涓嶆槸瀹夐槻妯″潡");
+                break;
+        }
+    }
+
+    /**
+     * 瀹夐槻妯″潡 甯冮槻璁剧疆
+     * 2020-06-23
+     * @param info
+     */
+    public static void securityArmingCtrl(final AppliancesInfo info, int state) {
+//        HDLDeviceManager.isSecurityCtrlSuccess = false;
+        HDLDeviceManager.setDeviceCtrlSuccessStateWithInfo(info, false);
+        if (securityCtrlFailTimer != null) {
+            securityCtrlFailTimer.cancel();
+            securityCtrlFailTimer = null;
+        }
+        if (info.getBigType() == Configuration.SECURITY_BIG_TYPE) {
+            byte[] sendbytes = SecurityParser.getArmingByte(info, state);
+            addSendData(info, sendbytes, Configuration.CONTROL);
+            securityCtrlFailTimer = new Timer();
+            securityCtrlFailTimer.schedule(new TimerTask() {
+                @Override
+                public void run() {
+                    if (!HDLDeviceManager.getDeviceCtrlSuccessStateWithInfo(info)) {
+                        EventBus.getDefault().post(new SecurityArmingFeedBackEvent(info,0, false));
+                    }
+                }
+            }, 5000);
+
+        } else {
+            HDLLog.info("瀹夐槻妯″潡涓嶅湪鑼冨洿鍐�"
+                    + " LittleType = " + info.getLittleType()
+                    + " BigType = " + info.getBigType()
+            );
+        }
+    }
+
+//    /**
+//     * 瀹夐槻妯″潡 鎶ヨ璁剧疆
+//     * 2019-7-29
+//     * @param info
+//     * @param state 鍙戦�佺殑鎶ヨ鍐呭锛屽彧鎶ヨ涓�绉�
+//     */
+//    public static void securitySendAlarm(final AppliancesInfo info, int state) {
+//        if (info.getBigType() == Configuration.SECURITY_BIG_TYPE) {
+//            byte[] sendbytes = SecurityParser.getAlarmByte(info, state);
+//            cusSendCommand(Configuration.SECURITY_ALARM_CTRL_COMMAND, info.getDeviceSubnetID(), info.getDeviceDeviceID(), sendbytes);
+//        } else {
+//            HDLLog.info("涓嶆槸瀹夐槻妯″潡"
+//                    + " LittleType = " + info.getLittleType()
+//                    + " BigType = " + info.getBigType()
+//            );
+//        }
+//    }
 
 }

--
Gitblit v1.8.0