Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import de.c3seidenstrasse.networkcontroller.network.AirSupplier;
import de.c3seidenstrasse.networkcontroller.network.NetworkComponent;
import de.c3seidenstrasse.networkcontroller.route.Message;
import de.c3seidenstrasse.networkcontroller.route.Network;
import de.c3seidenstrasse.networkcontroller.route.Transport;
import de.c3seidenstrasse.networkcontroller.route.Message.MessageType;
import de.c3seidenstrasse.networkcontroller.utils.RouteNotFoundException;
import javafx.application.Platform;

Expand All @@ -18,62 +20,55 @@ public class SssMessageProcessor implements Runnable {

@Override
public void run() {
System.out.println("MSG: " + this.message[0]);
System.out.println("SRC: " + this.message[1]);
System.out.println("DST: " + this.message[2]);
System.out.println("PL1: " + this.message[3]);
Message messageObject = new Message(this.message, true);
Platform.runLater(() -> {
this.n.saveBusToList(this.message, true);
System.out.println(messageObject);
this.n.saveBusToList(messageObject);
});
if (this.message[1] == AirSupplier.CHANGER_ID) {
// delegate message to AirSupplier
this.n.getAirsupplier().messageRecieved(this.message[0], this.message[1], this.message[3]);
return;
}
switch (this.message[0]) {
case 0x00:
// Kapsel erkannt

switch (messageObject.getType()) {
case DETECT:
final NetworkComponent nc = this.n.getNodeById((int) this.message[1]);
nc.capsulePassed();
break;
case 0x01:
// Verbindung herstellen
case CONNECT:
// verwerfen
break;
case 0x02:
// Verbindung wurde hergestellt
case CONNECTED:
//
final NetworkComponent nc1 = this.n.getNodeById((int) this.message[1]);
nc1.setCurrentExit((int) this.message[3]);
break;
case 0x03:
// Anforderung direkter Transfer
case REQUEST:
//
final NetworkComponent src = this.n.getNodeById((int) this.message[1]);
final NetworkComponent dst = this.n.getNodeById((int) this.message[3]);
try {
final Transport t = new Transport(src, dst);
this.n.addTransport(t);
final byte[] message = { 0x05, 0x00, this.message[1], this.message[3], 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
this.n.send(message);
// FIXME not sure if the start should go into byte 1 or 2, so I put it into both bytes.
this.n.send(new Message(MessageType.ACK_ROUTE, this.message[1], this.message[1], this.message[3]));

} catch (final RouteNotFoundException e) {
// forget it
e.printStackTrace();
}
break;
case 0x04:
// Anforderung Barcode Transfer
case DUMMY_4:
// TODO implement barcode transfer
break;
case 0x05:
// Best�tigung Transfer
case ACK_ROUTE:
// verwerfen
break;
case 0x06:
// Transfer Start
case STARTED:
// verwerfen
break;
case 0x07:
// Barcode gelesen
case BARCODE:
// TODO implement barcode transfer
break;
}
Expand Down
14 changes: 7 additions & 7 deletions src/de/c3seidenstrasse/networkcontroller/gui/NetworkScreen.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.FlowPane?>

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="750.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.c3seidenstrasse.networkcontroller.gui.NetworkScreenController">
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="768.0" prefWidth="1024.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.c3seidenstrasse.networkcontroller.gui.NetworkScreenController">
<left>
<TreeView fx:id="ncTree" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
</left>
Expand All @@ -22,23 +22,23 @@
<children>
<Button mnemonicParsing="false" onAction="#turnToAction" text="Send" />
<Button mnemonicParsing="false" onAction="#homeAction" text="Home" />
<Button mnemonicParsing="false" onAction="#connectedAction" text="Simulate connected" />
</children>
</HBox>
</children>
</VBox>
<VBox alignment="TOP_CENTER" prefHeight="300.0" prefWidth="400.0" spacing="5.0">
<children>
<Label text="Transport" />
<Label text="Interconnect" />
<HBox spacing="5.0">
<children>
<ComboBox fx:id="fromDropdown" prefWidth="200.0" />
<ComboBox fx:id="toDropdown" prefWidth="200.0" />
<ComboBox fx:id="fromDropdown" prefWidth="200.0" promptText="from" />
<ComboBox fx:id="toDropdown" prefWidth="200.0" promptText="to" />
</children>
</HBox>
<HBox alignment="TOP_CENTER" prefHeight="100.0" prefWidth="200.0" spacing="5.0">
<children>
<Button fx:id="addTransportButton" mnemonicParsing="false" onAction="#addRouteAction" text="Add" />
<Button mnemonicParsing="false" onAction="#passedAction" text="Passed!" />
</children>
</HBox>
</children>
Expand All @@ -56,7 +56,7 @@
</BorderPane.margin></HBox>
</bottom>
<center>
<ImageView fitHeight="400.0" fitWidth="400.0" pickOnBounds="true" preserveRatio="true" BorderPane.alignment="CENTER">
<ImageView fitHeight="600.0" fitWidth="600.0" pickOnBounds="true" preserveRatio="true" BorderPane.alignment="CENTER">
<image>
<Image url="@../utils/networkmap.png" />
</image>
Expand All @@ -69,7 +69,7 @@
<VBox fx:id="rightVbox" prefHeight="200.0" BorderPane.alignment="CENTER">
<children>
<ListView fx:id="messageLog" prefHeight="500.0" />
<ListView fx:id="transportLog" prefHeight="200.0" prefWidth="200.0" />
<ListView fx:id="connectLog" prefHeight="200.0" prefWidth="200.0" />
</children>
</VBox>
</right>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public void start(final Stage primaryStage) throws Exception {
final Scene scene = new Scene(page);
primaryStage.setScene(scene);
primaryStage.setTitle("Network Display");
primaryStage.setFullScreen(true);
//primaryStage.setFullScreen(true);
// primaryStage.setResizable(false);
final NetworkScreenController c = loader.getController();
final Network n = c.init();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,25 @@
import java.util.Map.Entry;

import de.c3seidenstrasse.networkcontroller.network.Exit;
import de.c3seidenstrasse.networkcontroller.network.IndexedNetworkComponent;
import de.c3seidenstrasse.networkcontroller.network.NetworkComponent;
import de.c3seidenstrasse.networkcontroller.network.NetworkComponent;
import de.c3seidenstrasse.networkcontroller.network.Router;
import de.c3seidenstrasse.networkcontroller.route.Interconnect;
import de.c3seidenstrasse.networkcontroller.route.Message;
import de.c3seidenstrasse.networkcontroller.route.Network;
import de.c3seidenstrasse.networkcontroller.route.Transport;
import de.c3seidenstrasse.networkcontroller.utils.NoCurrentTransportException;
import de.c3seidenstrasse.networkcontroller.utils.RouteNotFoundException;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.layout.VBox;
Expand All @@ -28,29 +33,32 @@ public class NetworkScreenController {
public TreeView<NetworkComponent> ncTree;
public NetworkComponent selected;
@FXML
ComboBox<IndexedNetworkComponent> childCombobox;
ComboBox<NetworkComponent> childCombobox;
@FXML
ComboBox<Exit> fromDropdown;
ComboBox<NetworkComponent> fromDropdown;
@FXML
ComboBox<Exit> toDropdown;
ComboBox<NetworkComponent> toDropdown;
@FXML
Button addTransportButton;
@FXML
ListView<Network.Message> messageLog;
ListView<Message> messageLog;
@FXML
VBox rightVbox;
@FXML
ListView<Transport> transportLog;
ListView<Interconnect> connectLog;

public Network init() {
this.n = Network.create();

// Message Queue
this.messageLog.setItems(this.n.getBusProtocolHistory());
this.messageLog.prefHeightProperty().bind(this.rightVbox.heightProperty().divide(2));
this.n.getBusProtocolHistory().addListener((ListChangeListener<Message>) c -> {
this.messageLog.scrollTo(this.n.getBusProtocolHistory().size());
});

// Transport Queue
this.transportLog.prefHeightProperty().bind(this.rightVbox.heightProperty().divide(2));
// Connect Queue
this.connectLog.prefHeightProperty().bind(this.rightVbox.heightProperty().divide(2));

// Netzwerkliste
this.selected = this.n.getRoot();
Expand All @@ -61,13 +69,22 @@ public Network init() {
});

// fill dropdowns
final ObservableList<Exit> exits = FXCollections.observableArrayList();
final ObservableList<NetworkComponent> exits = FXCollections.observableArrayList();
final Iterator<Entry<Integer, NetworkComponent>> i = this.n.getIdMap().entrySet().iterator();
while (i.hasNext()) {
final NetworkComponent current = i.next().getValue();
if (current instanceof Exit)
exits.add((Exit) current);
if (current instanceof Exit || current instanceof Router)
exits.add(current);
}
exits.sort((arg0, arg1) -> {
if (arg0 instanceof Router && arg1 instanceof Exit) {
return -1;
} else if (arg1 instanceof Router && arg0 instanceof Exit) {
return 1;
}
return arg0.getName().compareTo(arg1.getName());
});

this.fromDropdown.setItems(exits);
this.toDropdown.setItems(exits);

Expand All @@ -77,46 +94,56 @@ public Network init() {
private void selected(final NetworkComponent nc) {
this.selected = nc;
this.childCombobox.getItems().clear();
this.childCombobox.getItems().addAll(this.selected.getIndexedChildren());
this.childCombobox.getItems().addAll(this.selected.getIndexedChildren().values());
this.childCombobox.getItems().sort((arg0, arg1) -> {
if (arg0.getI() < arg1.getI())
if (arg0.getIndexInParent() < arg1.getIndexInParent())
return -1;
else if (arg0.getI() > arg1.getI())
else if (arg0.getIndexInParent() > arg1.getIndexInParent())
return 1;
return 0;
});
this.childCombobox.setVisibleRowCount(this.childCombobox.getItems().size());
}

public void turnToAction() {
final IndexedNetworkComponent inc = this.childCombobox.getValue();
this.selected.turnTo(inc.getI());
final NetworkComponent inc = this.childCombobox.getValue();
this.selected.turnTo(inc.getIndexInParent());
}

public void connectedAction() {
final NetworkComponent inc = this.childCombobox.getValue();
selected.setCurrentExit(inc.getIndexInParent());
}

@FXML
public void addRouteAction() {
final Exit start = this.fromDropdown.getValue();
final Exit ende = this.toDropdown.getValue();
if (start == null || ende == null)
return;
try {
final Transport t = new Transport(this.fromDropdown.getValue(), this.toDropdown.getValue());
this.n.addTransport(t);
this.addTransportButton.setStyle("-fx-base: #b6e7c9;");
Platform.runLater(() -> {
try {
Thread.sleep(1000);
} catch (final InterruptedException e) {
}
NetworkScreenController.this.addTransportButton.setStyle("");
});
} catch (final RouteNotFoundException e) {
final Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Route not found");
alert.setHeaderText("works not for you");
alert.setContentText("I was not able to find a route between your selected targets!");
alert.show();
}
final NetworkComponent start = this.fromDropdown.getValue();
final NetworkComponent ende = this.toDropdown.getValue();
Platform.runLater(() -> {
Transport t;
try {
t = new Transport(start, ende);
this.n.addTransport(t);
System.out.println("Added transport: " + t);
} catch (RouteNotFoundException e) {
e.printStackTrace();
}

/*
try {
//final Interconnect ic = new Interconnect(start, ende, this.connectLog.getItems());
//ic.setUpRoute();
this.connectLog.getItems().add(ic);
} catch (RouteNotFoundException | NoCurrentTransportException e) {
final Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Error in executing Interconnect");
alert.setContentText(e.getMessage());

alert.show();
}
*/
});
}

@FXML
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package de.c3seidenstrasse.networkcontroller.network;

import de.c3seidenstrasse.networkcontroller.route.Message;
import de.c3seidenstrasse.networkcontroller.route.Network;
import de.c3seidenstrasse.networkcontroller.route.Message.MessageType;

public class AirSupplier {
public final static byte CHANGER_ID = (byte) 0xFF;
Expand Down Expand Up @@ -37,15 +39,11 @@ synchronized public void preparePushFinished() {
}

synchronized private void turnForPull() {
final byte[] message = { 0x08, 0x00, CHANGER_ID, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 };
this.n.send(message);
this.n.send(new Message(MessageType.AIRFLOW, 0, CHANGER_ID, 1));
}

synchronized private void turnForPush() {
final byte[] message = { 0x08, 0x00, CHANGER_ID, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 };
this.n.send(message);
this.n.send(new Message(MessageType.AIRFLOW, 0, CHANGER_ID, 2));
}

synchronized public void pull() {
Expand All @@ -59,9 +57,7 @@ synchronized public void push() {
}

synchronized public void stop() {
final byte[] message = { 0x08, 0x00, CHANGER_ID, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 };
this.n.send(message);
this.n.send(new Message(MessageType.AIRFLOW, 0, CHANGER_ID, 0));
System.out.println("AIRSUPPLY: Stopped");
}

Expand Down
Loading