OpenCores
URL https://opencores.org/ocsvn/fpga-cf/fpga-cf/trunk

Subversion Repositories fpga-cf

[/] [fpga-cf/] [trunk/] [java/] [src/] [edu/] [byu/] [cc/] [plieber/] [fpgaenet/] [modmod/] [ModularModules.java] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 peteralieb
package edu.byu.cc.plieber.fpgaenet.modmod;
2
 
3
import java.io.IOException;
4
import java.net.InetAddress;
5
import java.util.ArrayList;
6
 
7
import com.trolltech.qt.gui.*;
8
 
9
import edu.byu.cc.plieber.fpgaenet.fcp.FCPException;
10
import edu.byu.cc.plieber.fpgaenet.fcp.FCPProtocol;
11
import edu.byu.cc.plieber.fpgaenet.icapif.IcapInterface;
12
 
13
public class ModularModules extends QMainWindow {
14
 
15
        private QMenu fileMenu;
16
        private QMenu helpMenu;
17
 
18
        private QAction addModule;
19
        private QAction connectAct;
20
        private QAction exitAct;
21
        private QAction aboutAct;
22
        private QAction aboutQtJambiAct;
23
 
24
        public static void main(String[] args) {
25
                QApplication.initialize(args);
26
 
27
                ModularModules testModularModules = new ModularModules(null);
28
                testModularModules.show();
29
 
30
                QApplication.exec();
31
 
32
                testModularModules.tearDown();
33
        }
34
 
35
        private FCPProtocol fcpProtocol;
36
        private IcapInterface icapInterface;
37
 
38
        private QFrame mainFrame;
39
 
40
        private MD5Widget md5Widget;
41
        private SHA1Widget sha1Widget;
42
 
43
        private QVBoxLayout mainLayout;
44
        private QHBoxLayout bottomLayout;
45
        private QStackedWidget moduleStack;
46
 
47
        private ConnectionWidget connectWidget;
48
        private StaticModulesWidget staticWidget;
49
        private AvailableModulesWidget availWidget;
50
        private ChannelConfigurationWidget configWidget;
51
 
52
        public ModularModules(QWidget parent) {
53
                super(parent);
54
                this.setWindowTitle("Module Modules");
55
                createActions();
56
                createMenus();
57
                // makeConnections();
58
                createWidgets();
59
                createLayout();
60
                connectSignalsAndSlots();
61
 
62
                try {
63
                        fcpProtocol = new FCPProtocol();
64
                        icapInterface = new IcapInterface(fcpProtocol, 3, 4);
65
                } catch (IOException e) {
66
                        // TODO Auto-generated catch block
67
                        e.printStackTrace();
68
                        QMessageBox.critical(this, "Bind Error", "Could not bind socket.");
69
                }
70
                connectionChanged();
71
        }
72
 
73
        @SuppressWarnings("unused")
74
        private void connect() {
75
                ConnectionWidget cw = new ConnectionWidget(null, fcpProtocol);
76
                cw.ConnectionChangedSignal.connect(this, "connectionChanged()");
77
                cw.show();
78
        }
79
 
80
        private void connectionChanged() {
81
                statusBar().showMessage(
82
                                tr("FCP is "
83
                                                + (this.fcpProtocol.isConnected() ? "" : "not ")
84
                                                + "connected"
85
                                                + (this.fcpProtocol.isConnected() ? (" to " + fcpProtocol.getDestIPAddress().getHostAddress()
86
                                                                + " on port " + fcpProtocol.getDestUDPPort() + ".") : ".")));
87
        }
88
 
89
        @SuppressWarnings("unused")
90
        private void addModule() {
91
                CreateModuleWidget cmw = new CreateModuleWidget(null, fcpProtocol);
92
                cmw.AvailableModuleCreated.connect(this, "AvailableModuleCreatedHandler(AvailableModule)");
93
                cmw.show();
94
        }
95
 
96
        @SuppressWarnings("unused")
97
        private void AvailableModuleCreatedHandler(AvailableModule am) {
98
                availWidget.addModule(am);
99
                if (!moduleStack.children().contains(am.getControlWidget())) {
100
                        moduleStack.addWidget(am.getControlWidget());
101
                }
102
        }
103
 
104
        private void createActions() {
105
                addModule = new QAction(tr("&Add Module"), this);
106
                addModule.setShortcut(tr("Ctrl+A"));
107
                addModule.setStatusTip(tr("Add Available Module"));
108
                addModule.triggered.connect(this, "addModule()");
109
 
110
                connectAct = new QAction(tr("&Connect"), this);
111
                connectAct.setShortcut(tr("Ctrl+N"));
112
                connectAct.setStatusTip(tr("Connect to FPGA"));
113
                connectAct.triggered.connect(this, "connect()");
114
 
115
                exitAct = new QAction(tr("E&xit"), this);
116
                exitAct.setShortcut(tr("Ctrl+Q"));
117
                exitAct.setStatusTip(tr("Exit the application"));
118
                exitAct.triggered.connect(this, "close()");
119
 
120
                aboutAct = new QAction(tr("&About"), this);
121
                aboutAct.setStatusTip(tr("Show the application's About box"));
122
                aboutAct.triggered.connect(this, "about()");
123
 
124
                aboutQtJambiAct = new QAction(tr("About &Qt Jambi"), this);
125
                aboutQtJambiAct.setStatusTip(tr("Show the Qt Jambi's About box"));
126
                aboutQtJambiAct.triggered.connect(QApplication.instance(), "aboutQtJambi()");
127
        }
128
 
129
        private void createMenus() {
130
                fileMenu = menuBar().addMenu(tr("&File"));
131
                fileMenu.addAction(addModule);
132
                fileMenu.addAction(connectAct);
133
                fileMenu.addAction(exitAct);
134
 
135
                helpMenu = menuBar().addMenu(tr("&Help"));
136
                helpMenu.addAction(aboutAct);
137
                helpMenu.addAction(aboutQtJambiAct);
138
        }
139
 
140
        private void createWidgets() {
141
                moduleStack = new QStackedWidget(this);
142
                staticWidget = new StaticModulesWidget(this, null);
143
                availWidget = new AvailableModulesWidget(this);
144
                configWidget = new ChannelConfigurationWidget(this);
145
                md5Widget = new MD5Widget(moduleStack, fcpProtocol);
146
                sha1Widget = new SHA1Widget(moduleStack, fcpProtocol);
147
                // availWidget.addModule(new AvailableModule("32-bit\nRegister",
148
                // availWidget));
149
                // availWidget.addModule(new AvailableModule("MD5", availWidget,
150
                // md5Widget));
151
                // availWidget.addModule(new AvailableModule("SHA1", availWidget,
152
                // sha1Widget));
153
        }
154
 
155
        private void createLayout() {
156
                mainFrame = new QFrame(this);
157
                this.setCentralWidget(mainFrame);
158
                mainLayout = new QVBoxLayout(mainFrame);
159
                bottomLayout = new QHBoxLayout();
160
                mainLayout.addWidget(configWidget);
161
                mainLayout.addLayout(bottomLayout);
162
                mainLayout.addStretch();
163
                moduleStack.addWidget(new QFrame(moduleStack));
164
                moduleStack.addWidget(md5Widget);
165
                moduleStack.addWidget(sha1Widget);
166
                bottomLayout.addWidget(availWidget);
167
                bottomLayout.addWidget(staticWidget);
168
                bottomLayout.addWidget(moduleStack);
169
                bottomLayout.setStretch(0, 0);
170
                bottomLayout.setStretch(1, 1);
171
                bottomLayout.setStretch(2, 6);
172
        }
173
 
174
        private void connectSignalsAndSlots() {
175
                configWidget.ChannelConfiguredSignal.connect(this, "channelConfiguredHandler(ConfigurationChannel)");
176
                configWidget.ModuleRemovedSignal.connect(this, "moduleRemovedHandler(AvailableModule)");
177
                configWidget.ModuleSelectedSignal.connect(this, "moduleSelectedHandler(AvailableModule)");
178
        }
179
 
180
        protected void about() {
181
                QMessageBox.information(this, "Info",
182
                                "Modular Modules Demo\nv 0.0.1\ncopyright 2010 Peter Lieber\nBrigham Young University");
183
        }
184
 
185
        public void tearDown() {
186
                if (fcpProtocol != null)
187
                        fcpProtocol.disconnect();
188
        }
189
 
190
        @SuppressWarnings("unused")
191
        private void channelConfiguredHandler(ConfigurationChannel cc) {
192
                AvailableModule am = cc.getResident();
193
                try {
194
                        icapInterface.sendIcapFile(am.getBitStreams().get(cc.getChannel()));
195
                        am.getControlWidget().setChannelNumber(cc.getChannel());
196
                } catch (Exception e) {
197
                        cc.removeModule(am);
198
                        QMessageBox.critical(this, "Error", "Error configuring channel!\n" + e.getMessage());
199
                }
200
                // QMessageBox.information(this, "Configuration", "Channel " +
201
                // cc.getChannel() + " configured.");
202
        }
203
 
204
        @SuppressWarnings("unused")
205
        private void moduleRemovedHandler(AvailableModule am) {
206
                availWidget.addModule(new AvailableModule(am));
207
        }
208
 
209
        @SuppressWarnings("unused")
210
        private void moduleSelectedHandler(AvailableModule am) {
211
                if (am != null)
212
                        moduleStack.setCurrentWidget(am.getControlWidget());
213
        }
214
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.