
//
// Trust Design LLC : SECS/HSMS Communication library
//
// (c) Copyright Trust Design LLC.  2010-2020.  All rights reserved.
//

#pragma once

#include	"TDS.h"


class		CTDSSample2Proc					// TDS I/F クラス
{
public:
  int		m_Fd;							// 通信用識別子
  int		m_Md;							// メッセージ解析用識別子
  int		m_Status;						// 動作状態
											// (0:未接続 1:未Select 2:Select)
  int		m_OType;						// 処理タイプ       (0:装置    1:ホスト)
  int		m_Stop0;						// SECS受信終了指示
  int		m_Stop1;						// 連続送信終了指示
  int		m_CRun;							// 連続送信指示状態 (0:未指示  1:指示中)
  int		m_CRunP;						// 連続送信処理状態 (0:未実行  1:実行中)
  CWinThread		*m_Thread0;				// SECS受信スレッド
  CWinThread		*m_Thread1;				// 連続送信スレッド
  CRITICAL_SECTION	m_cs0;					// 終了処理ロック用 
  CRITICAL_SECTION	m_cs1;					// 表示処理ロック用

			CTDSSample2Proc	();				// コンストラクタ
			~CTDSSample2Proc();	

  int		CBRecv			(void *par, TDSCBData *cbd);	// 受信用 Callback
  int		CBSend			(void *par, TDSCBData *cbd);	// 送信用 Callback

  int		Initialize		(int type);			// TDS 初期化
  int		Terminate		();					// TDS 終了
  int		GetStatus		();					// 現在状態取得
  int		GetCRun			();					// 連続送信処理状態取得

  int		SendS1F1		();							// S1F1			送信要求
  int		SendS1F2H		(int did, unsigned int xid);// S1F2 (ホスト)	:
  int		SendS1F2E		(int did, unsigned int xid);// S1F2 (装置)		:
  int		SendS1F21		();							// S1F21			:
  int		SendS1F22		(int did, unsigned int xid);// S1F22			:
  int		SendS2F49		();							// S2F49(ホスト)	:
  int		SendS2F50		(int did, unsigned int xid);// S2F50(装置)		:
  int		SendS6F11		();							// S6F11(装置)		:
  int		SendS6F12		(int did, unsigned int xid);// S6F12(ホスト)	:
  int		SendNamedMssg	(char* name);				// 任意名称メッセージ送信

  void		ContRecvStart	();					// Mssg受信処理開始指示
  void		ContRecvStop	();					// Mssg受信処理終了指示
  void		ContSendStart	();					// 連続送信処理開始指示
  void		ContSendStop	();					// 連続送信処理終了指示

  int		DispData		(int type, TDSECSHead *hd, void *msg, int len, int rtn);
  void		DispSECSMssg	(int type, TDSECSHead *hd, void *msg, int len);
};
