Skip to content

Commit d5818c9

Browse files
committed
fixed wrong input bug
bad fromatting messages are no longer causes crash
1 parent 80d47a2 commit d5818c9

File tree

4 files changed

+71
-26
lines changed

4 files changed

+71
-26
lines changed

GatewayCodes/StationController/src/hu/bme/masterrace/SegmentOccupancys.java

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import static hu.bme.masterrace.Main.*;
1313

1414
public class SegmentOccupancys implements MqttCallback {
15+
1516
private static final String TOPIC_INFO = "segment/occupancy";
1617
private static final String TOPIC_COMMAND = "command/occupancy";
1718
private MqttClient myClient;
@@ -21,6 +22,7 @@ public class SegmentOccupancys implements MqttCallback {
2122

2223
SegmentOccupancys() {
2324
try {
25+
2426
setConnectionOptions();
2527
connect();
2628
if (myClient.isConnected()) {
@@ -47,25 +49,34 @@ private void connect() throws MqttException {
4749
myClient.setCallback(this);
4850
myClient.connect(connOpt);
4951
System.out.println("Connected Segment Occpancy Commander!");
52+
5053
}
5154

5255
private void setConnectionOptions() {
5356
connOpt = new MqttConnectOptions();
5457
connOpt.setCleanSession(true);
5558
connOpt.setKeepAliveInterval(30);
56-
connOpt.setAutomaticReconnect(true);
59+
connOpt.setAutomaticReconnect(false);
5760
}
5861

5962
@Override
6063
public void connectionLost(Throwable throwable) {
6164
System.out.println("rip in connection");
6265
try {
63-
connect();
64-
} catch (MqttException e) {
66+
reconnect();
67+
} catch ( MqttException e) {
6568
e.printStackTrace();
6669
}
6770
}
6871

72+
private void reconnect() throws MqttException {
73+
connect();
74+
if (myClient.isConnected()) {
75+
subscribe();
76+
registerSegmentOccupancyChanger();
77+
}
78+
}
79+
6980
@Override
7081
public void messageArrived(String s, MqttMessage mqttMessage) {
7182
printMessageToConsole(s, mqttMessage);
@@ -80,11 +91,19 @@ private void printMessageToConsole(String s, MqttMessage mqttMessage) {
8091
}
8192

8293
private JsonObject getJsonObject(MqttMessage mqttMessage) {
83-
JsonParser parser = new JsonParser();
84-
JsonElement element = parser.parse(new String(mqttMessage.getPayload()));
85-
return element.getAsJsonObject();
94+
try {
95+
JsonParser parser = new JsonParser();
96+
JsonElement element = parser.parse(new String(mqttMessage.getPayload()));
97+
return element.getAsJsonObject();
98+
}catch (Exception e) {
99+
e.printStackTrace();
100+
System.out.println("wrong format");
101+
102+
}
103+
return null;
86104
}
87105

106+
88107
private void handleRequest(String topic, JsonObject message) {
89108
if (topic.equals(TOPIC_INFO))
90109
handleTopicInfo(message);
@@ -94,6 +113,7 @@ private void handleRequest(String topic, JsonObject message) {
94113

95114
private void handleTopicCommand(JsonObject message) {
96115
if (message.has("occupancy") && message.has("segmentID"))
116+
97117
sendSegmentOccCommand(message);
98118

99119
}
@@ -105,10 +125,16 @@ private void sendSegmentOccCommand(JsonObject message) {
105125
}
106126

107127
private SegmentOccupancy getSegmentOcc(JsonObject message) {
108-
if (message.get("occupancy").toString().equals("\"occupied\""))
109-
return SegmentOccupancy.OCCUPIED;
110-
if (message.get("occupancy").toString().equals("\"free\""))
111-
return SegmentOccupancy.FREE;
128+
try {
129+
if (message.get("occupancy").toString().equals("\"occupied\""))
130+
return SegmentOccupancy.OCCUPIED;
131+
if (message.get("occupancy").toString().equals("\"free\""))
132+
return SegmentOccupancy.FREE;
133+
134+
}catch (Exception e ){
135+
e.printStackTrace();
136+
}
137+
112138
return null;
113139
}
114140

@@ -137,6 +163,8 @@ public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
137163
semaphore.release();
138164
}
139165

166+
167+
140168
private void sendOccupancy(int segmentID) {
141169
try {
142170
SegmentOccupancy state = segmentCommander.getSegmentOccupancy(segmentID);
@@ -154,6 +182,6 @@ private void sendOccupancy(int segmentID) {
154182
}
155183

156184
private String makeMessage(int segmentID, String s) {
157-
return "{\"segmentID\":" + segmentID + ",\"occupancy\":" + s + "}";
185+
return "{\"segmentID\":" + segmentID + ",\"occupancy\":\"" + s + "\"}";
158186
}
159187
}

GatewayCodes/StationController/src/hu/bme/masterrace/SegmentStates.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,26 @@ private void setConnectionOptions() {
5353
connOpt = new MqttConnectOptions();
5454
connOpt.setCleanSession(true);
5555
connOpt.setKeepAliveInterval(30);
56-
connOpt.setAutomaticReconnect(true);
56+
connOpt.setAutomaticReconnect(false);
5757
}
5858

5959
@Override
6060
public void connectionLost(Throwable throwable) {
6161
System.out.println("rip in connection");
6262
try {
63-
connect();
64-
} catch (MqttException e) {
63+
reconnect();
64+
} catch ( MqttException e) {
6565
e.printStackTrace();
6666
}
6767
}
6868

69+
private void reconnect() throws MqttException {
70+
connect();
71+
if (myClient.isConnected()) {
72+
subscribe();
73+
registerSegmentStateChange();
74+
}
75+
}
6976
@Override
7077
public void messageArrived(String s, MqttMessage mqttMessage) {
7178
printMessageToConsole(s, mqttMessage);
@@ -96,10 +103,6 @@ private void handleTopicCommand(JsonObject message) {
96103
if (message.has("state") && message.has("segmentID")) {
97104
sendSegmentCommand(message, "state");
98105
}
99-
//ez a camera miatt, hogy egyszerre 2-t kapcsoljon le
100-
if (message.has("state2") && message.has("segmentID")) {
101-
sendSegmentCommand(message, "state2");
102-
}
103106
if (message.has("stateAll")) {
104107
sendSegmentCommandAll(message);
105108
}

GatewayCodes/StationController/src/hu/bme/masterrace/Train.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,27 @@ private void setConnectionOptions() {
4545
connOpt = new MqttConnectOptions();
4646
connOpt.setCleanSession(true);
4747
connOpt.setKeepAliveInterval(30);
48-
connOpt.setAutomaticReconnect(true);
48+
connOpt.setAutomaticReconnect(false);
4949
}
5050

5151
@Override
5252
public void connectionLost(Throwable throwable) {
5353
System.out.println("rip in connection");
5454
try {
55-
connect();
56-
} catch (MqttException e) {
55+
reconnect();
56+
} catch ( MqttException e) {
5757
e.printStackTrace();
5858
}
5959
}
6060

61+
private void reconnect() throws MqttException {
62+
connect();
63+
if (myClient.isConnected()) {
64+
subscribe();
65+
66+
}
67+
}
68+
6169
@Override
6270
public void messageArrived(String s, MqttMessage mqttMessage) {
6371
printMessageToConsole(s, mqttMessage);

GatewayCodes/StationController/src/hu/bme/masterrace/Turnout.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,21 +56,27 @@ private void setConnectionOptions() {
5656
connOpt = new MqttConnectOptions();
5757
connOpt.setCleanSession(true);
5858
connOpt.setKeepAliveInterval(30);
59-
connOpt.setAutomaticReconnect(true);
60-
61-
59+
connOpt.setAutomaticReconnect(false);
6260
}
6361

6462
@Override
6563
public void connectionLost(Throwable throwable) {
6664
System.out.println("rip in connection");
6765
try {
68-
connect();
69-
} catch (MqttException e) {
66+
reconnect();
67+
} catch ( MqttException e) {
7068
e.printStackTrace();
7169
}
7270
}
7371

72+
private void reconnect() throws MqttException {
73+
connect();
74+
if (myClient.isConnected()) {
75+
subscribe();
76+
registerTurnoutState();
77+
}
78+
}
79+
7480
@Override
7581
public void messageArrived(String s, MqttMessage mqttMessage) {
7682
printMessageToConsole(s, mqttMessage);

0 commit comments

Comments
 (0)