Exemplo n.º 1
0
    def logNormalShadowing(self, **kwargs):
        """Log-Normal Shadowing Propagation Loss Model
        distance is the range of the transmitter (m)"""
        from mininet.wmediumdConnector import WmediumdGaussianRandom, \
            WmediumdServerConn

        ref_dist = 1
        antGain = kwargs['node'].params['antennaGain'][kwargs['wlan']]
        mean = 0
        variance = propagationModel.variance
        gRandom = float('%.2f' % gauss(mean, variance))
        propagationModel.gRandom = gRandom

        if kwargs['interference']:
            sleep(0.001)  # notice problem when there are many threads
            WmediumdServerConn.update_gaussian_random(
                WmediumdGaussianRandom(kwargs['node'].wmIface[kwargs['wlan']],
                                       gRandom))

        pathLoss = self.pathLoss(kwargs['node'], ref_dist,
                                 kwargs['wlan']) - gRandom

        self.txpower = 10 * ppm.exp * math.log10(
            kwargs['dist'] / ref_dist) - 92 + pathLoss - (antGain * 2)
        if self.txpower < 0:
            error('*** Error: tx power is negative! (%s)\n' % self.txpower)
            exit(1)

        return self.txpower
Exemplo n.º 2
0
    def logNormalShadowing(self, **kwargs):
        """Log-Normal Shadowing Propagation Loss Model"""
        from mininet.wmediumdConnector import WmediumdGaussianRandom, \
            WmediumdServerConn

        ref_dist = 1
        txpower = kwargs['node'].params['txpower'][kwargs['wlan']]
        antGain = kwargs['node'].params['antennaGain'][kwargs['wlan']]
        gains = txpower + (antGain * 2)
        mean = 0
        variance = propagationModel.variance
        gRandom = float('%.2f' % gauss(mean, variance))
        propagationModel.gRandom = gRandom

        if kwargs['interference']:
            sleep(0.002)  #notice problem when there are many threads
            WmediumdServerConn.update_gaussian_random(
                WmediumdGaussianRandom(kwargs['node'].wmIface[kwargs['wlan']],
                                       gRandom))

        pathLoss = self.pathLoss(kwargs['node'], ref_dist,
                                 kwargs['wlan']) - gRandom
        self.dist = math.pow(10, ((-ppm.noise_threshold - pathLoss + gains) /
                                  (10 * ppm.exp))) * ref_dist

        return self.dist