From 1df693a6e94f8692e48ec64cb42dbdd50c6ba5e4 Mon Sep 17 00:00:00 2001 From: lsiepel Date: Tue, 27 Dec 2022 16:27:19 +0100 Subject: [PATCH] [bluetooth.am43] null annotations (#13972) * null annotations forbidden package * improve createChecksum * spotless + typo Signed-off-by: lsiepel --- .../am43/internal/AM43Configuration.java | 5 ++- .../am43/internal/command/AM43Command.java | 31 ++++++++++++------- .../am43/internal/data/ControlAction.java | 3 ++ .../am43/internal/data/Direction.java | 3 ++ .../am43/internal/data/OperationMode.java | 3 ++ 5 files changed, 32 insertions(+), 13 deletions(-) diff --git a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/AM43Configuration.java b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/AM43Configuration.java index d0fbc157e74ba..a6b1efc566403 100644 --- a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/AM43Configuration.java +++ b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/AM43Configuration.java @@ -12,14 +12,17 @@ */ package org.openhab.binding.bluetooth.am43.internal; +import org.eclipse.jdt.annotation.NonNullByDefault; + /** * Configuration class for AM43 Binding. * * @author Connor Petty - Initial contribution */ +@NonNullByDefault public class AM43Configuration { - public String address; + public String address = ""; public int refreshInterval; public boolean invertPosition; public int commandTimeout; diff --git a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/command/AM43Command.java b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/command/AM43Command.java index 3d67a41988c37..2c20f1fe479af 100644 --- a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/command/AM43Command.java +++ b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/command/AM43Command.java @@ -18,7 +18,6 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -import org.apache.commons.lang3.ArrayUtils; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -121,19 +120,27 @@ public static byte getResponseHeader(byte[] response) { } public byte[] getRequest() { - byte[] value = ArrayUtils.EMPTY_BYTE_ARRAY; - value = ArrayUtils.add(value, HEADER_PREFIX); - value = ArrayUtils.add(value, header); - value = ArrayUtils.add(value, (byte) data.length); - value = ArrayUtils.addAll(value, data); - value = ArrayUtils.add(value, createChecksum(value)); - return ArrayUtils.addAll(REQUEST_PREFIX, value); + byte[] value = new byte[4 + data.length + REQUEST_PREFIX.length]; + System.arraycopy(REQUEST_PREFIX, 0, value, 0, REQUEST_PREFIX.length); + value[REQUEST_PREFIX.length] = HEADER_PREFIX; + value[REQUEST_PREFIX.length + 1] = header; + value[REQUEST_PREFIX.length + 2] = (byte) data.length; + System.arraycopy(data, 0, value, REQUEST_PREFIX.length + 3, data.length); + value[value.length - 1] = createChecksum(value, REQUEST_PREFIX.length, 3 + data.length); + return value; } - protected byte createChecksum(byte[] data) { - // this is a basic checksum - byte crc = data[0]; - for (int i = 1; i < data.length; i++) { + /** + * A basic method to calculate the checksum + * + * @param data source for the checksum calculation + * @param startIndex the zero-based start index to include in the calculation + * @param length the length of the range to include in the calculation + * @return the CRC-checksum result in {@link byte} + */ + protected byte createChecksum(byte[] data, int startIndex, int length) { + byte crc = data[startIndex]; + for (int i = startIndex + 1; i < startIndex + length; i++) { crc ^= data[i]; } return crc; diff --git a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/ControlAction.java b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/ControlAction.java index 453d5acddd868..a05c7aa2ab629 100644 --- a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/ControlAction.java +++ b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/ControlAction.java @@ -12,12 +12,15 @@ */ package org.openhab.binding.bluetooth.am43.internal.data; +import org.eclipse.jdt.annotation.NonNullByDefault; + /** * The {@link ControlAction} list possible controls actions that can be sent through * {@link org.openhab.binding.bluetooth.am43.internal.command.ControlCommand} * * @author Connor Petty - Initial contribution */ +@NonNullByDefault public enum ControlAction { CLOSE(0xee), OPEN(0xdd), diff --git a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/Direction.java b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/Direction.java index 0e8bf45a26087..c2314632c7352 100644 --- a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/Direction.java +++ b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/Direction.java @@ -12,11 +12,14 @@ */ package org.openhab.binding.bluetooth.am43.internal.data; +import org.eclipse.jdt.annotation.NonNullByDefault; + /** * This is an enum representing possible motor direction settings * * @author Connor Petty - Initial contribution */ +@NonNullByDefault public enum Direction { Forward(0x1), Reverse(0x0); diff --git a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/OperationMode.java b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/OperationMode.java index 7fbee5c3ab591..63b03e62c6b7c 100644 --- a/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/OperationMode.java +++ b/bundles/org.openhab.binding.bluetooth.am43/src/main/java/org/openhab/binding/bluetooth/am43/internal/data/OperationMode.java @@ -12,11 +12,14 @@ */ package org.openhab.binding.bluetooth.am43.internal.data; +import org.eclipse.jdt.annotation.NonNullByDefault; + /** * This is an enum representing possible motor modes settings * * @author Connor Petty - Initial contribution */ +@NonNullByDefault public enum OperationMode { Inching(0x1), Continuous(0x0);