diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/XhpcPPApplication.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/XhpcPPApplication.java index 1e66ce38..80182aee 100644 --- a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/XhpcPPApplication.java +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/XhpcPPApplication.java @@ -3,6 +3,7 @@ package com.xhpc.pp; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.ImportResource; /** * 充电桩服务 @@ -10,6 +11,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; * @author zz */ @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) +@ImportResource(locations={"classpath:svcmainlogic.xml"}) public class XhpcPPApplication { public static void main(String[] args) { diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/config/EarlierBeanConf.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/config/EarlierBeanConf.java index e30d774c..5f5b499c 100644 --- a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/config/EarlierBeanConf.java +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/config/EarlierBeanConf.java @@ -1,13 +1,8 @@ package com.xhpc.pp.config; -import com.xhpc.pp.tx.logic.ServiceLogic; import com.xhpc.pp.utils.SpringContextHolder; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import java.util.HashMap; -import java.util.Map; - @Configuration public class EarlierBeanConf { @@ -18,9 +13,4 @@ public class EarlierBeanConf { this.springContextHolder = springContextHolder; } - @Bean - public Map serviceLogics() { - - return new HashMap<>(); - } } diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/server/ChargingPileBinaryHandler.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/server/ChargingPileBinaryHandler.java index 1eabffbd..5ca88464 100644 --- a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/server/ChargingPileBinaryHandler.java +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/server/ChargingPileBinaryHandler.java @@ -7,7 +7,6 @@ import com.xhpc.pp.tx.ServiceParameter; import com.xhpc.pp.tx.ServiceResult; import com.xhpc.pp.tx.TxException; import com.xhpc.pp.utils.SpringContextHolder; -import com.xhpc.pp.utils.security.CRCCalculator; import com.xhpc.pp.utils.security.HexUtils; import org.apache.commons.lang3.ArrayUtils; import org.quickserver.net.server.ClientBinaryHandler; @@ -16,14 +15,18 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.xhpc.pp.utils.security.CRCCalculator.calcCrc; public class ChargingPileBinaryHandler implements ClientBinaryHandler { private static final Logger log = LoggerFactory.getLogger(ChargingPileBinaryHandler.class); private static final String SERVICE_REGISTER = "01"; - private static final String SERVICE_LOGOUT = "1002"; private static final String DATA_TYPE_STRING = "string"; private static final String DATA_TYPE_INT = "int"; @@ -39,28 +42,27 @@ public class ChargingPileBinaryHandler implements ClientBinaryHandler { @Override public void handleBinary(ClientHandler handler, byte[] data) throws IOException { - String dataStr = HexUtils.toHex(data); - String poleNo = ChargingPileServer.getPoleNo(handler); - if (data.length <= 2|| !dataStr.startsWith("68")) { - log.info("received invalid data <<<< {}, len[{}]", dataStr, data.length); - return; - } else { - log.info("received data <<<< {}, from pole <<<< {}", dataStr, poleNo); - } try { - int len = HexUtils.toInteger(data, 1, 2); - if (data.length < len) { - log.error("incorrect input data length {}", data.length); - return; - } - byte[] data2 = Arrays.copyOfRange(data, 2, data.length-2); - String crc = CRCCalculator.ModbusCRC(data2); - if (!dataStr.endsWith(crc)) { - log.error("incorrect input data crc {}", crc); - return; - } List dataList = parseDataList(data); for (byte[] d : dataList) { + String dataStr = HexUtils.toHex(d); + String poleNo = ChargingPileServer.getPoleNo(handler); + if (d.length <= 2|| !dataStr.startsWith("68")) { + log.info("received invalid data <<<< {}, len[{}]", dataStr, d.length); + return; + } else if (poleNo!=null) { + log.info("received data <<<< {}, from pole <<<< {}", dataStr, poleNo); + } + int len = HexUtils.toInteger(d, 1, 2); + if (d.length < len) { + log.error("incorrect input data length {}", d.length); + return; + } + String crc = calcCrc(d); + if (!dataStr.endsWith(crc)) { + log.error("incorrect input data crc {}", crc); + return; + } process(handler, d); } } catch (TxException e) { @@ -76,51 +78,37 @@ public class ChargingPileBinaryHandler implements ClientBinaryHandler { Map req = analysis(data, serviceName, version); // log.info("pole [{}] status: |{}|", StringUtils.isNotBlank(poleNo) ? poleNo : "null", req.get("status") != null ? MQPole.PoleStatus.toString((Long) req.get("status")) : "N/A"); ServiceParameter sp = new ServiceParameter(serviceName, poleNo, req); - -// try { -// log.info("serviceLogic: |{}|", servicemainLogic.getServiceLogic(serviceName).getClass().getName()); -// } catch (Exception e) { -// e.printStackTrace(); -// } - //service 主逻辑中解析参数为对应的服务 ServiceResult result = servicemainLogic.process(sp); - - // 结果不为空的直接回写 + handler.sendClientBinary(result.getBinary()); + log.info("server send msg >>>> [{}] |{}|", poleNo, HexUtils.toHex(result.getBinary())); if (result.getBinary() != null) { - log.info("server send msg >>>> [{}] |{}|", poleNo, HexUtils.toHex(result.getBinary())); - handler.sendClientBinary(result.getBinary()); } - // 注册成功后需要将当前handler与设备关联 if (SERVICE_REGISTER.equals(serviceName)) { + log.info("pole registered >>>> [{}] ", poleNo); ChargingPileServer.putHandler((String) req.get("poleNo"), handler); ChargingPileServer.putVersion(handler.getName(), (String) req.get("version")); } - // 注销后将桩号对应关系解除 - if (SERVICE_LOGOUT.equals(serviceName)) { - ChargingPileServer.removeHandler(poleNo); - } - } private List parseDataList(byte[] data) { - List dataList = new ArrayList<>(); - int len = HexUtils.toInteger(data, 1, 2); + List dataList = new ArrayList<>(); + int processedLen, len = HexUtils.toInteger(data, 1, 2)+4; + processedLen = 0; int start = 0; while (start < data.length) { if (len > data.length) { log.error("incorrect input data[{}] len[{}]", data, data.length); break; } - dataList.add(ArrayUtils.subarray(data, start, len)); - start = len; - len = len + HexUtils.toInteger(data, start, start + 2); + dataList.add(ArrayUtils.subarray(data, start, start+len)); + processedLen += len; + start = processedLen; + len = HexUtils.toInteger(data, start+1, start + 2)+4; } - if (dataList.size() > 1) { log.info("detected stick package size[{}]", dataList.size()); } - return dataList; } @@ -129,7 +117,6 @@ public class ChargingPileBinaryHandler implements ClientBinaryHandler { List fieldList = FieldService.fieldList(ver, service); if (fieldList == null || fieldList.isEmpty()) throw TxException.INNER_ERROR("field mapper not found"); - Map result = new HashMap(); int pos = 6; for (ServiceField field : fieldList) { diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/server/ChargingPileServer.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/server/ChargingPileServer.java index 8e08f474..0c09ab7f 100644 --- a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/server/ChargingPileServer.java +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/server/ChargingPileServer.java @@ -79,7 +79,7 @@ public class ChargingPileServer { } public static void sendClientMsg(String poleNo, byte[] msg) { - //TODO 采集服务器充电桩 协议0x100A + if (!HexUtils.toHex(msg).startsWith("00101005")) { log.info("server send msg >>>> [{}] |{}|", poleNo, HexUtils.toHex(msg)); } @@ -87,22 +87,17 @@ public class ChargingPileServer { poleNo = "0000000000000000" + poleNo; poleNo = poleNo.substring(poleNo.length() - 16); } - ClientHandler handler = handlerMapper.get(poleNo); - if (handler == null || !handler.isOpen()) { log.error("send message failed. [{}] connection lost", poleNo); removeHandler(poleNo); return; } - try { handler.sendClientBinary(msg); } catch (IOException e) { log.error("send message failed. " + e.getMessage(), e); } - - return; } public static void putVersion(String handler, String version) { diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/FieldService.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/FieldService.java index 0cefbc35..ff79a64b 100644 --- a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/FieldService.java +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/FieldService.java @@ -48,6 +48,7 @@ public class FieldService { } public static List fieldList(String version, String service) { + Map> vermap = versionMapFields.get(version); if (vermap == null) vermap = versionMapFields.get(ChargingPileServer.default_version); @@ -60,6 +61,7 @@ public class FieldService { } public List> querySQL(String sql) { + Map query = new HashMap<>(); query.put("sql", sql); return fieldMapper.querySQL(query); diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/RegisterLogic.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/RegisterLogic.java new file mode 100644 index 00000000..87584ecf --- /dev/null +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/RegisterLogic.java @@ -0,0 +1,34 @@ +package com.xhpc.pp.service; + +import com.xhpc.pp.tx.ServiceParameter; +import com.xhpc.pp.tx.ServiceResult; +import com.xhpc.pp.tx.TxException; +import com.xhpc.pp.tx.logic.ServiceLogic; +import com.xhpc.pp.utils.security.CRCCalculator; +import com.xhpc.pp.utils.security.HexUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Lazy +@Component("RegisterLogic") +public class RegisterLogic implements ServiceLogic { + + private static Logger log = LoggerFactory.getLogger(RegisterLogic.class); + + @Override + public ServiceResult service(ServiceParameter sp) throws TxException { + + Map req = sp.getParameters(); + if (req == null) { + throw TxException.INVALID_PARAMETER; + } + String poleNo = (String) req.get("poleNo"); + String resultStr = "680C00000002".concat(poleNo).concat("00"); + resultStr = resultStr.concat(CRCCalculator.calcCrc(resultStr)); + return new ServiceResult(HexUtils.toBytes(resultStr), ServiceResult.OK); + } +} diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/ServiceMainLogic.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/ServiceMainLogic.java index 4a920f30..8ceede34 100644 --- a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/ServiceMainLogic.java +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/service/ServiceMainLogic.java @@ -19,26 +19,26 @@ public class ServiceMainLogic { @Resource private Map serviceLogics; - public ServiceResult process(ServiceParameter param) { + public ServiceResult process(ServiceParameter sp) { ServiceResult result; try { - ServiceLogic logic = getServiceLogic(param.getServiceName()); - startTransaction(param); - result = logic.service(param); - commitTransaction(param); + ServiceLogic logic = getServiceLogic(sp.getServiceName()); +// startTransaction(sp); + result = logic.service(sp); +// commitTransaction(sp); } catch (TxException e) { log.error("服务请求失败:错误码[" + e.getReturnCode() + "],错误:{" + e.getMessage() + "}"); -// saveErrorLog(param, e); +// saveErrorLog(sp, e); try { - terminateTransaction(param); + terminateTransaction(sp); result = new ServiceResult(e.getReturnCode(), e.getMessage()); } catch (Exception e1) { - result = new ServiceResult(null, e1.getMessage()); + result = new ServiceResult(e1.getMessage()); } } catch (Exception e) { e.printStackTrace(); - result = new ServiceResult(null, e.getMessage()); + result = new ServiceResult(e.getMessage()); } return result; } @@ -89,16 +89,12 @@ public class ServiceMainLogic { } public ServiceLogic getServiceLogic(String serviceName) throws Exception { + if (serviceName == null || "".equals(serviceName)) throw new TxException("0101", "请求参数错误"); - - log.debug("获取ServiceCommandLogic,serviceName:" + serviceName); - ServiceLogic logic = serviceLogics.get(serviceName); - if (logic == null) throw new TxException("0102", "请求的业务类型错误," + serviceName); - return logic; } diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/tx/ServiceResult.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/tx/ServiceResult.java index 25170584..f2f55810 100644 --- a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/tx/ServiceResult.java +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/tx/ServiceResult.java @@ -5,13 +5,15 @@ import java.util.Map; public class ServiceResult { - public static final String RESULT_OK = "0000"; + public static final String OK = "0"; + public static final String FAIL = "1"; + private String code; private byte[] binary; - private Object json; public ServiceResult(String code, String body) { + Map map = new HashMap(); String messageCode = "0101"; if (code != null && code.trim().length() > 0) { @@ -30,11 +32,16 @@ public class ServiceResult { this.json = json; } - public ServiceResult() { + public ServiceResult(byte[] binary) { + + this.binary = binary; + this.code = OK; } - public ServiceResult(byte[] binary) { + public ServiceResult(byte[] binary, String code) { + this.binary = binary; + this.code = code; } public Object getJson() { @@ -49,4 +56,11 @@ public class ServiceResult { return binary; } + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } } diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/tx/logic/ServiceLogic.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/tx/logic/ServiceLogic.java index 04bf96ab..844d2de7 100644 --- a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/tx/logic/ServiceLogic.java +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/tx/logic/ServiceLogic.java @@ -5,11 +5,6 @@ import com.xhpc.pp.tx.ServiceResult; public interface ServiceLogic { - /** - * 实现具体服务 - * - * @return - */ - ServiceResult service(ServiceParameter param) throws Exception; + ServiceResult service(ServiceParameter sp) throws Exception; } diff --git a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/utils/security/CRCCalculator.java b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/utils/security/CRCCalculator.java index 21402537..aaac2d98 100644 --- a/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/utils/security/CRCCalculator.java +++ b/xhpc-modules/xhpc-power-pole/src/main/java/com/xhpc/pp/utils/security/CRCCalculator.java @@ -1,5 +1,7 @@ package com.xhpc.pp.utils.security; +import java.util.Arrays; + public class CRCCalculator { public static String ModbusCRC(byte[] pData) { @@ -19,6 +21,18 @@ public class CRCCalculator { return String.format("%04X", crc); } + public static String calcCrc(byte[] data) { + byte[] data2 = Arrays.copyOfRange(data, 2, data.length-2); + return CRCCalculator.ModbusCRC(data2); + } + + public static String calcCrc(String msg) { + byte[] data = HexUtils.toBytes(msg); + assert data != null; + byte[] data2 = Arrays.copyOfRange(data, 2, data.length); + return CRCCalculator.ModbusCRC(data2); + } + public static int byteArrayToInt(byte[] b) { return b[3] & 0xFF | (b[2] & 0xFF) << 8 | @@ -35,41 +49,4 @@ public class CRCCalculator { }; } - private static byte[] hi = { - (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, - (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, - (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, - (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, - (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, - (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, - (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, - (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, - (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, - (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, - (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, - (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, - (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, - (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, - (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, - (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40 - }; - - private static byte lo[] = { - (byte) 0x00, (byte) 0xC0, (byte) 0xC1, (byte) 0x01, (byte) 0xC3, (byte) 0x03, (byte) 0x02, (byte) 0xC2, (byte) 0xC6, (byte) 0x06, (byte) 0x07, (byte) 0xC7, (byte) 0x05, (byte) 0xC5, (byte) 0xC4, (byte) 0x04, - (byte) 0xCC, (byte) 0x0C, (byte) 0x0D, (byte) 0xCD, (byte) 0x0F, (byte) 0xCF, (byte) 0xCE, (byte) 0x0E, (byte) 0x0A, (byte) 0xCA, (byte) 0xCB, (byte) 0x0B, (byte) 0xC9, (byte) 0x09, (byte) 0x08, (byte) 0xC8, - (byte) 0xD8, (byte) 0x18, (byte) 0x19, (byte) 0xD9, (byte) 0x1B, (byte) 0xDB, (byte) 0xDA, (byte) 0x1A, (byte) 0x1E, (byte) 0xDE, (byte) 0xDF, (byte) 0x1F, (byte) 0xDD, (byte) 0x1D, (byte) 0x1C, (byte) 0xDC, - (byte) 0x14, (byte) 0xD4, (byte) 0xD5, (byte) 0x15, (byte) 0xD7, (byte) 0x17, (byte) 0x16, (byte) 0xD6, (byte) 0xD2, (byte) 0x12, (byte) 0x13, (byte) 0xD3, (byte) 0x11, (byte) 0xD1, (byte) 0xD0, (byte) 0x10, - (byte) 0xF0, (byte) 0x30, (byte) 0x31, (byte) 0xF1, (byte) 0x33, (byte) 0xF3, (byte) 0xF2, (byte) 0x32, (byte) 0x36, (byte) 0xF6, (byte) 0xF7, (byte) 0x37, (byte) 0xF5, (byte) 0x35, (byte) 0x34, (byte) 0xF4, - (byte) 0x3C, (byte) 0xFC, (byte) 0xFD, (byte) 0x3D, (byte) 0xFF, (byte) 0x3F, (byte) 0x3E, (byte) 0xFE, (byte) 0xFA, (byte) 0x3A, (byte) 0x3B, (byte) 0xFB, (byte) 0x39, (byte) 0xF9, (byte) 0xF8, (byte) 0x38, - (byte) 0x28, (byte) 0xE8, (byte) 0xE9, (byte) 0x29, (byte) 0xEB, (byte) 0x2B, (byte) 0x2A, (byte) 0xEA, (byte) 0xEE, (byte) 0x2E, (byte) 0x2F, (byte) 0xEF, (byte) 0x2D, (byte) 0xED, (byte) 0xEC, (byte) 0x2C, - (byte) 0xE4, (byte) 0x24, (byte) 0x25, (byte) 0xE5, (byte) 0x27, (byte) 0xE7, (byte) 0xE6, (byte) 0x26, (byte) 0x22, (byte) 0xE2, (byte) 0xE3, (byte) 0x23, (byte) 0xE1, (byte) 0x21, (byte) 0x20, (byte) 0xE0, - (byte) 0xA0, (byte) 0x60, (byte) 0x61, (byte) 0xA1, (byte) 0x63, (byte) 0xA3, (byte) 0xA2, (byte) 0x62, (byte) 0x66, (byte) 0xA6, (byte) 0xA7, (byte) 0x67, (byte) 0xA5, (byte) 0x65, (byte) 0x64, (byte) 0xA4, - (byte) 0x6C, (byte) 0xAC, (byte) 0xAD, (byte) 0x6D, (byte) 0xAF, (byte) 0x6F, (byte) 0x6E, (byte) 0xAE, (byte) 0xAA, (byte) 0x6A, (byte) 0x6B, (byte) 0xAB, (byte) 0x69, (byte) 0xA9, (byte) 0xA8, (byte) 0x68, - (byte) 0x78, (byte) 0xB8, (byte) 0xB9, (byte) 0x79, (byte) 0xBB, (byte) 0x7B, (byte) 0x7A, (byte) 0xBA, (byte) 0xBE, (byte) 0x7E, (byte) 0x7F, (byte) 0xBF, (byte) 0x7D, (byte) 0xBD, (byte) 0xBC, (byte) 0x7C, - (byte) 0xB4, (byte) 0x74, (byte) 0x75, (byte) 0xB5, (byte) 0x77, (byte) 0xB7, (byte) 0xB6, (byte) 0x76, (byte) 0x72, (byte) 0xB2, (byte) 0xB3, (byte) 0x73, (byte) 0xB1, (byte) 0x71, (byte) 0x70, (byte) 0xB0, - (byte) 0x50, (byte) 0x90, (byte) 0x91, (byte) 0x51, (byte) 0x93, (byte) 0x53, (byte) 0x52, (byte) 0x92, (byte) 0x96, (byte) 0x56, (byte) 0x57, (byte) 0x97, (byte) 0x55, (byte) 0x95, (byte) 0x94, (byte) 0x54, - (byte) 0x9C, (byte) 0x5C, (byte) 0x5D, (byte) 0x9D, (byte) 0x5F, (byte) 0x9F, (byte) 0x9E, (byte) 0x5E, (byte) 0x5A, (byte) 0x9A, (byte) 0x9B, (byte) 0x5B, (byte) 0x99, (byte) 0x59, (byte) 0x58, (byte) 0x98, - (byte) 0x88, (byte) 0x48, (byte) 0x49, (byte) 0x89, (byte) 0x4B, (byte) 0x8B, (byte) 0x8A, (byte) 0x4A, (byte) 0x4E, (byte) 0x8E, (byte) 0x8F, (byte) 0x4F, (byte) 0x8D, (byte) 0x4D, (byte) 0x4C, (byte) 0x8C, - (byte) 0x44, (byte) 0x84, (byte) 0x85, (byte) 0x45, (byte) 0x87, (byte) 0x47, (byte) 0x46, (byte) 0x86, (byte) 0x82, (byte) 0x42, (byte) 0x43, (byte) 0x83, (byte) 0x41, (byte) 0x81, (byte) 0x80, (byte) 0x40 - }; } diff --git a/xhpc-modules/xhpc-power-pole/src/main/resources/svcmainlogic.xml b/xhpc-modules/xhpc-power-pole/src/main/resources/svcmainlogic.xml new file mode 100644 index 00000000..f820364f --- /dev/null +++ b/xhpc-modules/xhpc-power-pole/src/main/resources/svcmainlogic.xml @@ -0,0 +1,13 @@ + + + + + + + +