Skip to content

Commit

Permalink
Fix test
Browse files Browse the repository at this point in the history
  • Loading branch information
marcocipriani01 committed Jun 4, 2022
1 parent 176186a commit f320a29
Show file tree
Hide file tree
Showing 9 changed files with 133 additions and 145 deletions.
23 changes: 15 additions & 8 deletions ASCOM.ThunderFocus/ASCOM.ThunderFocus.Switch/SwitchDriver.vb
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ Public Class Switch
Private TL As TraceLogger

Private maxSwitchVal As Short = 0
Private switchNames() As String
Private switchValues() As Short
Private switchMaxValues() As Short

'
' Constructor - Must be public for COM registration!
Expand Down Expand Up @@ -125,15 +128,10 @@ Public Class Switch
Try
SyncLock helper
connectedState = helper.Connect(socketPort, "HasPowerBox")
helper.SocketSend("MaxSwitch")
Dim rcv As String = helper.SocketRead()
If String.IsNullOrEmpty(rcv) Then
helper.Disconnect()
connectedState = False
Throw New DriverException("Trouble reading information from ThunderFocus!")
End If
maxSwitchVal = Short.Parse(rcv)
maxSwitchVal = Short.Parse(SendAndReceive("MaxSwitch"))
TL.LogMessage("Connected Set", "Number of switches = " + maxSwitchVal.ToString())
switchNames = SendAndReceive("GetSwitchNames").Split(","c)
switchMaxValues =
End SyncLock
Catch ex As Exception
TL.LogIssue("Connected Set", "Connection exception! " + ex.Message)
Expand All @@ -152,6 +150,15 @@ Public Class Switch
End Set
End Property

Private Function SendAndReceive(msg As String) As String
helper.SocketSend(msg)
Dim rcv As String = helper.SocketRead()
If String.IsNullOrEmpty(rcv) Then
Throw New DriverException("Trouble reading information from ThunderFocus!")
End If
Return rcv
End Function

Public ReadOnly Property Description As String Implements ISwitchV2.Description
Get
Dim d As String = driverDescription
Expand Down
5 changes: 5 additions & 0 deletions InnoSetup.iss
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ Filename: "{dotnet4032}\RegAsm.exe"; Parameters: "/codebase ""{commoncf}\ASCOM\C
Filename: "{dotnet4064}\RegAsm.exe"; Parameters: "/codebase ""{commoncf}\ASCOM\CoverCalibrator\ASCOM.ThunderFocus.CoverCalibrator\ASCOM.ThunderFocus.CoverCalibrator.dll"""; Flags: runhidden 64bit; Check: IsWin64
Filename: "{dotnet4032}\RegAsm.exe"; Parameters: "/codebase ""{commoncf}\ASCOM\Switch\ASCOM.ThunderFocus.Switch\ASCOM.ThunderFocus.Switch.dll"""; Flags: runhidden 32bit
Filename: "{dotnet4064}\RegAsm.exe"; Parameters: "/codebase ""{commoncf}\ASCOM\Switch\ASCOM.ThunderFocus.Switch\ASCOM.ThunderFocus.Switch.dll"""; Flags: runhidden 64bit; Check: IsWin64
Filename: "{dotnet4032}\RegAsm.exe"; Parameters: "/codebase ""{commoncf}\ASCOM\ObservingConditions\ASCOM.ThunderFocus.ObservingConditions\ASCOM.ThunderFocus.ObservingConditions.dll"""; Flags: runhidden 32bit
Filename: "{dotnet4064}\RegAsm.exe"; Parameters: "/codebase ""{commoncf}\ASCOM\ObservingConditions\ASCOM.ThunderFocus.ObservingConditions\ASCOM.ThunderFocus.ObservingConditions.dll"""; Flags: runhidden 64bit; Check: IsWin64
Filename: "{app}\bin\javaw.exe"; Parameters: "-jar ""{app}\ThunderFocus.jar"""; Description: "{cm:LaunchProgram,ThunderFocus}"; Flags: nowait postinstall skipifsilent

