| | |
| | | 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 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.photovoltaic.HDLApp; |
| | | import com.hdl.photovoltaic.config.UserConfigManage; |
| | | import com.hdl.photovoltaic.internet.HttpClient; |
| | | import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer; |
| | | import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService; |
| | | import com.hdl.photovoltaic.internet.TcpClient; |
| | | import com.hdl.photovoltaic.internet.api.HttpApi; |
| | | import com.hdl.photovoltaic.internet.api.TopicApi; |
| | | import com.hdl.photovoltaic.listener.CloudCallBeak; |
| | | import com.hdl.photovoltaic.listener.LinkCallBack; |
| | | import com.hdl.photovoltaic.utils.AppManagerUtils; |
| | | import com.hdl.sdk.link.common.exception.HDLLinkException; |
| | | import com.hdl.sdk.link.core.callback.HDLLinkCallBack; |
| | | |
| | | import java.lang.reflect.Type; |
| | | import java.util.ArrayList; |
| | |
| | | } |
| | | return sHdlOtaLogic; |
| | | } |
| | | |
| | | /** |
| | | * Intent专门启动本地服务 |
| | | * |
| | | * @return Intent |
| | | */ |
| | | public Intent getIntent() { |
| | | return intentServer; |
| | | } |
| | | |
| | | public void setIntent(Intent intent) { |
| | | this.intentServer = intent; |
| | | } |
| | | |
| | | private Intent intentServer = null; |
| | | |
| | | private ServiceConnection mServiceConnection = null; |
| | | |
| | | //region -----固件升级--------- |
| | | |
| | |
| | | * |
| | | * @param driverVersionId 驱动版本Id |
| | | */ |
| | | public void getDeviceDriverDownloadUrl(String driverVersionId, CloudCallBeak<String> callBack) { |
| | | // "driverCode":"029B9988", |
| | | // "driverName":"核心层", |
| | | // "imageId":"12345678", |
| | | // "version":"V01.02.20" |
| | | public void getDeviceDriverDownloadUrl(String driverVersionId, CloudCallBeak<DownloadUrlBean> callBack) { |
| | | |
| | | String requestUrl = HttpApi.POST_OTA_GET_LinkDeviceDriverDownloadUrl; |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("driverVersionId", driverVersionId); |
| | | HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { |
| | | @Override |
| | | public void onSuccess(String json) { |
| | | |
| | | if (TextUtils.isEmpty(json)) { |
| | | public void onSuccess(String s) { |
| | | if (TextUtils.isEmpty(s)) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess("-2"); |
| | | callBack.onSuccess(new DownloadUrlBean()); |
| | | } |
| | | return; |
| | | } |
| | | Gson gson = new Gson(); |
| | | Type typeOfT = new TypeToken<DownloadUrlBean>() { |
| | | }.getType(); |
| | | DownloadUrlBean downloadUrlBean = gson.fromJson(json, typeOfT); |
| | | if (downloadUrlBean == null) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess("-2"); |
| | | } |
| | | return; |
| | | DownloadUrlBean downloadUrlBean = gson.fromJson(s, typeOfT); |
| | | if (callBack != null) { |
| | | callBack.onSuccess(downloadUrlBean); |
| | | } |
| | | getDeviceDriverDownloadFile(downloadUrlBean.getDownloadUrl(), new CloudCallBeak<DownloadUrlBean>() { |
| | | @Override |
| | | public void onSuccess(DownloadUrlBean obj) { |
| | | String full = HdlFileLogic.getInstance().getDriveRootPath() + "/" + driverVersionId; |
| | | HdlFileLogic.getInstance().writeFile(full, obj.toString()); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | |
| | | //endregion |
| | | |
| | | /** |
| | | * 本地升级包推送(告诉网关下载升级包地址等信息) |
| | | * |
| | | * @param mac 物理设备mac |
| | | * @param oid 物理设备oid |
| | | * @param module 模块信息 |
| | | * @param version 版本号 |
| | | * @param size 升级包大小 |
| | | * @param url 升级包下载地址(存储在本地) |
| | | * @param sign_method md5加密字符串 |
| | | * @param linkCallBack - |
| | | */ |
| | | public void pushUpgradePacketInfo(String mac, String oid, String module, String version, String size, String url, String sign_method, LinkCallBack<String> linkCallBack) { |
| | | String requestUrl = TopicApi.SET_GATEWAY_UPGRADE_INFO; |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("oid", oid);// 物理设备oid |
| | | json.addProperty("module", module);//模块信息 |
| | | json.addProperty("version", version);//版本号 |
| | | // json.addProperty("is_diff", is_diff);//true=增量包,false=全量包 |
| | | json.addProperty("size", size);//升级包大小 |
| | | json.addProperty("url", url);//升级包下载地址 |
| | | json.addProperty("sign_method", sign_method);//升级包签名类型:md5 |
| | | TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, json, "", new HDLLinkCallBack() { |
| | | @Override |
| | | public void onSuccess(String msg) { |
| | | if (linkCallBack != null) { |
| | | linkCallBack.onSuccess(msg); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onError(HDLLinkException e) { |
| | | if (linkCallBack != null) { |
| | | linkCallBack.onError(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 启动本地服务 |
| | | */ |
| | | public void startLocalService(ServiceConnection serviceConnection) { |
| | | //本地 |
| | | //1,建立本地服务; |
| | | //2,告诉网关手机ip和端口; |
| | | //实例化 获取ip 地址 |
| | | MyNanoHttpServer.getInstance(AppManagerUtils.getAppManager().getIPAddress(HDLApp.getInstance())); |
| | | //MyNanoHttpServer.getInstance("127.0.0.1"); |
| | | intentServer = new Intent(); |
| | | intentServer.setClass(HDLApp.getInstance(), MyNanoHttpService.class); |
| | | this.mServiceConnection = serviceConnection; |
| | | //启动服务监听 |
| | | HDLApp.getInstance().bindService(intentServer, serviceConnection, Context.BIND_AUTO_CREATE); |
| | | } |
| | | |
| | | /** |
| | | * 关闭本地服务 |
| | | */ |
| | | public void unLocalService() { |
| | | if (intentServer != null && this.mServiceConnection != null) { |
| | | HDLApp.getInstance().unbindService(this.mServiceConnection); |
| | | } |
| | | } |
| | | |
| | | } |