#pragma once

// Boxes
//---------------------------------------------------------------------------------------------------
#define OVP_ClassId_GDFFileReader											OpenViBE::CIdentifier(0x3EEB1264, 0x4EDFBD9A)
#define OVP_ClassId_GDFFileReaderDesc										OpenViBE::CIdentifier(0x2E2543C1, 0x47E3739E)
#define OVP_ClassId_GDFFileWriter											OpenViBE::CIdentifier(0x1E7B2155, 0x107289CE)
#define OVP_ClassId_GDFFileWriterDesc										OpenViBE::CIdentifier(0x375BF8EC, 0x023ACEEB)
#define OVP_ClassId_GenericStreamReader										OpenViBE::CIdentifier(0x0B1D880D, 0x02A17229)
#define OVP_ClassId_GenericStreamReaderDesc									OpenViBE::CIdentifier(0x1E8AAB1A, 0x085D72F6)
#define OVP_ClassId_GenericStreamWriter										OpenViBE::CIdentifier(0x78EA86B0, 0x2933E255)
#define OVP_ClassId_GenericStreamWriterDesc									OpenViBE::CIdentifier(0x02817C77, 0x77FE3D6A)
#define OVP_ClassId_BCICompetitionIIIbReader								OpenViBE::CIdentifier(0x0085B814, 0x6E45DA7E)
#define OVP_ClassId_BCICompetitionIIIbReaderDesc							OpenViBE::CIdentifier(0x00CC1B39, 0x206A17AE)
#define OVP_ClassId_BoxAlgorithm_CSVFileWriter								OpenViBE::CIdentifier(0x2C9312F1, 0x2D6613E5)
#define OVP_ClassId_BoxAlgorithm_CSVFileWriterDesc							OpenViBE::CIdentifier(0x65075FF7, 0x2B555E97)
#define OVP_ClassId_BoxAlgorithm_CSVFileReader								OpenViBE::CIdentifier(0x641D0717, 0x02884107)
#define OVP_ClassId_BoxAlgorithm_CSVFileReaderDesc							OpenViBE::CIdentifier(0x193F22E9, 0x26A67233)

// Brainamp File
//---------------------------------------------------------------------------------------------------
#define OVP_ClassId_Algorithm_BrainampFileReader							OpenViBE::CIdentifier(0x2533718F, 0x07AB3AF5)
#define OVP_ClassId_Algorithm_BrainampFileReaderDesc						OpenViBE::CIdentifier(0x2C5B2D6C, 0x242253CF)

#define OVP_ClassId_BoxAlgorithm_BrainampFileReader							OpenViBE::CIdentifier(0x61894B28, 0x185E57D2)
#define OVP_ClassId_BoxAlgorithm_BrainampFileReaderDesc						OpenViBE::CIdentifier(0x77C650B0, 0x41386F47)

#define OVP_Algorithm_BrainampFileReader_InputParameterId_Filename			OpenViBE::CIdentifier(0x000C486C, 0x477C80B9)
#define OVP_Algorithm_BrainampFileReader_InputParameterId_EpochDuration		OpenViBE::CIdentifier(0x002AEE72, 0x288D489E)
#define OVP_Algorithm_BrainampFileReader_InputParameterId_SeekTime			OpenViBE::CIdentifier(0x00627156, 0x55790CAE)
#define OVP_Algorithm_BrainampFileReader_InputParameterId_ConvertStimuli	OpenViBE::CIdentifier(0x537445DC, 0x6C792A96)
#define OVP_Algorithm_BrainampFileReader_InputParameterId_MarkerDictionaryFilename	OpenViBE::CIdentifier(0x1F044ABB, 0x5AACf062)

#define OVP_Algorithm_BrainampFileReader_OutputParameterId_CurrentStartTime	OpenViBE::CIdentifier(0x003CE019, 0x3DADE050)
#define OVP_Algorithm_BrainampFileReader_OutputParameterId_CurrentEndTime	OpenViBE::CIdentifier(0x3B87DE16, 0xB8EFB2FB)
#define OVP_Algorithm_BrainampFileReader_OutputParameterId_Sampling			OpenViBE::CIdentifier(0x00D3CABB, 0x339326C2)
#define OVP_Algorithm_BrainampFileReader_OutputParameterId_SignalMatrix		OpenViBE::CIdentifier(0x0073A91A, 0x6D1D3D26)
#define OVP_Algorithm_BrainampFileReader_OutputParameterId_Stimulations		OpenViBE::CIdentifier(0x008F7C49, 0x6ED710A9)

#define OVP_Algorithm_BrainampFileReader_InputTriggerId_Open				OpenViBE::CIdentifier(0x00BCF286, 0x6F5FA2F4)
#define OVP_Algorithm_BrainampFileReader_InputTriggerId_Seek				OpenViBE::CIdentifier(0x00C3ACAB, 0x4E3DE014)
#define OVP_Algorithm_BrainampFileReader_InputTriggerId_Next				OpenViBE::CIdentifier(0x003CD062, 0x739F973E)
#define OVP_Algorithm_BrainampFileReader_InputTriggerId_Close				OpenViBE::CIdentifier(0x003462EA, 0x031FB8FA)

