712 double lbTx = now.GetSeconds (); |
712 double lbTx = now.GetSeconds (); |
713 double fbRx = now.GetSeconds (); |
713 double fbRx = now.GetSeconds (); |
714 double lbRx = now.GetSeconds (); |
714 double lbRx = now.GetSeconds (); |
715 if (m_xml) |
715 if (m_xml) |
716 { |
716 { |
717 oss << GetXMLOpen_packet (0, 0, fbTx, lbTx, "DummyPktIgnoreThis"); |
717 oss << GetXMLOpenClose_p ("p", 0, fbTx, lbTx, 0, fbRx, lbRx, "", "DummyPktIgnoreThis"); |
718 oss << GetXMLOpenClose_rx (0, 0, fbRx, lbRx); |
|
719 oss << GetXMLClose ("packet"); |
|
720 } |
718 } |
721 WriteN (oss.str ()); |
719 WriteN (oss.str ()); |
722 |
720 |
723 |
721 |
724 } |
722 } |
736 double lbTx = (now + txTime).GetSeconds (); |
734 double lbTx = (now + txTime).GetSeconds (); |
737 double fbRx = (now + rxTime - txTime).GetSeconds (); |
735 double fbRx = (now + rxTime - txTime).GetSeconds (); |
738 double lbRx = (now + rxTime).GetSeconds (); |
736 double lbRx = (now + rxTime).GetSeconds (); |
739 if (m_xml) |
737 if (m_xml) |
740 { |
738 { |
741 oss << GetXMLOpen_packet (0, tx->GetNode ()->GetId (), fbTx, lbTx); |
739 oss << GetXMLOpenClose_p ("p", tx->GetNode ()->GetId (), fbTx, lbTx, rx->GetNode ()->GetId (), |
742 oss << GetXMLOpenClose_rx (0, rx->GetNode ()->GetId (), fbRx, lbRx); |
740 fbRx, lbRx, m_enablePacketMetadata? GetPacketMetadata (p):""); |
743 if (m_enablePacketMetadata) |
|
744 oss << GetXMLOpenClose_meta (GetPacketMetadata (p)); |
|
745 oss << GetXMLClose ("packet"); |
|
746 StartNewTraceFile (); |
741 StartNewTraceFile (); |
747 ++m_currentPktCount; |
742 ++m_currentPktCount; |
748 } |
743 } |
749 else |
744 else |
750 { |
745 { |
1253 } |
1248 } |
1254 UpdatePosition (n,v); |
1249 UpdatePosition (n,v); |
1255 RecalcTopoBounds (v); |
1250 RecalcTopoBounds (v); |
1256 std::ostringstream oss; |
1251 std::ostringstream oss; |
1257 oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY); |
1252 oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY); |
1258 oss << GetXMLOpenClose_node (0,n->GetId (),v.x,v.y); |
1253 oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y, nodeColors[n->GetId ()]); |
1259 oss << GetXMLClose ("topology"); |
1254 oss << GetXMLClose ("topology"); |
1260 WriteN (oss.str ()); |
1255 WriteN (oss.str ()); |
1261 WriteDummyPacket (); |
1256 WriteDummyPacket (); |
1262 } |
1257 } |
1263 |
1258 |
1393 nodeId = pktInfo.m_txnd->GetNode ()->GetId (); |
1388 nodeId = pktInfo.m_txnd->GetNode ()->GetId (); |
1394 else |
1389 else |
1395 nodeId = pktInfo.m_txNodeId; |
1390 nodeId = pktInfo.m_txNodeId; |
1396 |
1391 |
1397 double lbTx = pktInfo.firstlastbitDelta + pktInfo.m_fbTx; |
1392 double lbTx = pktInfo.firstlastbitDelta + pktInfo.m_fbTx; |
1398 oss << GetXMLOpen_wpacket (0, nodeId, pktInfo.m_fbTx, lbTx, pktrxInfo.rxRange); |
|
1399 |
|
1400 uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId (); |
1393 uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId (); |
1401 oss << GetXMLOpenClose_rx (0, rxId, pktrxInfo.m_fbRx, pktrxInfo.m_lbRx); |
1394 |
1402 if (m_enablePacketMetadata) |
1395 oss << GetXMLOpenClose_p ("wp", nodeId, pktInfo.m_fbTx, lbTx, rxId, |
1403 oss << GetXMLOpenClose_meta (GetPacketMetadata (p)); |
1396 pktrxInfo.m_fbRx, pktrxInfo.m_lbRx, m_enablePacketMetadata? GetPacketMetadata (p):""); |
1404 |
|
1405 oss << GetXMLClose ("wpacket"); |
|
1406 WriteN (oss.str ()); |
1397 WriteN (oss.str ()); |
1407 } |
1398 } |
1408 |
1399 |
1409 void AnimationInterface::OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo) |
1400 void AnimationInterface::OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo) |
1410 { |
1401 { |
1411 StartNewTraceFile (); |
1402 StartNewTraceFile (); |
1412 NS_ASSERT (m_xml); |
1403 NS_ASSERT (m_xml); |
1413 std::ostringstream oss; |
1404 std::ostringstream oss; |
1414 NS_ASSERT (pktInfo.m_txnd); |
1405 NS_ASSERT (pktInfo.m_txnd); |
1415 uint32_t nodeId = pktInfo.m_txnd->GetNode ()->GetId (); |
1406 uint32_t nodeId = pktInfo.m_txnd->GetNode ()->GetId (); |
1416 |
|
1417 oss << GetXMLOpen_packet (0, nodeId, pktInfo.m_fbTx, pktInfo.m_lbTx); |
|
1418 uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId (); |
1407 uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId (); |
1419 oss << GetXMLOpenClose_rx (0, rxId, pktrxInfo.m_fbRx, pktrxInfo.m_lbRx); |
1408 |
1420 if (m_enablePacketMetadata) |
1409 oss << GetXMLOpenClose_p ("p", nodeId, pktInfo.m_fbTx, pktInfo.m_lbTx, rxId, |
1421 oss << GetXMLOpenClose_meta (GetPacketMetadata (p)); |
1410 pktrxInfo.m_fbRx, pktrxInfo.m_lbRx, m_enablePacketMetadata? GetPacketMetadata (p):""); |
1422 oss << GetXMLClose ("packet"); |
|
1423 WriteN (oss.str ()); |
1411 WriteN (oss.str ()); |
1424 } |
1412 } |
1425 |
1413 |
1426 void AnimationInterface::SetConstantPosition (Ptr <Node> n, double x, double y, double z) |
1414 void AnimationInterface::SetConstantPosition (Ptr <Node> n, double x, double y, double z) |
1427 { |
1415 { |
1710 |
1698 |
1711 std::string AnimationInterface::GetXMLOpen_packet (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, std::string auxInfo) |
1699 std::string AnimationInterface::GetXMLOpen_packet (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, std::string auxInfo) |
1712 { |
1700 { |
1713 std::ostringstream oss; |
1701 std::ostringstream oss; |
1714 oss << std::setprecision (10); |
1702 oss << std::setprecision (10); |
1715 oss << "<packet fromId=\"" << fromId |
1703 oss << "<p fId=\"" << fromId |
1716 << "\" fbTx=\"" << fbTx |
1704 << "\" fbTx=\"" << fbTx |
1717 << "\" lbTx=\"" << lbTx |
1705 << "\" lbTx=\"" << lbTx |
1718 << (auxInfo.empty()?"":"\" aux=\"") << auxInfo.c_str () |
1706 << (auxInfo.empty()?"":"\" aux=\"") << auxInfo.c_str () << "\">"; |
1719 << "\">"; |
|
1720 return oss.str (); |
1707 return oss.str (); |
1721 } |
1708 } |
|
1709 |
|
1710 |
|
1711 std::string AnimationInterface::GetXMLOpenClose_p (std::string pktType, uint32_t fId, double fbTx, double lbTx, |
|
1712 uint32_t tId, double fbRx, double lbRx, std::string metaInfo, |
|
1713 std::string auxInfo) |
|
1714 { |
|
1715 std::ostringstream oss; |
|
1716 oss << std::setprecision (10); |
|
1717 oss << "<" << pktType << " fId=\"" << fId |
|
1718 << "\" fbTx=\"" << fbTx |
|
1719 << "\" lbTx=\"" << lbTx << "\""; |
|
1720 if (!auxInfo.empty ()) |
|
1721 { |
|
1722 oss << " aux=\"" << auxInfo.c_str () << "\""; |
|
1723 } |
|
1724 if (!metaInfo.empty ()) |
|
1725 { |
|
1726 oss << " meta-info=\"" << metaInfo.c_str () << "\""; |
|
1727 } |
|
1728 oss << " tId=\"" << tId << "\" fbRx=\"" << fbRx << "\" lbRx=\"" << lbRx << "\">" << std::endl; |
|
1729 return oss.str (); |
|
1730 } |
|
1731 |
|
1732 |
1722 |
1733 |
1723 std::string AnimationInterface::GetXMLOpen_wpacket (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, double range) |
1734 std::string AnimationInterface::GetXMLOpen_wpacket (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, double range) |
1724 { |
1735 { |
1725 std::ostringstream oss; |
1736 std::ostringstream oss; |
1726 oss << std::setprecision (10); |
1737 oss << std::setprecision (10); |