/*
 * プロセスデータのハンドリングを行うクラスヘッダー
 * ProcessData.h
 *
 *  Created on: 2018/09/12
 *      Author: shingo
 */

#ifndef CATMASTER_PROCESSDATABUFFER_H_
#define CATMASTER_PROCESSDATABUFFER_H_

#include <EcType.h>

#define BUFFER_COUNT (2)

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

    void init(EC_T_WORD, EC_T_WORD);

    EC_T_BYTE* getRxFreeBuffer();
    void indRxEnd(EC_T_BYTE*);
    EC_T_BYTE* getInDataReceivedBuffer();
    void indRxMoveEnd(EC_T_BYTE*);

    EC_T_BYTE* getTxDataBuffer();
    void indTxEnd(EC_T_BYTE*);
    EC_T_BYTE* getOutDataWriteBuffer();
    void indMoveEnd(EC_T_BYTE*);

    void checkTxAddr(EC_T_BYTE*);


    EC_T_WORD txBufferByteSize;         // 送信（出力）バッファのbyteサイズ
    EC_T_WORD rxBufferByteSize;         // 受信（入力）バッファのbyteサイズ

private:
    EC_T_BYTE *processRx[BUFFER_COUNT];
    EC_T_BYTE *processTx[BUFFER_COUNT];

    int txDataState[BUFFER_COUNT];      // 出力用データバッファ状態
    int rxDataState[BUFFER_COUNT];      // 入力用データバッファ状態





};

#endif /* CATMASTER_PROCESSDATABUFFER_H_ */
