2 * Copyright (c) 2010-2024 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.smartmeter.internal.sml;
15 import java.util.List;
16 import java.util.function.Consumer;
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19 import org.openmuc.jsml.structures.EMessageBody;
20 import org.openmuc.jsml.structures.SmlFile;
21 import org.openmuc.jsml.structures.SmlMessage;
22 import org.openmuc.jsml.structures.responses.SmlAttentionRes;
23 import org.openmuc.jsml.structures.responses.SmlGetListRes;
24 import org.openmuc.jsml.structures.responses.SmlGetProcParameterRes;
25 import org.openmuc.jsml.structures.responses.SmlGetProfileListRes;
26 import org.openmuc.jsml.structures.responses.SmlGetProfilePackRes;
27 import org.openmuc.jsml.structures.responses.SmlPublicCloseRes;
28 import org.openmuc.jsml.structures.responses.SmlPublicOpenRes;
31 * Class to parse a SML_FILE
33 * @author Matthias Steigenberger - Initial contribution
36 public class SmlFileDebugOutput {
38 private SmlFileDebugOutput() {
39 // private constructor to hide the implicit public one, since static methods should be accessed in static way so
40 // there is no need of public constructor
44 * Prints the whole SML_File
49 public static void printFile(SmlFile smlFile, Consumer<String> consumer) {
50 List<SmlMessage> smlMessages = smlFile.getMessages();
52 for (SmlMessage smlMessage : smlMessages) {
53 EMessageBody messageBody = smlMessage.getMessageBody().getTag();
55 switch (messageBody) {
57 parseOpenRequest(smlMessage, consumer);
60 parseOpenResponse(smlMessage, consumer);
63 parseCloseRequest(smlMessage, consumer);
66 parseCloseResponse(smlMessage, consumer);
68 case GET_PROFILE_PACK_REQUEST:
69 parseGetProfilePackRequest(smlMessage, consumer);
71 case GET_PROFILE_PACK_RESPONSE:
72 parseGetProfilePackResponse(smlMessage, consumer);
74 case GET_PROFILE_LIST_REQUEST:
75 parseGetProfileListRequest(smlMessage, consumer);
77 case GET_PROFILE_LIST_RESPONSE:
78 parseGetProfileListResponse(smlMessage, consumer);
80 case GET_PROC_PARAMETER_REQUEST:
81 parseGetProcParameterRequest(smlMessage, consumer);
83 case GET_PROC_PARAMETER_RESPONSE:
84 parseGetProcParameterResponse(smlMessage, consumer);
86 case SET_PROC_PARAMETER_REQUEST:
87 parseSetProcParameterRequest(smlMessage, consumer);
89 case GET_LIST_REQUEST:
90 parseGetListRequest(smlMessage, consumer);
92 case GET_LIST_RESPONSE:
93 parseGetListResponse(smlMessage, consumer);
95 case ATTENTION_RESPONSE:
96 parseAttentionResponse(smlMessage, consumer);
99 consumer.accept("type not found");
104 // ========================= Responses =================================
106 private static void parseGetListResponse(SmlMessage smlMessage, Consumer<String> consumer) {
107 consumer.accept("Got GetListResponse");
108 SmlGetListRes sml_listRes = (SmlGetListRes) smlMessage.getMessageBody().getChoice();
110 // consumer.accept(sml_listRes.toString());
112 consumer.accept(sml_listRes.toStringIndent(" "));
115 private static void parseAttentionResponse(SmlMessage smlMessage, Consumer<String> consumer) {
116 consumer.accept("Got AttentionResponse");
117 SmlAttentionRes sml_attentionRes = (SmlAttentionRes) smlMessage.getMessageBody().getChoice();
118 consumer.accept(sml_attentionRes.toString());
121 private static void parseGetProcParameterResponse(SmlMessage smlMessage, Consumer<String> consumer) {
122 consumer.accept("Got GetProcParameterResponse");
123 SmlGetProcParameterRes sml_getProcParameterRes = (SmlGetProcParameterRes) smlMessage.getMessageBody()
125 consumer.accept(sml_getProcParameterRes.toString());
128 private static void parseGetProfileListResponse(SmlMessage smlMessage, Consumer<String> consumer) {
129 consumer.accept("Got GetProfileListResponse");
130 SmlGetProfileListRes sml_getProfileListRes = (SmlGetProfileListRes) smlMessage.getMessageBody().getChoice();
131 consumer.accept(sml_getProfileListRes.toString());
134 private static void parseOpenResponse(SmlMessage smlMessage, Consumer<String> consumer) {
135 consumer.accept("Got OpenResponse");
136 SmlPublicOpenRes sml_PublicOpenRes = (SmlPublicOpenRes) smlMessage.getMessageBody().getChoice();
137 consumer.accept(sml_PublicOpenRes.toString());
140 private static void parseCloseResponse(SmlMessage smlMessage, Consumer<String> consumer) {
141 consumer.accept("Got CloseResponse");
142 SmlPublicCloseRes sml_PublicCloseRes = (SmlPublicCloseRes) smlMessage.getMessageBody().getChoice();
143 consumer.accept(sml_PublicCloseRes.toString());
146 private static void parseGetProfilePackResponse(SmlMessage smlMessage, Consumer<String> consumer) {
147 consumer.accept("Got GetProfilePackResponse");
148 SmlGetProfilePackRes sml_getProfilePackRes = (SmlGetProfilePackRes) smlMessage.getMessageBody().getChoice();
149 consumer.accept(sml_getProfilePackRes.toString());
152 // ========================= Requests =================================
154 private static void parseCloseRequest(SmlMessage smlMessage, Consumer<String> consumer) {
155 consumer.accept("Got CloseRequest");
158 private static void parseGetProfileListRequest(SmlMessage smlMessage, Consumer<String> consumer) {
159 consumer.accept("Got GetProfileListRequest");
162 private static void parseGetProfilePackRequest(SmlMessage smlMessage, Consumer<String> consumer) {
163 consumer.accept("Got GetProfilePackRequest");
166 private static void parseOpenRequest(SmlMessage smlMessage, Consumer<String> consumer) {
167 consumer.accept("Got OpenRequest");
170 private static void parseGetProcParameterRequest(SmlMessage smlMessage, Consumer<String> consumer) {
171 consumer.accept("Got GetProcParameterRequest");
174 private static void parseSetProcParameterRequest(SmlMessage smlMessage, Consumer<String> consumer) {
175 consumer.accept("Got SetProcParameterRequest");
178 private static void parseGetListRequest(SmlMessage smlMessage, Consumer<String> consumer) {
179 consumer.accept("Got GetListRequest");