#!/usr/bin/env python

'Setting the position of Nodes and providing mobility using mobility models'
import sys

from mininet.log import setLogLevel, info
from mn_wifi.cli import CLI
from mn_wifi.net import Mininet_wifi
from mn_wifi.link import wmediumd, adhoc
from mn_wifi.wmediumdConnector import interference
import os

from containernet.net import Containernet
from containernet.node import DockerSta
from containernet.cli import CLI


def topology(args):
    "Create a network."
    net = Containernet(link=wmediumd, wmediumd_mode=interference)

    sta1 = net.addStation('A', position='226,283,0', mac='00:00:00:00:00:01', ip='10.0.0.1/8', cls=DockerSta, dimage="ubuntu:22.04", cpu_shares=20)   
    sta2 = net.addStation('B', position='326,363,0', mac='00:00:00:00:00:02', ip='10.0.0.2/8', cls=DockerSta, dimage="ubuntu:22.04", cpu_shares=20)

 
    #set the propagation model
    net.setPropagationModel(model="logDistance", exp=3.5)

    info("*** Configuring nodes\n")
    net.configureWifiNodes()

    info("*** Creating links\n")
    
    net.plotGraph(max_x=500, max_y=500)

    m = 'g'
    c = 5

    net.addLink(sta1, cls=adhoc, intf='A-wlan0', ssid='adhocNet', mode=m, channel=c)
    net.addLink(sta2, cls=adhoc, intf='B-wlan0', ssid='adhocNet', mode=m, channel=c)


    info("*** Starting network\n")
    net.build()
    net.start()

    info("*** Running CLI\n")
    CLI(net)

    info("*** Stopping network\n")
    net.stop()

    os.system('killall xterm')  
    os.system('sudo mn -c')


if __name__ == '__main__':
    setLogLevel('info')
    topology(sys.argv)
