|
@@ -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;
|
|
|
}
|
|
|
|