Skip to content

File CameraManager.hpp

File List > CameraManager > CameraManager.hpp

Go to the documentation of this file

#ifndef ORION_CAMERA_MANAGER_HPP
#define ORION_CAMERA_MANAGER_HPP

#include "Orion/Components/CameraManager/CameraManagerComponentAc.hpp"

namespace Orion {

class CameraManager final : public CameraManagerComponentBase {
  public:
    explicit CameraManager(const char* compName);
    ~CameraManager();

  private:
    // -----------------------------------------------------------------------
    // Command handlers
    // -----------------------------------------------------------------------

    void TRIGGER_CAPTURE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;

    void ENABLE_AUTO_CAPTURE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U32 interval) override;

    void DISABLE_AUTO_CAPTURE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;

    // -----------------------------------------------------------------------
    // Port handlers
    // -----------------------------------------------------------------------

    void schedIn_handler(FwIndexType portNum, U32 context) override;

    void modeChangeIn_handler(FwIndexType portNum, const Orion::MissionMode& mode) override;

    // -----------------------------------------------------------------------
    // Helpers
    // -----------------------------------------------------------------------

    bool captureIntoBuffer(Fw::Buffer& buf);

    void doCapture();

    // -----------------------------------------------------------------------
    // State
    // -----------------------------------------------------------------------

    U32 m_imagesCaptured;
    U32 m_capturesFailed;
    bool m_autoCaptureEnabled;  
    U32 m_autoCaptureInterval;  
    U32 m_schedCounter;         
    MissionMode m_currentMode;  
};

}  // namespace Orion

#endif  // ORION_CAMERA_MANAGER_HPP