예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
    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
예제 #5
0
    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_
예제 #6
0
    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_
예제 #7
0
    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
예제 #8
0
 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
예제 #9
0
 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