Example #1
0
    def configureWmediumd(self, stations, accessPoints):
        """ 
        Updates values for frequency and channel
        
        :param stations: list of stations
        :param accessPoints: list of access points
        """
        intfrefs = []
        links = []
        positions = []
        txpowers = []
        cars = []

        for node in stations:
            if 'carsta' in node.params:
                cars.append(node.params['carsta'])

        nodes = stations + accessPoints + cars

        for node in nodes:
            node.wmediumdIface = DynamicWmediumdIntfRef(node)
            intfrefs.append(node.wmediumdIface)

        if self.enable_interference:
            mode = WmediumdConstants.WMEDIUMD_MODE_INTERFERENCE
            for node in nodes:
                if 'position' not in node.params:
                    posX = 0
                    posY = 0
                    posZ = 0
                else:
                    posX = node.params['position'][0]
                    posY = node.params['position'][1]
                    posZ = node.params['position'][2]
                node.lastpos = [0, 0, 0]
                positions.append(
                    WmediumdPosition(node.wmediumdIface, [posX, posY, posZ]))
                txpowers.append(
                    WmediumdTXPower(node.wmediumdIface,
                                    float(node.params['txpower'][0])))
        else:
            mode = WmediumdConstants.WMEDIUMD_MODE_SNR
            for node in self.wlinks:
                links.append(
                    WmediumdSNRLink(node[0].wmediumdIface,
                                    node[1].wmediumdIface,
                                    node[0].params['snr'][0]))
                links.append(
                    WmediumdSNRLink(node[1].wmediumdIface,
                                    node[0].wmediumdIface,
                                    node[0].params['snr'][0]))

        WmediumdStarter.initialize(intfrefs, links, mode=mode, positions=positions, enable_interference=self.enable_interference, \
                                   auto_add_links=False, txpowers=txpowers, with_server=True)
        WmediumdStarter.start()
Example #2
0
    def configureWmediumd(cls, mininet):
        """ 
        Updates values for frequency and channel
        """
        from mininet.node import Car

        intfrefs = []
        links = []
        positions = []
        txpowers = []
        cars = []

        cls.configureWiFiDirect = mininet.configureWiFiDirect
        cls.configure4addr = mininet.configure4addr
        cls.enable_error_prob = mininet.enable_error_prob
        cls.enable_interference = mininet.enable_interference
        cls.enable_spec_prob_link = mininet.enable_spec_prob_link

        for node in mininet.stations:
            if 'carsta' in node.params:
                cars.append(node.params['carsta'])

        nodes = mininet.stations + mininet.aps + cars
        for node in nodes:
            node.wmIface = []
            if isinstance(node, Car):
                wlans = 1
            elif '_4addr' in node.params and node.params['_4addr'] == 'ap':
                wlans = 1
            else:
                wlans = len(node.params['wlan'])
            for wlan in range(0, wlans):
                node.wmIface.append(wlan)
                node.wmIface[wlan] = DynamicWmediumdIntfRef(node, intf=wlan)
                intfrefs.append(node.wmIface[wlan])

        if cls.enable_interference:
            mode = WmediumdConstants.WMEDIUMD_MODE_INTERFERENCE
            for node in nodes:
                if 'position' not in node.params:
                    posX = 0
                    posY = 0
                    posZ = 0
                else:
                    posX = node.params['position'][0]
                    posY = node.params['position'][1]
                    posZ = node.params['position'][2]
                node.lastpos = [posX, posY, posZ]

                if isinstance(node, Car):
                    wlans = 1
                elif '_4addr' in node.params and node.params['_4addr'] == 'ap':
                    wlans = 1
                else:
                    wlans = len(node.params['wlan'])
                for wlan in range(0, wlans):
                    positions.append(
                        WmediumdPosition(node.wmIface[wlan],
                                         [posX, posY, posZ]))
                    txpowers.append(
                        WmediumdTXPower(node.wmIface[wlan],
                                        float(node.params['txpower'][wlan])))
        elif cls.enable_spec_prob_link:
            mode = WmediumdConstants.WMEDIUMD_MODE_SPECPROB
        elif cls.enable_error_prob:
            mode = WmediumdConstants.WMEDIUMD_MODE_ERRPROB
            for node in cls.wlinks:
                links.append(
                    WmediumdERRPROBLink(node[0].wmIface[0], node[1].wmIface[0],
                                        node[2]))
                links.append(
                    WmediumdERRPROBLink(node[1].wmIface[0], node[0].wmIface[0],
                                        node[2]))
        else:
            mode = WmediumdConstants.WMEDIUMD_MODE_SNR
            for node in cls.wlinks:
                links.append(
                    WmediumdSNRLink(node[0].wmIface[0], node[1].wmIface[0],
                                    node[0].params['rssi'][0] - (-91)))
                links.append(
                    WmediumdSNRLink(node[1].wmIface[0], node[0].wmIface[0],
                                    node[0].params['rssi'][0] - (-91)))

        WmediumdStarter.initialize(intfrefs,
                                   links,
                                   mode=mode,
                                   positions=positions,
                                   enable_interference=cls.enable_interference,
                                   auto_add_links=False,
                                   txpowers=txpowers,
                                   with_server=True)
        WmediumdStarter.start(mininet, propagationModel)
Example #3
0
    def configureWmediumd(self, stations, accessPoints):
        """ 
        Updates values for frequency and channel
        
        :param stations: list of stations
        :param accessPoints: list of access points
        """
        intfrefs = []
        links = []
        positions = []
        txpowers = []
        cars = []

        for node in stations:
            if 'carsta' in node.params:
                cars.append(node.params['carsta'])

        nodes = stations + accessPoints + cars

        for node in nodes:
            node.wmIface = []
            if node.type == 'vehicle':
                wlans = 1
            else:
                wlans = len(node.params['wlan'])
            for wlan in range(0, wlans):
                node.wmIface.append(wlan)
                node.wmIface[wlan] = DynamicWmediumdIntfRef(node, intf=wlan)
                intfrefs.append(node.wmIface[wlan])

        if self.enable_interference:
            mode = WmediumdConstants.WMEDIUMD_MODE_INTERFERENCE
            for node in nodes:
                if 'position' not in node.params:
                    posX = 0
                    posY = 0
                    posZ = 0
                else:
                    posX = node.params['position'][0]
                    posY = node.params['position'][1]
                    posZ = node.params['position'][2]
                node.lastpos = [0, 0, 0]

                if hasattr(node, 'type') and node.type == 'vehicle':
                    wlans = 1
                else:
                    wlans = len(node.params['wlan'])
                for wlan in range(0, wlans):
                    positions.append(
                        WmediumdPosition(node.wmIface[wlan],
                                         [posX, posY, posZ]))
                    txpowers.append(
                        WmediumdTXPower(node.wmIface[wlan],
                                        float(node.params['txpower'][wlan])))
        elif self.enable_spec_prob_link:
            mode = WmediumdConstants.WMEDIUMD_MODE_SPECPROB
        elif self.enable_error_prob:
            mode = WmediumdConstants.WMEDIUMD_MODE_ERRPROB
        else:
            mode = WmediumdConstants.WMEDIUMD_MODE_SNR

        WmediumdStarter.initialize(intfrefs, links, mode=mode, positions=positions, enable_interference=self.enable_interference, \
                                   auto_add_links=False, txpowers=txpowers, with_server=True)
        WmediumdStarter.start()