import ns.lte
import ns.mobility
import ns.network
import ns.internet
import ns.core
#import ns.config
import ns.buildings




lteAS = ns.lte.LteHelper()

UeNodeAS= ns.network.NodeContainer()
UeNodeAS.Create (1) #Create one Ue node
#mob = ns.mobility.ConstantPositionMobilityModel()
#mob.SetPosition( ns.core.Vector3D(10.0 * i, 0.0, 0.0) )
mobility = ns.mobility.MobilityHelper()
#positionAlloc = ns.mobility.ListPositionAllocator()
#positionAlloc.Add(ns.core.Vector(10.0, 10.0, 0.0))
#mobility.SetPositionAllocator(positionAlloc)
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel")
mobility.Install(UeNodeAS)
#UeNodedevs= self.installLtedev(UeNodeAS)
#UeNodedevs = ns.network.NetDeviceContainer()
UeNodedevs = lteAS.InstallUeDevice(UeNodeAS)
print(" Created UeNodedevs")
EnbNodeAS= ns.network.NodeContainer()
EnbNodeAS.Create (1)	 #Create one enb node
mobility2 = ns.mobility.MobilityHelper()
#positionAlloc2 = ns.mobility.ListPositionAllocator()
#positionAlloc2.Add(ns.core.Vector(20.0, 20.0, 0.0))
#mobility2.SetPositionAllocator(positionAlloc2)
mobility2.SetMobilityModel ("ns3::ConstantPositionMobilityModel")
mobility2.Install(EnbNodeAS)
#self.setnodeb(EnbNodeAS)
EnbNodedevs = lteAS.InstallEnbDevice(EnbNodeAS)
print(" Created EnbNodedevs")


#Attach Ue to Enb:
#self.linknodebAS(UeNodeAS,EnbNodeAS) #Alternative:
print(UeNodedevs.Get(0))
print(EnbNodedevs.Get(0))
Uedev=UeNodedevs.Get(0)
Enbdev = EnbNodedevs.Get(0)

lteAS.Attach(UeNodedevs, EnbNodedevs.Get(0))  #Attach Ue to Enb
	#self.lte.Attach(self.lte.InstallEnbDevice(EnbNodeAS), self.lte.InstallUeDevice(UeNodeAS).Get(0)) #Attach Ue to Enb
print("yahooooo")

'''
Program received signal SIGSEGV, Segmentation fault.
0x019d9341 in ns3::LteUePhy::DoSetDlBandwidth (this=0x8b575e0, 
    dlBandwidth=6 '/006') at ../src/lte/model/lte-ue-phy.cc:1292
1292	      m_downlinkSpectrumPhy->GetChannel ()->AddRx (m_downlinkSpectrumPhy);

'''
