def ITUPropagationLossModel(self, sta, ap, pT, gT, gR, signalLevel, N): """Based on International Telecommunication Union (ITU) Propagation Loss Model""" lF = 0 # Floor penetration loss factor nFloors = 0 # Number of Floors gains = pT + gT + gR freq = sta.params['frequency'][0] * 10 ** 3 dist = 10.0 ** ((-20.0 * math.log10(freq) - lF * nFloors + 28.0 + abs(signalLevel - gains)) / N) return dist
def logDistancePropagationLossModel(self, sta, ap, pT, gT, gR, signalLevel, n): """Based on Log Distance Propagation Loss Model""" gains = gR + gT + pT referenceDistance = 1 exp = 2 pathLossDb = self.pathLoss(sta, ap, referenceDistance) rssi = gains - signalLevel - pathLossDb dist = 10 ** ((rssi + 10 * exp * math.log10(referenceDistance)) / (10 * exp)) return dist
def logDistance(self, sta, ap, pT, gT, gR, signalLevel, n): """Based on Log Distance Propagation Loss Model""" gains = gR + gT + pT ref_dist = 1 exp = 2 pathLossDb = self.pathLoss(sta, ap, ref_dist) rssi = gains - signalLevel - pathLossDb dist = 10 ** ((rssi + 10 * exp * math.log10(ref_dist)) / (10 * exp)) return dist
def ITU(cls, sta, ap, pT, gT, gR, signalLevel, N): """Based on International Telecommunication Union (ITU) Propagation Loss Model""" lF = 0 # Floor penetration loss factor nFloors = 0 # Number of Floors gains = pT + gT + gR freq = sta.params['freq'][0] * 10 ** 3 dist = 10.0 ** ((-20.0 * math.log10(freq) - lF * nFloors + 28.0 + abs(signalLevel - gains)) / N) return dist
def pathLoss(self, sta, ap, dist, wlan=0): """Path Loss Model: (f) signal frequency transmited(Hz) (d) is the distance between the transmitter and the receiver (m) (c) speed of light in vacuum (m) (L) System loss""" f = sta.params['frequency'][wlan] * 10 ** 9 # Convert Ghz to Hz c = 299792458.0 L = 1 if dist == 0: dist = 0.1 lambda_ = c / f # lambda: wavelength (m) denominator = lambda_ ** 2 numerator = (4 * math.pi * dist) ** 2 * L pathLoss_ = 10 * math.log10(numerator / denominator) return pathLoss_
def pathLoss(cls, sta, ap, dist, wlan=0): """Path Loss Model: (f) signal frequency transmited(Hz) (d) is the distance between the transmitter and the receiver (m) (c) speed of light in vacuum (m) (L) System loss""" f = sta.params['freq'][wlan] * 10 ** 9 # Convert Ghz to Hz c = 299792458.0 L = 1 if dist == 0: dist = 0.1 lambda_ = c / f # lambda: wavelength (m) denominator = lambda_ ** 2 numerator = (4 * math.pi * dist) ** 2 * L pathLoss_ = 10 * math.log10(numerator / denominator) return pathLoss_
def calculateDistance(self, sta, ap, signalLevel): """Based on Free Space Propagation Model""" f = sta.params['frequency'][0] * 10**9 # Convert Ghz to Hz pT = ap.params['txpower'][0] gT = ap.params['antennaGain'][0] gR = sta.params['antennaGain'][0] c = 299792458.0 L = 2.0 gains = gR + gT + pT lambda_ = float(c) / float(f) # lambda: wavelength (m) denominator = lambda_**2.0 numerator = 10.0**(( (abs(signalLevel - gains)) + 10.0 * math.log10(denominator)) / 10.0) dist = (numerator**(1.0 / 2.0 * L)) / (4.0 * math.pi) return dist
def calculateDistance(self, sta, freq, signalLevel): """Based on Free Space Propagation Model""" dist = 10**((27.55 - (20 * math.log10(freq)) + abs(signalLevel)) / 20) return dist
def calculateDistance(self, sta, freq, signalLevel): """Based on Free Space Propagation Model""" dist = 10 ** ((27.55 - (20 * math.log10(freq)) + abs(signalLevel)) / 20) return dist