Ver Fonte

[WallPadAPI]
1. API Ver. 갱신
- 2022.05.04.99
2. 관리자설정메뉴에 설정기능 추가
- 월패드간 제어기기 멀티제어 사용 여부 설정 확인
> public boolean Get_InterWallPadMultiCtrlUsage()
> 기본값: 사용함
> result: true(사용함), false(사용안함)
3. KNX API 기능 추가
- 거실EM의 전체 조명에 대한 제어 지원 메소드 추가
> public int SetEntireLivlight(byte hLightCnt, byte[] ahPower, byte[] ahDim, byte[] ahColor)

Changwoo Nam há 3 anos atrás
pai
commit
d0a219217b

BIN
WallPadAPI/jar/WallPadAPI.jar


BIN
WallPadAPI/jar/WallPadAPIforSVC.jar


+ 23 - 0
WallPadAPI/src/main/java/com/artncore/WallPadDataMgr/WallpadDeviceSet.java

@@ -5210,5 +5210,28 @@ public class WallpadDeviceSet extends wallpaddbmgr {
 		}
 	}
 
+	/**
+	 * 월패드간 제어기기 멀티제어 기능 사용 유무
+	 **/
+	public boolean Get_InterWallPadMultiCtrlUsage() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_INTERWP_MULTI_CTRL);
+
+		boolean returnData = true; // DB에 값 없는 경우 사용안함으로 반환(초기값: 사용함)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+			LogUtil.errorLogInfo("", TAG, re);
+			return returnData;
+		} catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			return returnData;
+		}
+	}
+
 
 }

+ 2 - 1
WallPadAPI/src/main/java/com/artncore/commons/define.java

