mac
2024-03-11 17484333e6621a0285b61d50ceedc8698861120b
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -18,6 +18,7 @@
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.linkpm.sdk.core.exception.HDLException;
@@ -35,9 +36,16 @@
import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.listener.LinkCallBack;
import com.hdl.photovoltaic.ui.StartActivity;
import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean;
import com.hdl.photovoltaic.ui.bean.DeviceTimeBean;
import com.hdl.photovoltaic.ui.bean.Geolocation;
import com.hdl.photovoltaic.ui.bean.OidBean;
import com.hdl.photovoltaic.ui.me.AsRegardsActivity;
import com.hdl.photovoltaic.ui.me.PersonalDataActivity;
import com.hdl.photovoltaic.ui.me.SetActivity;
import com.hdl.photovoltaic.ui.newC.MessageCenterList;
import com.hdl.photovoltaic.ui.newC.PowerStationsListEdit;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
import com.hdl.photovoltaic.utils.NetworkUtils;
@@ -57,10 +65,13 @@
import java.io.File;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import io.dcloud.feature.unimp.DCUniMPJSCallback;
import okhttp3.ResponseBody;
@@ -106,6 +117,8 @@
                return;
            }
            String type = getKeyValue("type", data);//小类
            String mode_type = "大类->" + topic + "--->" + "小类->" + type;//用来打印的
            HdlLogLogic.print("uni--->发送--->" + mode_type + "\r\n" + data, true);
            if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(topic)) {
                //住宅模块
                switch (type) {
@@ -146,60 +159,65 @@
                }
                if (callback != null) {
                    uniCallbackData(null, callback);
                    uniCallbackData(type, null, callback);
                }
            } else if (HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODEL.equals(topic)) {
                //设备模块
                switch (type) {
                    //添加逆变器到云端
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD: {
                        this.uniAddInverterDeviceToCloud(data, callback);
                        this.uniAddInverterDeviceToCloud(mode_type, data, callback);
                    }
                    //添加多个逆变器到云端
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD_All: {
                        this.uniAddAllInverterDeviceToCloud(mode_type, data, callback);
                    }
                    break;
                    //删除云端逆变器
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_DEL: {
                        this.uniDelInverterDevice(data, callback);
                        this.uniDelInverterDevice(mode_type, data, callback);
                    }
                    break;
                    //局域网搜索逆变器列表
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_NET_LIST: {
                        this.uniSearchGateway(callback);
                        this.uniSearchGateway(mode_type, callback);
                    }
                    break;
                    //获取逆变器列表
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST: {
                        this.uniGetCurrentHomeLocalAndCloudGatewayList(data, callback);
                        this.uniGetCurrentHomeLocalAndCloudGatewayList(mode_type, data, callback);
                    }
                    break;
                    //modBus协议专用
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODBUS_SEND: {
                        sendModBus(data, callback);
                        sendModBus(mode_type, data, callback);
                    }
                    break;
                    //获取oid列表
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_OID: {
                        this.uniGetInverterOidList(data, callback);
                        this.uniGetInverterOidList(mode_type, data, callback);
                    }
                    break;
                    //逆变器时间读取
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_TIME: {
                        this.uniGetInverterTime(data, callback);
                        this.uniGetInverterTime(mode_type, data, callback);
                    }
                    break;
                    //逆变器时间编辑
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_TIME_EDIT: {
                        this.uniEditInverterTime(data, callback);
                        this.uniEditInverterTime(mode_type, data, callback);
                    }
                    break;
                    //逆变器上传数据到云端
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_UPLOADING_DATA: {
                        this.uniUploadDataToCloud(data, callback);
                        this.uniUploadDataToCloud(mode_type, data, callback);
                    }
                    break;
                    //逆变器清空住宅id
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_CLEAR_DATA: {
                        this.uniClearInverterHomeId(data, callback);
                        this.uniClearInverterHomeId(mode_type, data, callback);
                    }
                    break;
@@ -212,14 +230,14 @@
                    //获取wifi列表
                    case HDLUniMP.UNI_EVENT_REPLY_WIFI_LIST: {
                        if (callback != null) {
                            uniCallbackData(wifiUtils.getScanResult(), callback);
                            uniCallbackData(mode_type, wifiUtils.getScanResult(), callback);
                        }
                    }
                    break;
                    //当前wifi详情
                    case HDLUniMP.UNI_EVENT_REPLY_WIFI_INFO: {
                        if (callback != null) {
                            uniCallbackData(wifiUtils.getCurrentConnectWifiInfo(), callback);
                            uniCallbackData(mode_type, wifiUtils.getCurrentConnectWifiInfo(), callback);
                        }
                    }
                    break;
@@ -235,85 +253,77 @@
                switch (type) {
                    //向云端获取oid列表
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_CLOUD_OID_LIST: {
                        this.uniGetCloudOidList(data, callback);
                        this.uniGetCloudOidList(mode_type, data, callback);
                    }
                    break;
                    //当前设备固件列表
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_LIST: {
                        this.uniGetCurrentDeviceFirmwares(data, callback);
                        this.uniGetCurrentDeviceFirmwares(mode_type, data, callback);
                    }
                    break;
                    //设备新固件列表
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_NEW_LIST: {
                        this.uniGetNewDeviceFirmwares(data, callback);
                        this.uniGetNewDeviceFirmwares(mode_type, data, callback);
                    }
                    break;
                    //设备本地固件列表
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_LOCAL: {
                        this.uniGetLocalFirmwares(data, callback);
                        this.uniGetLocalFirmwares(mode_type, data, callback);
                    }
                    break;
                    //设备固件下载
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_DOWNLOAD: {
                        this.uniDeviceFirmwareDownload(data, callback);
                        this.uniDeviceFirmwareDownload(mode_type, data, callback);
                    }
                    break;
                    //设备固件升级
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_UPGRADE: {
                        this.uniUpgradeDeviceFirmware(data, callback);
                        this.uniUpgradeDeviceFirmware(mode_type, data, callback);
                    }
                    break;
                    //当前设备驱动列表
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_LIST: {
                        this.uniGetCurrentGatewayDrivers(data, callback);
                        this.uniGetCurrentGatewayDrivers(mode_type, data, callback);
                    }
                    break;
                    //设备新驱动列表
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_NEW: {
                        this.uniGetNewGatewayDrivers(data, callback);
                        this.uniGetNewGatewayDrivers(mode_type, data, callback);
                    }
                    break;
                    //设备本地驱动列表
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_LOCAL: {
                        this.uniGetLocalDrivers(data, callback);
                        this.uniGetLocalDrivers(mode_type, data, callback);
                    }
                    break;
                    //设备驱动下载
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_DOWNLOAD: {
                        this.uniGatewayDriverDownload(data, callback);
                        this.uniGatewayDriverDownload(mode_type, data, callback);
                    }
                    break;
                    //设备驱动升级
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_UPGRADE: {
                        this.uniUpgradeGatewayDriver(data, callback);
                        this.uniUpgradeGatewayDriver(mode_type, data, callback);
                    }
                    break;
                    //设备取消驱动,固件下载升级文件
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_CANCEL_DOWNLOAD: {
                        this.uniCancelDownloadingUpgradeFile(data, callback);
//                        HdlThreadLogic.runSubThread(new Runnable() {
//                            @Override
//                            public void run() {
//                                HdlLogLogic.print("当前线程名称取消下载====" + Thread.currentThread().getName());
//                                uniCancelDownloadingUpgradeFile(data, callback);
//                            }
//                        });
                        this.uniCancelDownloadingUpgradeFile(mode_type, data, callback);
                    }
                    break;
                    //设备驱动,固件取消升级
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_CANCEL_UPGRADE: {
                        this.uniCancelUpgrade(data, callback);
                        this.uniCancelUpgrade(mode_type, data, callback);
                    }
                    break;
                    //打开服务
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_OPEN_SERVICE: {
                        this.uniOpenService(data, callback);
                        this.uniOpenService(mode_type, data, callback);
                    }
                    break;
                    //关闭服务
                    case HDLUniMP.UNI_EVENT_REPLY_OTA_CLOSE_SERVICE: {
                        this.uniCloseService(data, callback);
                        this.uniCloseService(mode_type, data, callback);
                    }
                    break;
@@ -323,23 +333,74 @@
                switch (type) {
                    //获取温度单位
                    case HDLUniMP.UNI_EVENT_REPLY_OTHER_UNIT: {
                        uniCallbackData(UserConfigManage.getInstance().getTemperature_unit(), callback);
                        uniCallbackData(mode_type, UserConfigManage.getInstance().getTemperature_unit(), callback);
                    }
                    break;
                    //获取当前app语言
                    case HDLUniMP.UNI_EVENT_REPLY_OTHER_APP_LANGUAGE: {
                        uniCallbackData(UserConfigManage.getInstance().getCurrentAppLanguage(), callback);
                        uniCallbackData(mode_type, UserConfigManage.getInstance().getCurrentAppLanguage(), callback);
                    }
                    break;
                    //获取位置信息
                    case HDLUniMP.UNI_EVENT_REPLY_OTHER_LOCATION_INFO: {
                        this.uniGetLocationInfo(data, callback);
                        this.uniGetLocationInfo(mode_type, data, callback);
                    }
                    //专门收集uni日志
                    case HDLUniMP.UNI_EVENT_REPLY_OTHER_UNI_LOG: {
                        String customizeContentFormat = getKeyValue("customizeContentFormat", getKeyValue("data", data));
                        HdlLogLogic.print("uni--->log--->" + customizeContentFormat, true);
                    }
                }
            } else if (HDLUniMP.UNI_EVENT_REPLY_MINE_MODEL.equals(topic)) {
                //我的模块
                switch (type) {
                    //资料编辑
                    case HDLUniMP.UNI_EVENT_REPLY_MINE_EDIT_USER_INFO: {
                        Intent intent = new Intent();
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.setClass(HDLApp.getInstance(), PersonalDataActivity.class);
                        HDLApp.getInstance().startActivity(intent);
                    }
                    break;
                    //电站选择
                    case HDLUniMP.UNI_EVENT_REPLY_MINE_SELECTED_POWERSTATION: {
                        Intent intent = new Intent();
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.setClass(HDLApp.getInstance(), PowerStationsListEdit.class);
                        HDLApp.getInstance().startActivity(intent);
                    }
                    break;
                    //消息中心
                    case HDLUniMP.UNI_EVENT_REPLY_MINE_MESSAGE_CENTER: {
                        Intent intent = new Intent();
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.setClass(HDLApp.getInstance(), MessageCenterList.class);
                        HDLApp.getInstance().startActivity(intent);
                    }
                    break;
                    //关于
                    case HDLUniMP.UNI_EVENT_REPLY_MINE_ABOUT: {
                        Intent intent = new Intent();
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.setClass(HDLApp.getInstance(), AsRegardsActivity.class);
                        HDLApp.getInstance().startActivity(intent);
                    }
                    break;
                    //设置
                    case HDLUniMP.UNI_EVENT_REPLY_MINE_SETTING: {
                        Intent intent = new Intent();
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.setClass(HDLApp.getInstance(), SetActivity.class);
                        HDLApp.getInstance().startActivity(intent);
                    }
                    break;
                }
            }
            HdlLogLogic.print("uni发来的数据--->大类--->" + topic + "\r\n" + data, true);
        } catch (Exception e) {
            HdlLogLogic.print("uni发来的数据--->" + e.getMessage(), true);
            HdlLogLogic.print("uni--->发送--->" + e.getMessage(), true);
        }
    }
