package com.dji.sdk.mqtt.state; import com.dji.sdk.config.version.GatewayManager; import com.dji.sdk.common.SDKManager; import com.dji.sdk.mqtt.IMqttTopicService; import com.dji.sdk.mqtt.TopicConst; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** * * @author sean.zhou * @date 2021/11/10 * @version 0.1 */ @Component public class StateSubscribe { @Resource private IMqttTopicService topicService; public static final String TOPIC = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + "%s" + TopicConst.STATE_SUF; public void subscribe(GatewayManager gateway, boolean unsubscribeSubDevice) { SDKManager.registerDevice(gateway); topicService.subscribe(String.format(TOPIC, gateway.getGatewaySn())); if (unsubscribeSubDevice) { topicService.unsubscribe(String.format(TOPIC, gateway.getDroneSn())); return; } if (null != gateway.getDroneSn()) { topicService.subscribe(String.format(TOPIC, gateway.getDroneSn())); } } public void unsubscribe(GatewayManager gateway) { SDKManager.logoutDevice(gateway.getGatewaySn()); topicService.unsubscribe(String.format(TOPIC, gateway.getGatewaySn())); if (null != gateway.getDroneSn()) { topicService.unsubscribe(String.format(TOPIC, gateway.getDroneSn())); } } }