@@ -4,7 +4,7 @@ import android.os.Environment;
 
 public class define {
 	/** WallPadAPI Version 을 정의합니다. */
-	public static final String WALLPADAPI_VERSION = "2022.04.28.01";
+	public static final String WALLPADAPI_VERSION = "2022.05.04.99";
 	///////////////////////////////////////////////////////////////////////
 	// WallPadDevService 의 각 드라이버와 통신을 위한 드라이버 이름을 정의합니다.
 	///////////////////////////////////////////////////////////////////////
@@ -741,6 +741,7 @@ public class define {
 	public static final String DEVICE_ID_VENTI_TIMER_USE = "환기타이머";
 	public static final String DEVICE_ID_VENTI_RESERVATION_USE = "환기예약설정";
 	public static final String DEVICE_ID_ROOMNAME_EDIT_USE = "방명칭수정";
+	public static final String DEVICE_ID_INTERWP_MULTI_CTRL = "월패드간제어기기멀티제어";
 
 	public static final String DEVICE_ENABLE  = "사용함";
 	public static final String DEVICE_DISABLE = "사용안함";

+ 115 - 8
WallPadAPI/src/main/java/com/artncore/wallpadapi/KnxAPI.java

@@ -20,6 +20,8 @@ import com.artncore.commons.define;
 import com.artncore.wallpaddevservice.DevCtrCMD;
 import com.util.LogUtil;
 
+import java.util.Arrays;
+
 
 /** KNX분전반 (KnxAPI) API */
 public class KnxAPI extends WallPadDevAPI
@@ -1027,12 +1029,12 @@ public class KnxAPI extends WallPadDevAPI
             Log.w(TAG, "[SetLight] IndexRangeCheck Error (ret:" + ret + ")");
             return ret;
         }
-        if(!DimmingNColorRangeCheck(Dimming))
+        if(!checkDimNColorRange(Dimming))
         {
             Log.w(TAG, "[SetLight] Param : Dimming Out Of Range !!! (Dimming:" + Dimming + ")");
             return APIErrorCode.INVALIDPARAMETER;
         }
-        if(!DimmingNColorRangeCheck(Color))
+        if(!checkDimNColorRange(Color))
         {
             Log.w(TAG, "[SetLight] Param : Color Out Of Range !!! (Color:" + Color + ")");
             return APIErrorCode.INVALIDPARAMETER;
@@ -1131,7 +1133,7 @@ public class KnxAPI extends WallPadDevAPI
             Log.w(TAG, "[SetLightDimming] LightIndexRangeCheck Error");
             return APIErrorCode.INVALIDPARAMETER;
         }
-        if(!DimmingNColorRangeCheck(Dimming))
+        if(!checkDimNColorRange(Dimming))
         {
             Log.w(TAG, "[SetLightDimming] Param : Dimming Out Of Range !!! (Dimming:" + Dimming + ")");
             return APIErrorCode.INVALIDPARAMETER;
@@ -1141,6 +1143,99 @@ public class KnxAPI extends WallPadDevAPI
         return SendNReadCMD_int(define.APICMD_SINKCTRL, "SetLightDimming", LightIndex, Dimming, 0, 0, 0);
     }
 
+    /**
+     * 거실EM의 전체 조명을 제어한다.
+     * @param ahPower - (byte array) 조명 전원제어 상태 (배열길이는 최대 4, 거실EM의 최대 회로수는 4)
+     * @param ahDim    - (byte array) 조명 디밍제어 상태 (배열길이는 최대 4, 거실EM의 최대 회로수는 4)
+     * @param ahColor    - (byte array) 조명 색온도제어 상태 (배열길이는 최대 4, 거실EM의 최대 회로수는 4)
+     *
+     * @return (int) - >=0 : 성공, <0 : 실패
+     */
+    public int SetEntireLivlight(byte hLightCnt, byte[] ahPower, byte[] ahDim, byte[] ahColor) {
+        // 1. Parameter Check
+
+        if (hLightCnt < 0 || 4 < hLightCnt) {
+            Log.w(TAG, "[SetEntireLivlight] Param : hLightCnt Out Of Range !!! (hLightCnt:" + hLightCnt + ")");
+            return APIErrorCode.INVALIDPARAMETER;
+        }
+
+        if (ahPower != null) {
+            for (int i = 0; i < ahPower.length; i++) {
+                if (!checkLightPowerRangge(ahPower[i])) {
+                    Log.w(TAG, "[SetEntireLivlight] Param : ahPower[" + i + "] Out Of Range !!! (ahPower:" + ahPower[i] + ")");
+                    return APIErrorCode.INVALIDPARAMETER;
+                }
+            }
+
+            if (hLightCnt != ahPower.length) {
+                Log.w(TAG, "[SetEntireLivlight] Param : Data length is wrong!!! hLightCnt [" + hLightCnt + "], ahPower.length [" + ahPower.length + "]");
+                return APIErrorCode.INVALIDPARAMETER;
+            }
+        }
+        else {
+            // null인 경우에는 값을 미설정(0x00)으로 한다.
+            ahPower = new byte[hLightCnt];
+            for (int i = 0; i < hLightCnt; i++) {
+                ahPower[i] = (byte) 0x00;
+            }
+        }
+
+        if (ahDim != null) {
+            for (int i = 0; i < ahDim.length; i++) {
+                if (!checkDimNColorRange(ahDim[i])) {
+                    Log.w(TAG, "[SetEntireLivlight] Param : ahPower[" + i + "] Out Of Range !!! (ahDim:" + ahDim[i] + ")");
+                    return APIErrorCode.INVALIDPARAMETER;
+                }
+            }
+
+            if (hLightCnt != ahDim.length) {
+                Log.w(TAG, "[SetEntireLivlight] Param : Data length is wrong!!! hLightCnt [" +  hLightCnt + "], ahDim.length [" + ahDim.length + "]");
+                return APIErrorCode.INVALIDPARAMETER;
+            }
+        }
+        else {
+            // null인 경우에는 값을 미설정(0x00)으로 한다.
+            ahDim = new byte[hLightCnt];
+            for (int i = 0; i < hLightCnt; i++) {
+                ahDim[i] = (byte) 0x00;
+            }
+        }
+
+        if (ahColor != null) {
+            for (int i = 0; i < ahColor.length; i++) {
+                if (!checkDimNColorRange(ahColor[i])) {
+                    Log.w(TAG, "[SetEntireLivlight] Param : ahColor[" + i + "] Out Of Range !!! (ahColor:" + ahColor[i] + ")");
+                    return APIErrorCode.INVALIDPARAMETER;
+                }
+            }
+
+            if (hLightCnt != ahColor.length) {
+                Log.w(TAG, "[SetEntireLivlight] Param : Data length is wrong!!! hLightCnt [" +  hLightCnt + "], ahColor.length [" + ahColor.length + "]");
+                return APIErrorCode.INVALIDPARAMETER;
+            }
+        }
+        else {
+            // null인 경우에는 값을 미설정(0x00)으로 한다.
+            ahColor = new byte[hLightCnt];
+            for (int i = 0; i < hLightCnt; i++) {
+                ahColor[i] = (byte) 0x00;
+            }
+        }
+
+        int nDataLength = 1 + ahPower.length + ahDim.length + ahColor.length;
+        byte[] aCtrlData = new byte[nDataLength];
+
+        aCtrlData[0] = hLightCnt;
+        System.arraycopy(ahPower, 0, aCtrlData, 1, ahPower.length);
+        System.arraycopy(ahDim, 0, aCtrlData, (1 + ahPower.length), ahDim.length);
+        System.arraycopy(ahColor, 0, aCtrlData, (1 + ahPower.length + ahDim.length), ahColor.length);
+
+        Log.i(TAG, "[SetEntireLivlight] aCtrlData " + Arrays.toString(aCtrlData));
+
+        // 2. Send
+        return SendNReadCMD_int(define.APICMD_SINKCTRL, "SetEntireLivlight", aCtrlData);
+    }
+
     /**
      * 에너지 미터 조명을 밝기를 제어한다.
      *
@@ -1158,7 +1253,7 @@ public class KnxAPI extends WallPadDevAPI
             Log.w(TAG, "[SetLightDimming] LightIndexRangeCheck Error");
             return APIErrorCode.INVALIDPARAMETER;
         }
-        if(!DimmingNColorRangeCheck(Dimming))
+        if(!checkDimNColorRange(Dimming))
         {
             Log.w(TAG, "[SetLightDimming] Param : Dimming Out Of Range !!! (Dimming:" + Dimming + ")");
             return APIErrorCode.INVALIDPARAMETER;
@@ -1186,7 +1281,7 @@ public class KnxAPI extends WallPadDevAPI
             Log.w(TAG, "[SetLightColor] IndexRangeCheck Error (ret:" + ret + ")");
             return ret;
         }
-        if(!DimmingNColorRangeCheck(Color))
+        if(!checkDimNColorRange(Color))
         {
             Log.w(TAG, "[SetLightColor] Param : Color Out Of Range !!! (Color:" + Color + ")");
             return APIErrorCode.INVALIDPARAMETER;
@@ -1463,16 +1558,28 @@ public class KnxAPI extends WallPadDevAPI
         return  APIErrorCode.C_SUCCESS;
     }
 
+    /**
+     * 조명 전원상태의 단계 범위를 체크한다.
+     *
+     * @param hPower - (byte) 체크할 단계
+     *
+     * @return (boolean) ture:정상 , false:범위이탈
+     */
+    private boolean checkLightPowerRangge(byte hPower) {
+        if (0 <= hPower & hPower <= 2) return true;
+        else return false;
+    }
+
     /**
      * 밝기, 색상의 단계 범위를 체크한다.
      *
-     * @param DimmingNColor - (byte) 체크할 단계
+     * @param DimNColor - (byte) 체크할 단계
      *
      * @return (boolean) ture:정상 , false:범위이탈
      */
-    private boolean DimmingNColorRangeCheck(byte DimmingNColor)
+    private boolean checkDimNColorRange(byte DimNColor)
     {
-        if(DimmingNColor < 1 || DimmingNColor > 10) return false;
+        if(DimNColor < 1 || DimNColor > 10) return false;
         return true;
     }