@@ -385,43 +446,50 @@
    /**
     * 获取位置信息,包括经纬度
     */
    private void uniGetLocationInfo(Object data, DCUniMPJSCallback callback) {
        // 初始化LocationManager对象
        LocationManager locationManager = (LocationManager) HDLApp.getInstance().getSystemService(Context.LOCATION_SERVICE);
        JsonObject jsonObject = new JsonObject();
        //INTERNET   允许使用网络
        //ACCESS_FINE_LOCATION   允许使用GPS定位
        //ACCESS_COARSE_LOCATION   允许使用WIFI热点或基站来获取粗略的定位
        if (ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            jsonObject.addProperty("result", -2);//没有位置信息权限
            jsonObject.addProperty("des", HDLApp.getInstance().getString(R.string.exception_no_location_information_permission));
            uniCallbackData(jsonObject.toString(), callback);
            return;
    private void uniGetLocationInfo(String type, Object data, DCUniMPJSCallback callback) {
        try {
            // 初始化LocationManager对象
            LocationManager locationManager = (LocationManager) HDLApp.getInstance().getSystemService(Context.LOCATION_SERVICE);
            Geolocation geolocation = new Geolocation();
            //INTERNET   允许使用网络
            //ACCESS_FINE_LOCATION   允许使用GPS定位
            //ACCESS_COARSE_LOCATION   允许使用WIFI热点或基站来获取粗略的定位
            if (ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                geolocation.setResult(-2);
                geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_no_location_information_permission));
                uniCallbackData(type, geolocation, callback);
                return;
            }
            // 判断设备是否支持定位功能
            if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                geolocation.setResult(-1);
                geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_the_location_function_is_not_enabled));
                //todo 提示用户打开定位功能或者引导用户去系统设置页面打开定位功能
                uniCallbackData(type, geolocation, callback);
                return;
            }
            Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            if (location == null) {
                geolocation.setResult(-3);
                geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_unable_location_move10_meters_later));
                uniCallbackData(type, geolocation, callback);
                return;
            }
            geolocation.setResult(0);
            geolocation.setDes(HDLApp.getInstance().getString(R.string.succeed));
            BigDecimal latitude = BigDecimal.valueOf(location.getLatitude());//经度
            BigDecimal longitude = BigDecimal.valueOf(location.getLongitude());//纬度
            double lat = latitude.setScale(6, RoundingMode.HALF_DOWN).doubleValue();
            double lon = longitude.setScale(6, RoundingMode.HALF_DOWN).doubleValue();
            geolocation.setLatitude(lat);//经度
            geolocation.setLongitude(lon);//纬度
            uniCallbackData(type, geolocation, callback);
        } catch (Exception e) {
            Geolocation geolocation = new Geolocation();
            geolocation.setResult(-4);
            geolocation.setDes(e.getMessage());
            uniCallbackData(type, geolocation, callback);
        }
        // 判断设备是否支持定位功能
        if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            jsonObject.addProperty("result", -1);//没开启定位功能
            jsonObject.addProperty("des", HDLApp.getInstance().getString(R.string.exception_the_location_function_is_not_enabled));
            //todo 提示用户打开定位功能或者引导用户去系统设置页面打开定位功能
            uniCallbackData(jsonObject.toString(), callback);
            return;
        }
        Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if (location == null) {
            jsonObject.addProperty("result", -3);//没有位置信息权限
            jsonObject.addProperty("des", HDLApp.getInstance().getString(R.string.exception_the_location_function_is_not_enabled));
            uniCallbackData(jsonObject.toString(), callback);
            return;
        }
        jsonObject.addProperty("result", 0);
        jsonObject.addProperty("des", HDLApp.getInstance().getString(R.string.succeed));
        jsonObject.addProperty("longitude", location.getLongitude());//经度
        jsonObject.addProperty("latitude", location.getLatitude());//纬度
        uniCallbackData(jsonObject.toString(), callback);
        HdlLogLogic.print("经纬度--->经度:" + location.getLongitude() + "纬度:" + location.getLatitude(), true);
    }
    /**
@@ -430,16 +498,16 @@
     *
     * @param callback -
     */
    private void uniGetCloudOidList(Object data, DCUniMPJSCallback callback) {
    private void uniGetCloudOidList(String type, Object data, DCUniMPJSCallback callback) {
        HdlOtaLogic.getInstance().getCloudOidList(new CloudCallBeak<List<DeviceOidInfoBean>>() {
            @Override
            public void onSuccess(List<DeviceOidInfoBean> obj) {
                uniCallbackData(obj, callback);
                uniCallbackData(type, obj, callback);
            }
            @Override
            public void onFailure(HDLException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -448,17 +516,17 @@
     * 向云端获取【当前设备固件】列表
     * 前提条件:设备自动上报oid信息给云端
     */
    private void uniGetCurrentDeviceFirmwares(Object data, DCUniMPJSCallback callback) {
    private void uniGetCurrentDeviceFirmwares(String type, Object data, DCUniMPJSCallback callback) {
        String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//云端上设备id
        HdlOtaLogic.getInstance().getCurrentDeviceFirmwares(deviceOidId, new CloudCallBeak<List<DeviceFirmwareBean>>() {
            @Override
            public void onSuccess(List<DeviceFirmwareBean> obj) {
                uniCallbackData(obj, callback);
                uniCallbackData(type, obj, callback);
            }
            @Override
            public void onFailure(HDLException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -467,18 +535,18 @@
     * 向云端获取【设备新固件】列表
     * 前提条件:要通过平台软件上传新固件
     */
    private void uniGetNewDeviceFirmwares(Object data, DCUniMPJSCallback callback) {
    private void uniGetNewDeviceFirmwares(String type, Object data, DCUniMPJSCallback callback) {
        String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//硬件型号
        String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//系统镜像id
        HdlOtaLogic.getInstance().getNewDeviceFirmwares(hardwareModel, osImageId, new CloudCallBeak<List<CloudDeviceFirmwaresBean>>() {
            @Override
            public void onSuccess(List<CloudDeviceFirmwaresBean> obj) {
                uniCallbackData(obj, callback);
                uniCallbackData(type, obj, callback);
            }
            @Override
            public void onFailure(HDLException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -486,7 +554,7 @@
    /**
     * 获取【设备本地固件】列表
     */
    private void uniGetLocalFirmwares(Object data, DCUniMPJSCallback callback) {
    private void uniGetLocalFirmwares(String type, Object data, DCUniMPJSCallback callback) {
        try {
//            String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//硬件型号
            String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//系统镜像id
@@ -512,7 +580,7 @@
                }
            }
            if (callback != null) {
                this.uniCallbackData(list, callback);
                this.uniCallbackData(type, list, callback);
            }
        } catch (Exception ignored) {
        }
@@ -521,7 +589,7 @@
    /**
     * 向云端发起【设备固件下载】指令
     */
    private void uniDeviceFirmwareDownload(Object data, DCUniMPJSCallback callback) {
    private void uniDeviceFirmwareDownload(String type, Object data, DCUniMPJSCallback callback) {
//        String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//云端上设备id
        String oid = getKeyValue("oid", getKeyValue("data", data));//该固件的oid
        String imageId = getKeyValue("imageId", getKeyValue("data", data));//固件镜像id
@@ -545,11 +613,9 @@
                        }
                        if (isBoolean) {
                            HdlLogLogic.print("写入新固件文件到内存成功.", true);
                            uniCallbackData(null, 0, "写入新驱动文件到内存成功", callback);
                            uniCallbackData(type, null, 0, "写入新驱动文件到内存成功", callback);
                        } else {
                            HdlLogLogic.print("下载固件升级文件失败.", true);
                            uniCallbackData(null, -2, "下载固件升级文件失败", callback);
                            uniCallbackData(type, null, -2, "下载固件升级文件失败", callback);
                        }
                    }
                });
@@ -558,8 +624,7 @@
            @Override
            public void onFailure(HDLException e) {
                HdlLogLogic.print("下载固件文件到内存失败.", true);
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -567,7 +632,7 @@
    /**
     * 向云端发起【设备固件】升级OTA指令
     */
    private void uniUpgradeDeviceFirmware(Object data, DCUniMPJSCallback callback) {
    private void uniUpgradeDeviceFirmware(String type, Object data, DCUniMPJSCallback callback) {
        String homeId = UserConfigManage.getInstance().getHomeId();
        String deviceMac = getKeyValue("mac", getKeyValue("data", data));//逆变器设备mac(查找socket)
        String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//云端上设备id
@@ -595,7 +660,7 @@
                            String firmwarePathFileName = HdlFileLogic.getInstance().getFirmwarePathFileName(oid, imageId, version);
                            byte[] data = HdlFileLogic.getInstance().readFileByte(firmwarePathFileName);
                            if (data == null || data.length == 0) {
                                uniCallbackData(null, -2, "本地找不到升级固件文件,请下载好固件文件,再重新升级.", callback);
                                uniCallbackData(type, null, -2, "本地找不到升级固件文件,请下载好固件文件,再重新升级.", callback);
                                return;
                            }
                            String md5 = HDLMD5Utils.encodeMD5(data);//网关固件需要
@@ -610,15 +675,14 @@
                                @Override
                                public void onError(HDLLinkException e) {
                                    HdlLogLogic.print("通知给网关升级固件文件地址失败,无法升级.", true);
                                    uniCallbackData(null, -2, "通知给网关升级固件文件地址失败,无法升级,", callback);
                                    uniCallbackData(type, null, -2, "通知给网关升级固件文件地址失败,无法升级,", callback);
                                }
                            });
                        }
                        @Override
                        public void onServiceDisconnected(ComponentName name) {
                            uniCallbackData(null, -2, "本地服务有异常失败,无法升级,", callback);
                            uniCallbackData(type, null, -2, "本地服务有异常失败,无法升级,", callback);
                        }
                    });
                } else {
@@ -629,23 +693,23 @@
                        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);
                                uniCallbackData(type, 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);
                                uniCallbackData(type, 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);
                                    uniCallbackData(type, obj, callback);
                                }
                                @Override
                                public void onFailure(HDLException e) {
                                    uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                                    uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                                }
                            });
@@ -653,7 +717,7 @@
                        @Override
                        public void onFailure(HDLException e) {
                            uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                            uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                        }
                    });
                }
@@ -668,23 +732,23 @@
                    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);
                            uniCallbackData(type, 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);
                            uniCallbackData(type, 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);
                                uniCallbackData(type, obj, callback);
                            }
                            @Override
                            public void onFailure(HDLException e) {
                                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                            }
                        });
