package com.sandu.ximon.admin.utils; import com.sandu.ximon.admin.entity.AtmoHeartBeatDataPackage; import com.sandu.ximon.admin.entity.DataTransportMainFrame; import com.sandu.ximon.admin.entity.DataTransportMainResponse; import com.sandu.ximon.admin.entity.DataTransportOrderType; import com.sandu.ximon.admin.manager.iot.frame.inner.AtmoCommonFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.AtmoFunctionCode; import com.sandu.ximon.admin.manager.iot.frame.inner.response.AtmoQueryHeartBeatResponse; import org.springframework.stereotype.Component; @Component("AtmoAPIUtils") public class AtmoAPIUtils { /** * 查询大气数据心跳包 * * @param mac */ public AtmoHeartBeatDataPackage queryHeartBeat(String mac) { // 生成控制帧 String frame = generateNoPayLoadFrame(AtmoFunctionCode.QueryHeartBeat, "FFFF"); // 发送RRPC String result = rrpc(mac, frame); if (null != result) { // 返回结果 result = HexStrConvertUtil.bytesToHexString(Base64Util.decode(result)); DataTransportMainResponse dataTransportMainResponse = new DataTransportMainResponse().convertInstance(result.substring(2)); AtmoQueryHeartBeatResponse response = new AtmoQueryHeartBeatResponse().convertInstance(dataTransportMainResponse.getPayload()); return response.getAtmoHeartBeatDataPackage(); } return null; } // /** // * 查询大气数据心跳包间隔时间 // * @param mac // */ // public Integer queryHeartBeatTime(String mac) { // // 生成控制帧 // String frame = generateNoPayLoadFrame(AtmoFunctionCode.QueryHeartBeatTime, "FFFF"); // // 发送RRPC // String result = rrpc(mac, frame); // if(null != result) { // // 返回结果 // result = HexStrConvertUtil.bytesToHexString(Base64Util.decode(result)); // DataTransportMainResponse dataTransportMainResponse = new DataTransportMainResponse().convertInstance(result.substring(2)); // AtmoQueryHeartBeatTimeResponse response = new AtmoQueryHeartBeatTimeResponse().convertInstance(dataTransportMainResponse.getPayload()); // return response.getHeartBeatTimeInt(); // } // return -1; // } // // // /** // * 软重启 // * @param mac // * // */ // public String reboot(String mac) { // // 生成控制帧 // String frame = generateNoPayLoadFrame(AtmoFunctionCode.Reboot, "FFFF"); // // 发送RRPC // String result = rrpc(mac, frame); // if(null != result) { // // 返回结果 // result = HexStrConvertUtil.bytesToHexString(Base64Util.decode(result)); // DataTransportMainResponse dataTransportMainResponse = new DataTransportMainResponse().convertInstance(result.substring(2)); // AtmoCommonResponse response = new AtmoCommonResponse().convertInstance(dataTransportMainResponse.getPayload()); // return response.getResponseStatus(); // } // return CommonResponse.No_Response.getCode(); // } // /** // * 设置心跳时间 // * @param mac // * @param heartBeatTime s // */ // public String settingHeartBeatTime(String mac, Integer heartBeatTime) { // String payload = "FFFF" + SupplementUtils.suppleZero(HexStrConvertUtil.tenToHex(heartBeatTime),4); // // 生成控制帧 // String frame = generateNoPayLoadFrame(AtmoFunctionCode.SettingHeartBeatTime, payload); // // 发送RRPC // String result = rrpc(mac, frame); // if(null != result) { // // 返回结果 // result = HexStrConvertUtil.bytesToHexString(Base64Util.decode(result)); // DataTransportMainResponse dataTransportMainResponse = new DataTransportMainResponse().convertInstance(result.substring(2)); // AtmoCommonResponse response = new AtmoCommonResponse().convertInstance(dataTransportMainResponse.getPayload()); // return response.getResponseStatus(); // } // return CommonResponse.No_Response.getCode(); // } // private String generateNoPayLoadFrame(AtmoFunctionCode atmoFunctionCode, String payload) { String frame = DataTransportMainFrame.generateInstance( DataTransportOrderType.AtmosphereData, new AtmoCommonFrame(atmoFunctionCode, payload) ).getFrame(); return frame; } private String rrpc(String mac, String frame) { String result = MainBoardRRPCUtils.sendRRPC(mac, Base64Util.toBase64Frame(frame)); if (null == result) { result = MainBoardRRPCUtils.sendRRPC(mac, Base64Util.toBase64Frame(frame)); if (null == result) { return null; } } return result; } }