2 * Copyright (c) 2010-2023 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.rfxcom.internal.messages;
15 import static org.junit.jupiter.api.Assertions.assertEquals;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.junit.jupiter.api.Test;
19 import org.openhab.binding.rfxcom.internal.exceptions.RFXComException;
20 import org.openhab.binding.rfxcom.internal.messages.RFXComInterfaceMessage.Commands;
21 import org.openhab.binding.rfxcom.internal.messages.RFXComInterfaceMessage.FirmwareType;
22 import org.openhab.binding.rfxcom.internal.messages.RFXComInterfaceMessage.SubType;
23 import org.openhab.binding.rfxcom.internal.messages.RFXComInterfaceMessage.TransceiverType;
24 import org.openhab.core.util.HexUtils;
27 * Test for RFXCom-binding
29 * @author Martin van Wingerden - Initial contribution
32 public class RFXComInterfaceMessageTest {
33 private RFXComInterfaceMessage testMessage(String hexMsg, SubType subType, int seqNbr, Commands command)
34 throws RFXComException {
35 RFXComInterfaceMessage msg = (RFXComInterfaceMessage) RFXComMessageFactoryImpl.INSTANCE
36 .createMessage(HexUtils.hexToBytes(hexMsg));
37 assertEquals(subType, msg.subType, "SubType");
38 assertEquals(seqNbr, (short) (msg.seqNbr & 0xFF), "Seq Number");
39 assertEquals(command, msg.command, "Command");
45 public void testWelcomeCopyRightMessage() throws RFXComException {
46 RFXComInterfaceMessage msg = testMessage("1401070307436F7079726967687420524658434F4D", SubType.START_RECEIVER,
47 3, Commands.START_RECEIVER);
49 assertEquals("Copyright RFXCOM", msg.text, "text");
53 public void testRespondOnUnknownMessage() throws RFXComException {
54 testMessage("0D01FF190053E2000C2701020000", SubType.UNKNOWN_COMMAND, 25, Commands.UNSUPPORTED_COMMAND);
57 private void testStatus(String message, TransceiverType transceiverType, FirmwareType firmwareType,
58 int firewareVersion) throws RFXComException {
59 RFXComInterfaceMessage msg = testMessage(message, SubType.RESPONSE, 1, Commands.GET_STATUS);
61 assertEquals(transceiverType, msg.transceiverType, "transceiverType");
62 assertEquals(firmwareType, msg.firmwareType, "firmwareType");
63 assertEquals(firewareVersion, msg.firmwareVersion, "firmwareVersion");
67 public void testStatus_Rfxtrx443_Ext_250() throws RFXComException {
68 testStatus("0D0100010253FA0400070001031C", TransceiverType._433_92MHZ_TRANSCEIVER, FirmwareType.EXT, 250);
72 public void testStatus_Rfxtrx443_Ext_251() throws RFXComException {
73 testStatus("0D0100010253FB0400070001031C", TransceiverType._433_92MHZ_TRANSCEIVER, FirmwareType.EXT, 251);
77 public void testStatus_Rfxtrx443_Ext_1001() throws RFXComException {
78 testStatus("140100010253010400070001031C03000000000000", TransceiverType._433_92MHZ_TRANSCEIVER,
79 FirmwareType.EXT, 1001);
83 public void testStatus_Rfxtrx443_Pro1_1044() throws RFXComException {
84 testStatus("1401000102532C04000700010300055D0000000000", TransceiverType._433_92MHZ_TRANSCEIVER,
85 FirmwareType.PRO1, 1044);
89 public void testStatus_Rfxtrx443_Type1_95() throws RFXComException {
90 testStatus("0D01000102535F0000270001031C", TransceiverType._433_92MHZ_TRANSCEIVER, FirmwareType.TYPE1, 95);
94 public void testStatus_Rfxtrx443_Type1_1024() throws RFXComException {
95 testStatus("140100010253180000270001031C01000000000000", TransceiverType._433_92MHZ_TRANSCEIVER,
96 FirmwareType.TYPE1, 1024);
100 public void testStatus_Rfxtrx443_Type2_195() throws RFXComException {
101 testStatus("0D0100010253C30080270001031C", TransceiverType._433_92MHZ_TRANSCEIVER, FirmwareType.TYPE2, 195);
105 public void testStatus_Rfxtrx443_Type2_1022() throws RFXComException {
106 testStatus("140100010253160080270001031C02000000000000", TransceiverType._433_92MHZ_TRANSCEIVER,
107 FirmwareType.TYPE2, 1022);
111 public void testStatus_Rfxtrx443_Ext2_1012() throws RFXComException {
112 testStatus("1401000102530C0800270001031C04524658434F4D", TransceiverType._433_92MHZ_TRANSCEIVER,
113 FirmwareType.EXT2, 1012);
117 public void testStatus_Unknown_Ext2_1012() throws RFXComException {
118 testStatus("1401000102AA0C0800270001031C04524658434F4D", TransceiverType._UNKNOWN, FirmwareType.EXT2, 1012);
122 public void testStatus_Rfxtrx433_Unknown_1012() throws RFXComException {
123 testStatus("1401000102530C0800270001031CAA524658434F4D", TransceiverType._433_92MHZ_TRANSCEIVER,
124 FirmwareType.UNKNOWN, 1012);