@@ -692,7 +756,7 @@
                    @Override
                    public void onFailure(HDLException e) {
                        uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                        uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                    }
                });
            }
@@ -704,17 +768,17 @@
     * 向云端获取【当前设备驱动】列表
     * 前提条件:设备自动上报oid信息给云端
     */
    private void uniGetCurrentGatewayDrivers(Object data, DCUniMPJSCallback callback) {
    private void uniGetCurrentGatewayDrivers(String type, Object data, DCUniMPJSCallback callback) {
        String deviceOid = getKeyValue("oid", getKeyValue("data", data));
        HdlOtaLogic.getInstance().getCurrentGatewayDrivers(deviceOid, new CloudCallBeak<List<GatewayDriverBean>>() {
            @Override
            public void onSuccess(List<GatewayDriverBean> obj) {
                uniCallbackData(obj, callback);
                uniCallbackData(type, obj, callback);
            }
            @Override
            public void onFailure(HDLException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -723,18 +787,18 @@
     * 向云端获取【设备新驱动】列表
     * 前提条件:要通过平台软件上传新驱动
     */
    private void uniGetNewGatewayDrivers(Object data, DCUniMPJSCallback callback) {
    private void uniGetNewGatewayDrivers(String type, Object data, DCUniMPJSCallback callback) {
        String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//驱动编号或驱动名称
        String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//驱动类型id
        HdlOtaLogic.getInstance().getNewGatewayDrivers(driveCode, osImageId, new CloudCallBeak<CloudGatewayDriversBean>() {
            @Override
            public void onSuccess(CloudGatewayDriversBean obj) {
                uniCallbackData(obj, callback);
                uniCallbackData(type, obj, callback);
            }
            @Override
            public void onFailure(HDLException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -742,7 +806,7 @@
    /**
     * 获取【设备本地驱动】列表
     */
    private void uniGetLocalDrivers(Object data, DCUniMPJSCallback callback) {
    private void uniGetLocalDrivers(String type, Object data, DCUniMPJSCallback callback) {
        try {
            String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//驱动编号或驱动名称
//            String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//驱动类型id
@@ -765,10 +829,10 @@
                }
            }
            if (callback != null) {
                this.uniCallbackData(list, callback);
                this.uniCallbackData(type, list, callback);
            }
        } catch (Exception exception) {
            this.uniCallbackData(new ArrayList<>(), callback);
            this.uniCallbackData(type, new ArrayList<>(), callback);
        }
    }
@@ -776,7 +840,7 @@
    /**
     * 向云端发起【设备驱动下载】指令
     */
    private void uniGatewayDriverDownload(Object data, DCUniMPJSCallback callback) {
    private void uniGatewayDriverDownload(String type, Object data, DCUniMPJSCallback callback) {
//        String deviceOid = getKeyValue("oid", getKeyValue("data", data));//逆变器设备oid
        String driverCode = getKeyValue("driverCode", getKeyValue("data", data));//驱动编码
@@ -802,11 +866,9 @@
                            HdlFileLogic.getInstance().deleteFile(drivePathFileName);//下载失败,删除不完整驱动文件;
                        }
                        if (isBoolean) {
                            HdlLogLogic.print("写入新驱动文件到内存成功.", true);
                            uniCallbackData(null, 0, "写入新驱动文件到内存成功", callback);
                            uniCallbackData(type, null, 0, "写入新驱动文件到内存成功", callback);
                        } else {
                            HdlLogLogic.print("下载驱动升级文件失败.", true);
                            uniCallbackData(null, -2, "下载驱动升级文件失败", callback);
                            uniCallbackData(type, null, -2, "下载驱动升级文件失败", callback);
                        }
                    }
                });
@@ -815,8 +877,7 @@
            @Override
            public void onFailure(HDLException e) {
                HdlLogLogic.print("下载驱动文件到内存失败.", true);
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -824,7 +885,7 @@
    /**
     * 向云端发起【设备驱动】升级OTA指令
     */
    private void uniUpgradeGatewayDriver(Object data, DCUniMPJSCallback callback) {
    private void uniUpgradeGatewayDriver(String type, Object data, DCUniMPJSCallback callback) {
        String homeId = UserConfigManage.getInstance().getHomeId();
        String deviceMac = getKeyValue("mac", getKeyValue("data", data));//逆变器设备mac(查找socket)
@@ -851,7 +912,7 @@
                            String drivePathFileName = HdlFileLogic.getInstance().getDrivePathFileName(driverCode, version);
                            byte[] data = HdlFileLogic.getInstance().readFileByte(drivePathFileName);
                            if (data == null || data.length == 0) {
                                uniCallbackData(null, -2, "本地找不到升级驱动文件,请下载好驱动文件,再重新升级.", callback);
                                uniCallbackData(type, null, -2, "本地找不到升级驱动文件,请下载好驱动文件,再重新升级.", callback);
                                return;
                            }
                            String md5 = HDLMD5Utils.encodeMD5(data);//网关驱动需要
@@ -866,15 +927,14 @@
                                @Override
                                public void onError(HDLLinkException e) {
                                    HdlLogLogic.print("通知给网关升级驱动文件地址失败,无法升级.", true);
                                    uniCallbackData(null, -2, "通知给网关升级驱动文件地址失败,无法升级,", callback);
                                    uniCallbackData(type, null, -2, "通知给网关升级驱动文件地址失败,无法升级,", callback);
                                }
                            });
                        }
                        @Override
                        public void onServiceDisconnected(ComponentName name) {
                            uniCallbackData(null, -2, "本地服务有异常失败,无法升级,", callback);
                            uniCallbackData(type, null, -2, "本地服务有异常失败,无法升级,", callback);
                        }
                    });
                } else {
@@ -885,23 +945,23 @@
                        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);
                                uniCallbackData(type, 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);
                                uniCallbackData(type, 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);
                                    uniCallbackData(type, obj, callback);
                                }
                                @Override
                                public void onFailure(HDLException e) {
                                    uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                                    uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                                }
                            });
@@ -909,7 +969,7 @@
                        @Override
                        public void onFailure(HDLException e) {
                            uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                            uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                        }
                    });
                }
