Skip to content

Commit fcb205b

Browse files
committed
V3.0
1 parent 55fef4b commit fcb205b

File tree

6 files changed

+453
-31
lines changed

6 files changed

+453
-31
lines changed

FirmwareUpdateUI/build.num

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#Build Number for ANT. Do not edit!
2-
#Mon Mar 14 14:23:59 CET 2022
3-
build.number=3
2+
#Mon Jul 31 15:46:39 CEST 2023
3+
build.number=4

FirmwareUpdateUI/src/org/gd32/dmx/FirmwareInstallation.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.awt.event.WindowEvent;
3434
import java.awt.event.WindowListener;
3535
import java.net.InetAddress;
36+
import java.net.InterfaceAddress;
3637

3738
import javax.swing.GroupLayout;
3839
import javax.swing.GroupLayout.Alignment;
@@ -58,7 +59,7 @@ public class FirmwareInstallation extends JDialog {
5859
private JCheckBox chckbxReboot;
5960
private JTextField textVersion;
6061

61-
public FirmwareInstallation(Node node, FirmwareUpdateUI firmwareUpdateUI) throws Exception {
62+
public FirmwareInstallation(Node node, FirmwareUpdateUI firmwareUpdateUI, InterfaceAddress interfaceAddress) throws Exception {
6263
InitComponents();
6364
CreateEvents();
6465

@@ -80,7 +81,7 @@ public FirmwareInstallation(Node node, FirmwareUpdateUI firmwareUpdateUI) throws
8081
if (!tftpServer.contains("On")) {
8182
// Error
8283
} else {
83-
TFTPClient frame = new TFTPClient("", InetAddress.getByName(node.getIpAdress()));
84+
TFTPClient frame = new TFTPClient("", InetAddress.getByName(node.getIpAdress()), interfaceAddress);
8485
frame.setVisible(true);
8586

8687
Thread t = new Thread() {
@@ -104,7 +105,11 @@ public void run() {
104105
e1.printStackTrace();
105106
}
106107

107-
final String tftpServer = firmwareUpdateUI.requestUDP(node, "?tftp#");
108+
String tftpServer;
109+
110+
do {
111+
tftpServer = firmwareUpdateUI.requestUDP(node, "?tftp#");
112+
} while (tftpServer.contains("ERROR"));
108113

109114
chckbxTFTPOff.setSelected(!tftpServer.contains("On"));
110115

FirmwareUpdateUI/src/org/gd32/dmx/FirmwareUpdateUI.java

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.net.DatagramSocket;
4141
import java.net.InetAddress;
4242
import java.net.InetSocketAddress;
43+
import java.net.InterfaceAddress;
4344
import java.net.SocketAddress;
4445
import java.net.SocketException;
4546
import java.net.SocketTimeoutException;
@@ -101,11 +102,17 @@ public class FirmwareUpdateUI extends JFrame {
101102
private JMenuItem mntmVersion;
102103
private JMenu mnWorkflow;
103104
private JMenuItem mntmFirmwareInstallation;
105+
private JMenu mnNetwork;
106+
private JMenuItem mntmSelectInterface;
107+
108+
private static InterfaceAddress interfaceAddress;
104109

105110
public static void main(String[] args) {
106111
EventQueue.invokeLater(new Runnable() {
107112
public void run() {
108113
try {
114+
NetworkInterfaces networkInterfaces = new NetworkInterfaces();
115+
FirmwareUpdateUI.interfaceAddress = networkInterfaces.getInterfaceAddress();
109116
FirmwareUpdateUI frame = new FirmwareUpdateUI();
110117
frame.setVisible(true);
111118
frame.constructTree();
@@ -119,17 +126,17 @@ public void run() {
119126
public FirmwareUpdateUI() {
120127
System.out.println(System.getProperty("os.name"));
121128

122-
setTitle("Firmware Update Manager");
129+
setTitle(interfaceAddress.getAddress());
123130

124-
createReceiveSocket();
131+
createSocket();
125132

126133
initComponents();
127134
createEvents();
128135
}
129136

130137
private void initComponents() {
131138
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
132-
setBounds(100, 100, 338, 350);
139+
setBounds(100, 100, 408, 350);
133140

134141
JMenuBar menuBar = new JMenuBar();
135142
setJMenuBar(menuBar);
@@ -184,6 +191,13 @@ private void initComponents() {
184191
mntmFirmwareInstallation = new JMenuItem("Firmware installation");
185192
mnWorkflow.add(mntmFirmwareInstallation);
186193

194+
mnNetwork = new JMenu("Network");
195+
menuBar.add(mnNetwork);
196+
197+
mntmSelectInterface = new JMenuItem("Select Interface");
198+
mntmSelectInterface.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.ALT_DOWN_MASK));
199+
mnNetwork.add(mntmSelectInterface);
200+
187201
mnHelp = new JMenu("Help");
188202
menuBar.add(mnHelp);
189203

@@ -357,7 +371,7 @@ public void actionPerformed(ActionEvent e) {
357371
final DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) path.getPathComponent(1);
358372
final Node node = (Node) treeNode.getUserObject();
359373
try {
360-
TFTPClient client = new TFTPClient("", InetAddress.getByName(node.getIpAdress()));
374+
TFTPClient client = new TFTPClient("", InetAddress.getByName(node.getIpAdress()), getInterfaceAddress());
361375
client.setVisible(true);
362376
} catch (UnknownHostException e1) {
363377
e1.printStackTrace();
@@ -384,7 +398,7 @@ public void actionPerformed(ActionEvent e) {
384398
}
385399

386400
try {
387-
FirmwareInstallation firmware = new FirmwareInstallation(node, getFirmwareUpdate());
401+
FirmwareInstallation firmware = new FirmwareInstallation(node, getFirmwareUpdate(), interfaceAddress);
388402
firmware.setVisible(true);
389403
} catch (Exception ex) {
390404
ex.printStackTrace();
@@ -424,6 +438,22 @@ public void mouseClicked(MouseEvent e) {
424438
}
425439
}
426440
});
441+
442+
mntmSelectInterface.addActionListener(new ActionListener() {
443+
public void actionPerformed(ActionEvent e) {
444+
doInterfaces();
445+
}
446+
});
447+
}
448+
449+
private InterfaceAddress getInterfaceAddress() {
450+
return FirmwareUpdateUI.interfaceAddress;
451+
}
452+
453+
private void doInterfaces() {
454+
NetworkInterfaces networkInterfaces;
455+
networkInterfaces = new NetworkInterfaces(this);
456+
networkInterfaces.Show();
427457
}
428458

429459
private FirmwareUpdateUI getFirmwareUpdate() {
@@ -509,6 +539,16 @@ private boolean isRightClick(MouseEvent e) {
509539
&& (e.getModifiers() & InputEvent.CTRL_MASK) != 0));
510540
}
511541

542+
public void setTitle(InetAddress inetAddress) {
543+
String text = inetAddress.getHostAddress();
544+
setTitle("Firmware Update Manager " + text);
545+
}
546+
547+
public void setInterfaceAddress(InterfaceAddress interfaceAddress) {
548+
FirmwareUpdateUI.interfaceAddress = interfaceAddress;
549+
createSocket();
550+
}
551+
512552
public void constructTree() {
513553
Graphics g = getGraphics();
514554

@@ -522,14 +562,9 @@ public void constructTree() {
522562

523563
treeMap = new TreeMap<Integer, Node>();
524564

525-
for (int i = 0; i < 2; i++) {
565+
for (int i = 0; i < 1; i++) {
526566
try {
527-
if (i == 0) {
528-
broadcast("?list#*");
529-
broadcast("?list#*");
530-
} else {
531-
broadcast("?list#");
532-
}
567+
broadcast("?list#");
533568
while (true) {
534569
byte[] buffer = new byte[BUFFERSIZE];
535570
DatagramPacket dpack = new DatagramPacket(buffer, buffer.length);
@@ -647,13 +682,13 @@ public String requestUDP(Node node, String request) {
647682
return new String("#ERROR - time out");
648683
}
649684

650-
private void createReceiveSocket() {
685+
private void createSocket() {
651686
if (socketReceive != null) {
652687
socketReceive.close();
653688
}
654689
try {
655690
socketReceive = new DatagramSocket(null);
656-
SocketAddress sockaddr = new InetSocketAddress(PORT);
691+
SocketAddress sockaddr = new InetSocketAddress(interfaceAddress.getAddress(), PORT);
657692
socketReceive.setBroadcast(true);
658693
socketReceive.setSoTimeout(1000);
659694
socketReceive.bind(sockaddr);

0 commit comments

Comments
 (0)