Bläddra i källkod

[WallPadHomeCtrl]
1. 전체 상태 업데이트 BR 추가
2. ConCnt 변수 와 실제 배열의 크기가 다른 경우 발생하여 해당 데이터 예외처리

jglee 3 år sedan
förälder
incheckning
8227509f40

+ 11 - 11
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_concent/ConcentEnergyMeterPopupScreen.java

@@ -523,7 +523,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
     private void Draw_Update() {
         DebugLogOutput("[Draw_Update]");
 
-        int ConcentCount = mData.Em.eachRoom[mCurrentRoomIndex].ConCnt;
+        int ConcentCount = mData.Em.eachRoom[mCurrentRoomIndex].ConOnOff.length;
 
         boolean Mode = mData.Em.eachRoom[mCurrentRoomIndex].ConMode;
 
@@ -556,7 +556,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
      * 페이지에 따라 이미지를 다시 그린다.
      */
     private void Draw_ContentPage(int page) {
-        mTotalPage = (mData.Em.eachRoom[mCurrentRoomIndex].ConCnt / 2) + (mData.Em.eachRoom[mCurrentRoomIndex].ConCnt % 2);
+        mTotalPage = (mData.Em.eachRoom[mCurrentRoomIndex].ConOnOff.length / 2) + (mData.Em.eachRoom[mCurrentRoomIndex].ConOnOff.length % 2);
         DebugLogOutput("[Draw_ContentPage] page [" + page + "], mTotalPage [" + mTotalPage + "]");
         if (mTotalPage == 1) {
             if (PagePrevBtn != null&& getLayout()!=null) getLayout().removeView(PagePrevBtn);
@@ -733,7 +733,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
     protected void ShowRealUI()
     {
         //전체 갯수에서 확인이 필요함 만약에 4개라는 가정하에 가면 해당 정보가 맞음
-        int ConcentCount = mData.Em.eachRoom[mCurrentRoomIndex].ConCnt;
+        int ConcentCount = mData.Em.eachRoom[mCurrentRoomIndex].ConOnOff.length;
         if(ConcentCount == 1)
         {
             //홀수
@@ -1261,7 +1261,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
             }
         }
 
-        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[index].ConCnt)) {
+        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[index].ConOnOff.length)) {
             Log.w(TAG, "[Device_SetConcentOnOff] Param (ConcentIdx)  Out of range!!! (" + ConcentIdx + ")");
             return -3;
         }
@@ -1315,7 +1315,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
             }
         }
 
-        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConCnt)) {
+        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConOnOff.length)) {
             Log.w(TAG, "[Device_SetConcentMode] Param (ConcentIdx)  Out of range!!! (" + ConcentIdx + ")");
             return -3;
         }
@@ -1368,7 +1368,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
             }
         }
 
-        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConCnt)) {
+        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConOnOff.length)) {
             Log.w(TAG, "[Device_SetConcentCutOff] Param (ConcentIdx)  Out of range!!! (" + ConcentIdx + ")");
             return -3;
         }
@@ -1439,7 +1439,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
                 mCurrentRoomIndex++;
                 if (mCurrentRoomIndex >= mData.RoomCnt) mCurrentRoomIndex = 0;
             }
-            if (mData.Em.eachRoom[mCurrentRoomIndex].ConCnt > 0) return true;
+            if (mData.Em.eachRoom[mCurrentRoomIndex].ConOnOff.length > 0) return true;
         }
 
         return false;
@@ -1462,7 +1462,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
         if (mData.Em == null) return;
         if (mData.Em.eachRoom == null) return;
         if ((RoomIdx < 0) || (RoomIdx >= mData.RoomCnt)) return;
-        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConCnt)) return;
+        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConOnOff.length)) return;
 
         DataClasses.EnergyMeter.EachRoom Concent = mData.Em.eachRoom[RoomIdx];
         if (Concent == null) return;
@@ -1501,7 +1501,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
         if (mData.Em == null) return;
         if (mData.Em.eachRoom == null) return;
         if ((RoomIdx < 0) || (RoomIdx >= mData.RoomCnt)) return;
-        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConCnt)) return;
+        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConOnOff.length)) return;
 
         DataClasses.EnergyMeter.EachRoom Concent = mData.Em.eachRoom[RoomIdx];
         if (Concent == null) return;