@@ -924,23 +984,23 @@
                    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);
                            uniCallbackData(type, 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);
                            uniCallbackData(type, 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);
                                uniCallbackData(type, obj, callback);
                            }
                            @Override
                            public void onFailure(HDLException e) {
                                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                            }
                        });
@@ -948,7 +1008,7 @@
                    @Override
                    public void onFailure(HDLException e) {
                        uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                        uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                    }
                });
            }
@@ -959,15 +1019,15 @@
    /**
     * 取消下载【驱动,固件】升级文件
     */
    private void uniCancelDownloadingUpgradeFile(Object data, DCUniMPJSCallback callback) {
    private void uniCancelDownloadingUpgradeFile(String type, Object data, DCUniMPJSCallback callback) {
        HdlOtaLogic.getInstance().stopDownloadUpgradeFile();
        uniCallbackData(null, 0, "取消下载成功.", callback);
        uniCallbackData(type, null, 0, "取消下载成功.", callback);
    }
    /**
     * 取消【驱动,固件】升级
     */
    private void uniCancelUpgrade(Object data, DCUniMPJSCallback callback) {
    private void uniCancelUpgrade(String type, Object data, DCUniMPJSCallback callback) {
        HdlOtaLogic.getInstance().cancelUpgrade("", new LinkCallBack<Boolean>() {
            @Override
            public void onSuccess(Boolean obj) {
@@ -984,7 +1044,7 @@
    /**
     * 开启服务
     */
    private void uniOpenService(Object data, DCUniMPJSCallback callback) {
    private void uniOpenService(String type, Object data, DCUniMPJSCallback callback) {
        HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
@@ -1000,7 +1060,7 @@
    /**
     * 关闭服务
     */
    private void uniCloseService(Object data, DCUniMPJSCallback callback) {
    private void uniCloseService(String type, Object data, DCUniMPJSCallback callback) {
        HdlOtaLogic.getInstance().unLocalService();
    }
@@ -1032,17 +1092,17 @@
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniClearInverterHomeId(Object data, DCUniMPJSCallback callback) {
    private void uniClearInverterHomeId(String type, Object data, DCUniMPJSCallback callback) {
        String mac = getKeyValue("mac", getKeyValue("data", data));
        HdlDeviceLogic.getInstance().clearInverterHomeId(mac, new LinkCallBack<Boolean>() {
            @Override
            public void onSuccess(Boolean obj) {
                uniCallbackData(null, callback);
                uniCallbackData(type, null, callback);
            }
            @Override
            public void onError(HDLLinkException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -1053,7 +1113,7 @@
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniUploadDataToCloud(Object data, DCUniMPJSCallback callback) {
    private void uniUploadDataToCloud(String type, Object data, DCUniMPJSCallback callback) {
        String mac = getKeyValue("mac", getKeyValue("data", data));
        HdlDeviceLogic.getInstance().uploadDataToCloud(UserConfigManage.getInstance().getHomeId(), mac, null);
    }
@@ -1064,7 +1124,7 @@
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniEditInverterTime(Object data, DCUniMPJSCallback callback) {
    private void uniEditInverterTime(String type, Object data, DCUniMPJSCallback callback) {
        String mac = getKeyValue("mac", getKeyValue("data", data));
        String date = getKeyValue("date", getKeyValue("data", data));
        String time = getKeyValue("time", getKeyValue("data", data));
@@ -1072,12 +1132,12 @@
        HdlDeviceLogic.getInstance().editGatewayTime(mac, date, time, timezone, new LinkCallBack<Boolean>() {
            @Override
            public void onSuccess(Boolean obj) {
                uniCallbackData(true, callback);
                uniCallbackData(type, true, callback);
            }
            @Override
            public void onError(HDLLinkException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -1088,19 +1148,19 @@
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniGetInverterTime(Object data, DCUniMPJSCallback callback) {
    private void uniGetInverterTime(String type, Object data, DCUniMPJSCallback callback) {
        String mac = getKeyValue("mac", getKeyValue("data", data));
        HdlDeviceLogic.getInstance().getGatewayTime(mac, new LinkCallBack<DeviceTimeBean>() {
            @Override
            public void onSuccess(DeviceTimeBean deviceTimeBean) {
                if (callback != null) {
                    uniCallbackData(deviceTimeBean, callback);
                    uniCallbackData(type, deviceTimeBean, callback);
                }
            }
            @Override
            public void onError(HDLLinkException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -1111,23 +1171,24 @@
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniGetInverterOidList(Object data, DCUniMPJSCallback callback) {
    private void uniGetInverterOidList(String type, Object data, DCUniMPJSCallback callback) {
        String mac = getKeyValue("mac", getKeyValue("data", data));
        HdlDeviceLogic.getInstance().getInverterOidList(mac, new LinkCallBack<List<OidBean>>() {
            @Override
            public void onSuccess(List<OidBean> list) {
                if (callback != null) {
                    uniCallbackData(list, callback);
                    uniCallbackData(type, list, callback);
                }
            }
            @Override
            public void onError(HDLLinkException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
    /**
     * 逆变器添加到云端上
@@ -1135,7 +1196,7 @@
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniAddInverterDeviceToCloud(Object data, DCUniMPJSCallback callback) {
    private void uniAddInverterDeviceToCloud(String type, Object data, DCUniMPJSCallback callback) {
        String mac = getKeyValue("mac", getKeyValue("data", data));
        String homeId = UserConfigManage.getInstance().getHomeId();
        HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, mac, new LinkCallBack<Boolean>() {
@@ -1146,35 +1207,102 @@
                    public void onSuccess(Boolean obj) {
                        GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(mac);
                        if (gatewayBean == null) {
                            uniCallbackData(null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback);
                            uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback);
                            return;
                        }
                        HdlDeviceLogic.getInstance().addInverterDeviceToCloud(homeId, mac, gatewayBean.getGatewayType(), gatewayBean.getSid(), gatewayBean.getOid(), gatewayBean.getDevice_name(), new CloudCallBeak<Boolean>() {
                            @Override
                            public void onSuccess(Boolean obj) {
                                uniCallbackData(null, callback);
                                uniCallbackData(type, null, callback);
                            }
                            @Override
                            public void onFailure(HDLException e) {
                                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                            }
                        });
                    }
                    @Override
                    public void onError(HDLLinkException e) {
                        uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                        uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                    }
                });
            }
            @Override
            public void onError(HDLLinkException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
    /**
     * 多个逆变器添加到云端上
     *
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniAddAllInverterDeviceToCloud(String type, Object data, DCUniMPJSCallback callback) {
//        com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(data);
        String mac = getKeyValue("mac", getKeyValue("data", data));
        String homeId = UserConfigManage.getInstance().getHomeId();
        GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(mac);
        if (gatewayBean == null) {
            uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback);
            return;
        }
        List<GatewayBean> list = new ArrayList<>();
        //记录条数
        AtomicInteger atomicInteger = new AtomicInteger(0);
        final boolean[] is_boolean = {false};
        for (int i = 0; i < list.size(); i++) {
            HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, mac, new LinkCallBack<Boolean>() {
                @Override
                public void onSuccess(Boolean obj) {
                    HdlDeviceLogic.getInstance().editGatewayParam(mac, new LinkCallBack<Boolean>() {
                        @Override
                        public void onSuccess(Boolean obj) {
                            atomicInteger.set(atomicInteger.get() + 1);
                            //最后一条才做添加逆变器逻辑处理
                            if (atomicInteger.get() == list.size()) {
                                HdlDeviceLogic.getInstance().addAllInverterDeviceToCloud(homeId, mac,list , new CloudCallBeak<Boolean>() {
                                    @Override
                                    public void onSuccess(Boolean obj) {
                                        uniCallbackData(type, null, callback);
                                    }
                                    @Override
                                    public void onFailure(HDLException e) {
                                        uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                                    }
                                });
                            }
                        }
                        @Override
                        public void onError(HDLLinkException e) {
                            uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                            is_boolean[0] = true;
                        }
                    });
                }
                @Override
                public void onError(HDLLinkException e) {
                    uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                    is_boolean[0] = true;
                }
            });
            if (is_boolean[0]) {
                //只有中间有一条指令设置失败,默认全部失败;
                break;
            }
        }
    }
    /**
@@ -1183,18 +1311,18 @@
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniDelInverterDevice(Object data, DCUniMPJSCallback callback) {
    private void uniDelInverterDevice(String type, Object data, DCUniMPJSCallback callback) {
        String deviceId = getKeyValue("deviceId", getKeyValue("data", data));
        String homeId = UserConfigManage.getInstance().getHomeId();
        HdlDeviceLogic.getInstance().delInverterDevice(homeId, deviceId, new CloudCallBeak<Boolean>() {
            @Override
            public void onSuccess(Boolean obj) {
                uniCallbackData(null, callback);
                uniCallbackData(type, null, callback);
            }
            @Override
            public void onFailure(HDLException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
    }
@@ -1205,17 +1333,20 @@
     *
     * @param callback uni回调
     */
    private void uniSearchGateway(DCUniMPJSCallback callback) {
    private void uniSearchGateway(String type, DCUniMPJSCallback callback) {
        HdlDeviceLogic.getInstance().searchCurrentHomeGateway(new GatewayCallBack() {
            @Override
            public void onSuccess(List<GatewayBean> gatewayBeanList) {
                uniCallbackData(gatewayBeanList, callback);
                uniCallbackData(type, gatewayBeanList, callback);
            }
            @Override
            public void onError(HDLLinkException e) {
                //发送失败
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
            }
        });
@@ -1226,11 +1357,17 @@
     *
     * @param callback uni回调
     */
    private void uniGetCurrentHomeLocalAndCloudGatewayList(Object data, DCUniMPJSCallback callback) {
    private void uniGetCurrentHomeLocalAndCloudGatewayList(String type, Object data, DCUniMPJSCallback callback) {
        String homeId = getKeyValue("homeId", getKeyValue("data", data));
        HdlDeviceLogic.getInstance().getCurrentHomeLocalAndCloudGatewayList(homeId, new CloudCallBeak<List<GatewayBean>>() {
            @Override
            public void onSuccess(List<GatewayBean> list) {
                if (list == null || list.size() == 0) {
                    if (callback != null) {
                        uniCallbackData(type, list, callback);
                    }
                    return;
                }
                GatewayBean gatewayBean = HdlDeviceLogic.getInstance().queryCurrentHomeMainGateway(list, homeId);
                if (gatewayBean != null) {
                    //进来住宅详情都要上传一次oid列表到云端;
@@ -1240,19 +1377,16 @@
                BaseEventBus baseEventBus = new BaseEventBus();
                baseEventBus.setType(HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST);
                baseEventBus.setData(list);
                EventBus.getDefault().post(baseEventBus);
                if (callback != null) {
                    uniCallbackData(list, callback);
                    uniCallbackData(type, list, callback);
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (callback != null) {
                    uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                    uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                }
            }
        });
@@ -1274,7 +1408,7 @@
     * @param data     modbus数据
     * @param callback 回调
     */
    private void sendModBus(Object data, DCUniMPJSCallback callback) {
    private void sendModBus(String type, Object data, DCUniMPJSCallback callback) {
        String tempData = getKeyValue("data", data);
        if (TextUtils.isEmpty(tempData)) {
            HdlLogLogic.print("data内容为空--->", false);
@@ -1288,22 +1422,24 @@
//            modBusBean.setOid("0101050217BBC400");
//        }
        if (modBusBean.getMac() == null || modBusBean.getData() == null) {
            HdlLogLogic.print("内容为空--->oid--->" + modBusBean.getMac() + " data--->" + Arrays.toString(modBusBean.getData()), false);
            HdlLogLogic.print("uni--->发送--->ModBus--->发送失败,(mac或者oid)为空." + Arrays.toString(modBusBean.getData()), true);
            return;
        }
        HdlLogLogic.print("uni--->发送--->ModBus--->" + Arrays.toString(modBusBean.getData()), true);
        //发送modbus协议
        HDLModBusConnect.getInstance().Send(modBusBean.getMac(), modBusBean.getData(), new ModbusCallBack() {
            @Override
            public void onSuccess(int[] data) {
                Log.d("data", Arrays.toString(data));
                uniCallbackData(data, callback);
                uniCallbackData(type, data, callback);
                HdlLogLogic.print("uni--->接收--->ModBus--->" + Arrays.toString(data), true);
            }
            @Override
            public void onError(HDLLinkException e) {
                uniCallbackData(null, e.getCode(), e.getMsg(), callback);
                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                HdlLogLogic.print("uni--->接收--->ModBus--->" + e.getMsg() + "(" + e.getCode() + ")", true);
            }
        });
    }
@@ -1336,7 +1472,7 @@
            uniCallBackBaseBean.setData(data);
            return getJSONObject(uniCallBackBaseBean);
        } catch (Exception e) {
            HdlLogLogic.print("uni--->组装uni发送数据格式有异常--->" + e.getMessage(), false);
            HdlLogLogic.print("uni--->组装发送给uni数据格式有异常--->" + e.getMessage(), false);
        }
        return new JSONObject();
    }
@@ -1346,12 +1482,13 @@
     * 组装uni发送数据格式
     * 回调数据给uni小程序,统一在这里处理;
     *
     * @param type     请求的小类
     * @param obj      附加数据
     * @param code     状态码-成功(0)或者失败(-2)
     * @param msg      结果描述的信息
     * @param callback 回调
     */
    private void uniCallbackData(Object obj, int code, String msg, DCUniMPJSCallback callback) {
    private void uniCallbackData(String type, Object obj, int code, String msg, DCUniMPJSCallback callback) {
        HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
        try {
            uniCallBackBaseBean.setCode(code);
@@ -1360,18 +1497,17 @@
            if (callback != null) {
                callback.invoke(getJSONObject(uniCallBackBaseBean));
//                callback.invoke(uniCallBackBaseBean);
                HdlLogLogic.print("uni--->组装uni发送数据格式--->" + new Gson().toJson(uniCallBackBaseBean), false);
                HdlLogLogic.print("uni--->接收--->" + type + "--->" + new Gson().toJson(uniCallBackBaseBean), true);
            }
        } catch (Exception e) {
            HdlLogLogic.print("uni--->组装uni发送数据格式--->" + e.getMessage(), false);
            HdlLogLogic.print("uni--->接收--->" + type + "--->" + e.getMessage(), true);
        }
    }
    private void uniCallbackData(Object obj, DCUniMPJSCallback callback) {
        uniCallbackData(obj, HDLLinkCode.HDL_SUCCESS.getCode(), HDLLinkCode.HDL_SUCCESS.getMsg(), callback);
    private void uniCallbackData(String type, Object obj, DCUniMPJSCallback callback) {
        uniCallbackData(type, obj, HDLLinkCode.HDL_SUCCESS.getCode(), HDLLinkCode.HDL_SUCCESS.getMsg(), callback);
    }
    /**