def real_handover_Det_AA(ser, speed, wavelengthDet, distanceDet, duration, maxDistDet): # simulate a realistic handover from AA to Det # start from MTCA and move at constant speed towards Detroit print("Setting preconditions...") # at MTCA, both AA and Det signals are at atten=0 # allow H/U to lock on to Det signal packet = nf_header.setFilterConfig_handover(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) time.sleep(45) #introduce AA signal packet = nf_header.setFilterConfig_handover(1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) print("Preconditions are set.") # keep track of signal loss of Det runningLoss = 0 curAtten = 0 for i in range(0, duration): distanceDet += speed # handle AA signal attenuation # if maxDist is reached, turn off signal if (distanceDet > maxDistDet or distanceDet == maxDistDet): print ("Time: ", i) print("Reached max distance.") packet = nf_header.setFilterConfig_handover(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) time.sleep(45) return else: runningLoss += nf_header.loss(speed, wavelengthDet, distanceDet) if (runningLoss >= 1): runningLoss -= 1 curAtten += 1 print("Time: ", i, ", Current Attenuation: ", curAtten) packet = nf_header.setFilterConfig_handover(1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, curAtten, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) time.sleep(1) else: time.sleep(1)
def real_fade_out_Det(ser, speed, wavelength, distance, duration, maxDist): # simulate a realistic fade-out of 105.1MHz # parameters (in SI units): vehicle speed, signal wavelength, distance from MTCA to radio tower, antenna height, test duration, # max distance for signal cut-off (from Earth curvature) print("Setting preconditions...") packet = nf_header.setFilterConfig_handover(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) time.sleep(45) print("Preconditions are set.") runningLoss = 0 curAtten = 0 for i in range(0, duration): distance += speed # if maxDist is reached, turn off signal if (distance > maxDist or distance == maxDist): print ("Time: ", i) print("Reached max distance.") packet = nf_header.setFilterConfig_handover(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) return else: runningLoss += nf_header.loss(speed, wavelength, distance) if (runningLoss >= 1): runningLoss -= 1 curAtten += 1 print("Time: ", i, ", Current Attenuation: ", curAtten) packet = nf_header.setFilterConfig_handover(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, curAtten, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) time.sleep(1) else: time.sleep(1) packet = nf_header.setFilterConfig_handover(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser)
def real_fade_in_Det(ser, speed, wavelength, distance, duration, endDist): # simulate a realistic fade-out of 91.7MHz # parameters (in SI units): vehicle speed, signal wavelength, distance from MTCA to radio tower, antenna height, test duration, # max distance for signal cut-off (from Earth curvature) print("Setting preconditions...") packet = nf_header.setFilterConfig_handover(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) time.sleep(45) print("Preconditions are set.") runningGain = 0 curGain = 0 for i in range(0, duration): distance -= speed # if endDist is reached, set to min attenuation if (distance < endDist or distance == endDist): print ("Time: ", i) print("Reached end distance.") packet = nf_header.setFilterConfig_handover(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) return else: runningGain += nf_header.loss(speed, wavelength, distance) if (runningGain >= 1): runningGain -= 1 curGain += 1 print("Time: ", i, ", Current Gain: ", curGain) packet = nf_header.setFilterConfig_handover(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8-curGain, 0, 0, 0) ser.write(packet) nf_header.getFilterConfig_resp(ser) time.sleep(1) else: time.sleep(1)