/*----------------------------------------------------------------------------*/ /* Copyright (c) 2018 FIRST. All Rights Reserved. */ /* Open Source Software - may be modified and shared by FRC teams. The code */ /* must be accompanied by the FIRST BSD license file in the root directory of */ /* the project. */ /*----------------------------------------------------------------------------*/ #ifndef RPICONFIGSERVER_VISIONSTATUS_H_ #define RPICONFIGSERVER_VISIONSTATUS_H_ #include #include #include #include #include #include #include namespace wpi { class json; namespace uv { class Buffer; } // namespace uv } // namespace wpi class VisionStatus { struct private_init {}; public: explicit VisionStatus(const private_init&) {} VisionStatus(const VisionStatus&) = delete; VisionStatus& operator=(const VisionStatus&) = delete; void SetLoop(std::shared_ptr loop); void Up(std::function onFail); void Down(std::function onFail); void Terminate(std::function onFail); void Kill(std::function onFail); void UpdateStatus(); void ConsoleLog(wpi::uv::Buffer& buf, size_t len); void UpdateCameraList(); wpi::sig::Signal update; wpi::sig::Signal log; wpi::sig::Signal cameraList; static std::shared_ptr GetInstance(); private: void RunSvc(const char* cmd, std::function onFail); void RefreshCameraList(); std::shared_ptr m_loop; struct CameraInfo { cs::UsbCameraInfo info; std::vector modes; }; std::vector m_cameraInfo; }; #endif // RPICONFIGSERVER_VISIONSTATUS_H_