#ifndef DEVICE_CTRL_VIDICON_H
#define DEVICE_CTRL_VIDICON_H
#include <string>

#include "wbs/vidicon/vidicon_config.pb.h"
#include "common/utils/biz_lock.h"


namespace zsy
{
    /**
     * 摄像机
     */
    class Vidicon
    {
    public:
        enum VidiconStatus : uint8_t
        {
            // 不可用
            Unavailable,
            Available,
            Stopped,
        };

    protected:
        VidiconConfig config;
        VidiconStatus status;
        std::shared_ptr<BizLock> bizLock;

    public:
        explicit Vidicon(VidiconConfig config);

        /**
         * 获取设备编号
         *
         * @return 设备编号
         */
        std::string sn() const;

        /**
         * 获取设备名称
         *
         * @return 设备名称
         */
        std::string name() const;

        virtual ~Vidicon() = default;

        virtual std::string photograph() = 0;
    };
}


#endif //DEVICE_CTRL_VIDICON_H