@@ -685,7 +685,7 @@ private void writeValues(final int objectIndex, final int pid, final String valu
685685 }
686686
687687 private static Optional <Integer > dptSize (DptId dpt ) {
688- return createTranslator (0 , dpt . toString () ).map (DPTXlator ::getTypeSize ).map (size -> Math .max (1 , size ));
688+ return createTranslator (dpt ).map (DPTXlator ::getTypeSize ).map (size -> Math .max (1 , size ));
689689 }
690690
691691 private static Optional <Integer > dptSize (final int main , final String dpt ) {
@@ -701,6 +701,15 @@ private static Optional<DPTXlator> createTranslator(final int main, final String
701701 }
702702 }
703703
704+ private static Optional <DPTXlator > createTranslator (final DptId dptId ) {
705+ try {
706+ return Optional .of (TranslatorTypes .createTranslator (dptId ));
707+ }
708+ catch (final KNXException ignore ) {
709+ return Optional .empty ();
710+ }
711+ }
712+
704713 private static Optional <DPTXlator > createTranslator (final int pdt ) {
705714 try {
706715 return Optional .of (PropertyTypes .createTranslator (pdt ));
@@ -857,7 +866,7 @@ private void updateDptBounds(final String objType, final String pid)
857866 final var optProp = getDefinition (Integer .parseUnsignedInt (objType ), Integer .parseUnsignedInt (pid ));
858867 if (optProp .isPresent ()) {
859868 final PropertyClient .Property p = optProp .get ();
860- p .dpt ().flatMap (dpt -> createTranslator (0 , dpt . toString () )).or (() -> createTranslator (p .pdt ()))
869+ p .dpt ().flatMap (dpt -> createTranslator (dpt )).or (() -> createTranslator (p .pdt ()))
861870 .ifPresentOrElse (t -> {
862871 final DPT dpt = t .getType ();
863872 bounds .add (dpt .getLowerValue ());
0 commit comments