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