78 const std::string sender = message.
getSender();
79 const dbus_uint32_t serial = message.
getSerial();
106 std::string callsign;
107 std::string modelName;
108 std::string aircraftIcao;
109 std::string airlineIcao;
119 if (acm->addPlane(callsign, modelName)) {
120 emitPlaneAdded(callsign);
125 std::string callsign;
129 acm->removePlane(callsign);
134 acm->removeAllPlanes();
136 }
else if (message.
getMethodName() ==
"setPlanesPositions") {
138 std::vector<std::string> callsigns;
139 std::vector<double> latitudes;
140 std::vector<double> longitudes;
141 std::vector<double> altitudes;
142 std::vector<double> pitches;
143 std::vector<double> rolls;
144 std::vector<double> headings;
145 std::vector<double> groundspeeds;
146 std::vector<bool> onGrounds;
158 std::vector<SwiftPlaneUpdate> updates;
159 for (
long unsigned int i = 0;
i < latitudes.size();
i++) {
161 pos.setLatitudeDeg(latitudes.at(
i));
162 pos.setLongitudeDeg(longitudes.at(
i));
163 pos.setElevationFt(altitudes.at(
i));
164 SGVec3d orientation(pitches.at(
i), rolls.at(
i), headings.at(
i));
165 updates.push_back({callsigns.at(
i), pos, orientation, groundspeeds.at(
i), onGrounds.at(
i)});
167 acm->updatePlanes(updates);
169 }
else if (message.
getMethodName() ==
"getRemoteAircraftData") {
170 std::vector<std::string> requestedcallsigns;
174 std::vector<std::string> callsigns = requestedcallsigns;
175 std::vector<double> latitudesDeg;
176 std::vector<double> longitudesDeg;
177 std::vector<double> elevationsM;
178 std::vector<double> verticalOffsets;
179 acm->getRemoteAircraftData(callsigns, latitudesDeg, longitudesDeg, elevationsM, verticalOffsets);
189 }
else if (message.
getMethodName() ==
"getElevationAtPosition") {
190 std::string callsign;
193 double altitudeMeters;
201 pos.setLatitudeDeg(latitudeDeg);
202 pos.setLongitudeDeg(longitudeDeg);
203 pos.setElevationM(altitudeMeters);
204 double elevation = acm->getElevationAtPosition(callsign, pos);
211 }
else if (message.
getMethodName() ==
"setPlanesTransponders") {
213 std::vector<std::string> callsigns;
214 std::vector<int> codes;
215 std::vector<bool> modeCs;
216 std::vector<bool> idents;
222 std::vector<AircraftTransponder> transponders;
223 transponders.reserve(callsigns.size());
224 for (
long unsigned int i = 0;
i < callsigns.size();
i++) {
225 transponders.emplace_back(callsigns.at(
i), codes.at(
i), modeCs.at(
i), idents.at(
i));
228 acm->setPlanesTransponders(transponders);
232 std::vector<std::string> callsigns;
233 std::vector<double> gears;
234 std::vector<double> flaps;
235 std::vector<double> spoilers;
236 std::vector<double> speedBrakes;
237 std::vector<double> slats;
238 std::vector<double> wingSweeps;
239 std::vector<double> thrusts;
240 std::vector<double> elevators;
241 std::vector<double> rudders;
242 std::vector<double> ailerons;
243 std::vector<bool> landLights;
244 std::vector<bool> taxiLights;
245 std::vector<bool> beaconLights;
246 std::vector<bool> strobeLights;
247 std::vector<bool> navLights;
248 std::vector<int> lightPatterns;
267 std::vector<AircraftSurfaces> surfaces;
268 surfaces.reserve(callsigns.size());
269 for (
long unsigned int i = 0;
i < callsigns.size();
i++) {
270 surfaces.emplace_back(callsigns.at(
i), gears.at(
i), flaps.at(
i), spoilers.at(
i), speedBrakes.at(
i), slats.at(
i),
271 wingSweeps.at(
i), thrusts.at(
i), elevators.at(
i), rudders.at(
i), ailerons.at(
i),
272 landLights.at(
i), taxiLights.at(
i), beaconLights.at(
i), strobeLights.at(
i), navLights.at(
i), lightPatterns.at(
i));
275 acm->setPlanesSurfaces(surfaces);
279 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
282 return DBUS_HANDLER_RESULT_HANDLED;