Преглед на файлове

[WallPadDevService]
1. App Ver. 갱신
- 2022.05.09.01
2. 최신 WallPadAPI 적용
- API Ver.: 2022.05.09.01
3. 특정 BR 전송시 지연후 전송
- NOTIFY_DEVICE_INIT_COMPLETION 전송시 3초 지연
> 제어기기가 없는 경우, BR이 너무 빨리 전송되어 WallPadMain에서 BR을 수신하지 못하여 3초 지연을 둔다
> WallPadMain의 MainActivity와 메인화면 클래스에서 BR수신자를 등록하기 전에 BR이 전송되어 BR을 수신하지 못함
4. 쿡탑 드라이버 자동로딩 코드 삭제
- 가스밸브 연동시 문제가 되어 해당코드 삭제 (cooktop finder가 구동되기 때문에 해당코드가 없어도 무방함)
5. KNX_controller.java 개선
- 거실조명 씬제어를 위한 API를 통해 명령 수신시 파라미터가 5개로 제한되어 있어서 해당 명령에 대해서만 파라미터 제한을 변경한다. (SetEntireLivlight인 경우 13으로 변경)
- 거실조명 씬모드 명령어 추가
> 거실의 모든 조명을 하나의 명령어로 제어하도록 기능 추가

[WallPadAPI]
1. API Ver. 갱신
- 2022.05.09.01
2. KNX API 수정
- 디밍, 색온도 설정범위 확인 함수 수정
> 기존: 1 ~ 10
> 변경: 0 ~ 10 (0: 설정안함/don't care)

Changwoo Nam преди 2 години
родител
ревизия
43fac87aa1

BIN
WallPadDevService/libs/WallPadAPIforSVC.jar


+ 1 - 1
WallPadDevService/src/main/AndroidManifest.xml

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.artncore.deviceservice"
     android:versionCode="1"
-    android:versionName="2022.05.04.99">
+    android:versionName="2022.05.09.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

+ 3 - 0
WallPadDevService/src/main/java/com/artncore/wallpaddevservice/DeviceInitChecker.java

@@ -153,6 +153,9 @@ public class DeviceInitChecker
 	 */
 	private void SendBR()
 	{
+		// 제어기기가 없으면(서브월패드) BR이 너무 빨리 전송되어 WallPadMain에서 BR를 등록하기 전에 완료가 되어
+		// 해당 BR을 수신하지 못하는 문제로 완료BR을 3초 지연하여 전송한다.
+		try { Thread.sleep(3000); } catch (Exception e) { e.printStackTrace(); };
 		mSendInitBR = true;
 		Intent notiIntent = new Intent();
 		notiIntent.setAction(define.NOTIFY_ACNAME);

+ 0 - 6
WallPadDevService/src/main/java/com/artncore/wallpaddevservice/ServiceMain.java

@@ -745,12 +745,6 @@ public class ServiceMain extends Service {
 					// CookTop_Driver
 					///////////////////////////////////////////
 
-					// 0. 로딩여부 판단
-					WallpadDeviceSet devset = new WallpadDeviceSet(getApplicationContext());
-					boolean cookTopConcent = devset.Get_CookTopConcent_Use();
-					devset.closeDB();
-					if (!cookTopConcent) return;
-
 					// 0. 로딩여부 판단
 					// 1. Class 생성
 					cooktop_Controller = new Cooktop_Controller();

+ 26 - 8
WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/KNX_Controller.java

@@ -2135,7 +2135,12 @@ public class KNX_Controller extends DeviceManager {
             return "FAIL;" + APIErrorCode.DEVICEISNOTREADY;
         }
 
-        CtrDevFormat ctrDevFormat = GetCtrDevParamParsing(StrArg, 5);
+        CtrDevFormat ctrDevFormat;
+        if(StrArg.contains("SetEntireLivlight")){
+            ctrDevFormat = GetCtrDevParamParsing(StrArg, 13);
+        } else {
+            ctrDevFormat = GetCtrDevParamParsing(StrArg, 5);
+        }
         if (ctrDevFormat.ret != APIErrorCode.C_SUCCESS) {
             Log.w(TAG, "[NoSinkCtrl] GetCtrDevParamParsing Error (ret:" + ctrDevFormat.ret + ")");
             return "FAIL;" + APIErrorCode.DEFAULT_PARSING_ERR;
@@ -2207,8 +2212,13 @@ public class KNX_Controller extends DeviceManager {
             Log.w(TAG, "[do_ctrEmm] - Not Yet !!!");
             return SHMem.retVal = "FAIL;" + APIErrorCode.DEVICEISNOTREADY;
         }
-
-        CtrDevFormat ctrDevFormat = GetCtrDevParamParsing(SHMem.StrArg, 5);
+        CtrDevFormat ctrDevFormat;
+        if(SHMem.StrArg.contains("SetEntireLivlight")){
+            ctrDevFormat = GetCtrDevParamParsing(SHMem.StrArg, 13);
+        } else {
+            ctrDevFormat = GetCtrDevParamParsing(SHMem.StrArg, 5);
+        }
+        //CtrDevFormat ctrDevFormat = GetCtrDevParamParsing(SHMem.StrArg, 5);
         if (ctrDevFormat.ret != APIErrorCode.C_SUCCESS) {
             Log.w(TAG, "[do_ctrEmm] GetCtrDevParamParsing Error (ret:" + ctrDevFormat.ret + ")");
             return SHMem.retVal = "FAIL;" + APIErrorCode.DEFAULT_PARSING_ERR;
@@ -2432,8 +2442,8 @@ public class KNX_Controller extends DeviceManager {
                 byte hLightCnt = ahCtrlData[nIndex];
 
                 int nExpectedLength = (hLightCnt * 3) + 1;
-                if (hLightCnt != nExpectedLength) {
-                    Log.w(TAG, "[do_ctrEmm] SetEntireLivlight -> wrong param: nExpectedLength [" + nExpectedLength + "], hLightCnt [" + hLightCnt + "]");
+                if (ahCtrlData.length != nExpectedLength) {
+                    Log.w(TAG, "[do_ctrEmm] SetEntireLivlight -> wrong param: nExpectedLength [" + nExpectedLength + "], ahCtrlData.length [" + ahCtrlData.length + "]");
                     return SHMem.retVal = "FAIL;" + APIErrorCode.INVALIDPARAMETER;
                 }
 
@@ -4577,9 +4587,17 @@ public class KNX_Controller extends DeviceManager {
             int nReqDataLength = 4 + (nLightCnt * 3);
             byte[] ReqData = new byte[nReqDataLength];
 
-            ReqData[0] = EM_FIX_INDEX_LIVING;   // 거실EM ID
-            ReqData[1] = (byte) 0x00;   // 미사용 필드
-            System.arraycopy(ahCtrlData, 0, ReqData, 2, ahCtrlData.length);   // 조명 상태값 배열 복사
+            int index = 0;
+
+            ReqData[index++] = EM_FIX_INDEX_LIVING;   // 거실EM ID
+            ReqData[index++] = (byte) 0x00;   // 미사용 필드
+            ReqData[index++] = ahCtrlData[0];   // 조명 개수
+            for(int i=0; i<nLightCnt;i++){
+                ReqData[index++] = ahCtrlData[i+1];
+                ReqData[index++] = ahCtrlData[i+5];
+                ReqData[index++] = ahCtrlData[i+9];
+            }
+            //System.arraycopy(ahCtrlData, 0, ReqData, 2, ahCtrlData.length);   // 조명 상태값 배열 복사
             ReqData[ReqData.length - 1] = (byte) 0x00;   // 콘센트 개수
 
             // 3. 데이터 전송 및 응답