#pragma once

#include "DllDefines.h"

// ISGManager.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CSGManager document

/*************************************************************************************/
class ISGManagerObserver;

class SECSGEM_DLL ISGManager
{
public:
    virtual ~ISGManager()
    {
    }

    virtual bool AcknowledgeRemoteCommand(std::string sRmtCmd, int iReturnVal)                                                                                                                               = 0;
    virtual bool AddRecipe(std::string strName, bool bRefreshRecipe = false)                                                                                                                                 = 0;
    virtual bool ClearAllAlarms()                                                                                                                                                                            = 0;
    virtual bool CloseSecsGemApplication()                                                                                                                                                                   = 0;
    virtual bool DeleteAllRecipe(bool bRefreshRecipe = false)                                                                                                                                                = 0;
    virtual bool DeleteRecipe(std::string strName)                                                                                                                                                           = 0;
    virtual bool ConnectSocketSecsGem(bool bUpdateParameter = true)                                                                                                                                          = 0;
    virtual void DisableEventForAllMode()                                                                                                                                                                    = 0;
    virtual bool DisconnectSocketSecsGem()                                                                                                                                                                   = 0;
    virtual bool DisplayTerminalMsgDialog()                                                                                                                                                                  = 0;
    virtual bool DownloadData(std::string strName)                                                                                                                                                           = 0;
    virtual bool DownloadRecipe(std::string strName)                                                                                                                                                         = 0;
    virtual bool DownloadStripMap(std::string strName)                                                                                                                                                       = 0;
    virtual bool DownloadWaferMap(std::string sWMapID, int nType = 2, int nFormat = 1, int nFNLoc = 0, int nRotAngle = 0, int nOrgLoc = 0, std::string strBinCodeEq = "", std::string strNullBinCodeEq = "") = 0;
    virtual bool EditRecipe(std::string strName)                                                                                                                                                             = 0;
    virtual void EnableEventForAllMode()                                                                                                                                                                     = 0;
    virtual std::string GetLinkState()                                                                                                                                                                       = 0;
    virtual bool GoLocal()                                                                                                                                                                                   = 0;
    virtual bool GoOffline()                                                                                                                                                                                 = 0;
    virtual bool GoOnLine()                                                                                                                                                                                  = 0;
    virtual bool GoRemote()                                                                                                                                                                                  = 0;
    virtual bool IsConnectWithSecsGem()                                                                                                                                                                      = 0;
    virtual bool IsEnableCommunicating()                                                                                                                                                                     = 0;
    virtual bool IsOnlineLocal()                                                                                                                                                                             = 0;
    virtual bool IsOnlineRemote()                                                                                                                                                                            = 0;
    virtual bool IsSpoolActive()                                                                                                                                                                             = 0;
    virtual bool ResetData()                                                                                                                                                                                 = 0;
    virtual bool SecsGemDisableLink()                                                                                                                                                                        = 0;
    virtual bool SecsGemEnableLink()                                                                                                                                                                         = 0;
    virtual bool SendAlarmOff(UINT iAlarmID, std::string sAlarmText)                                                                                                                                         = 0;
    virtual bool SendAlarmOn(UINT iAlarmID, std::string sAlarmText)                                                                                                                                          = 0;
    virtual void SetEnableLogFile(bool bEnable)                                                                                                                                                              = 0;
    virtual bool SendEPTData(int nModuleID, std::string strTaskName, int nTaskType, int nEPTState, int nBlockedReson, std::string strBlockedReasonText)                                                      = 0;
    virtual bool SendEvent(unsigned int iEventID)                                                                                                                                                            = 0;
    virtual bool SendRecipeVerification(std::string strResultData)                                                                                                                                           = 0;
    virtual void SetLogLevel(std::string level)                                                                                                                                                              = 0;
    virtual bool SetMainMode(std::string sMode)                                                                                                                                                              = 0;
    virtual bool SetProcessState(std::string sProcessState)                                                                                                                                                  = 0;
    virtual void SetSecsGemDataFileFolder(std::string m_sSGDataFileFolder)                                                                                                                                   = 0;
    virtual bool SetSecsGemIpAddressAndPort(ISGManagerObserver* pObserver, int iPort, const char* pStrIpAddress, bool bConnect = false, bool bUpdateParameter = true)                                        = 0;
    virtual bool SetUserLevel(std::string sUserLevel)                                                                                                                                                        = 0;
    virtual bool SetVariableValue(UINT iVariableID, UINT iFormat, int iValue)                                                                                                                                = 0;
    virtual bool SetVariableValue(UINT iVariableID, UINT iFormat, long iValue)                                                                                                                               = 0;
    virtual bool SetVariableValue(UINT iVariableID, UINT iFormat, std::string iValue)                                                                                                                        = 0;
    virtual bool SetVariableValue(UINT iVariableID, UINT iFormat, double iValue)                                                                                                                             = 0;
    virtual bool StartSecsGemApplication()                                                                                                                                                                   = 0;
    virtual bool UpdateRecipeList()                                                                                                                                                                          = 0;
    virtual bool UploadData(std::string strName)                                                                                                                                                             = 0;
    virtual bool UploadRecipe(std::string strName)                                                                                                                                                           = 0;
    virtual bool UploadWaferMap(std::string strName)                                                                                                                                                         = 0;
    virtual bool SendMsgToSecsGem(std::string pStr)                                                                                                                                                          = 0;
    virtual void SetWinHandler(HWND hHandler)                                                                                                                                                                = 0;
    virtual void NotifyHandlerToConnect()                                                                                                                                                                    = 0;
};
