From b2d2e6dcf6ec38a2f24721f2bc925d634a6eb78d Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期二, 05 十二月 2023 18:31:01 +0800 Subject: [PATCH] 2023年12月05日18:30:40 --- app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 354 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 317 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java index 78ed634..58ef4c6 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java @@ -1,6 +1,11 @@ package com.hdl.photovoltaic.other; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.IBinder; import android.text.TextUtils; import android.util.Log; @@ -12,15 +17,21 @@ import com.hdl.linkpm.sdk.ota.bean.DeviceFirmwareBean; import com.hdl.linkpm.sdk.ota.bean.DownloadUrlBean; import com.hdl.linkpm.sdk.ota.bean.GatewayDriverBean; +import com.hdl.linkpm.sdk.utils.HDLMD5Utils; import com.hdl.photovoltaic.HDLApp; +import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.bean.ModBusBean; import com.hdl.photovoltaic.config.UserConfigManage; +import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer; +import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.listener.LinkCallBack; +import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean; import com.hdl.photovoltaic.ui.bean.DeviceTimeBean; import com.hdl.photovoltaic.ui.bean.OidBean; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; +import com.hdl.photovoltaic.utils.AppManagerUtils; import com.hdl.photovoltaic.utils.WifiUtils; import com.hdl.sdk.link.common.exception.HDLLinkCode; import com.hdl.sdk.link.common.exception.HDLLinkException; @@ -35,10 +46,14 @@ import org.json.JSONObject; +import java.io.File; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; import io.dcloud.feature.unimp.DCUniMPJSCallback; +import okhttp3.ResponseBody; /** * uni灏忕▼搴忕殑閫昏緫 @@ -62,6 +77,7 @@ } return sHdlUniLogic; } + //region ******銆愬師鐢熴�戝拰銆愬皬绋嬪簭銆戦�氳鐨�3涓柟娉曞悕 onOtherUniMPEventReceive();openUniMP();sendUni();****** @@ -135,6 +151,7 @@ this.uniGetCurrentHomeLocalAndCloudGatewayList(callback); } break; + //modBus鍗忚涓撶敤 case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODBUS_SEND: { sendModBus(data, callback); } @@ -251,7 +268,36 @@ this.uniUpgradeGatewayDriver(data, callback); } break; + //璁惧鍙栨秷涓嬭浇鍗囩骇鏂囦欢 + case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_CANCEL_DOWNLOAD: { + this.uniCancelDownloadingUpgradeFile(data, callback); + } + break; + //鎵撳紑鏈嶅姟 + case HDLUniMP.UNI_EVENT_REPLY_OTA_OPEN_SERVICE: { + this.uniOpenService(data, callback); + } + break; + //鍏抽棴鏈嶅姟 + case HDLUniMP.UNI_EVENT_REPLY_OTA_CLOSE_SERVICE: { + this.uniCloseService(data, callback); + } + break; + } + } else if (HDLUniMP.UNI_EVENT_REPLY_OTHER_MODEL.equals(event)) { + //鍏跺畠妯″潡 + switch (type) { + //鑾峰彇娓╁害鍗曚綅 + case HDLUniMP.UNI_EVENT_REPLY_OTHER_UNIT: { + uniCallbackData(UserConfigManage.getInstance().getTemperature_unit(), callback); + } + break; + //鑾峰彇褰撳墠app璇█ + case HDLUniMP.UNI_EVENT_REPLY_OTHER_APP_LANGUAGE: { + uniCallbackData(UserConfigManage.getInstance().getCurrentAppLanguage(), callback); + } + break; } } HdlLogLogic.print("uni===鍘熺敓鎺ユ敹uni鍙戞潵鐨勬暟鎹�===" + event + "\r\n" + data, false); @@ -263,7 +309,7 @@ /** - * 鍘熺敓鎵撳紑uni鎸囧畾椤甸潰 + * 鍘熺敓銆愭墦寮�銆憉ni鎸囧畾椤甸潰 * * @param path 鎵撳紑璺緞 * @param jsonObject 闄勪欢鏁版嵁(娌℃湁鏁版嵁濉玭ull) @@ -279,7 +325,7 @@ * 娉ㄦ剰锛氶渶瑕佹彁鍓嶅皬绋嬪簭鍦ㄨ繍琛屾墠鍙垚鍔� * * @param topic 涓婚澶х被(濡�:UNI_EVENT_REPLY_HOME_MODEL) - * @param callBackBaseBean 鈥斺�� + * @param callBackBaseBean 鑷畾涔夊疄浣撶被 */ public void sendUni(String topic, HDLUniMP.UniCallBackBaseBean callBackBaseBean) { try { @@ -324,7 +370,7 @@ * 鍓嶆彁鏉′欢:璁惧鑷姩涓婃姤oid淇℃伅缁欎簯绔� */ private void uniGetCurrentDeviceFirmwares(Object data, DCUniMPJSCallback callback) { - String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data)); + String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//浜戠涓婅澶噄d HdlOtaLogic.getInstance().getCurrentDeviceFirmwares(deviceOidId, new CloudCallBeak<List<DeviceFirmwareBean>>() { @Override public void onSuccess(List<DeviceFirmwareBean> obj) { @@ -362,25 +408,59 @@ * 鑾峰彇銆愯澶囨湰鍦板浐浠躲�戝垪琛� */ private void uniGetLocalFirmwares(Object data, DCUniMPJSCallback callback) { - String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//纭欢鍨嬪彿 - String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//绯荤粺闀滃儚id - String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//绯荤粺闀滃儚id + try { + String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//纭欢鍨嬪彿 + String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//绯荤粺闀滃儚id + String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//鍥轰欢鐗堟湰id + List<DeviceFirmwareBean> list = new ArrayList<>(); + String driverFileList = HdlFileLogic.getInstance().getFirmwareRootPath(); + File file = new File(driverFileList); + if (file.list() != null) { + for (int i = 0; i < Objects.requireNonNull(file.list()).length; i++) { + String path = Objects.requireNonNull(file.list())[i]; + String[] ary = path.split("/"); + String[] driverInfoAry = ary[ary.length - 1].split("_"); + DeviceFirmwareBean deviceFirmwareBean = new DeviceFirmwareBean(); + deviceFirmwareBean.setOid(driverInfoAry[0]); + deviceFirmwareBean.setVersion(driverInfoAry[1].replace(".zip", "")); + deviceFirmwareBean.setLocalUrl(HdlFileLogic.getInstance().getFirmwarePathFileName(deviceFirmwareBean.getOid(), deviceFirmwareBean.getVersion())); + list.add(deviceFirmwareBean); + } + } + if (callback != null) { + this.uniCallbackData(list, callback); + } + } catch (Exception ignored) { + } } /** - * 鍚戜簯绔彂璧枫�愯澶囧浐浠躲�戜笅杞芥寚浠� + * 鍚戜簯绔彂璧枫�愯澶囧浐浠朵笅杞姐�戞寚浠� */ private void uniDeviceFirmwareDownload(Object data, DCUniMPJSCallback callback) { - String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//璁惧id - String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//鍥轰欢鐗堟湰id - HdlOtaLogic.getInstance().getDeviceFirmwareDownloadUrl(firmwareVersionId, new CloudCallBeak<DownloadUrlBean>() { + String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//浜戠涓婅澶噄d + String oid = getKeyValue("oid", getKeyValue("data", data));//鍥轰欢鐨刼id + String imageId = getKeyValue("imageId", getKeyValue("data", data));//鍥轰欢闀滃儚id + String version = getKeyValue("version", getKeyValue("data", data));//鍥轰欢鐗堟湰 + String localUrl = getKeyValue("localUrl", getKeyValue("data", data));//鍌ㄥ瓨鍦ㄦ湰鍦板浐浠舵枃浠惰矾寰� + String url = getKeyValue("url", getKeyValue("data", data));//浜戠涓婃枃浠跺湴鍧� + String md5 = getKeyValue("md5", getKeyValue("data", data));//浜戠涓婃枃浠禡D5 + HdlOtaLogic.getInstance().getDeviceUpgradeDownloadFile(url, new CloudCallBeak<ResponseBody>() { @Override - public void onSuccess(DownloadUrlBean obj) { - uniCallbackData(obj, callback); + public void onSuccess(ResponseBody responseBody) { + String firmwarePathFileName = HdlFileLogic.getInstance().getFirmwarePathFileName(oid, version); + boolean isBoolean = HdlOtaLogic.getInstance().disposeDownLoadFile(firmwarePathFileName, responseBody, md5, HdlOtaLogic.firmware_type); + if (isBoolean) { + HdlFileLogic.getInstance().deleteFile(localUrl);//涓嬭浇鎴愬姛,鍒犻櫎鏃у浐浠舵枃浠�; + } else { + HdlFileLogic.getInstance().deleteFile(firmwarePathFileName);//涓嬭浇澶辫触锛屽垹闄や笉瀹屾暣鍥轰欢鏂囦欢; + } + HdlLogLogic.print("鍐欏叆鏂板浐浠舵枃浠跺埌鍐呭瓨鎴愬姛.", false); } @Override public void onFailure(HDLException e) { + HdlLogLogic.print("涓嬭浇鍥轰欢鏂囦欢鍒板唴瀛樺け璐�.", false); uniCallbackData(null, e.getCode(), e.getMsg(), callback); } }); @@ -390,23 +470,77 @@ * 鍚戜簯绔彂璧枫�愯澶囧浐浠躲�戝崌绾TA鎸囦护 */ private void uniUpgradeDeviceFirmware(Object data, DCUniMPJSCallback callback) { - - String deviceMac = getKeyValue("mac", getKeyValue("data", data));//缃戝叧璁惧mac锛堟煡鎵緎ocket锛� - String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//璁惧id + String deviceMac = getKeyValue("mac", getKeyValue("data", data));//閫嗗彉鍣ㄨ澶噈ac锛堟煡鎵緎ocket锛� + String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//浜戠涓婅澶噄d + String oid = getKeyValue("oid", getKeyValue("data", data));//鍗囩骇鍥轰欢鐨刼id String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//鍥轰欢鐗堟湰id + String version = getKeyValue("version", getKeyValue("data", data));//鍥轰欢鐗堟湰 + String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//浜戠涓婃枃浠禡D5 + //鍗囩骇鏈湴浼樺厛->浜戠鍗囩骇 boolean isLocalConnect = HdlDeviceLogic.getInstance().isLocalConnect(deviceMac); if (isLocalConnect) { //鏈湴 //1,寤虹珛鏈湴鏈嶅姟锛� - // 2锛屽憡璇夌綉鍏虫墜鏈篿p鍜岀鍙o紱 + //2,鍛婅瘔缃戝叧鎵嬫満ip鍜岀鍙o紱 + //瀹炰緥鍖� 鑾峰彇ip 鍦板潃 + HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + //鏈湴鍗囩骇鍥轰欢鏂囦欢璺緞 + String firmwarePathFileName = HdlFileLogic.getInstance().getFirmwarePathFileName(oid, version); + String data = HdlFileLogic.getInstance().readFile(firmwarePathFileName); + String md5 = HDLMD5Utils.encodeMD5(data);//缃戝叧鍥轰欢闇�瑕� + //鍗囩骇鍥轰欢鏂囦欢鍦板潃 + String upgradeFileLocalPathUrl = AppManagerUtils.getAppManager().getIPAddress(HDLApp.getInstance()) + ":" + MyNanoHttpServer.HTTP_PORT + firmwarePathFileName; + //閫氱煡缁欑綉鍏冲崌绾у浐浠舵枃浠跺湴鍧�绛変俊鎭� + HdlOtaLogic.getInstance().pushUpgradePacketInfo(deviceMac, oid, hardwareModel, version, data.length() + "", upgradeFileLocalPathUrl, md5, new LinkCallBack<String>() { + @Override + public void onSuccess(String obj) { + HdlLogLogic.print("閫氱煡缁欑綉鍏冲崌绾у浐浠舵枃浠跺湴鍧�鎴愬姛.", false); + } + + @Override + public void onError(HDLLinkException e) { + HdlLogLogic.print("閫氱煡缁欑綉鍏冲崌绾у浐浠舵枃浠跺湴鍧�澶辫触,鏃犳硶鍗囩骇.", false); + uniCallbackData(null, -2, "閫氱煡缁欑綉鍏冲崌绾у浐浠舵枃浠跺湴鍧�澶辫触,鏃犳硶鍗囩骇,", callback); + } + }); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + uniCallbackData(null, -2, "鏈湴鏈嶅姟鏈夊紓甯稿け璐�,鏃犳硶鍗囩骇,", callback); + } + }); } else { - //浜戠 - HdlOtaLogic.getInstance().upgradeDeviceFirmware(deviceOidId, firmwareVersionId, new CloudCallBeak<Boolean>() { + //杩滅▼鍗囩骇闇�瑕佹娴嬪湪閫嗗彉鍣ㄦ湁娌℃湁杩炴帴涓婁簯 + HdlDeviceLogic.getInstance().checkInverterConnectedCloud(deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { @Override - public void onSuccess(Boolean obj) { - uniCallbackData(obj, callback); + public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { + //1锛氳繛鎺ヤ腑,2锛氭晠闅�,3锛氳繍琛�,4锛氱绾�,6:閫嗗彉鍣ㄨ繛涓嶄笂浜�(鑷畾涔�) + if (cloudInverterDeviceBean == null) { + uniCallbackData(null, 6, HDLApp.getInstance().getString(R.string.ota_binding_cloud_upgrade_fails), callback); + return; + } + if (cloudInverterDeviceBean.getDeviceStatus() != 3) { + uniCallbackData(null, cloudInverterDeviceBean.getDeviceStatus(), HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); + return; + } + //4:杩愯 + HdlOtaLogic.getInstance().upgradeDeviceFirmware(deviceOidId, firmwareVersionId, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + uniCallbackData(obj, callback); + } + + @Override + public void onFailure(HDLException e) { + uniCallbackData(null, e.getCode(), e.getMsg(), callback); + } + }); + } @Override @@ -414,6 +548,7 @@ uniCallbackData(null, e.getCode(), e.getMsg(), callback); } }); + } } @@ -460,27 +595,64 @@ * 鑾峰彇銆愯澶囨湰鍦伴┍鍔ㄣ�戝垪琛� */ private void uniGetLocalDrivers(Object data, DCUniMPJSCallback callback) { - String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//椹卞姩缂栧彿鎴栭┍鍔ㄥ悕绉� - String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//椹卞姩绫诲瀷id - String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//椹卞姩绫诲瀷id + try { + String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//椹卞姩缂栧彿鎴栭┍鍔ㄥ悕绉� + String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//椹卞姩绫诲瀷id + String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//椹卞姩绫诲瀷id + List<GatewayDriverBean> list = new ArrayList<>(); + String driverFileList = HdlFileLogic.getInstance().getDriveRootPath(); + File file = new File(driverFileList); + if (file.list() != null) { + for (int i = 0; i < Objects.requireNonNull(file.list()).length; i++) { + String fileName = Objects.requireNonNull(file.list())[i]; + if (!fileName.contains(driveCode)) { + continue; + } + String[] driverInfoAry = fileName.split("_"); + GatewayDriverBean gatewayDriverBean = new GatewayDriverBean(); + gatewayDriverBean.setDriverCode(driverInfoAry[0]); + gatewayDriverBean.setVersion(driverInfoAry[1].replace(".zip", "")); + gatewayDriverBean.setLocalUrl(HdlFileLogic.getInstance().getDrivePathFileName(gatewayDriverBean.getDriverCode(), gatewayDriverBean.getVersion())); + list.add(gatewayDriverBean); + } + } + if (callback != null) { + this.uniCallbackData(list, callback); + } + } catch (Exception exception) { + this.uniCallbackData(new ArrayList<>(), callback); + } + } /** - * 鍚戜簯绔彂璧枫�愯澶囬┍鍔ㄣ�戜笅杞芥寚浠� + * 鍚戜簯绔彂璧枫�愯澶囬┍鍔ㄤ笅杞姐�戞寚浠� */ private void uniGatewayDriverDownload(Object data, DCUniMPJSCallback callback) { - - - String deviceOid = getKeyValue("oid", getKeyValue("data", data));//缃戝叧璁惧oid + String deviceOid = getKeyValue("oid", getKeyValue("data", data));//閫嗗彉鍣ㄨ澶噊id + String driverCode = getKeyValue("driverCode", getKeyValue("data", data));//椹卞姩缂栫爜 + String imageId = getKeyValue("imageId", getKeyValue("data", data));//椹卞姩闀滃儚id + String version = getKeyValue("version", getKeyValue("data", data));//椹卞姩鐗堟湰 String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//椹卞姩鐗堟湰id - HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { + String localUrl = getKeyValue("localUrl", getKeyValue("data", data));//鍌ㄥ瓨鍦ㄦ湰鍦伴┍鍔ㄦ枃浠惰矾寰� + String url = getKeyValue("url", getKeyValue("data", data));//浜戠涓婃枃浠跺湴鍧� + String md5 = getKeyValue("md5", getKeyValue("data", data));//浜戠涓婃枃浠禡D5 + HdlOtaLogic.getInstance().getDeviceUpgradeDownloadFile(url, new CloudCallBeak<ResponseBody>() { @Override - public void onSuccess(Boolean obj) { - uniCallbackData(obj, callback); + public void onSuccess(ResponseBody responseBody) { + String drivePathFileName = HdlFileLogic.getInstance().getDrivePathFileName(driverCode, version); + boolean isBoolean = HdlOtaLogic.getInstance().disposeDownLoadFile(drivePathFileName, responseBody, md5, HdlOtaLogic.driver_type); + if (isBoolean) { + HdlFileLogic.getInstance().deleteFile(localUrl);//涓嬭浇鎴愬姛,鍒犻櫎鏃ч┍鍔ㄦ枃浠�; + } else { + HdlFileLogic.getInstance().deleteFile(drivePathFileName);//涓嬭浇澶辫触锛屽垹闄や笉瀹屾暣椹卞姩鏂囦欢; + } + HdlLogLogic.print("鍐欏叆鏂伴┍鍔ㄦ枃浠跺埌鍐呭瓨鎴愬姛.", false); } @Override public void onFailure(HDLException e) { + HdlLogLogic.print("涓嬭浇椹卞姩鏂囦欢鍒板唴瀛樺け璐�.", false); uniCallbackData(null, e.getCode(), e.getMsg(), callback); } }); @@ -491,20 +663,75 @@ */ private void uniUpgradeGatewayDriver(Object data, DCUniMPJSCallback callback) { - String deviceMac = getKeyValue("mac", getKeyValue("data", data));//缃戝叧璁惧mac锛堟煡鎵緎ocket锛� - String deviceOid = getKeyValue("oid", getKeyValue("data", data));//缃戝叧璁惧oid + String deviceMac = getKeyValue("mac", getKeyValue("data", data));//閫嗗彉鍣ㄨ澶噈ac锛堟煡鎵緎ocket锛� + String deviceOid = getKeyValue("oid", getKeyValue("data", data));//閫嗗彉鍣ㄨ澶噊id String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//椹卞姩鐗堟湰id + String module = getKeyValue("module", getKeyValue("data", data));//妯″潡淇℃伅 + String version = getKeyValue("version", getKeyValue("data", data));//椹卞姩鐗堟湰鍙� + String driverCode = getKeyValue("driverCode", getKeyValue("data", data));//椹卞姩缂栫爜 + //鍗囩骇鏈湴浼樺厛->浜戠鍗囩骇 boolean isLocalConnect = HdlDeviceLogic.getInstance().isLocalConnect(deviceMac); if (isLocalConnect) { //鏈湴 //1,寤虹珛鏈湴鏈嶅姟锛� // 2锛屽憡璇夌綉鍏虫墜鏈篿p鍜岀鍙o紱 - - } else { - HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { + //瀹炰緥鍖� 鑾峰彇ip 鍦板潃 + HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() { @Override - public void onSuccess(Boolean obj) { - uniCallbackData(obj, callback); + public void onServiceConnected(ComponentName name, IBinder service) { + //鏈湴鍗囩骇椹卞姩鏂囦欢璺緞 + String drivePathFileName = HdlFileLogic.getInstance().getDrivePathFileName(driverCode, version); + String data = HdlFileLogic.getInstance().readFile(drivePathFileName); + String md5 = HDLMD5Utils.encodeMD5(data);//缃戝叧椹卞姩闇�瑕� + //鍗囩骇椹卞姩鏂囦欢鍦板潃 + String upgradeFileLocalPathUrl = AppManagerUtils.getAppManager().getIPAddress(HDLApp.getInstance()) + ":" + MyNanoHttpServer.HTTP_PORT + drivePathFileName; + //閫氱煡缁欑綉鍏冲崌绾ч┍鍔ㄦ枃浠跺湴鍧�绛変俊鎭� + HdlOtaLogic.getInstance().pushUpgradePacketInfo(deviceMac, deviceOid, module, version, data.length() + "", upgradeFileLocalPathUrl, md5, new LinkCallBack<String>() { + @Override + public void onSuccess(String obj) { + HdlLogLogic.print("閫氱煡缁欑綉鍏冲崌绾ч┍鍔ㄦ枃浠跺湴鍧�鎴愬姛.", false); + } + + @Override + public void onError(HDLLinkException e) { + HdlLogLogic.print("閫氱煡缁欑綉鍏冲崌绾ч┍鍔ㄦ枃浠跺湴鍧�澶辫触,鏃犳硶鍗囩骇.", false); + uniCallbackData(null, -2, "閫氱煡缁欑綉鍏冲崌绾ч┍鍔ㄦ枃浠跺湴鍧�澶辫触,鏃犳硶鍗囩骇,", callback); + } + }); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + uniCallbackData(null, -2, "鏈湴鏈嶅姟鏈夊紓甯稿け璐�,鏃犳硶鍗囩骇,", callback); + } + }); + } else { + //杩滅▼鍗囩骇闇�瑕併�愭娴嬨�戝湪閫嗗彉鍣ㄦ湁娌℃湁杩炴帴涓婁簯 + HdlDeviceLogic.getInstance().checkInverterConnectedCloud(deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { + @Override + public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { + //1锛氳繛鎺ヤ腑,2锛氭晠闅�,3锛氳繍琛�,4锛氱绾�,6:閫嗗彉鍣ㄨ繛涓嶄笂浜�(鑷畾涔�) + if (cloudInverterDeviceBean == null) { + uniCallbackData(null, 6, HDLApp.getInstance().getString(R.string.ota_binding_cloud_upgrade_fails), callback); + return; + } + if (cloudInverterDeviceBean.getDeviceStatus() != 3) { + uniCallbackData(null, cloudInverterDeviceBean.getDeviceStatus(), HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); + return; + } + //4:杩愯 + HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + uniCallbackData(obj, callback); + } + + @Override + public void onFailure(HDLException e) { + uniCallbackData(null, e.getCode(), e.getMsg(), callback); + } + }); + } @Override @@ -512,10 +739,63 @@ uniCallbackData(null, e.getCode(), e.getMsg(), callback); } }); + } } /** + * 鍙栨秷涓嬭浇鍗囩骇鏂囦欢 + */ + private void uniCancelDownloadingUpgradeFile(Object data, DCUniMPJSCallback callback) { + HdlOtaLogic.getInstance().setStopDriversDownload(); + } + + /** + * 寮�鍚湇鍔� + */ + private void uniOpenService(Object data, DCUniMPJSCallback callback) { + HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + } + + @Override + public void onServiceDisconnected(ComponentName name) { + HdlOtaLogic.getInstance().mServiceStart = false; + } + }); + } + + /** + * 鍏抽棴鏈嶅姟 + */ + private void uniCloseService(Object data, DCUniMPJSCallback callback) { + HdlOtaLogic.getInstance().unLocalService(); + } + + + /** + * @param deviceStatus 閫嗗彉鍣ㄨ繛鎺ヤ簯绔姸鎬佸�硷紙 1锛氳繛鎺ヤ腑,2锛氭晠闅�,3锛氳繍琛�,4锛氱绾匡級 + * @return 杩斿洖鏂囨湰 + */ + public String getDeviceStatusString(int deviceStatus) { + switch (deviceStatus) { + case 1: { + return HDLApp.getInstance().getString(R.string.my_power_station_connecting); + } + case 2: { + return HDLApp.getInstance().getString(R.string.my_power_station_malfunction); + } + case 4: { + return HDLApp.getInstance().getString(R.string.my_power_station_off_line); + } + default: + return ""; + } + + } + + /** * 閫嗗彉鍣ㄦ竻绌轰綇瀹卛d * * @param data uni鏁版嵁 -- Gitblit v1.8.0