[UninstallRun]
Expand All @@ -64,6 +66,9 @@ Filename: "{dotnet4064}\regasm.exe"; Parameters: "-u ""{commoncf}\ASCOM\CoverCal
Filename: "{dotnet4032}\regasm.exe"; Parameters: "-u ""{commoncf}\ASCOM\Switch\ASCOM.ThunderFocus.Switch.dll"""; Flags: runhidden 32bit; RunOnceId: "RemoveDDL7"
Filename: "{dotnet4064}\regasm.exe"; Parameters: "/codebase ""{commoncf}\ASCOM\Switch\ASCOM.ThunderFocus.Switch.dll"""; Flags: runhidden 64bit; Check: IsWin64; RunOnceId: "RemoveDDL8"
Filename: "{dotnet4064}\regasm.exe"; Parameters: "-u ""{commoncf}\ASCOM\Switch\ASCOM.ThunderFocus.Switch.dll"""; Flags: runhidden 64bit; Check: IsWin64; RunOnceId: "RemoveDDL9"
Filename: "{dotnet4032}\regasm.exe"; Parameters: "-u ""{commoncf}\ASCOM\ObservingConditions\ASCOM.ThunderFocus.ObservingConditions.dll"""; Flags: runhidden 32bit; RunOnceId: "RemoveDDL10"
Filename: "{dotnet4064}\regasm.exe"; Parameters: "/codebase ""{commoncf}\ASCOM\ObservingConditions\ASCOM.ThunderFocus.ObservingConditions.dll"""; Flags: runhidden 64bit; Check: IsWin64; RunOnceId: "RemoveDDL11"
Filename: "{dotnet4064}\regasm.exe"; Parameters: "-u ""{commoncf}\ASCOM\ObservingConditions\ASCOM.ThunderFocus.ObservingConditions.dll"""; Flags: runhidden 64bit; Check: IsWin64; RunOnceId: "RemoveDDL12"

