//---------------------------------------------------------------------------

#ifndef LTR210_PROCESS_THREAD_H_
#define LTR210_PROCESS_THREAD_H_

#include "ltr/include/ltr210api.h"
#include <vcl.h>


class LTR210_ProcessThread : public TThread {

protected:
    void __fastcall Execute();

public:
     //элементы управления для отображения результатов обработки
    TEdit* edtChAvg[LTR210_CHANNEL_CNT];
    TEdit* edtValidFrameCntr;
    TEdit* edtInvalidFrameCntr;
    TEdit* edtSyncSkipCntr;
    TEdit* edtOverlapCntr;
    TEdit* edtInvalidHistCntr;

    TLTR210* phltr210; //описатель модуля

    bool stop;  //запрос на останов (устанавливается из основного потока)
    INT err;  //код ошибки при выполнении потока сбора

    __fastcall LTR210_ProcessThread(bool CreateSuspended);

private:
    void __fastcall updateData() ;
    void __fastcall checkFrameStatusFlags(WORD status_flags);

     // среднее в кадре по каждому каналу
    double ChAvg [LTR210_CHANNEL_CNT];
    // признак, что есть вычесленные данные по каналам в ChAvg
    bool ChValidData[LTR210_CHANNEL_CNT];
    // счетчик правильно принятых кадров
    int ValidFrameCntr;
    // счетчик кадров, принятых с ошибкой
    int InvalidFrameCntr;
    // счетчик кадров с пропуском события синхронизации
    int SyncSkipCntr;
    // счетчик кадров где указатель записи обогнал указатель чтения
    int OverlapCntr;
    // счетчик кадров с неверной предисторией
    int InvalidHistCntr;  
};



//---------------------------------------------------------------------------
#endif