package com.dji.sdk.cloudapi.flightarea.api; import com.dji.sdk.annotations.CloudSDKVersion; import com.dji.sdk.cloudapi.flightarea.*; import com.dji.sdk.config.version.CloudSDKVersionEnum; import com.dji.sdk.config.version.GatewayManager; import com.dji.sdk.config.version.GatewayTypeEnum; import com.dji.sdk.mqtt.ChannelName; import com.dji.sdk.mqtt.MqttReply; import com.dji.sdk.mqtt.events.TopicEventsRequest; import com.dji.sdk.mqtt.events.TopicEventsResponse; import com.dji.sdk.mqtt.requests.TopicRequestsRequest; import com.dji.sdk.mqtt.requests.TopicRequestsResponse; import com.dji.sdk.mqtt.services.ServicesPublish; import com.dji.sdk.mqtt.services.ServicesReplyData; import com.dji.sdk.mqtt.services.TopicServicesResponse; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; import javax.annotation.Resource; /** * @author sean * @version 1.7 * @date 2023/10/16 */ public abstract class AbstractFlightAreaService { @Resource private ServicesPublish servicesPublish; /** * Update command * @param gateway gateway device * @return services_reply */ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0, exclude = GatewayTypeEnum.RC, include = {GatewayTypeEnum.DOCK, GatewayTypeEnum.DOCK2}) public TopicServicesResponse flightAreasUpdate(GatewayManager gateway) { return servicesPublish.publish( gateway.getGatewaySn(), FlightAreaMethodEnum.FLIGHT_AREAS_UPDATE.getMethod()); } /** * Progress of custom flight area file synchronize from the Cloud to the Device. Used for further defining flight area. * @param request data * @param headers The headers for a {@link Message}. * @return events_reply */ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_FLIGHT_AREAS_SYNC_PROGRESS, outputChannel = ChannelName.OUTBOUND_EVENTS) @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0) public TopicEventsResponse flightAreasSyncProgress(TopicEventsRequest request, MessageHeaders headers) { throw new UnsupportedOperationException("flightAreasSyncProgress not implemented"); } /** * Push warning information * @param request data * @param headers The headers for a {@link Message}. * @return events_reply */ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_FLIGHT_AREAS_DRONE_LOCATION, outputChannel = ChannelName.OUTBOUND_EVENTS) @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0) public TopicEventsResponse flightAreasDroneLocation(TopicEventsRequest request, MessageHeaders headers) { throw new UnsupportedOperationException("flightAreasDroneLocation not implemented"); } /** * Get custom flight area file * @param request data * @param headers The headers for a {@link Message}. * @return requests_reply */ @ServiceActivator(inputChannel = ChannelName.INBOUND_REQUESTS_FLIGHT_AREAS_GET, outputChannel = ChannelName.OUTBOUND_REQUESTS) @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0) public TopicRequestsResponse> flightAreasGet(TopicRequestsRequest request, MessageHeaders headers) { throw new UnsupportedOperationException("flightAreasGet not implemented"); } }