src/main/java/com/fzzy/protocol/ProtocolScheduled.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/fzzy/protocol/youxian1/ServiceUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/fzzy/protocol/youxian1/analysis/AnalysisService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/fzzy/protocol/youxian1/client/ClientEngine.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/fzzy/protocol/youxian1/client/ClientHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/fzzy/protocol/youxian1/package-info.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/fzzy/protocol/youxian1/service/Youxian1GatewayGrainService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/fzzy/protocol/ProtocolScheduled.java
@@ -80,6 +80,4 @@ } } } src/main/java/com/fzzy/protocol/youxian1/ServiceUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.fzzy.protocol.youxian1; /** * å·¥å ·ç±» */ public class ServiceUtils { } src/main/java/com/fzzy/protocol/youxian1/analysis/AnalysisService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,360 @@ package com.fzzy.protocol.youxian1.analysis; import com.alibaba.fastjson.JSONObject; import com.fzzy.api.data.GatewayDeviceType; import com.fzzy.api.utils.BytesUtil; import com.fzzy.api.utils.NumberUtil; import com.fzzy.gateway.GatewayUtils; import com.fzzy.gateway.api.GatewayDeviceReportService; import com.fzzy.gateway.api.GatewayRemoteManager; import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.data.WeatherWebDto; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.hx2023.ScConstant; import com.fzzy.gateway.hx2023.data.*; import com.fzzy.protocol.ProtocolUtils; import com.fzzy.protocol.bhzn.cmd.ReMessageBuilder; import com.fzzy.protocol.data.THDto; import com.fzzy.protocol.youxian0.ServiceUtils; import com.fzzy.protocol.youxian0.data.GrainRoot; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; import javax.persistence.criteria.CriteriaBuilder; import java.net.InetAddress; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 游ä»ååºï¼è¿åæ¥æè§£æ */ @Slf4j @Component(AnalysisService.BEAN_ID) public class AnalysisService { public static final String BEAN_ID = "youxian1.analysisService"; @Resource private GatewayRemoteManager gatewayRemoteManager; /** * ç¨äºåæ¾è¿åç仿¸©ä»æ¹¿ä¿¡æ¯ */ public static Map<String, THDto> contextMapTH = new HashMap<>(); /** * å议解æ * <p> * 80 80 80 80 80 90 41 --90ä»£è¡¨åæºç¼ç * 39 39 39 35 39 39 39 39 39 39 39 39 --åç»æ¹¿åº¦ * B4 30 30 31 30 30 B4 30 30 B4 30 30 --åç»æ¸©åº¦ * ---以ä¸ä¸ºç²®æ¸©ï¼3个å¼è½¬æ¢ä¸ºä¸ä¸ªç¹ * 31 30 35 31 37 32 32 31 34 32 30 33 31 30 38 31 36 34 32 32 35 32 31 38 31 30 34 31 36 36 32 32 33 32 31 34 31 30 32 31 35 39 32 31 37 32 30 34 31 30 37 31 33 37 32 32 34 32 31 37 31 31 30 * * @param address * @param port * @param strMsg */ public void analysis(InetAddress address, int port, String strMsg) { //åæºID int start = 5 * 2; int end = start + 1 * 2; String deviceSn = strMsg.substring(start, end); // deviceSn = è°æ´è½¬æ¢è§å ---TODO GatewayDevice device = GatewayUtils.getCacheByDeviceSn(deviceSn); //è§£ææ¸©æ¹¿åº¦ this.analysisGrainTh(device, strMsg); //è§£æç²®æ this.analysisGrainStep1(device, strMsg); } private void analysisGrainTh(GatewayDevice device, String strMsg) { //湿度信æ¯ï¼åç»ï¼è·åææçä¸ç»æ°æ® int start = 7 * 2; int end = start + 12 * 2; String hHex = strMsg.substring(start, end); THDto thDto = new THDto(); double h = getGrainTemp(hHex.substring(0, 6)); if (h < 99.9) { thDto.setHumidityIn(h); } h = getGrainTemp(hHex.substring(6, 12)); if (h < 99.9) { thDto.setHumidityIn(h); } h = getGrainTemp(hHex.substring(12, 18)); if (h < 99.9) { thDto.setHumidityIn(h); } h = getGrainTemp(hHex.substring(18, 24)); if (h < 99.9) { thDto.setHumidityIn(h); } //æ¹¿åº¦ä¿¡æ¯ start = 19 * 2; end = start + 12 * 2; String tHex = strMsg.substring(start, end); double t = getGrainTemp(tHex.substring(0, 6)); if (t > -40.0) { thDto.setTempIn(t); } t = getGrainTemp(tHex.substring(6, 12)); if (t > -40.0) { thDto.setTempIn(t); } t = getGrainTemp(tHex.substring(12, 18)); if (t > -40.0) { thDto.setTempIn(t); } t = getGrainTemp(tHex.substring(18, 24)); if (t > -40.0) { thDto.setTempIn(t); } this.add2Map(device.getDeviceSn(), thDto); } /** * å议解æ * <p> * 80 80 80 80 80 90 41 --90ä»£è¡¨åæºç¼ç * 39 39 39 35 39 39 39 39 39 39 39 39 --åç»æ¹¿åº¦ * B4 30 30 31 30 30 B4 30 30 B4 30 30 --åç»æ¸©åº¦ * ---以ä¸ä¸ºç²®æ¸©ï¼3个å¼è½¬æ¢ä¸ºä¸ä¸ªç¹ * 31 30 35 31 37 32 32 31 34 32 30 33 31 30 38 31 36 34 32 32 35 32 31 38 31 30 34 31 36 36 32 32 33 32 31 34 31 30 32 31 35 39 32 31 37 32 30 34 31 30 37 31 33 37 32 32 34 32 31 37 31 31 30 * * @param device * @Param strMsg */ private void analysisGrainStep1(GatewayDevice device, String strMsg) { String[] attCable = device.getCableRule().split("-"); int cableZ = Integer.valueOf(attCable[0]); int cableY = Integer.valueOf(attCable[1]); int cableX = Integer.valueOf(attCable[2]); log.info("z={},x={},y={}", cableZ, cableX, cableY); //è·å请æ±ä¿¡æ¯ BaseReqData reqData = ProtocolUtils.getSyncReq(device.getDepotIdSys()); if (null == reqData) { log.error("---------没æè·åå°è¯·æ±ä¿¡æ¯ï¼ä¸æ§è¡è§£æ------{}", device.getDeviceName()); return; } //åªä¿çç²®æ ä¿¡æ¯ int start = 31 * 2; strMsg = strMsg.substring(start); int num = cableZ * cableY * cableX; String tempStr = ""; List<Double> points = new ArrayList<>(); double point = 0; for (int i = 0; i < num; i++) { tempStr = strMsg.substring(i * 3 * 2, i * 3 * 2 + 3 * 2); point = this.getGrainTemp(tempStr); //å¤çæ æçæ°æ® if (point > 50) { point = -100.0; } points.add(point); } analysisGrainStep2(reqData, cableZ, cableY, cableX, points); } /** * æ°æ®è½¬æ¢ * * @param reqData * @param cableZ * @param cableY * @param cableX * @param points */ private void analysisGrainStep2(BaseReqData reqData, int cableZ, int cableY, int cableX, List<Double> points) { GatewayDevice device = reqData.getDevice(); //æ°æ®å°è£ GrainData grain = new GrainData(); grain.setMessageId(ScConstant.getMessageId()); grain.setDeviceId(device.getDeviceId()); grain.setTimestamp(System.currentTimeMillis() + ""); ClientHeaders headers = new ClientHeaders(); headers.setDeviceName(device.getDeviceName()); headers.setProductId(device.getProductId()); headers.setOrgId(device.getOrgId()); headers.setMsgId(reqData.getMessageId()); grain.setHeaders(headers); GrainOutPut outPut = new GrainOutPut(); double max = ReMessageBuilder.MAX_TEMP, min = ReMessageBuilder.MIN_TEMP, sumT = 0.0, sumNum = cableX * cableY * cableZ; List<GrainTemp> temperature = new ArrayList<>(); //æ ¹å· int cableNum = 1, position = 0; double curTemp; int x = 0, y = 0, z = 0; for (int i = 0; i < points.size(); i++) { curTemp = points.get(i); position = i; z = i % cableZ + 1; x = i / (cableZ * cableY); y = x * (cableZ * cableY); y = (i - y) / cableZ; //æ ¹å· cableNum = (i / cableZ) + 1; temperature.add(new GrainTemp(cableNum + "", z + "", curTemp + "", position + "")); sumT += curTemp; if (curTemp > max) { max = curTemp; } if (curTemp < min) { min = curTemp; } } if (sumNum == 0) { sumNum = 1; log.warn("---å½åç²®æ ééå¼å¸¸--"); } //è¿æ»¤æ¯è¾ç¨çæå¤§æå°å¼ if (max == ReMessageBuilder.MAX_TEMP) { max = 0.0; } if (min == ReMessageBuilder.MIN_TEMP) { min = 0.0; } outPut.setTemperature(temperature); outPut.setAvgTemperature(NumberUtil.keepPrecision((sumT / sumNum), 1) + ""); outPut.setMinTemperature(min + ""); outPut.setMaxTemperature(min + ""); List<GrainTH> ths = new ArrayList<>(); //è·å温湿度 THDto thDto = this.getTH(device.getDeviceSn()); ths.add(new GrainTH(thDto.getTempIn() != null ? thDto.getTempIn() + "" : "", thDto.getHumidityIn() != null ? thDto.getHumidityIn() + "" : "", "1")); outPut.setTemperatureAndhumidity(ths); grain.setOutput(JSONObject.toJSONString(outPut)); GatewayDevice gatewayDeviceWeather = GatewayUtils.getCacheByDeviceTypeOne(GatewayDeviceType.TYPE_09.getCode()); //ç³»ç»æ°è±¡ç«ä¿¡æ¯ WeatherWebDto weather = WeatherWebDto.contextMap.get("default"); //æ°è±¡ä¿¡æ¯ GrainWeather weatherStation = new GrainWeather(); weatherStation.setMessageId(ScConstant.getMessageId()); weatherStation.setMessgeId(weatherStation.getMessageId()); if (null != gatewayDeviceWeather) { weatherStation.setId(gatewayDeviceWeather.getDeviceId()); } else { weatherStation.setId(device.getDeviceId()); } weatherStation.setAirPressure(weather.getPressure()); weatherStation.setHumidity(weather.getHumidity()); weatherStation.setPm(weather.getAir_pm25()); weatherStation.setRadiation("0"); weatherStation.setRainfallAmount(weather.getWea()); weatherStation.setTemperature(weather.getTem()); weatherStation.setWindDirection(weather.getWin()); weatherStation.setWindPower(weather.getWin_meter()); weatherStation.setWindSpeed(weather.getWin_speed()); grain.setWeatherStation(JSONObject.toJSONString(weatherStation)); //å°è£ å¥½çæ°æ® log.info("---ç²®æ ä¿¡æ¯å°è£ 宿-å¼å§æ§è¡æ¨é"); reqData.setData(JSONObject.toJSONString(grain)); doPushGrain(reqData); } private void doPushGrain(BaseReqData reqData) { GatewayDeviceReportService reportService = gatewayRemoteManager.getDeviceReportService(reqData.getDevice().getPushProtocol()); if (null == reportService) { log.error("------------ç²®æ æ¨é失败ï¼ç³»ç»ä¸åå¨å½ååè®®æ§è¡ç±»----{}", reqData.getDevice().getDeviceName()); return; } reportService.reportGrainData(reqData); } /** * 计ç®ç²®æ 温度 3ç»æ¸©åº¦ * * @param tempHex * @return */ public static double getGrainTemp(String tempHex) { String strAscii = ""; strAscii += toAscii(tempHex.substring(0, 2)); strAscii += toAscii(tempHex.substring(2, 4)); strAscii += toAscii(tempHex.substring(4, 6)); Integer value = Integer.valueOf(strAscii); return value / 10.0; } private void add2Map(String deviceSn, THDto thDto) { contextMapTH.put("TH_" + deviceSn, thDto); } private THDto getTH(String deviceSn) { return contextMapTH.get("TH_" + deviceSn); } public static void main(String[] args) { String strMsg = "31 30 35 31 37 32 32 31 34 32 30 33 31 30 38 31 36 34 32 32 35 32 31 38 31 30 34 31 36 36 32 32 33 32 31 34 31 30 32 31 35 39 32 31 37 32 30 34 31 30 37 31 33 37 32 32 34 32 31 37 31 31 30"; strMsg = strMsg.replaceAll(" ", ""); System.out.println("---" + strMsg); int num = 20; String tempStr = ""; double tem; for (int i = 0; i < num; i++) { tempStr = strMsg.substring(i * 3 * 2, i * 3 * 2 + 3 * 2); System.out.println("---" + tempStr); tem = getGrainTemp(tempStr); System.out.println("-tem--" + tem); } } public static char toAscii(String hexString) { int decimal = Integer.parseInt(hexString, 16); return (char) decimal; } } src/main/java/com/fzzy/protocol/youxian1/client/ClientEngine.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,114 @@ package com.fzzy.protocol.youxian1.client; import com.ld.io.api.InvokeResult; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.Unpooled; import io.netty.channel.*; import io.netty.channel.oio.OioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.oio.OioSocketChannel; import io.netty.handler.codec.bytes.ByteArrayDecoder; import io.netty.handler.codec.bytes.ByteArrayEncoder; import lombok.extern.slf4j.Slf4j; import java.util.HashMap; import java.util.Map; /** * 游ä»ååºï¼é讯åè®® */ @Slf4j public class ClientEngine { /** * 客æ·ç«¯æ¨¡å¼å建çè¿æ¥éé */ public static Map<String, Channel> clientChannelMap = new HashMap<>(); public static Channel defaultChannel; public static void start(String ip, Integer port) throws Exception { if (defaultChannel != null) { log.info("-----IP={},è¿æ¥åå¨ï¼ç´æ¥ä½¿ç¨", ip); return; } EventLoopGroup group = new OioEventLoopGroup(); Bootstrap b = new Bootstrap(); //é»è®¤é¿è¿æ¥ b.option(ChannelOption.SO_KEEPALIVE, true); b.group(group).channel(OioSocketChannel.class) .handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); // å符串解ç å ç¼ç p.addLast("decoder", new ByteArrayDecoder()); p.addLast("encoder", new ByteArrayEncoder()); // èªå·±çé»è¾Handler p.addLast("handler", new ClientHandler()); } }); // åèµ·å¼æ¥è¿æ¥è¯·æ±ï¼ç»å®è¿æ¥ç«¯å£åhostä¿¡æ¯ ChannelFuture channelFuture = b.connect(ip, port); defaultChannel = channelFuture.channel(); // channelFuture.channel().closeFuture().sync(); add2ChannelMap(ip, defaultChannel); channelFuture.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture arg0) throws Exception { if (channelFuture.isSuccess()) { log.info("-----IP={},è¿æ¥æå", ip); } else { log.info("-----IP={},è¿æ¥å¤±è´¥ï¼èªå¨å ³é线ç¨", ip); channelFuture.cause().printStackTrace(); group.shutdownGracefully(); // å ³é线ç¨ç» } } }); } public static InvokeResult send(byte[] array) throws InterruptedException { if (null == defaultChannel) { return InvokeResult.SOCKET_NOT_CREATE; } if (!defaultChannel.isActive()) { return InvokeResult.CHANNEL_CLOSED; } defaultChannel.writeAndFlush(Unpooled.copiedBuffer(array)).sync(); return InvokeResult.SUCCESS; } public static Channel getChannel() { return defaultChannel; } public static void add2ChannelMap(String key, Channel channel) { clientChannelMap.put(key, channel); } /** * 妿 * * @param key * @return */ public static Channel getChannel(String key) { Channel channel = clientChannelMap.get(key); if (null == channel) return null; if (channel.isActive()) { return channel; } else { channel.close(); } return null; } } src/main/java/com/fzzy/protocol/youxian1/client/ClientHandler.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,65 @@ package com.fzzy.protocol.youxian1.client; import com.fzzy.api.utils.BytesUtil; import com.fzzy.api.utils.SpringUtil; import com.fzzy.protocol.youxian1.analysis.AnalysisService; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; import java.net.InetSocketAddress; @Slf4j public class ClientHandler extends SimpleChannelInboundHandler<Object> { private AnalysisService analysisService; @Override public void channelActive(ChannelHandlerContext ctx) { InetSocketAddress socketAddress = (InetSocketAddress) ctx.channel() .remoteAddress(); log.info("è¿æ¥ç»æåï¼IP={},port={}", socketAddress.getAddress() .getHostAddress(), socketAddress.getPort()); } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { super.channelInactive(ctx); InetSocketAddress socketAddress = (InetSocketAddress) ctx.channel().remoteAddress(); log.info("è¿æ¥ç»ç«¯æçº¿ï¼IP={},port={}", socketAddress.getAddress(), socketAddress.getPort()); } @Override public void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { byte[] bytes = (byte[]) msg; InetSocketAddress socketAddress = (InetSocketAddress) ctx.channel().remoteAddress(); String strMsg = BytesUtil.bytesToString(bytes); log.info("ç»ç«¯è¿åä¿¡æ¯ï¼IP={},port={}ï¼msg={}", socketAddress.getAddress(), socketAddress.getPort(), strMsg); if (null == analysisService) { analysisService = SpringUtil.getBean(AnalysisService.class); } try{ analysisService.analysis(socketAddress.getAddress(), socketAddress.getPort(), strMsg); }catch (Exception e){ log.error(e.getMessage(),e); } } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { ctx.close(); } } src/main/java/com/fzzy/protocol/youxian1/package-info.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,4 @@ /** * 游ä»ååº */ package com.fzzy.protocol.youxian1; src/main/java/com/fzzy/protocol/youxian1/service/Youxian1GatewayGrainService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,150 @@ package com.fzzy.protocol.youxian1.service; import com.fzzy.api.data.GatewayDeviceProtocol; import com.fzzy.api.utils.BytesUtil; import com.fzzy.gateway.api.GatewaySyncGranService; import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.data.BaseResp; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.protocol.ProtocolUtils; import com.fzzy.protocol.youxian1.client.ClientEngine; import com.ld.io.api.InvokeResult; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; /** * 游ä»ååºåè®®-ç²®æ ééå ¥å£ */ @Slf4j @Component public class Youxian1GatewayGrainService implements GatewaySyncGranService { @Override public String getGrainProtocol() { return GatewayDeviceProtocol.GRAIN_YOUXIAN1_2023.getCode(); } /** * @param reqData * @return */ @Override public synchronized BaseResp syncGrain(BaseReqData reqData) { BaseResp resp = new BaseResp(); GatewayDevice device = reqData.getDevice(); if (null == device) { resp.setCode(500); resp.setMsg("ç³»ç»æªè·åå°ä¸è¡è¿æ¥è®¾å¤ä¿¡æ¯ï¼æ æ³æ§è¡"); log.error("----------------ç³»ç»æªè·åå°ä¸è¡è¿æ¥è®¾å¤ä¿¡æ¯,æ æ³æ§è¡---------"); return resp; } try { //Step 请æ±ä¿¡æ¯æ¾å ¥å å ProtocolUtils.addSyncReq2Map(device.getDepotIdSys(), reqData); // å¤ææ°æ®ææ²¡ææ¶å宿´ String[] attCable = device.getCableRule().split("-"); int cableZ = Integer.valueOf(attCable[0]); int cableY = Integer.valueOf(attCable[1]); int cableX = Integer.valueOf(attCable[2]); // çæç²®æ ä¿¡æ¯ String hexCmd = buildGrainCmd(device, cableX, cableY, cableZ); Channel channel = ClientEngine.getChannel(device.getIp()); if (null == channel) { ClientEngine.start(device.getIp(), device.getPort()); Thread.sleep(500); } InvokeResult message = ClientEngine.send(BytesUtil.hexStrToBytes(hexCmd)); log.error("å¹³å°------>>>>主æ§ï¼åéç²®æ æ£æµå½ä»¤-{}---{}", message, hexCmd); // å°è£ è¿åä¿¡æ¯ if (!InvokeResult.SUCCESS.getCode().equals(message.getCode())) { log.error("å¹³å°------>>>>æ§å¶æï¼åéç²®æ æ£æµå½ä»¤-失败{}", message.getMessage()); resp.setCode(500); resp.setMsg("å¹³å°------>>>>æ§å¶æï¼åéç²®æ æ£æµå½ä»¤-失败ï¼" + message.getMessage()); } } catch (Exception e) { log.error("ç²®æ æ£æµå¼å¸¸ï¼{}", e); resp.setCode(500); resp.setMsg("å¹³å°------>>>>æ§å¶æï¼åéç²®æ æ£æµå½ä»¤ï¼" + e.getMessage()); return resp; } return resp; } /** * ï¼åééå½ä»¤ï¼ï¼ A5 A5 A5 80 8X 41 8Y 8Z 8M * 8 X--åæºå·(90--16å·åæº) 8Y---èµ·å§é´ 8Z---æ¬ä»é´æ° 8M---æ¯é´ç¹æ° * <p> * X--æ§å¶å¨å·ï¼Y--èµ·å§é´ï¼Z--ç»æé´ï¼M--ç¹æ° * çæç²®æ ééå½ä»¤ * * @param device * @return */ private String buildGrainCmd(GatewayDevice device, int cableX, int cableY, int cableZ) { String hexCmd = "A5A5A580{id}41{start}{end}{num}"; //åæºå·ï¼å¾ æ ¹æ®é ç½®è¿è¡è°æ´ï¼ææ¶æªç¥è®¡ç®è§å TODO String hexId = "90"; hexCmd = hexCmd.replace("{id}", hexId); //å¼å§åï¼é»è®¤ä»1å¼å§ String hexStart = "81"; hexCmd = hexCmd.replace("{start}", hexStart); //æªè³å String hexEnd = "8" + cableX; hexCmd = hexCmd.replace("{end}", hexEnd); //ç¹ä½æ°ï¼ç®åæªç¥å ·ä½è®¡ç®è§å TODO int num = cableX * cableY * cableZ; String hexNum = BytesUtil.intToHexStr1(num); hexCmd = hexCmd.replace("{num}", hexNum); return hexCmd; } @Override public BaseResp syncGrainTh(BaseReqData reqData) { return new BaseResp(); } @Override public BaseResp syncConf(BaseReqData reqData) { return new BaseResp(); } @Override public BaseResp writeConf(BaseReqData reqData) { return new BaseResp(); } @Override public BaseResp initCable(BaseReqData reqData) { return new BaseResp(); } @Override public BaseResp disconnect(BaseReqData reqData) { return new BaseResp(); } @Override public BaseResp transparent(BaseReqData reqData) { return new BaseResp(); } }