/*
 * CatMasterInfo.h
 *
 *  Created on: 2018/09/26
 *      Author: shingo
 */

#ifndef CATMASTER_CATMASTERINFO_H_
#define CATMASTER_CATMASTERINFO_H_

#include <AtEthercat.h>

#include "LinkLayerParam.h"

class CatMasterInfo
{
public:
    CatMasterInfo();
    virtual ~CatMasterInfo();

    void getMasterParam(EC_T_INIT_MASTER_PARMS*, EC_T_LINK_PARMS*,  int);

    static const EC_T_DWORD BusCycleTimeUsec = 1000;        // サイクリック周期(uSec)

private:
    /** リンクレイヤ情報生成クラス */
    LinkLayerParam linkLayerParam;
#if 0 // ぎがぽーとは未使用
    /** ギガポート(CPSW)用リンクレイヤーパラメータ */
    EC_T_LINK_PARMS_CPSW linkParamsCpsq;
#endif


//    EC_T_INIT_MASTER_PARMS initMasterParam;
    /** リンクレイヤーパラメータ */
 //   EC_T_LINK_PARMS linkParams;
    /** マスター内部の事前割り当てバススレーブオブジェクトの最大数 */
    static const EC_T_DWORD MaxBusSlaves = 256;     // 定義数以上のスレーブがバスに接続されている場合、バススキャン通知でEC_E_MAX_BUS_SLAVES_EXCEEDED
    /** 非同期EtherCATコマンド（メールBOX等）を保存するキューMAX */
    static const EC_T_DWORD MaxQueuedPrames = 32;   // 最大値は127
    /** フレーム内に格納するEtherCATコマンド数 */
    static const EC_T_DWORD MaxSlaveCmdPerFrame = 32;    // 0：可能なコマンド数をセットする
    /* eUsrJob_SendAcycFramesにより送信される最大フレーム数 */
    static const EC_T_DWORD MaxSentQufrmPerCyc = 3;      // サイクルリック周期が１mS以下の場合は"1"とする
    /** EtherCatコマンドのペンディング中タイムアウトに対するリトライ数 */
    static const EC_T_DWORD MaxEcatCmdRetries = MASTER_CFG_MAX_ACYC_CMD_RETRIES;       //
    /** Eoe応答タイムアウト時間 */
    static const EC_T_DWORD EoeTimeout = 1000;           // mS
    /** */
    static const EC_T_DWORD FoeBusyTimeout = 250;        // ？　未使用？
    /* ログレベル(1：危険、2：エラー、3:警告、4:情報、5:詳細) */
    static const EC_T_DWORD LogLevel = 4;
};

#endif /* CATMASTER_CATMASTERINFO_H_ */
