From ce88de4891b87c3b7b2750575e15d6e48d518852 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期四, 24 十月 2024 10:39:12 +0800
Subject: [PATCH] 增加云端库

---
 HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/ota/controller/HDLPMOtaController.java |  475 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 475 insertions(+), 0 deletions(-)

diff --git a/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/ota/controller/HDLPMOtaController.java b/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/ota/controller/HDLPMOtaController.java
new file mode 100644
index 0000000..663f873
--- /dev/null
+++ b/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/ota/controller/HDLPMOtaController.java
@@ -0,0 +1,475 @@
+package com.hdl.linkpm.sdk.ota.controller;
+
+import com.google.gson.JsonObject;
+import com.hdl.hdlhttp.HxHttp;
+import com.hdl.linkpm.sdk.core.api.HDLCloudHomeApi;
+import com.hdl.linkpm.sdk.core.callback.IDefaultCallBack;
+import com.hdl.linkpm.sdk.core.callback.IResponseCallBack;
+import com.hdl.linkpm.sdk.core.exception.HDLException;
+import com.hdl.linkpm.sdk.core.response.HDLResponse;
+import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean;
+import com.hdl.linkpm.sdk.ota.bean.CloudGatewayDriversBean;
+import com.hdl.linkpm.sdk.ota.bean.DeviceFirmwareBean;
+import com.hdl.linkpm.sdk.ota.bean.DownloadUrlBean;
+import com.hdl.linkpm.sdk.ota.bean.FirmwareBean;
+import com.hdl.linkpm.sdk.ota.bean.GatewayDriverBean;
+import com.hdl.linkpm.sdk.utils.HDLExceptionSubmitUtils;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.schedulers.Schedulers;
+import io.reactivex.rxjava3.subscribers.DisposableSubscriber;
+import okhttp3.ResponseBody;
+
+/**
+ * Created by jlchen on 12/17/21.
+ * OTA 缃戝叧銆佽澶囧浐浠舵煡璇㈠拰涓嬭浇鐩稿叧绠$悊
+ */
+public class HDLPMOtaController {
+    /**
+     * instance
+     */
+    private volatile static HDLPMOtaController instance;
+
+    /**
+     * getInstance
+     *
+     * @return HDLPMOtaController
+     */
+    public static synchronized HDLPMOtaController getInstance() {
+        if (instance == null) {
+            synchronized (HDLPMOtaController.class) {
+                if (instance == null) {
+                    instance = new HDLPMOtaController();
+                }
+            }
+        }
+        return instance;
+    }
+
+    /**
+     * 鍘熺敓璁惧鑾峰彇鍥轰欢鍗囩骇鍖呬笅杞藉湴鍧�
+     *
+     * @param firmwareVersionId 鍥轰欢鐗堟湰Id
+     * @return downloadUrl
+     */
+    public Disposable getNativeDeviceFirmwareDownloadUrl(String firmwareVersionId, IResponseCallBack<DownloadUrlBean> callBack) {
+        JsonObject json = new JsonObject();
+        json.addProperty("firmwareVersionId", firmwareVersionId);
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GET_NativeDeviceFirmwareDownloadUrl);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json.toString())
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<DownloadUrlBean>() {
+                    @Override
+                    public void onResponse(DownloadUrlBean response) {
+                        if (callBack != null) {
+                            callBack.onSuccess(response);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * Link缃戝叧椹卞姩鍒楄〃鑾峰彇
+     *
+     * @param homeId   浣忓畢id
+     * @param oid      缃戝叧璁惧oid
+     * @param callBack
+     * @return
+     */
+    public Disposable getGatewayDrivers(String homeId, String oid, IResponseCallBack<List<GatewayDriverBean>> callBack) {
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", homeId);
+        json.addProperty("oid", oid);
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GET_GatewayDrivers);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json.toString())
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<List<GatewayDriverBean>>() {
+                    @Override
+                    public void onResponse(List<GatewayDriverBean> response) {
+                        if (callBack != null) {
+                            callBack.onSuccess(response);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * Link缃戝叧椹卞姩->鑾峰彇瀛樺偍鍦ㄤ簯绔殑椹卞姩鍒嗛〉鍒楄〃
+     *
+     * @param driveCode 椹卞姩缂栧彿鎴栭┍鍔ㄥ悕绉�
+     * @param osImageId 椹卞姩绫诲瀷id
+     * @param callBack
+     * @return
+     */
+    public Disposable getCloudGatewayDrivers(String driveCode, String osImageId, IResponseCallBack<CloudGatewayDriversBean> callBack) {
+        JsonObject json = new JsonObject();
+        json.addProperty("driveCode", driveCode);
+        json.addProperty("osImageId", osImageId);
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GET_CloudGatewayDrivers);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json.toString())
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<CloudGatewayDriversBean>() {
+                    @Override
+                    public void onResponse(CloudGatewayDriversBean response) {
+                        if (callBack != null) {
+                            callBack.onSuccess(response);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * Link缃戝叧椹卞姩鍗囩骇OTA鍛戒护涓嬪彂
+     *
+     * @param homeId          浣忓畢id
+     * @param oid             缃戝叧璁惧oid
+     * @param driverVersionId 椹卞姩鐗堟湰id
+     * @param callBack
+     * @return
+     */
+    public Disposable upgradeGatewayDriver(String homeId, String oid, String driverVersionId, IDefaultCallBack callBack) {
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", homeId);
+        json.addProperty("oid", oid);
+        json.addProperty("driverVersionId", driverVersionId);
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GatewayDriverUpgrade);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json.toString())
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<String>() {
+                    @Override
+                    public void onResponse(String response) {
+                        if (callBack != null) {
+                            callBack.onSuccess();
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+
+    /**
+     * 鑾峰彇IARCC涓夋柟鍥轰欢鍒嗛〉
+     *
+     * @param json     璇锋眰鏁版嵁
+     * @param callBack 鍥炶皟
+     * @return
+     */
+    public Disposable getACIARCCFirmware(String json, IResponseCallBack<List<FirmwareBean>> callBack) {
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GET_FIRMWARE_PAGE);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json)
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<List<FirmwareBean>>() {
+                    @Override
+                    public void onResponse(List<FirmwareBean> list) {
+                        if (callBack != null) {
+                            callBack.onSuccess(list);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * 鑾峰彇IARCC涓夋柟鍥轰欢鍒嗙被
+     *
+     * @param json     璇锋眰鏁版嵁
+     * @param callBack 鍥炶皟
+     * @return
+     */
+    public Disposable getACIARCCFirmwareList(String json, IResponseCallBack<List<FirmwareBean>> callBack) {
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GET_FIRMWARE_LIST);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json)
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<List<FirmwareBean>>() {
+                    @Override
+                    public void onResponse(List<FirmwareBean> list) {
+                        if (callBack != null) {
+                            callBack.onSuccess(list);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * 涓嬭浇IARCC鍥轰欢
+     *
+     * @param requestUrl 璇锋眰鍦板潃
+     * @param callBack   鍥炶皟
+     * @return
+     */
+    public Disposable downloadCloudACIARCCFirmware(String requestUrl, IResponseCallBack<ResponseBody> callBack) {
+        return HxHttp.builder()
+                .url(requestUrl)
+                .build()
+                .download()
+                .observeOn(Schedulers.io())
+                .subscribeWith(new DisposableSubscriber<ResponseBody>() {
+                    @Override
+                    public void onNext(ResponseBody responseBody) {
+                        try {
+                            if (callBack != null) {
+                                callBack.onSuccess(responseBody);
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, null, t);
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    /**
+     * LINK缃戝叧鑾峰彇椹卞姩鍗囩骇鍖呬笅杞藉湴鍧�
+     *
+     * @param driverVersionId 椹卞姩鐗堟湰Id
+     * @return
+     */
+    public Disposable getLinkDeviceDriverDownloadUrl(String driverVersionId, IResponseCallBack<DownloadUrlBean> callBack) {
+        JsonObject json = new JsonObject();
+        json.addProperty("driverVersionId", driverVersionId);
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GET_LinkDeviceDriverDownloadUrl);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json.toString())
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<DownloadUrlBean>() {
+                    @Override
+                    public void onResponse(DownloadUrlBean response) {
+                        if (callBack != null) {
+                            callBack.onSuccess(response);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+
+    /**
+     * 鑾峰彇璁惧鍥轰欢鍒楄〃鑾峰彇
+     *
+     * @param homeId      浣忓畢id
+     * @param deviceOidId oid浜戠id
+     * @param callBack
+     * @return
+     */
+    public Disposable getDeviceFirmwares(String homeId, String deviceOidId, IResponseCallBack<List<DeviceFirmwareBean>> callBack) {
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", homeId);
+        json.addProperty("deviceOidId", deviceOidId);
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GET_DeviceFirmwares);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json.toString())
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<List<DeviceFirmwareBean>>() {
+                    @Override
+                    public void onResponse(List<DeviceFirmwareBean> response) {
+                        if (callBack != null) {
+                            callBack.onSuccess(response);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * 鑾峰彇璁惧鍥轰欢鍒楄〃鑾峰彇->鑾峰彇瀛樺偍鍦ㄤ簯绔殑鍥轰欢鍒嗛〉鍒楄〃
+     *
+     * @param hardwareModel 纭欢鍨嬪彿
+     * @param osImageId     绯荤粺闀滃儚id
+     * @param callBack
+     * @return
+     */
+    public Disposable getCloudDeviceFirmwares(String hardwareModel, String osImageId, IResponseCallBack<List<CloudDeviceFirmwaresBean>> callBack) {
+        JsonObject json = new JsonObject();
+        json.addProperty("hardwareModel", hardwareModel);
+        json.addProperty("osImageId", osImageId);
+        json.addProperty("protocolType", "ZIGBEE");//鍗忚绫诲瀷,鍙敤鍊�:BUSPRO,KNX,ZIGBEE,OTHER
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GET_CloudDeviceFirmwares);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json.toString())
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<List<CloudDeviceFirmwaresBean>>() {
+                    @Override
+                    public void onResponse(List<CloudDeviceFirmwaresBean> response) {
+                        if (callBack != null) {
+                            callBack.onSuccess(response);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * Link璁惧鍥轰欢鍗囩骇OTA鍛戒护涓嬪彂
+     *
+     * @param homeId            浣忓畢id
+     * @param deviceOidId       璁惧id
+     * @param firmwareVersionId 鍥轰欢鐗堟湰id
+     * @param callBack
+     * @return
+     */
+    public Disposable upgradeDeviceFirmware(String homeId, String deviceOidId, String firmwareVersionId, IDefaultCallBack callBack) {
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", homeId);
+        json.addProperty("deviceOidId", deviceOidId);
+        json.addProperty("firmwareVersionId", firmwareVersionId);
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_DeviceFirmwareUpgrade);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json.toString())
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<String>() {
+                    @Override
+                    public void onResponse(String response) {
+                        if (callBack != null) {
+                            callBack.onSuccess();
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * LINK璁惧鑾峰彇鍥轰欢鍗囩骇鍖呬笅杞藉湴鍧�
+     *
+     * @param firmwareVersionId 鍥轰欢鐗堟湰Id
+     * @return
+     */
+    public Disposable getLinkDeviceFirmwareDownloadUrl(String firmwareVersionId, IResponseCallBack<DownloadUrlBean> callBack) {
+        JsonObject json = new JsonObject();
+        json.addProperty("firmwareVersionId", firmwareVersionId);
+        String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_OTA_GET_LinkDeviceFirmwareDownloadUrl);
+        return HxHttp.builder()
+                .url(requestUrl)
+                .raw(json.toString())
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<DownloadUrlBean>() {
+                    @Override
+                    public void onResponse(DownloadUrlBean response) {
+                        if (callBack != null) {
+                            callBack.onSuccess(response);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
+                        if (callBack != null) {
+                            callBack.onFailure(e);
+                        }
+                    }
+                });
+    }
+
+
+}

--
Gitblit v1.8.0