#define OVP_Algorithm_BrainampFileReader_OutputTriggerId_Error				OpenViBE::CIdentifier(0x00B1E3DF, 0x3ABC6C5A)
#define OVP_Algorithm_BrainampFileReader_OutputTriggerId_DataProduced		OpenViBE::CIdentifier(0x00E7D5F9, 0x1471AFF2)

#define OVP_ClassId_BoxAlgorithm_BrainampFileWriter							OpenViBE::CIdentifier(0xABACC29F, 0xD5A0E5A8)
#define OVP_ClassId_BoxAlgorithm_BrainampFileWriterDesc						OpenViBE::CIdentifier(0x6347C864, 0x8483E2DF)

// OV Matrix File Reader
//---------------------------------------------------------------------------------------------------
#define OVP_ClassId_Algorithm_OVMatrixFileReader							OpenViBE::CIdentifier(0x10661A33, 0x0B0F44A7)
#define OVP_ClassId_Algorithm_OVMatrixFileReaderDesc						OpenViBE::CIdentifier(0x0E873B5E, 0x0A287FCB)

#define OVP_Algorithm_OVMatrixFileReader_InputParameterId_Filename			OpenViBE::CIdentifier(0x28F87B29, 0x0B09737E)

#define OVP_Algorithm_OVMatrixFileReader_OutputParameterId_Matrix			OpenViBE::CIdentifier(0x2F9521E0, 0x027D789F)

#define OVP_Algorithm_OVMatrixFileReader_InputTriggerId_Open				OpenViBE::CIdentifier(0x2F996376, 0x2A942485)
#define OVP_Algorithm_OVMatrixFileReader_InputTriggerId_Load				OpenViBE::CIdentifier(0x22841807, 0x102D681C)
#define OVP_Algorithm_OVMatrixFileReader_InputTriggerId_Close				OpenViBE::CIdentifier(0x7FDE77DA, 0x384A0B3D)

#define OVP_Algorithm_OVMatrixFileReader_OutputTriggerId_Error				OpenViBE::CIdentifier(0x6D4F2F4B, 0x05EC6CB9)
#define OVP_Algorithm_OVMatrixFileReader_OutputTriggerId_DataProduced		OpenViBE::CIdentifier(0x76F46051, 0x003B6FE8)

#define OVP_ClassId_Algorithm_OVMatrixFileWriter							OpenViBE::CIdentifier(0x739158FC, 0x1E8240CC)
#define OVP_ClassId_Algorithm_OVMatrixFileWriterDesc						OpenViBE::CIdentifier(0x44CF6DD0, 0x329D47F9)

#define OVP_Algorithm_OVMatrixFileWriter_InputParameterId_Filename			OpenViBE::CIdentifier(0x330D2D0B, 0x175271E6)
#define OVP_Algorithm_OVMatrixFileWriter_InputParameterId_Matrix			OpenViBE::CIdentifier(0x6F6402EE, 0x493044F3)

// ElectrodeLocalisationFileReader
//---------------------------------------------------------------------------------------------------
#define OVP_ClassId_BoxAlgorithm_ElectrodeLocalisationFileReader			OpenViBE::CIdentifier(0x40704155, 0x19C50E8F)
#define OVP_ClassId_BoxAlgorithm_ElectrodeLocalisationFileReaderDesc		OpenViBE::CIdentifier(0x4796613F, 0x653A48D5)

// Global defines
//---------------------------------------------------------------------------------------------------
#ifdef TARGET_HAS_ThirdPartyOpenViBEPluginsGlobalDefines
#include "ovp_global_defines.h"
#endif // TARGET_HAS_ThirdPartyOpenViBEPluginsGlobalDefines

#define OV_AttributeId_Box_FlagIsUnstable									OpenViBE::CIdentifier(0x666FFFFF, 0x666FFFFF)

#define OVP_NodeId_OpenViBEStream_Header									EBML::CIdentifier(0xF59505AB, 0x3684C8D8)
#define OVP_NodeId_OpenViBEStream_Header_Compression						EBML::CIdentifier(0x40358769, 0x166380D1)
#define OVP_NodeId_OpenViBEStream_Header_StreamType							EBML::CIdentifier(0x732EC1D1, 0xFE904087)
#define OVP_NodeId_OpenViBEStream_Header_ChannelType						OVP_NodeId_OpenViBEStream_Header_StreamType  // deprecated old name
#define OVP_NodeId_OpenViBEStream_Buffer									EBML::CIdentifier(0x2E60AD18, 0x87A29BDF)
#define OVP_NodeId_OpenViBEStream_Buffer_StreamIndex						EBML::CIdentifier(0x30A56D8A, 0xB9C12238)
#define OVP_NodeId_OpenViBEStream_Buffer_ChannelIndex						OVP_NodeId_OpenViBEStream_Buffer_StreamIndex // deprecated old name
#define OVP_NodeId_OpenViBEStream_Buffer_StartTime							EBML::CIdentifier(0x093E6A0A, 0xC5A9467B)
#define OVP_NodeId_OpenViBEStream_Buffer_EndTime							EBML::CIdentifier(0x8B5CCCD9, 0xC5024F29)
#define OVP_NodeId_OpenViBEStream_Buffer_Content							EBML::CIdentifier(0x8D4B0BE8, 0x7051265C)
