Changeset 273:066f7271e849
- Timestamp:
- 07/03/12 17:30:04 (12 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/mlx/acft.py
r271 r273 122 122 123 123 self._checkers.append(checks.ReverserChecker()) 124 125 if flight.aircraftType is not None and config.enableApproachCallouts: 126 approachCallouts = flight.config.getApproachCallouts(flight.aircraftType) 127 if approachCallouts: 128 self._checkers.append(checks.ApproachCalloutsPlayer(approachCallouts)) 124 129 125 130 self._smoothedIAS = SmoothedValue() -
src/mlx/checks.py
r271 r273 219 219 #--------------------------------------------------------------------------------------- 220 220 221 class ApproachCalloutsPlayer(StateChecker): 222 """A state checker that plays a sequence of approach callouts. 223 224 It tracks the altitude during the descent and landing phases and 225 if the altitude crosses one that has a callout associated with and 226 the vertical speed is negative, that callout will be played.""" 227 def __init__(self, approachCallouts): 228 """Construct the approach callouts player.""" 229 self._approachCallouts = approachCallouts 230 self._altitudes = approachCallouts.getAltitudes(descending = False) 231 232 def check(self, flight, aircraft, logger, oldState, state): 233 """Check if we need to play a callout.""" 234 if (flight.stage==const.STAGE_DESCENT or \ 235 flight.stage==const.STAGE_LANDING) and state.vs<0: 236 oldRadioAltitude = oldState.radioAltitude 237 radioAltitude = state.radioAltitude 238 for altitude in self._altitudes: 239 if radioAltitude<=altitude and \ 240 oldRadioAltitude>altitude: 241 startSound(self._approachCallouts[altitude]) 242 break 243 244 #--------------------------------------------------------------------------------------- 245 221 246 class StateChangeLogger(StateChecker): 222 247 """Base class for classes the instances of which check if a specific change has -
src/mlx/config.py
r270 r273 157 157 index += 1 158 158 159 def getAltitudes(self, descending = True): 160 """Get the altitudes in decreasing order by default.""" 161 altitudes = self._mapping.keys() 162 altitudes.sort(reverse = descending) 163 return altitudes 164 165 def __nonzero__(self): 166 """Return if there is anything in the mapping.""" 167 return not not self._mapping 168 159 169 def __eq__(self, other): 160 170 """Determine if the approach callout mapping is equal to the given … … 172 182 173 183 def __getitem__(self, altitude): 174 """Get the file that is associated with the highest altitude not higher 175 than the given one. 184 """Get the file that is associated with the given altitude. 176 185 177 186 If no such file found, return None.""" 178 candidate = None 179 for (alt, path) in self._mapping.iteritems(): 180 if alt<=altitude: 181 if candidate is None or alt>candidate[0]: 182 candidate = (alt, path) 183 184 return candidate 187 return self._mapping[altitude] if altitude in self._mapping else None 185 188 186 189 def __iter__(self): 187 190 """Iterate over the pairs of altitudes and paths in decreasing order of 188 191 the altitude.""" 189 altitudes = self._mapping.keys() 190 altitudes.sort(reverse = True) 192 altitudes = self.getAltitudes() 191 193 192 194 for altitude in altitudes: -
src/mlx/pyuipc_sim.py
r243 r273 552 552 elif offset==0x0570: # Altitude 553 553 self.altitude = value / const.FEETTOMETRES / 65536.0 / 65536.0 554 self.radioAltitude = self.altitude - 517 554 555 elif offset==0x0578: # Pitch 555 556 self.pitch = value * 360.0 / 65536.0 / 65536.0 … … 668 669 raise FSUIPCException(ERR_DATA) 669 670 elif offset==0x31e4: # Radio altitude 671 self.radioAltitude = value / const.FEETTOMETRES / 65536.0 672 self.altitude = self.radioAltitude + 517 673 elif offset==0x31e4: # Radio altitude 670 674 raise FSUIPCException(ERR_DATA) 671 675 elif offset==0x320c: -
test/test1.txt
r241 r273 25 25 set altitude=557 26 26 set ias=125 gs=125 27 set radioAltitude=3200 28 set radioAltitude=3100 29 set radioAltitude=3000 30 set radioAltitude=2900 31 set radioAltitude=2800 32 set radioAltitude=2700 33 set radioAltitude=2600 34 set radioAltitude=2521 35 set radioAltitude=2510 36 set radioAltitude=2500 37 set radioAltitude=2500 38 set radioAltitude=2499 39 set radioAltitude=2520 40 set radioAltitude=2400 41 set radioAltitude=2300 42 set radioAltitude=2200 43 set radioAltitude=2100 44 set radioAltitude=2018 45 set radioAltitude=1950 46 set radioAltitude=1800 47 set radioAltitude=1600 48 set radioAltitude=1550 49 set radioAltitude=1450 50 set radioAltitude=1590 51 set radioAltitude=1499 52 set radioAltitude=1400 53 set radioAltitude=1300 54 set radioAltitude=1200 55 set radioAltitude=1200 56 set radioAltitude=1100 57 set radioAltitude=1001 58 set radioAltitude=912 59 set radioAltitude=832 60 set radioAltitude=705 61 set radioAltitude=599 62 set radioAltitude=501 63 set radioAltitude=412 64 set radioAltitude=331 65 set radioAltitude=241 66 set radioAltitude=102 67 set radioAltitude=90 27 68 set noseGear=100 28 set altitude=547 29 set altitude=537 30 set altitude=527 69 set radioAltitude=80 70 set radioAltitude=70 71 set radioAltitude=60 72 set radioAltitude=51 73 set radioAltitude=42 74 set radioAltitude=29 75 set radioAltitude=9 31 76 set altitude=517 32 77 set latitude=47.49 longitude=21.62
Note:
See TracChangeset
for help on using the changeset viewer.