mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
Fix NPE on shutdown when Thing disabled and fix a bunch of warnings (#13215)
Signed-off-by: Michael Lobstein <michael.lobstein@gmail.com>
This commit is contained in:
parent
0d73ed8150
commit
9f3a23c55f
@ -211,19 +211,19 @@ As of firmware 1.6.8 (rev 14),
|
|||||||
|
|
||||||
Here is an example with minimal configuration parameters (using default values with no telnet login):
|
Here is an example with minimal configuration parameters (using default values with no telnet login):
|
||||||
|
|
||||||
```java
|
```
|
||||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30" ]
|
atlona:pro3-88m:home [ ipAddress="192.168.1.30" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
Here is another example with minimal configuration parameters (using default values with telnet login):
|
Here is another example with minimal configuration parameters (using default values with telnet login):
|
||||||
|
|
||||||
```java
|
```
|
||||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345" ]
|
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
Here is a full configuration example:
|
Here is a full configuration example:
|
||||||
|
|
||||||
```java
|
```
|
||||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345", polling=600, ping=30, retryPolling=10 ]
|
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345", polling=600, ping=30, retryPolling=10 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -231,7 +231,7 @@ atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345"
|
|||||||
|
|
||||||
Here is an example of items for the AT-UHD-PRO33-88M:
|
Here is an example of items for the AT-UHD-PRO33-88M:
|
||||||
|
|
||||||
```java
|
```
|
||||||
Switch Atlona_Power "Power" { channel = "atlona:pro3-88m:home:primary#power" }
|
Switch Atlona_Power "Power" { channel = "atlona:pro3-88m:home:primary#power" }
|
||||||
Switch Atlona_PanelLock "Panel Lock" { channel = "atlona:pro3-88m:home:primary#panellock" }
|
Switch Atlona_PanelLock "Panel Lock" { channel = "atlona:pro3-88m:home:primary#panellock" }
|
||||||
Switch Atlona_Presets "Preset Command" { channel = "atlona:pro3-88m:home:primary#presetcmd" }
|
Switch Atlona_Presets "Preset Command" { channel = "atlona:pro3-88m:home:primary#presetcmd" }
|
||||||
@ -274,7 +274,7 @@ Switch Atlona_VolumeMute6 "Mute 6" { channel = "atlona:pro3-88m:home:volume1#vol
|
|||||||
|
|
||||||
### SiteMap
|
### SiteMap
|
||||||
|
|
||||||
```perl
|
```
|
||||||
sitemap demo label="Main Menu" {
|
sitemap demo label="Main Menu" {
|
||||||
Frame label="Atlona" {
|
Frame label="Atlona" {
|
||||||
Text label="Device" {
|
Text label="Device" {
|
||||||
@ -332,7 +332,7 @@ Be sure they are in sync with the mappings above.
|
|||||||
|
|
||||||
### atlonainputports.map
|
### atlonainputports.map
|
||||||
|
|
||||||
```text
|
```
|
||||||
1=CableBox
|
1=CableBox
|
||||||
2=BluRay Player
|
2=BluRay Player
|
||||||
3=Roku
|
3=Roku
|
||||||
@ -347,7 +347,7 @@ NULL=-
|
|||||||
|
|
||||||
### atlonaoutputports.map
|
### atlonaoutputports.map
|
||||||
|
|
||||||
```text
|
```
|
||||||
1=Living Room
|
1=Living Room
|
||||||
2=Master Bed
|
2=Master Bed
|
||||||
3=Kitchen
|
3=Kitchen
|
||||||
|
@ -12,7 +12,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.atlona.internal;
|
package org.openhab.binding.atlona.internal;
|
||||||
|
|
||||||
import org.openhab.binding.atlona.internal.handler.AtlonaHandler;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.core.thing.ThingStatus;
|
import org.openhab.core.thing.ThingStatus;
|
||||||
import org.openhab.core.thing.ThingStatusDetail;
|
import org.openhab.core.thing.ThingStatusDetail;
|
||||||
import org.openhab.core.types.State;
|
import org.openhab.core.types.State;
|
||||||
@ -23,6 +24,7 @@ import org.openhab.core.types.State;
|
|||||||
*
|
*
|
||||||
* @author Tim Roberts - Initial contribution
|
* @author Tim Roberts - Initial contribution
|
||||||
*/
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
public interface AtlonaHandlerCallback {
|
public interface AtlonaHandlerCallback {
|
||||||
/**
|
/**
|
||||||
* Callback to the {@link AtlonaHandler} to update the status of the thing.
|
* Callback to the {@link AtlonaHandler} to update the status of the thing.
|
||||||
@ -31,7 +33,7 @@ public interface AtlonaHandlerCallback {
|
|||||||
* @param detail a non-null {@link org.openhab.core.thing.ThingStatusDetail}
|
* @param detail a non-null {@link org.openhab.core.thing.ThingStatusDetail}
|
||||||
* @param msg a possibly null, possibly empty message
|
* @param msg a possibly null, possibly empty message
|
||||||
*/
|
*/
|
||||||
void statusChanged(ThingStatus status, ThingStatusDetail detail, String msg);
|
void statusChanged(ThingStatus status, ThingStatusDetail detail, @Nullable String msg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback to the {@link AtlonaHandler} to update the state of an item
|
* Callback to the {@link AtlonaHandler} to update the state of an item
|
||||||
|
@ -17,6 +17,8 @@ import static org.openhab.binding.atlona.internal.AtlonaBindingConstants.*;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.atlona.internal.pro3.AtlonaPro3Capabilities;
|
import org.openhab.binding.atlona.internal.pro3.AtlonaPro3Capabilities;
|
||||||
import org.openhab.binding.atlona.internal.pro3.AtlonaPro3Handler;
|
import org.openhab.binding.atlona.internal.pro3.AtlonaPro3Handler;
|
||||||
import org.openhab.core.thing.Thing;
|
import org.openhab.core.thing.Thing;
|
||||||
@ -35,6 +37,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
* @author Tim Roberts - Initial contribution
|
* @author Tim Roberts - Initial contribution
|
||||||
* @author Michael Lobstein - Add support for AT-PRO3HD66M
|
* @author Michael Lobstein - Add support for AT-PRO3HD66M
|
||||||
*/
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
@Component(service = ThingHandlerFactory.class, configurationPid = "binding.atlona")
|
@Component(service = ThingHandlerFactory.class, configurationPid = "binding.atlona")
|
||||||
public class AtlonaHandlerFactory extends BaseThingHandlerFactory {
|
public class AtlonaHandlerFactory extends BaseThingHandlerFactory {
|
||||||
|
|
||||||
@ -62,7 +65,7 @@ public class AtlonaHandlerFactory extends BaseThingHandlerFactory {
|
|||||||
* Creates the handler for the given thing given its thingTypeUID
|
* Creates the handler for the given thing given its thingTypeUID
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected ThingHandler createHandler(Thing thing) {
|
protected @Nullable ThingHandler createHandler(Thing thing) {
|
||||||
ThingTypeUID thingTypeUID = thing.getThingTypeUID();
|
ThingTypeUID thingTypeUID = thing.getThingTypeUID();
|
||||||
|
|
||||||
if (thingTypeUID.equals(THING_TYPE_PRO3_44M)) {
|
if (thingTypeUID.equals(THING_TYPE_PRO3_44M)) {
|
||||||
|
@ -88,7 +88,7 @@ public class StatefulHandlerCallback implements AtlonaHandlerCallback {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void stateChanged(String channelId, State state) {
|
public void stateChanged(String channelId, State state) {
|
||||||
if (channelId == null || "".equals(channelId)) {
|
if ("".equals(channelId)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ public class AtlonaDiscovery extends AbstractDiscoveryService {
|
|||||||
multiSocket.receive(receivePacket);
|
multiSocket.receive(receivePacket);
|
||||||
|
|
||||||
String message = new String(receivePacket.getData()).trim();
|
String message = new String(receivePacket.getData()).trim();
|
||||||
if (message != null && message.length() > 0) {
|
if (message.length() > 0) {
|
||||||
messageReceive(message);
|
messageReceive(message);
|
||||||
}
|
}
|
||||||
} catch (SocketTimeoutException e) {
|
} catch (SocketTimeoutException e) {
|
||||||
@ -196,17 +196,17 @@ public class AtlonaDiscovery extends AbstractDiscoveryService {
|
|||||||
if (idx > 0) {
|
if (idx > 0) {
|
||||||
String name = msg.substring(0, idx);
|
String name = msg.substring(0, idx);
|
||||||
|
|
||||||
if (name.equalsIgnoreCase("Host")) {
|
if ("Host".equalsIgnoreCase(name)) {
|
||||||
host = msg.substring(idx + 1).trim().replaceAll("\"", "");
|
host = msg.substring(idx + 1).trim().replaceAll("\"", "");
|
||||||
int sep = host.indexOf('_');
|
int sep = host.indexOf('_');
|
||||||
if (sep >= 0) {
|
if (sep >= 0) {
|
||||||
host = host.substring(sep + 1);
|
host = host.substring(sep + 1);
|
||||||
}
|
}
|
||||||
} else if (name.equalsIgnoreCase("Model")) {
|
} else if ("Model".equalsIgnoreCase(name)) {
|
||||||
model = msg.substring(idx + 1).trim().replaceAll("\"", "");
|
model = msg.substring(idx + 1).trim().replaceAll("\"", "");
|
||||||
} else if (name.equalsIgnoreCase("Manufacturer")) {
|
} else if ("Manufacturer".equalsIgnoreCase(name)) {
|
||||||
manufacturer = msg.substring(idx + 1).trim().replaceAll("\"", "");
|
manufacturer = msg.substring(idx + 1).trim().replaceAll("\"", "");
|
||||||
} else if (name.equalsIgnoreCase("From")) {
|
} else if ("From".equalsIgnoreCase(name)) {
|
||||||
from = msg.substring(idx + 1).trim().replaceAll("\"", "");
|
from = msg.substring(idx + 1).trim().replaceAll("\"", "");
|
||||||
int sep = from.indexOf(':');
|
int sep = from.indexOf(':');
|
||||||
if (sep >= 0) {
|
if (sep >= 0) {
|
||||||
@ -223,13 +223,13 @@ public class AtlonaDiscovery extends AbstractDiscoveryService {
|
|||||||
|
|
||||||
if (host != null && model != null && from != null) {
|
if (host != null && model != null && from != null) {
|
||||||
ThingTypeUID typeId = null;
|
ThingTypeUID typeId = null;
|
||||||
if (model.equalsIgnoreCase("AT-UHD-PRO3-44M")) {
|
if ("AT-UHD-PRO3-44M".equalsIgnoreCase(model)) {
|
||||||
typeId = THING_TYPE_PRO3_44M;
|
typeId = THING_TYPE_PRO3_44M;
|
||||||
} else if (model.equalsIgnoreCase("AT-UHD-PRO3-66M")) {
|
} else if ("AT-UHD-PRO3-66M".equalsIgnoreCase(model)) {
|
||||||
typeId = THING_TYPE_PRO3_66M;
|
typeId = THING_TYPE_PRO3_66M;
|
||||||
} else if (model.equalsIgnoreCase("AT-UHD-PRO3-88M")) {
|
} else if ("AT-UHD-PRO3-88M".equalsIgnoreCase(model)) {
|
||||||
typeId = THING_TYPE_PRO3_88M;
|
typeId = THING_TYPE_PRO3_88M;
|
||||||
} else if (model.equalsIgnoreCase("AT-UHD-PRO3-1616M")) {
|
} else if ("AT-UHD-PRO3-1616M".equalsIgnoreCase(model)) {
|
||||||
typeId = THING_TYPE_PRO3_1616M;
|
typeId = THING_TYPE_PRO3_1616M;
|
||||||
} else {
|
} else {
|
||||||
logger.warn("Unknown model #: {}", model);
|
logger.warn("Unknown model #: {}", model);
|
||||||
|
@ -12,12 +12,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.atlona.internal.handler;
|
package org.openhab.binding.atlona.internal.handler;
|
||||||
|
|
||||||
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Any model specific capabilities class should inherit from this base class. Currently doesn't provide any generic
|
* Any model specific capabilities class should inherit from this base class. Currently doesn't provide any generic
|
||||||
* functionality.
|
* functionality.
|
||||||
*
|
*
|
||||||
* @author Tim Roberts - Initial contribution
|
* @author Tim Roberts - Initial contribution
|
||||||
*/
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
public abstract class AtlonaCapabilities {
|
public abstract class AtlonaCapabilities {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -100,9 +100,6 @@ public class SocketChannelSession implements SocketSession {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addListener(SocketSessionListener listener) {
|
public void addListener(SocketSessionListener listener) {
|
||||||
if (listener == null) {
|
|
||||||
throw new IllegalArgumentException("listener cannot be null");
|
|
||||||
}
|
|
||||||
listeners.add(listener);
|
listeners.add(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,10 +163,6 @@ public class SocketChannelSession implements SocketSession {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void sendCommand(String command) throws IOException {
|
public synchronized void sendCommand(String command) throws IOException {
|
||||||
if (command == null) {
|
|
||||||
throw new IllegalArgumentException("command cannot be null");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isConnected()) {
|
if (!isConnected()) {
|
||||||
throw new IOException("Cannot send message - disconnected");
|
throw new IOException("Cannot send message - disconnected");
|
||||||
}
|
}
|
||||||
|
@ -14,12 +14,15 @@ package org.openhab.binding.atlona.internal.net;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is a socket session interface that defines the contract for a socket session. A socket session will initiate
|
* This is a socket session interface that defines the contract for a socket session. A socket session will initiate
|
||||||
* communications with the underlying device and provide message back via the {@link SocketSessionListener}
|
* communications with the underlying device and provide message back via the {@link SocketSessionListener}
|
||||||
*
|
*
|
||||||
* @author Tim Roberts - Initial contribution
|
* @author Tim Roberts - Initial contribution
|
||||||
*/
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
public interface SocketSession {
|
public interface SocketSession {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,12 +12,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.atlona.internal.net;
|
package org.openhab.binding.atlona.internal.net;
|
||||||
|
|
||||||
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface defining a listener to a {@link SocketSession} that will receive responses and/or exceptions from the
|
* Interface defining a listener to a {@link SocketSession} that will receive responses and/or exceptions from the
|
||||||
* socket
|
* socket
|
||||||
*
|
*
|
||||||
* @author Tim Roberts - Initial contribution
|
* @author Tim Roberts - Initial contribution
|
||||||
*/
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
public interface SocketSessionListener {
|
public interface SocketSessionListener {
|
||||||
/**
|
/**
|
||||||
* Called when a command has completed with the response for the command
|
* Called when a command has completed with the response for the command
|
||||||
|
@ -16,6 +16,7 @@ import java.util.Collections;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.openhab.binding.atlona.internal.handler.AtlonaCapabilities;
|
import org.openhab.binding.atlona.internal.handler.AtlonaCapabilities;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,6 +26,7 @@ import org.openhab.binding.atlona.internal.handler.AtlonaCapabilities;
|
|||||||
* @author Tim Roberts - Initial contribution
|
* @author Tim Roberts - Initial contribution
|
||||||
* @author Michael Lobstein - Add support for AT-PRO3HD66M
|
* @author Michael Lobstein - Add support for AT-PRO3HD66M
|
||||||
*/
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
public class AtlonaPro3Capabilities extends AtlonaCapabilities {
|
public class AtlonaPro3Capabilities extends AtlonaCapabilities {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -57,10 +59,6 @@ public class AtlonaPro3Capabilities extends AtlonaCapabilities {
|
|||||||
public AtlonaPro3Capabilities(int nbrPowerPorts, int nbrAudioPorts, Set<Integer> hdmiPorts, boolean isUHDModel) {
|
public AtlonaPro3Capabilities(int nbrPowerPorts, int nbrAudioPorts, Set<Integer> hdmiPorts, boolean isUHDModel) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
if (hdmiPorts == null) {
|
|
||||||
throw new IllegalArgumentException("hdmiPorts cannot be null");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hdmiPorts.isEmpty()) {
|
if (hdmiPorts.isEmpty()) {
|
||||||
throw new IllegalArgumentException("hdmiPorts cannot be empty");
|
throw new IllegalArgumentException("hdmiPorts cannot be empty");
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.atlona.internal.pro3;
|
package org.openhab.binding.atlona.internal.pro3;
|
||||||
|
|
||||||
import org.openhab.binding.atlona.internal.discovery.AtlonaDiscovery;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration class for the Atlona Pro3 line of switchers
|
* Configuration class for the Atlona Pro3 line of switchers
|
||||||
*
|
*
|
||||||
|
@ -12,12 +12,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.atlona.internal.pro3;
|
package org.openhab.binding.atlona.internal.pro3;
|
||||||
|
|
||||||
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link AtlonaPro3Binding} class defines common constants, which are
|
* The {@link AtlonaPro3Binding} class defines common constants, which are
|
||||||
* used across the whole binding.
|
* used across the whole binding.
|
||||||
*
|
*
|
||||||
* @author Tim Roberts - Initial contribution
|
* @author Tim Roberts - Initial contribution
|
||||||
*/
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
class AtlonaPro3Constants {
|
class AtlonaPro3Constants {
|
||||||
|
|
||||||
// Properties
|
// Properties
|
||||||
@ -44,7 +47,6 @@ class AtlonaPro3Constants {
|
|||||||
|
|
||||||
static final String CHANNEL_VOLUME = "volume";
|
static final String CHANNEL_VOLUME = "volume";
|
||||||
static final String CHANNEL_VOLUME_MUTE = "volumemute";
|
static final String CHANNEL_VOLUME_MUTE = "volumemute";
|
||||||
// static final String CHANNEL_RS232 = "rs232cmd";
|
|
||||||
|
|
||||||
static final String CONFIG_HOSTNAME = "hostname";
|
static final String CONFIG_HOSTNAME = "hostname";
|
||||||
static final String CONFIG_OUTPUT = "output";
|
static final String CONFIG_OUTPUT = "output";
|
||||||
|
@ -554,10 +554,12 @@ public class AtlonaPro3Handler extends AtlonaHandler<AtlonaPro3Capabilities> {
|
|||||||
ping = null;
|
ping = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
if (session != null) {
|
||||||
session.disconnect();
|
try {
|
||||||
} catch (IOException e) {
|
session.disconnect();
|
||||||
// ignore - we don't care
|
} catch (IOException e) {
|
||||||
|
// ignore - we don't care
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (retryConnection) {
|
if (retryConnection) {
|
||||||
@ -588,16 +590,10 @@ public class AtlonaPro3Handler extends AtlonaHandler<AtlonaPro3Capabilities> {
|
|||||||
/**
|
/**
|
||||||
* Simple gets the {@link AtlonaPro3Config} from the {@link Thing} and will set the status to offline if not found.
|
* Simple gets the {@link AtlonaPro3Config} from the {@link Thing} and will set the status to offline if not found.
|
||||||
*
|
*
|
||||||
* @return a possible null {@link AtlonaPro3Config}
|
* @return {@link AtlonaPro3Config}
|
||||||
*/
|
*/
|
||||||
private AtlonaPro3Config getAtlonaConfig() {
|
private AtlonaPro3Config getAtlonaConfig() {
|
||||||
final AtlonaPro3Config config = getThing().getConfiguration().as(AtlonaPro3Config.class);
|
return getThing().getConfiguration().as(AtlonaPro3Config.class);
|
||||||
|
|
||||||
if (config == null) {
|
|
||||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
return config;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -199,7 +199,7 @@ class AtlonaPro3PortocolHandler {
|
|||||||
String response;
|
String response;
|
||||||
try {
|
try {
|
||||||
response = callback.getResponse();
|
response = callback.getResponse();
|
||||||
if (!response.equals("")) {
|
if (!"".equals(response)) {
|
||||||
logger.debug("Atlona protocol violation - didn't start with an inital empty response: '{}'", response);
|
logger.debug("Atlona protocol violation - didn't start with an inital empty response: '{}'", response);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -223,13 +223,13 @@ class AtlonaPro3PortocolHandler {
|
|||||||
|
|
||||||
// We should have been presented with a new "\r\nLogin: "
|
// We should have been presented with a new "\r\nLogin: "
|
||||||
response = callback.getResponse();
|
response = callback.getResponse();
|
||||||
if (!response.equals("")) {
|
if (!"".equals(response)) {
|
||||||
logger.debug("Atlona protocol violation - didn't start with an inital empty response: '{}'", response);
|
logger.debug("Atlona protocol violation - didn't start with an inital empty response: '{}'", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the new "Login: " prompt response
|
// Get the new "Login: " prompt response
|
||||||
response = callback.getResponse();
|
response = callback.getResponse();
|
||||||
if (response.equals(RSP_LOGIN)) {
|
if (RSP_LOGIN.equals(response)) {
|
||||||
if (config.getUserName() == null || config.getUserName().trim().length() == 0) {
|
if (config.getUserName() == null || config.getUserName().trim().length() == 0) {
|
||||||
return "Atlona PRO3 has enabled Telnet/IP Login but no username was provided in the configuration.";
|
return "Atlona PRO3 has enabled Telnet/IP Login but no username was provided in the configuration.";
|
||||||
}
|
}
|
||||||
@ -244,12 +244,12 @@ class AtlonaPro3PortocolHandler {
|
|||||||
response = callback.getResponse();
|
response = callback.getResponse();
|
||||||
|
|
||||||
// Burn the empty response if we got one (
|
// Burn the empty response if we got one (
|
||||||
if (response.equals("")) {
|
if ("".equals(response)) {
|
||||||
response = callback.getResponse();
|
response = callback.getResponse();
|
||||||
}
|
}
|
||||||
if (!response.equals(RSP_PASSWORD)) {
|
if (!RSP_PASSWORD.equals(response)) {
|
||||||
// If we got another login response, username wasn't valid
|
// If we got another login response, username wasn't valid
|
||||||
if (response.equals(RSP_LOGIN)) {
|
if (RSP_LOGIN.equals(response)) {
|
||||||
return "Username " + config.getUserName() + " is not a valid user on the atlona";
|
return "Username " + config.getUserName() + " is not a valid user on the atlona";
|
||||||
}
|
}
|
||||||
return "Atlona protocol violation - invalid response to a login: " + response;
|
return "Atlona protocol violation - invalid response to a login: " + response;
|
||||||
@ -270,7 +270,7 @@ class AtlonaPro3PortocolHandler {
|
|||||||
// Send an invalid command to see if we get the failed command response
|
// Send an invalid command to see if we get the failed command response
|
||||||
|
|
||||||
// First make sure we had an empty response (the "\r\n" part)
|
// First make sure we had an empty response (the "\r\n" part)
|
||||||
if (!response.equals("")) {
|
if (!"".equals(response)) {
|
||||||
logger.debug("Atlona protocol violation - not an empty response after password: '{}'", response);
|
logger.debug("Atlona protocol violation - not an empty response after password: '{}'", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,7 +307,7 @@ class AtlonaPro3PortocolHandler {
|
|||||||
String response;
|
String response;
|
||||||
try {
|
try {
|
||||||
response = callback.getResponse();
|
response = callback.getResponse();
|
||||||
if (!response.equals("")) {
|
if (!"".equals(response)) {
|
||||||
logger.debug("Atlona protocol violation - didn't start with an inital empty response: '{}'", response);
|
logger.debug("Atlona protocol violation - didn't start with an inital empty response: '{}'", response);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -335,7 +335,7 @@ class AtlonaPro3PortocolHandler {
|
|||||||
|
|
||||||
// Check for an empty response after the login prompt (the "\r\n" part)
|
// Check for an empty response after the login prompt (the "\r\n" part)
|
||||||
response = callback.getResponse();
|
response = callback.getResponse();
|
||||||
if (!response.equals("")) {
|
if (!"".equals(response)) {
|
||||||
logger.debug("Atlona protocol violation - not an empty response after password: '{}'", response);
|
logger.debug("Atlona protocol violation - not an empty response after password: '{}'", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -907,7 +907,7 @@ class AtlonaPro3PortocolHandler {
|
|||||||
// could be "off" (if mirror off), "on"/"Out" (with 3rd group representing out)
|
// could be "off" (if mirror off), "on"/"Out" (with 3rd group representing out)
|
||||||
String oper = (m.group(2) == null ? "" : m.group(2).trim()).toLowerCase();
|
String oper = (m.group(2) == null ? "" : m.group(2).trim()).toLowerCase();
|
||||||
|
|
||||||
if (oper.equals("off")) {
|
if ("off".equals(oper)) {
|
||||||
callback.stateChanged(AtlonaPro3Utilities.createChannelID(AtlonaPro3Constants.GROUP_MIRROR,
|
callback.stateChanged(AtlonaPro3Utilities.createChannelID(AtlonaPro3Constants.GROUP_MIRROR,
|
||||||
hdmiPortNbr, AtlonaPro3Constants.CHANNEL_PORTMIRRORENABLED), OnOffType.OFF);
|
hdmiPortNbr, AtlonaPro3Constants.CHANNEL_PORTMIRRORENABLED), OnOffType.OFF);
|
||||||
} else {
|
} else {
|
||||||
@ -1088,7 +1088,7 @@ class AtlonaPro3PortocolHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void responseReceived(String response) {
|
public void responseReceived(String response) {
|
||||||
if (response == null || response.isEmpty()) {
|
if (response.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,10 +12,13 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.atlona.internal.pro3;
|
package org.openhab.binding.atlona.internal.pro3;
|
||||||
|
|
||||||
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Tim Roberts - Initial contribution
|
* @author Tim Roberts - Initial contribution
|
||||||
*/
|
*/
|
||||||
|
@NonNullByDefault
|
||||||
public class AtlonaPro3Utilities {
|
public class AtlonaPro3Utilities {
|
||||||
/**
|
/**
|
||||||
* Helper method to create a channel id from a group with no port number attached
|
* Helper method to create a channel id from a group with no port number attached
|
||||||
|
Loading…
Reference in New Issue
Block a user