You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
215 lines
12 KiB
C++
215 lines
12 KiB
C++
#if !defined SGMANAGER_H
|
|
#define SGMANAGER_H
|
|
|
|
#include "ISGManager.h"
|
|
#include "BufferedSocket.h"
|
|
#include "SGLogger.h"
|
|
|
|
#define MAXSOCKBUF 4096
|
|
#define SG_END_TERMINATOR '\n'
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
// SGManager.h : header file
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSGManager document
|
|
|
|
/*************************************************************************************/
|
|
class ISGManagerObserver;
|
|
class CSGManager : public ISGManager, IBufferSocketCallBack
|
|
{
|
|
public:
|
|
CSGManager();
|
|
virtual ~CSGManager();
|
|
|
|
void EnableEventForAllMode();
|
|
void DisableEventForAllMode(); // Note: Event Enable in PRODUCTION Mode
|
|
CString GetControlState();
|
|
CString GetLinkState();
|
|
bool IsOnlineRemote();
|
|
bool IsEnableCommunicating();
|
|
bool IsOnlineLocal();
|
|
bool IsSpoolActive();
|
|
bool IsConnectWithSecsGem(); // check for connection between handler and Ti secs gem
|
|
bool m_bDataComplete;
|
|
std::string m_RcvBuff;
|
|
void OnReceive(const char *buf, int size);
|
|
void OnDisconnect(int errorCode);
|
|
void ResetReceiveBuffer();
|
|
/**********************************************************************/
|
|
// LPTSTR psMsg;
|
|
protected:
|
|
/******************************* To Hanlder info ***********************/
|
|
CString m_strSecsGemConnection;
|
|
CString m_sSGMainMode;
|
|
CString m_sSGLoginUser;
|
|
CString m_sMachineState;
|
|
bool m_bIsSecsGemEnabled;
|
|
|
|
PROCESS_INFORMATION g_pi;
|
|
/**********************************************************************/
|
|
/**********************************************************************/
|
|
int m_NumberOfDay;
|
|
/**********************************************************************/
|
|
public:
|
|
/************** Handler Calling Functions *****************************/
|
|
bool ConnectSocketSecsGem(); // To make connection with Independent Secs/Gem
|
|
bool DisconnectSocketSecsGem(); // To disconnect Secs/Gem application
|
|
|
|
// Secsgem Application Function
|
|
void SetEnableLogFile(bool bEnable = true);
|
|
void SetLogLevel(CString level);
|
|
void SetNumberOfDaysKeepInMemoryForLogFile(int nDays = 30);
|
|
bool SetSecsGemIpAddressAndPort(ISGManagerObserver * pObserver, int iPort, const char *pStrIpAddress, bool bConnect = false);
|
|
bool StartAndConnectSecsGemApplication(ISGManagerObserver *pObserver); // To Start Secs/Gem application and connect
|
|
bool CloseSecsGemApplication(); // To close secsgem application
|
|
bool StartSecsGemApplication(); // To start Secsgem application
|
|
|
|
// SecsGem Status Function
|
|
bool GoOnLine(); // To switch to SecsGem Online mode
|
|
bool GoOffline(); // To switch to SecsGem Offline mode
|
|
bool GoRemote(); // To switch to Online/Remote control state
|
|
bool GoLocal(); // To switch to Online/Local control state
|
|
bool SecsGemDisableLink(); // To disable SecsGem Link
|
|
bool SecsGemEnableLink(); // To enable Secsgem Link
|
|
bool SetMainMode(CString sMode); // To set Main Mode
|
|
bool SetUserLevel(CString sUserLevel); // To set User level
|
|
bool SetProcessState(CString sProcessState); // To set process state
|
|
bool UpdateCurrentParameters(); // To send current mainmode, user and process state to secsgem appln
|
|
|
|
// Send Event Function
|
|
bool SendEvent(unsigned int iEventID); // To send Event,iEventReply:0= No need to Watit Event Reply
|
|
|
|
// Update Variable Function
|
|
bool SetVariableValue(UINT iVariableID, UINT iFormat, int iValue); // To set Integer Variable value
|
|
bool SetVariableValue(UINT iVariableID, UINT iFormat, long iValue); // To set Long variable value
|
|
bool SetVariableValue(UINT iVariableID, UINT iFormat, CString iValue); // To set string variable value
|
|
bool SetVariableValue(UINT iVariableID, UINT iFormat, double iValue); // To set floating point variable value
|
|
|
|
// Alarm Function
|
|
bool SendAlarmOn(UINT iAlarmID, CString sAlarmText); // To send Alarm On
|
|
bool SendAlarmOff(UINT iAlarmID, CString sAlarmText); // To send Alarm Off
|
|
bool ClearAllAlarms(); // To clear all alarms
|
|
|
|
// Data Set Function
|
|
bool UploadData(CString strName); // To Upload Data
|
|
bool DownloadData(CString strName); // To download data
|
|
bool ResetData(); // To reset data
|
|
|
|
// Wafer map Function
|
|
bool DownloadWaferMap(CString sWMapID, int nType = 2, int nFormat = 1, int nFNLoc = 0, int nRotAngle = 0, int nOrgLoc = 0, CString strBinCodeEq = "", CString strNullBinCodeEq = "");
|
|
bool UploadWaferMap(CString strName); // To Upload Wafer Map
|
|
bool DownloadStripMap(CString strName); // To download strip Map
|
|
|
|
bool DisplayTerminalMsgDialog(); // To display terminal message
|
|
bool AcknowledgeRemoteCommand(CString sRmtCmd, int iReturnVal); // To acknowledge remote command
|
|
|
|
// Process Program Management(Recipe)
|
|
bool DownloadRecipe(CString strName); // To download recipe
|
|
bool UploadRecipe(CString strName); // To Upload recipe
|
|
bool UpdateRecipeList(); // To update recipe list
|
|
|
|
// ***************************************************************
|
|
// Verify recipe after download recipe, then send S7F27 for PASS or FAIL
|
|
// strResultData = "PASS": successful load recipe
|
|
// strResultData = "FAIL": Fail to load recipe
|
|
// Note:Do not use this function unless customer request
|
|
// ***************************************************************
|
|
bool SendRecipeVerification(CString strResultData); // reply to host
|
|
|
|
// ***************************************************************
|
|
// To Add Recipe
|
|
// bRefreshRecipe = true :Not Send GemPPChangeEvent to host
|
|
// bRefreshRecipe = false :Send GemPPChangeEvent with PPCHANGESTATUS(Created) to host
|
|
// ***************************************************************
|
|
bool AddRecipe(CString strName, bool bRefreshRecipe = false);
|
|
|
|
// ***************************************************************
|
|
// After delete Recipe file at C:\\PPDER and D:\\PPDER,
|
|
// then send GemPPChangeEvent with PPCHANGESTATUS(Deleted) to host.
|
|
// ****************************************************************
|
|
bool DeleteRecipe(CString strName); // To delete Recipe
|
|
|
|
// ***************************************************************
|
|
// bRefreshRecipe = true :Delete all recipe at C:\\PPDIR only
|
|
// bRefreshRecipe = false :Delete all recipe at C:\\PPDIR and D:\\PPDIR
|
|
// ***************************************************************
|
|
bool DeleteAllRecipe(bool bRefreshRecipe = false);
|
|
|
|
// ***************************************************************
|
|
// Send GemPPChangeEvent with PPCHANGESTATUS(Changed) to host.
|
|
// After edit recipe, need to call this function to inform to host.
|
|
// ****************************************************************
|
|
bool EditRecipe(CString strName);
|
|
|
|
// ***************************************************************
|
|
// Send EPT Module Data to host.
|
|
// ****************************************************************
|
|
bool SendEPTData(int nModuleID, CString strTaskName, int nTaskType, int nEPTState, int nBlockedReson, CString strBlockedReasonText);
|
|
public:
|
|
void OnReceivedControlState(CString m_sControlState); // This function is called when Control State change is received
|
|
void OnReceivedLinkState(CString m_sLinkState); // This function is called when Link State change is received
|
|
void OnReceivedSpoolState(CString m_sSpoolState); // This function is called when Spool State change is received
|
|
void OnWaferMapDownloaded(CString m_sWaferMapDownloaded); // This function is called when Wafer Map downloaded
|
|
void OnStripMapDownloaded(CString m_sStripMapDownloaded); // This function is called when Strip Map downloaded
|
|
void OnWaferMapUploaded(CString m_sWaferMapUploaded); // This function is called when Wafer Map Uploaded
|
|
void OnRecipeDownloaded(CString m_sRecipeDownloaded); // This function is called when Recipe is downloaded from Host
|
|
void OnRecipeUploaded(CString m_sRecipeUploaded); // This function is called when Recipe is uploaded.
|
|
void OnRecipeDeleted(CString m_sRecipeDeleted); // This function is called when Recipe is deleted.
|
|
void OnRecipeAdded(CString m_sAddedRecipe); // This function is called when Recipe is added
|
|
void OnDatasetUploaded(CString m_sDatasetUploaded); // This function is called when Data Set uploaded
|
|
void OnDatasetDownloaded(CString m_sDatasetDownloaded); // This function is called when Dataset downloaded from Host
|
|
void OnRemoteCommandReceived(CString m_sRemoteCmdReceived, int nReply = 0); // This function is called when a Remote command is received
|
|
void OnRecipeUpdateNumberOfRecipe(CString m_sNumberOfRecipe); // This function is called when Number recipe received
|
|
void OnRecipeUpdateNthRecipe(unsigned int iRecipeNumber, CString m_sNthRecipe); // This function is called to updated Nth Recipe
|
|
void OnRecipeUpdatedList(); // This function is called when updated Recipe List.
|
|
void OnReceivedPendingMessage(CString m_sPendingReadMsg); // This function is called whenever message received
|
|
void OnReceivedE10State(CString m_sE10State); // This function is called when E10 State change is received
|
|
|
|
void SetSecsGemDataFileFolder(CString m_sSGDataFileFolder); // Write secs gem data to this file
|
|
void OnAllRecipeDeleted(CString m_sRecipeDeleted);
|
|
void OnRecipeEdited(CString m_sRecipeEdited);
|
|
void OnECChanged(CString sECID, CString sECData); // Thi function is call when host change ECID value.
|
|
protected:
|
|
virtual void NotifyHandler(WPARAM wParam, LPARAM lParam);
|
|
private:
|
|
/************************** private fields **************************/
|
|
int m_nSGPort;
|
|
char m_szSGIpAddress[128];
|
|
ISGManagerObserver *m_pObserver;
|
|
/******************************* To Hanlder Info ***********************/
|
|
int m_iEnableForAllMode;
|
|
CString m_sControlState;
|
|
CString m_sLinkState;
|
|
CString m_sSpoolState;
|
|
CString m_sWaferMapDownloaded;
|
|
CString m_sStripMapDownloaded;
|
|
CString m_sWaferMapUploaded;
|
|
CString m_sRecipeDownloaded;
|
|
CString m_sRecipeUploaded;
|
|
CString m_sRecipeDeleted;
|
|
CString m_sAddedRecipe;
|
|
CString m_sDatasetUploaded;
|
|
CString m_sDatasetDownloaded;
|
|
CString m_sRemoteCmdReceived;
|
|
CString m_sNumberOfRecipe;
|
|
CString m_sNthRecipe;
|
|
CString m_sE10State;
|
|
CString m_sGeneralCmdReceived;
|
|
|
|
unsigned int iRecipeNumber;
|
|
|
|
CString m_sPendingReadMsg;
|
|
CString m_sSecsGemDataFile;
|
|
CSGLogger logger;
|
|
private:
|
|
/************************** private methods *************************/
|
|
bool SendMsgToSecsGem(CString pStr);
|
|
bool static SkipToNextData(char **ppStr);
|
|
CString GetNextData(char **ppStr);
|
|
CBufferedSocket* m_pSocketSecsGem;
|
|
};
|
|
#endif // !defined(AFX_SGMANAGER_H__3247996A_39A5_48E2_B94A_27CC7247F08C__INCLUDED_)
|