package org.droidplanner.services.android.impl.core.drone; import org.droidplanner.services.android.impl.core.drone.DroneInterfaces.DroneEventsType; import org.droidplanner.services.android.impl.core.drone.DroneInterfaces.OnDroneListener; import org.droidplanner.services.android.impl.core.drone.autopilot.MavLinkDrone; import java.util.concurrent.ConcurrentLinkedQueue; public class DroneEvents extends DroneVariable<MavLinkDrone> { private final ConcurrentLinkedQueue<OnDroneListener> droneListeners = new ConcurrentLinkedQueue<OnDroneListener>(); public DroneEvents(MavLinkDrone myDrone) { super(myDrone); } public void addDroneListener(OnDroneListener listener) { if (listener != null & !droneListeners.contains(listener)) droneListeners.add(listener); } public void removeDroneListener(OnDroneListener listener) { if (listener != null && droneListeners.contains(listener)) droneListeners.remove(listener); } public void removeAllDroneListeners(){ droneListeners.clear(); } public void notifyDroneEvent(DroneEventsType event) { if (event == null || droneListeners.isEmpty()) return; for (OnDroneListener listener : droneListeners) { listener.onDroneEvent(event, myDrone); } } }