From fd78a0c0e444b83f40a9225c98adceb87bbda329 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期六, 18 一月 2020 15:10:34 +0800
Subject: [PATCH] 2020-1-18 1.修复RCU混合调光混合开关 类模块,使用物理回路问题。

---
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLLight/LightCtrlBackInfo.java |   10 ++
 app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlActivity.java                          |    4 
 app/src/main/res/values/strings.xml                                                       |    2 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java    |  184 +++++++++++++++++++++++++++------------------
 4 files changed, 123 insertions(+), 77 deletions(-)

diff --git a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlActivity.java b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlActivity.java
index 543a8af..c20867d 100644
--- a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlActivity.java
+++ b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlActivity.java
@@ -702,7 +702,7 @@
 
         if (event.getLightCtrlBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
                 && event.getLightCtrlBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
-                && event.getLightCtrlBackInfo().getChannelNum() == appliancesInfo.getChannelNum()
+                && event.getLightCtrlBackInfo().getChannelNum() == appliancesInfo.getChannelNum() && event.getLightCtrlBackInfo().getPhysicsChannelNum() == appliancesInfo.getPhysicsChannelNum()
                 ) {
             //        鍏堝垽鏂槸鍚﹁秴鏃�
             if (!event.isSuccess()) {
@@ -945,7 +945,7 @@
                 case HDLApConfig.TYPE_LIGHT_RELAY:
                 case HDLApConfig.TYPE_LIGHT_MIX_DIMMER:
                 case HDLApConfig.TYPE_LIGHT_MIX_RELAY:
-                    if (appliancesInfo.getChannelNum() == event.getAppliancesInfo().getChannelNum()) {
+                    if (appliancesInfo.getChannelNum() == event.getAppliancesInfo().getChannelNum() && appliancesInfo.getPhysicsChannelNum() == event.getAppliancesInfo().getPhysicsChannelNum()) {
                         if (!event.isSuccess()) {
                             showToast("鑾峰彇鐏厜鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
                             return;
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3d676c0..1f5a0aa 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,4 +1,4 @@
 <resources>
     <string name="app_name">HDL_SDK</string>
-    <string name="app_version">hdl_lib_v1.6.4.20191015_beta</string>
+    <string name="app_version">hdl_lib_v1.6.5.20200117_beta</string>
 </resources>
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLLight/LightCtrlBackInfo.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLLight/LightCtrlBackInfo.java
index 5b97f29..9611c48 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLLight/LightCtrlBackInfo.java
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLLight/LightCtrlBackInfo.java
@@ -18,7 +18,7 @@
     int deviceChannelCount;//璁惧鍥炶矾鎬绘暟
     String remarks ;//澶囨敞
     String parentRemarks;//妯″潡澶囨敞
-
+    int physicsChannelNum;//RCU 鐏厜鐗规湁
 
     public String getParentRemarks() {
         return parentRemarks;
@@ -77,6 +77,14 @@
         this.deviceChannelCount = deviceChannelCount;
     }
 
+    public int getPhysicsChannelNum() {
+        return physicsChannelNum;
+    }
+
+    public void setPhysicsChannelNum(int physicsChannelNum) {
+        this.physicsChannelNum = physicsChannelNum;
+    }
+
     @Override
     public String toString() {
         return "LightCtrlBackInfo{" +
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java
index 114e312..ed821a7 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java
@@ -485,6 +485,116 @@
         }
     }
 
+
+    /**
+     * 澶勭悊鐏厜杩斿洖
+     * 2020-1-18
+     * 淇娣峰悎璋冨厜娣峰悎寮�鍏� 绫绘ā鍧楅棶棰�
+     * @param getDatas
+     */
+    private static void handleLightCtrlData(UdpDataBean getDatas){
+
+        if (TextUtils.isEmpty(HandleSearch.rcuIp)) {
+            outter:
+            for (int i = 0, len = devicesDataList.size(); i < len; i++) {
+                if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID
+                        && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID
+                ) {
+                    List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList();
+                    for (int j = 0, len2 = infos.size(); j < len2; j++) {
+                        if(infos.get(j).getLittleType() == 9 || infos.get(j).getLittleType() == 10 ){
+
+                            if (infos.get(j).getPhysicsChannelNum() == (getDatas.addBytes[0] & 0xFF)) {
+
+                                devicesDataList.get(i).getAppliancesInfoList().get(j).setCurState(getDatas.addBytes[2] & 0xFF);
+                                devicesDataList.get(i).getAppliancesInfoList().get(j).setIntCurState(getDatas.addBytes[2] & 0xFF);
+                                AppliancesInfo lightInfo1 = infos.get(j);
+                                lightInfo1.setCurState(getDatas.addBytes[2] & 0xFF);
+                                LightCtrlBackInfo info1 = new LightCtrlBackInfo();
+                                info1.setParentRemarks(lightInfo1.getParentRemarks());
+                                info1.setAppliancesInfo(lightInfo1);
+                                info1.setRemarks(lightInfo1.getRemarks());
+                                info1.setChannelNum(lightInfo1.getChannelNum());
+                                info1.setPhysicsChannelNum(lightInfo1.getPhysicsChannelNum());
+                                info1.setBrightness(getDatas.addBytes[2] & 0xFF);
+                                setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
+                                EventBus.getDefault().post(new LightFeedBackEvent(info1, true));
+                                break outter;
+                            }
+
+
+                        }else {
+
+
+                            if (infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {
+                                AppliancesInfo lightInfo = infos.get(j);
+                                devicesDataList.get(i).getAppliancesInfoList().get(j).setCurState(getDatas.addBytes[2] & 0xFF);
+                                devicesDataList.get(i).getAppliancesInfoList().get(j).setIntCurState(getDatas.addBytes[2] & 0xFF);
+                                LightCtrlBackInfo info = new LightCtrlBackInfo();
+                                info.setParentRemarks(lightInfo.getParentRemarks());
+                                info.setAppliancesInfo(lightInfo);
+                                info.setRemarks(lightInfo.getRemarks());
+                                info.setChannelNum(getDatas.addBytes[0] & 0xFF);
+//                                  info.setIsSuccess(getDatas.AddBytes[1] & 0xFF);
+                                info.setBrightness(getDatas.addBytes[2] & 0xFF);
+//                                  info.setChannelCount(getDatas.AddBytes[3] & 0xFF);
+//                                  info.setDeviceChannelCount(getDatas.AddBytes[4] & 0xFF);
+//                                    isLightCtrlSuccess = true;
+                                setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
+                                EventBus.getDefault().post(new LightFeedBackEvent(info, true));
+                                break outter;
+                            }
+                        }
+
+                    }
+                }
+            }
+
+
+        } else {
+            if (getDatas.addBytes.length != 0) {
+                outter:
+                for (int i = 0, len = devicesDataList.size(); i < len; i++) {
+                    if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID
+                            && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID
+                    ) {
+                        List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList();
+                        for (int j = 0, len2 = infos.size(); j < len2; j++) {
+                            if (infos.get(j).getPhysicsChannelNum() == (getDatas.addBytes[0] & 0xFF)
+                            ) {
+                                devicesDataList.get(i).getAppliancesInfoList().get(j).setCurState(getDatas.addBytes[2] & 0xFF);
+                                devicesDataList.get(i).getAppliancesInfoList().get(j).setIntCurState(getDatas.addBytes[2] & 0xFF);
+                                for (int k = 0; k < rcuLightList.size(); k++) {
+                                    if (devicesDataList.get(i).getAppliancesInfoList().get(j).getPhysicsChannelNum() == rcuLightList.get(k).getPhysicsChanelNum()
+                                    ) {
+                                        rcuLightList.get(k).setCurState(getDatas.addBytes[2] & 0xFF);
+                                        break;
+                                    }
+                                }
+                                AppliancesInfo lightInfo1 = infos.get(j);
+                                lightInfo1.setCurState(getDatas.addBytes[2] & 0xFF);
+                                LightCtrlBackInfo info1 = new LightCtrlBackInfo();
+                                info1.setParentRemarks(lightInfo1.getParentRemarks());
+                                info1.setAppliancesInfo(lightInfo1);
+                                info1.setRemarks(lightInfo1.getRemarks());
+                                info1.setChannelNum(lightInfo1.getChannelNum());
+//                    info1.setIsSuccess(getDatas.AddBytes[1] & 0xFF);
+                                info1.setBrightness(getDatas.addBytes[2] & 0xFF);
+                                info1.setChannelCount(getDatas.addBytes[3] & 0xFF);
+                                info1.setDeviceChannelCount(getDatas.addBytes[4] & 0xFF);
+//                                        isLightCtrlSuccess = true;
+                                setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
+                                EventBus.getDefault().post(new LightFeedBackEvent(info1, true));
+                                break outter;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
     /**
      * 澶勭悊璁惧鎺у埗鏁版嵁
      *
@@ -493,79 +603,7 @@
     private static void handleCtrlData(UdpDataBean getDatas) {
         switch (getDatas.command) {
             case Configuration.LIGHT_CTRL_BACK_COMMAND:
-                if (TextUtils.isEmpty(HandleSearch.rcuIp)) {
-                    outter:
-                    for (int i = 0, len = devicesDataList.size(); i < len; i++) {
-                        if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID
-                                && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID
-                        ) {
-                            List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList();
-                            for (int j = 0, len2 = infos.size(); j < len2; j++) {
-                                if (infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {
-                                    AppliancesInfo lightInfo = infos.get(j);
-                                    devicesDataList.get(i).getAppliancesInfoList().get(j).setCurState(getDatas.addBytes[2] & 0xFF);
-                                    devicesDataList.get(i).getAppliancesInfoList().get(j).setIntCurState(getDatas.addBytes[2] & 0xFF);
-                                    LightCtrlBackInfo info = new LightCtrlBackInfo();
-                                    info.setParentRemarks(lightInfo.getParentRemarks());
-                                    info.setAppliancesInfo(lightInfo);
-                                    info.setRemarks(lightInfo.getRemarks());
-                                    info.setChannelNum(getDatas.addBytes[0] & 0xFF);
-//                                  info.setIsSuccess(getDatas.AddBytes[1] & 0xFF);
-                                    info.setBrightness(getDatas.addBytes[2] & 0xFF);
-//                                  info.setChannelCount(getDatas.AddBytes[3] & 0xFF);
-//                                  info.setDeviceChannelCount(getDatas.AddBytes[4] & 0xFF);
-//                                    isLightCtrlSuccess = true;
-                                    setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
-                                    EventBus.getDefault().post(new LightFeedBackEvent(info, true));
-                                    break outter;
-                                }
-
-                            }
-                        }
-                    }
-
-
-                } else {
-                    if (getDatas.addBytes.length != 0) {
-                        outter:
-                        for (int i = 0, len = devicesDataList.size(); i < len; i++) {
-                            if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID
-                                    && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID
-                            ) {
-                                List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList();
-                                for (int j = 0, len2 = infos.size(); j < len2; j++) {
-                                    if (infos.get(j).getPhysicsChannelNum() == (getDatas.addBytes[0] & 0xFF)
-                                    ) {
-                                        devicesDataList.get(i).getAppliancesInfoList().get(j).setCurState(getDatas.addBytes[2] & 0xFF);
-                                        devicesDataList.get(i).getAppliancesInfoList().get(j).setIntCurState(getDatas.addBytes[2] & 0xFF);
-                                        for (int k = 0; k < rcuLightList.size(); k++) {
-                                            if (devicesDataList.get(i).getAppliancesInfoList().get(j).getPhysicsChannelNum() == rcuLightList.get(k).getPhysicsChanelNum()
-                                            ) {
-                                                rcuLightList.get(k).setCurState(getDatas.addBytes[2] & 0xFF);
-                                                break;
-                                            }
-                                        }
-                                        AppliancesInfo lightInfo1 = infos.get(j);
-                                        lightInfo1.setCurState(getDatas.addBytes[2] & 0xFF);
-                                        LightCtrlBackInfo info1 = new LightCtrlBackInfo();
-                                        info1.setParentRemarks(lightInfo1.getParentRemarks());
-                                        info1.setAppliancesInfo(lightInfo1);
-                                        info1.setRemarks(lightInfo1.getRemarks());
-                                        info1.setChannelNum(lightInfo1.getChannelNum());
-//                    info1.setIsSuccess(getDatas.AddBytes[1] & 0xFF);
-                                        info1.setBrightness(getDatas.addBytes[2] & 0xFF);
-                                        info1.setChannelCount(getDatas.addBytes[3] & 0xFF);
-                                        info1.setDeviceChannelCount(getDatas.addBytes[4] & 0xFF);
-//                                        isLightCtrlSuccess = true;
-                                        setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
-                                        EventBus.getDefault().post(new LightFeedBackEvent(info1, true));
-                                        break outter;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
+                handleLightCtrlData(getDatas);
 
                 break;
             case Configuration.CURTAIN_CTRL_BACK_COMMAND:

--
Gitblit v1.8.0