[Registry]
Root: HKCR; Subkey: ".thunder"; ValueData: "ThunderFocus"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ public void setValueAt(Object val, int rowIndex, int columnIndex) {
ArduinoPin pin = powerBox.getIndex(rowIndex);
switch (columnIndex) {
case 0 -> {
pin.setName((String) val);
pin.setName(((String) val).trim().replaceAll("[^A-Za-z0-9 ]", ""));
PowerBox.clonePins(powerBox, settings.powerBoxPins);
try {
Main.settings.save();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ public static void exit(int code) {
}
if (isAscomRunning()) {
try {
ascomBridge.close();
ascomBridge.stop();
} catch (IOException e) {
e.printStackTrace();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -948,7 +948,7 @@ private void startOrStopASCOM(boolean forceRestart) {
if (settings.ascomBridge) {
if (Main.isAscomRunning()) {
if (forceRestart) {
Main.ascomBridge.close();
Main.ascomBridge.stop();
Main.ascomBridge = new ASCOMBridge(settings.ascomBridgePort, this::onASCOMClientListChange);
Main.ascomBridge.start();
}
Expand All @@ -958,10 +958,10 @@ private void startOrStopASCOM(boolean forceRestart) {
}
ascomStatusLabel.setText(i18n("bridge.active"));
} else {
if (Main.isAscomRunning()) Main.ascomBridge.close();
if (Main.isAscomRunning()) Main.ascomBridge.stop();
ascomStatusLabel.setText(i18n("bridge.inactive"));
}
} catch (IOException e) {
} catch (Exception e) {
onCriticalError(e);
ascomStatusLabel.setText(i18n("error"));
}
Expand Down Expand Up @@ -1236,7 +1236,7 @@ public void updateConnectionState(Board.ConnectionState connectionState) {
connStatusLabel.setText(connectionState.getLabel());
if (Main.isAscomRunning()) {
try {
Main.ascomBridge.close();
Main.ascomBridge.stop();
ascomStatusLabel.setText(i18n("bridge.inactive"));
} catch (IOException ex) {
onCriticalError(ex);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,17 @@
import static io.github.marcocipriani01.thunderfocus.Main.board;
import static io.github.marcocipriani01.thunderfocus.Main.settings;

@SuppressWarnings("unused")
public class ASCOMBridge extends SimpleServer {
public final class ASCOMBridge extends SimpleServer {

private Runnable onClientListChange = null;

public ASCOMBridge(int port) {
super(port);
}
private final Runnable onClientListChange;

public ASCOMBridge(int port, Runnable onClientListChang) {
super(port);
this.onClientListChange = onClientListChang;
}

public void setOnClientListChange(Runnable onClientListChange) {
this.onClientListChange = onClientListChange;
}

@Override
protected void onMessage(Socket from, String msg) {
protected synchronized void onMessage(Socket from, String msg) {
try {
String cmd;
String[] params = {};
Expand Down Expand Up @@ -81,100 +72,92 @@ protected void onMessage(Socket from, String msg) {

case "HasAmbientSensors" -> println(from, String.valueOf(powerBox.hasAmbientSensors()));

case "MaxSwitch" -> {
int max = 0;
for (ArduinoPin pin : powerBox.asList()) {
int n = pin.getNumber();
if (n > max) max = n;
case "MaxSwitch" -> println(from, String.valueOf(maxSwitch() + 1));

case "GetSwitchNames" -> {
int max = maxSwitch();
StringBuilder sb = new StringBuilder();
for (int i = 0; i <= max; i++) {
ArduinoPin pin = powerBox.get(i);
sb.append((pin == null) ? "<Unavailable>" : pin.getName());
if (i < max) sb.append(",");
}
println(from, String.valueOf(max + 1));
println(from, sb.toString());
}

case "GetSwitchName", "GetSwitchDescription" -> {
int pinNumber = Integer.parseInt(params[0]);
if (powerBox.contains(pinNumber))
println(from, powerBox.get(pinNumber).getName());
else
println(from, "<Unavailable>");
ArduinoPin pin = powerBox.get(Integer.parseInt(params[0]));
println(from, (pin == null) ? "<Unavailable>" : pin.getName());
}

case "SetSwitchName" -> {
int pinNumber = Integer.parseInt(params[0]);
if (powerBox.contains(pinNumber)) {
ArduinoPin pin = powerBox.get(pinNumber);
ArduinoPin pin = powerBox.get(Integer.parseInt(params[0]));
if (pin != null) {
pin.setName(params[1]);
PowerBox.clonePins(powerBox, settings.powerBoxPins);
Main.settings.save();
}
}

case "CanWrite" -> {
int pinNumber = Integer.parseInt(params[0]);
if (powerBox.contains(pinNumber)) {
ArduinoPin pin = powerBox.get(pinNumber);
println(from, String.valueOf((!pin.isAutoModeEn()) && (!pin.isOnWhenAppOpen())));
} else {
println(from, "false");
}
ArduinoPin pin = powerBox.get(Integer.parseInt(params[0]));
println(from, (pin == null) ? "false" : String.valueOf((!pin.isAutoModeEn()) && (!pin.isOnWhenAppOpen())));
}

case "GetSwitch" -> {
int pinNumber = Integer.parseInt(params[0]);
if (powerBox.contains(pinNumber)) {
ArduinoPin pin = powerBox.get(pinNumber);
println(from, pin.isPWMEnabled() ? "PWM" : String.valueOf(pin.getValueBoolean()));
} else {
println(from, "Unavailable");
}
ArduinoPin pin = powerBox.get(Integer.parseInt(params[0]));
println(from, (pin == null) ? "Unavailable" : pin.isPWMEnabled() ? "PWM" : String.valueOf(pin.getValueBoolean()));
}

case "SetSwitch" -> {
int pinNumber = Integer.parseInt(params[0]);
if (powerBox.contains(pinNumber)) {
ArduinoPin pin = powerBox.get(pinNumber);
ArduinoPin pin = powerBox.get(pinNumber);
if (pin == null) {
println(from, "Unavailable");
} else {
if (pin.isAutoModeEn() || pin.isOnWhenAppOpen()) {
println(from, "ReadOnly");
} else {
Main.board.run(Board.Commands.POWER_BOX_SET_PIN, null, pinNumber, params[1].contains("true") ? 255 : 0);
println(from, "OK");
}
} else {
println(from, "Unavailable");
}
}

case "MaxSwitchValue" -> {
int pinNumber = Integer.parseInt(params[0]);
if (powerBox.contains(pinNumber)) {
ArduinoPin pin = powerBox.get(pinNumber);
println(from, pin.isPWMEnabled() ? "255" : "1");
} else {
println(from, "Unavailable");
case "MaxSwitchValues" -> {
int max = maxSwitch();
StringBuilder sb = new StringBuilder();
for (int i = 0; i <= max; i++) {
ArduinoPin pin = powerBox.get(i);
sb.append((pin == null) ? (-1) : (pin.isPWMEnabled() ? 255 : 1));
if (i < max) sb.append(",");
}
println(from, sb.toString());
}

case "MaxSwitchValue" -> {
ArduinoPin pin = powerBox.get(Integer.parseInt(params[0]));
println(from, (pin == null) ? "Unavailable" : (pin.isPWMEnabled() ? "255" : "1"));
}

case "GetSwitchValue" -> {
int pinNumber = Integer.parseInt(params[0]);
if (powerBox.contains(pinNumber)) {
ArduinoPin pin = powerBox.get(pinNumber);
println(from, pin.isPWMEnabled() ? String.valueOf(pin.getValuePWM()) : String.valueOf(pin.getValueBoolean()));
} else {
println(from, "Unavailable");
}
ArduinoPin pin = powerBox.get(Integer.parseInt(params[0]));
println(from, (pin == null) ? "Unavailable" :
(pin.isPWMEnabled() ? String.valueOf(pin.getValuePWM()) : String.valueOf(pin.getValueBoolean())));
}

case "SetSwitchValue" -> {
int pinNumber = Integer.parseInt(params[0]);
if (powerBox.contains(pinNumber)) {
ArduinoPin pin = powerBox.get(pinNumber);
ArduinoPin pin = powerBox.get(pinNumber);
if (pin == null) {
println(from, "Unavailable");
} else {
if (pin.isAutoModeEn() || pin.isOnWhenAppOpen()) {
println(from, "ReadOnly");
} else {
Main.board.run(Board.Commands.POWER_BOX_SET_PIN, null, pinNumber, Integer.parseInt(params[1]));
println(from, "OK");
}
} else {
println(from, "Unavailable");
}
}

Expand All @@ -187,8 +170,7 @@ protected void onMessage(Socket from, String msg) {
default -> exit = false;
}
}
if (exit)
return;
if (exit) return;
final FlatPanel flat = board.flat();
if (flat == null) {
if (cmd.equals("HasFlat")) println(from, "false");
Expand Down Expand Up @@ -252,27 +234,31 @@ protected void onMessage(Socket from, String msg) {
}
}
} catch (Exception e) {
onError(e);
e.printStackTrace();
}
}

@Override
protected boolean acceptClient(InetAddress address) {
return address.isLinkLocalAddress();
private int maxSwitch() {
int max = 0;
for (ArduinoPin pin : board.powerBox().asList()) {
int n = pin.getNumber();
if (n > max) max = n;
}
return max;
}

@Override
protected void onError(Exception e) {
e.printStackTrace();
protected boolean acceptClient(InetAddress address) {
return address.isLinkLocalAddress();
}

@Override
protected void onNewClient(Socket client) {
if (onClientListChange != null) onClientListChange.run();
onClientListChange.run();
}

@Override
protected void onClientLost(Socket client) {
if (onClientListChange != null) onClientListChange.run();
onClientListChange.run();
}
}
Loading

0 comments on commit f320a29

Please sign in to comment.