diff --git a/simulators/c++2/src_simulator/TMLTransaction.cpp b/simulators/c++2/src_simulator/TMLTransaction.cpp index 6b8e7cc1c1207059d31f4256a13ba9a6a030ca79..e178e1711b40e0735500ad39a5bf6c849ffc8ffe 100755 --- a/simulators/c++2/src_simulator/TMLTransaction.cpp +++ b/simulators/c++2/src_simulator/TMLTransaction.cpp @@ -90,11 +90,11 @@ std::string TMLTransaction::toShortString() const{ void TMLTransaction::toXML(std::ostringstream& glob, int deviceID, std::string deviceName) const { if (_command==0) { - glob << TAG_TRANSo << " deviceid=\"" << deviceID << "\" devicename=\"" << deviceName << "\" command=\"0\""; + glob << TAG_TRANSo << " deviceid=\"" << deviceID << "\" devicename=\"" << deviceName << "\" id=\"" << _command->getID() << "\" command=\"0\""; } else { glob << TAG_TRANSo << " deviceid=\"" << deviceID << "\" devicename=\"" << deviceName << "\" command=\"" << _command->toShortString() << "\""; std::cout << "Info transaction:" << " starttime=\"" << _startTime << "\" endtime=\"" << getEndTime() << " length" << _length << "\" virtuallength=" << _virtualLength << " getStartTime:" << getStartTime() << "\n"; - glob << " starttime=\"" << _startTime << "\" endtime=\"" << getEndTime() << "\" length=\"" << _length << "\" virtuallength=\"" << _virtualLength << "\""; + glob << " starttime=\"" << _startTime << "\" endtime=\"" << getEndTime() << "\" length=\"" << _length << "\" virtuallength=\"" << _virtualLength << "\" id=\"" << _command->getID() << "\""; if (_channel!=0) glob << " ch=\"" << _channel->toShortString() << "\""; } diff --git a/simulators/c++2/src_simulator/TMLTransaction.h b/simulators/c++2/src_simulator/TMLTransaction.h index 2c54b285c048915561b664e71d1c40303f7e99f0..a0c03096e50489ff748b9bf85d9df4c2f86365bb 100644 --- a/simulators/c++2/src_simulator/TMLTransaction.h +++ b/simulators/c++2/src_simulator/TMLTransaction.h @@ -233,7 +233,7 @@ public: inline static void resetID() {_ID=1;} inline void setStateID(ID iID) {_stateID=iID;} inline ID getStateID() {return _stateID;} - + inline void setTaskID(ID iID) {_taskID=iID;} void toXML(std::ostringstream& glob, int deviceID, std::string deviceName) const; @@ -259,6 +259,7 @@ protected: ///Channel on which data was conveyed TMLChannel* _channel; ID _stateID; + ID _taskID; ///Memory pool for transactions static MemPoolNoDel<TMLTransaction> memPool; ///Current Transaction ID diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp index 48d80918a7882c97dc7988ea000f742c57c56f38..ebe8daf377ac139b081d8d0fbc1e6c0ad34cc701 100644 --- a/simulators/c++2/src_simulator/sim/Simulator.cpp +++ b/simulators/c++2/src_simulator/sim/Simulator.cpp @@ -389,6 +389,9 @@ bool Simulator::simulate(TMLTransaction*& oLastTrans){ std::cout << "kernel:simulate: scheduling decision: " << transLET->toString() << std::endl; #endif commandLET=transLET->getCommand(); + //if (depTask!=NULL){ +// transLET->setTaskID(commandLET->getID()); + //} #ifdef DEBUG_KERNEL std::cout << "kernel:simulate: add trans " << commandLET->toString() << std::endl; #endif @@ -473,8 +476,10 @@ bool Simulator::simulate(TMLTransaction*& oLastTrans){ #endif } oLastTrans=transLET; + //std::cout << "kernel:simulate: getTransLowestEndTime" << std::endl; transLET=getTransLowestEndTime(cpuLET); + //_syncInfo->_server->sendReply("Sleep once again\n"); //sleep(1); } diff --git a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java index 27f9a8c49d54918134c44563309e68fbfc4bad65..d8ba059955267b9dbcd7f5fd62dc0f02210ff0bf 100755 --- a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java +++ b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java @@ -973,9 +973,14 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen infoTab.addTab("Latency", null, latencyPanel, "Latency Measurements"); c0.gridwidth=1; + c0.gridheight=1; + latencyPanel.add(new JLabel("Checkpoint 1:"),c0); + c0.gridwidth = GridBagConstraints.REMAINDER; transaction1 = new JComboBox(checkedTransactions); latencyPanel.add(transaction1, c0); + c0.gridwidth=1; + latencyPanel.add(new JLabel("Checkpoint 2:"),c0); c0.gridwidth= GridBagConstraints.REMAINDER; transaction2 = new JComboBox(checkedTransactions); latencyPanel.add(transaction2, c0); @@ -989,16 +994,16 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen sorterPI = new TableSorter(latm); jtablePI = new JTable(sorterPI); sorterPI.setTableHeader(jtablePI.getTableHeader()); - ((jtablePI.getColumnModel()).getColumn(0)).setPreferredWidth(100); - ((jtablePI.getColumnModel()).getColumn(1)).setPreferredWidth(100); + ((jtablePI.getColumnModel()).getColumn(0)).setPreferredWidth(400); + ((jtablePI.getColumnModel()).getColumn(1)).setPreferredWidth(400); ((jtablePI.getColumnModel()).getColumn(2)).setPreferredWidth(50); - jtablePI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + jtablePI.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); jspLatency = new JScrollPane(jtablePI); jspLatency.setWheelScrollingEnabled(true); jspLatency.getVerticalScrollBar().setUnitIncrement(10); - jspLatency.setMinimumSize(new Dimension(250, 300)); - jspLatency.setPreferredSize(new Dimension(250, 300)); + jspLatency.setMinimumSize(new Dimension(300, 250)); + jspLatency.setPreferredSize(new Dimension(450, 250)); latencyPanel.add(jspLatency, c0); @@ -1733,15 +1738,16 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen //TraceManager.addDev("Command handled"); st.startTime = elt.getAttribute("starttime"); st.endTime = elt.getAttribute("endtime"); - // System.out.println("command " +commandT); - if (checkTable.containsKey(commandT)){ + String taskId= elt.getAttribute("id"); + //System.out.println(elt.getAttribute("id")); + if (checkTable.containsKey(taskId)){ //System.out.println("added trans " + commandT + " " +st.endTime); - if (!transTimes.containsKey(commandT)){ + if (!transTimes.containsKey(taskId)){ ArrayList<String> timeList = new ArrayList<String>(); - transTimes.put(commandT, timeList); + transTimes.put(taskId, timeList); } - if (!transTimes.get(commandT).contains(st.endTime)){ - transTimes.get(commandT).add(st.endTime); + if (!transTimes.get(taskId).contains(st.endTime)){ + transTimes.get(taskId).add(st.endTime); } //System.out.println("nl:" + nl + " value=" + node0.getNodeValue() + " content=" + node0.getTextContent()); @@ -1855,7 +1861,6 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen transactionPanel.setData(trans); } if (latencyPanel !=null){ - System.out.println("Processing latencies..."); processLatency(); } //ttm.setData(trans); @@ -2324,14 +2329,15 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen latm.setData(latencies); } private void updateLatency(){ - //sendCommand("lt 100"); + sendCommand("lt 20"); } private void processLatency(){ - System.out.println(transTimes); +// TraceManager.addDev(transTimes.toString()); for (Object o: latencies){ SimulationLatency sl = (SimulationLatency) o; + sl.time="??"; for (String st1:transTimes.keySet()){ for (String st2:transTimes.keySet()){ if (st1!=st2){ @@ -2342,11 +2348,13 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen int time = Integer.MAX_VALUE; for (String time2: transTimes.get(st2)){ int diff = Integer.valueOf(time1) - Integer.valueOf(time2); - if (diff < time && diff >0){ + if (diff < time && diff >=0){ time=diff; } } - minTimes.add(time); + if (time!=Integer.MAX_VALUE){ + minTimes.add(time); + } } sl.time=Integer.toString(Collections.max(minTimes)); } @@ -2795,6 +2803,8 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen mgui.resetTransactions(); mgui.resetStatus(); sendCommand("reset"); + transTimes=new HashMap<String, ArrayList<String>>(); + processLatency(); askForUpdate(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_STOP_SIMU].getActionCommand())) { sendCommand("stop");