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
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