0% ont trouvé ce document utile (0 vote)
3 vues2 pages

Codeenodeb

Ce code C++ configure une simulation réseau LTE avec des nœuds eNodeB, UE et PGW. Il définit leurs positions et piles réseau, et planifie des mises à jour de position pour une animation du réseau.

Transféré par

julien PELE
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues2 pages

Codeenodeb

Ce code C++ configure une simulation réseau LTE avec des nœuds eNodeB, UE et PGW. Il définit leurs positions et piles réseau, et planifie des mises à jour de position pour une animation du réseau.

Transféré par

julien PELE
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

#include "ns3/core-module.

h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/lte-module.h"
#include "ns3/netanim-module.h" // Ajout du module d'animation

using namespace ns3;

// Définir la fonction pour mettre à jour les positions des nœuds


void UpdatePositions(AnimationInterface *anim, Ptr<Node> enb, Ptr<Node> ue,
Ptr<Node> pgw);

int main (int argc, char *argv[])


{
// Créer des nœuds
Ptr<Node> enb = CreateObject<Node> ();
Ptr<Node> ue = CreateObject<Node> ();
Ptr<Node> pgw = CreateObject<Node> (); // Ajout du PGW

// Installer les piles Internet sur les nœuds


InternetStackHelper internet;
[Link] (enb);
[Link] (ue);
[Link] (pgw); // Installer la pile Internet sur le PGW

// Configurer l'eNodeB
Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ();
lteHelper->SetEpcHelper (epcHelper);

// Configurer les canaux de communication


lteHelper->Attach (enb, pgw); // Attacher l'eNodeB au PGW

// Configurer les dispositifs pour les liaisons en downlink (DL) et uplink (UL)
NetDeviceContainer enbDev = lteHelper->InstallEnbDevice (enb);
NetDeviceContainer ueDev = lteHelper->InstallUeDevice (ue);

// Configurer les antennes


lteHelper->AttachToClosestEnb (ue);

// Activer la capture des statistiques


lteHelper->EnablePhyTraces ();
lteHelper->EnableMacTraces ();
lteHelper->EnableRlcTraces ();
lteHelper->EnablePdcpTraces ();

// Définir les positions des nœuds


enb->AggregateObject (CreateObject<MobilityModel> ());
ue->AggregateObject (CreateObject<MobilityModel> ());

// Créer un fichier de sortie XML pour l'animation


AnimationInterface anim("nom_du_fichier_animation.xml");
[Link](enb, 0.0, 0.0); // Position de l'eNodeB
[Link](ue, 1.0, 1.0); // Position de l'UE
[Link](pgw, 2.0, 2.0); // Position du PGW

// Configurer la simulation
Simulator::Stop (Seconds (10.0));
// Boucle de simulation
for (double simTime = 0.0; simTime <= 10.0; simTime += 0.1) {
// ... Votre code de simulation ...

// Mettre à jour les positions des nœuds pour l'animation


[Link](enb, simTime, 0.0, 0.0);
[Link](ue, simTime, 1.0, 1.0);
[Link](pgw, simTime, 2.0, 2.0);

Simulator::Schedule(Seconds(simTime + 0.1), &UpdatePositions, &anim, enb, ue,


pgw);
}

// Lancer la simulation
Simulator::Run ();
Simulator::Destroy ();

return 0;
}

void UpdatePositions(AnimationInterface *anim, Ptr<Node> enb, Ptr<Node> ue,


Ptr<Node> pgw) {
double simTime = Simulator::Now().GetSeconds();
anim->UpdateNodePosition(enb, simTime, 0.0, 0.0);
anim->UpdateNodePosition(ue, simTime, 1.0, 1.0);
anim->UpdateNodePosition(pgw, simTime, 2.0, 2.0);
}

Vous aimerez peut-être aussi