package com.example.iot_controlhost.utils.control;

import com.example.iot_controlhost.utils.PollingTask;
import com.example.iot_controlhost.utils.global.RxTag;
import com.example.iot_controlhost.utils.log.MyLog;
import com.xuexiang.rxutil2.rxbus.RxBusUtils;

/**
 * @Description 自动控制父类
 * @Author DuanKaiji
 * @CreateTime 2023年11月09日 10:27:46
 */
public abstract class Control {
    /**
     * 是否在开始中
     */
    protected boolean start = false;

    protected PollingTask pollingTask ;

    /**
     * 开始控制
     */
    public void start() {
        if (start) {
            return;
        }
        pollingTask = PollingTask.getInstance(getClass().getSimpleName());
        start = startMethod();
    }

    /**
     * 开始自动控制的具体实现
     *
     * @return 操作成功与否
     */
    protected abstract boolean startMethod();

    /**
     * 停止控制
     */
    public void stop() {
        if(pollingTask != null){
            pollingTask.stopAllPollingTasks();
        }
        if (!start) {
            return;
        }
        stopMethod();
        RxBusUtils.get().post(RxTag.UPDATE_AUTO, 2);
        start = false;
    }

    /**
     * 停止自动控制的具体实现
     */
    protected abstract void stopMethod();
}