@@ -1527,7 +1527,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
         if (mData.Em == null) return;
         if (mData.Em.eachRoom == null) return;
         if ((RoomIdx < 0) || (RoomIdx >= mData.RoomCnt)) return;
-        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConCnt)) return;
+        if ((ConcentIdx < 0) || (ConcentIdx >= mData.Em.eachRoom[RoomIdx].ConOnOff.length)) return;
 
         DataClasses.EnergyMeter.EachRoom Concent = mData.Em.eachRoom[RoomIdx];
         if (Concent == null) return;
@@ -1551,7 +1551,7 @@ public class ConcentEnergyMeterPopupScreen extends WpadScreen {
         // ConcentData
         String ConcentData = "ConcentData" + ";";
         for (byte i = 0; i < mData.RoomCnt; i++) {
-            byte ConcentCount = mData.Em.eachRoom[i].ConCnt;
+            int ConcentCount = mData.Em.eachRoom[i].ConOnOff.length;
             ConcentData += ConcentCount + ";";
 
             byte Mode; //byte

+ 56 - 2
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_concent/ConcentEnergyMeterScreen.java

@@ -369,6 +369,12 @@ public class ConcentEnergyMeterScreen extends WpadScreen
                 if(Device_Update(false, index) >= 0)
                     Draw_Update();
             }
+            else
+            {
+                if(Device_Update(false, Common.INDEX_ALL) >= 0)
+                    Draw_Update();
+                ;
+            }
         }
     }
 
@@ -921,6 +927,54 @@ public class ConcentEnergyMeterScreen extends WpadScreen
         return 0;
     }
 
+
+    /**
+     * 전체 방 콘센트 제어
+     * @param OnOff 콘센트 On/Off
+     * @return
+     */
+    private int Device_SetAllConcentOnOff(boolean OnOff)
+    {
+        DebugLogOutput("[Device_SetConcentOnOff] - Start   (OnOff : " + OnOff + ")");
+
+        // 1. Api Load Check
+        if(energyMeterAPI == null)
+        {
+            Log.e(TAG, "[Device_SetConcentOnOff] energyMeterAPI unload !!!");
+            return -1;
+        }
+
+
+        // 3. Control
+        try
+        {
+
+            int ret = energyMeterAPI.SetAllConcentOnOff(OnOff);
+            if(ret < 0)
+            {
+                Log.e(TAG, "[Device_SetAllConcentOnOff] - [Return Error] energyMeterAPI.SetAllConcentOnOff( OnOff:" + OnOff + ")");
+                Log.e(TAG, "[Device_SetAllConcentOnOff] - Error (" + ret + ")   ErrorCode = " + energyMeterAPI.ErrorCode.ErrStr());
+                return -10;
+            }
+        }
+        catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+            return -100;
+        }
+        catch (Exception e)
+        {
+            Log.e(TAG, "[Device_SetAllConcentOnOff] - [Exception Error] energyMeterAPI.SetAllConcentOnOff( OnOff:" + OnOff + ")");
+            //e.printStackTrace();
+            LogUtil.errorLogInfo("", TAG, e);
+            return -100;
+        }
+
+        DebugLogOutput("[Device_SetAllConcentOnOff] - OK");
+
+        return 0;
+    }
+
+
     protected Handler mDeviceCommandHandler = new Handler()
     {
         @SuppressLint("HandlerLeak")
@@ -929,13 +983,13 @@ public class ConcentEnergyMeterScreen extends WpadScreen
         {
             if(msg.what == 0)
             {
-                int ret = Device_SetConcentOnOff((byte)0, false);
+                int ret = Device_SetAllConcentOnOff( false);
                 if(ret >= 0) Sound().Play(WpadSound.SND.effect.TOUCH_LATCHED);
                 else Sound().Play(WpadSound.SND.effect.TOUCH_UNLATCHED);
             }
             else if(msg.what == 1)
             {
-                int ret= Device_SetConcentOnOff((byte)0, true);
+                int ret= Device_SetAllConcentOnOff( true);
                 if(ret >= 0) Sound().Play(WpadSound.SND.effect.TOUCH_LATCHED);
                 else Sound().Play(WpadSound.SND.effect.TOUCH_UNLATCHED);
             }