#ifndef NDTSERRORCONSTANTS_H
#define NDTSERRORCONSTANTS_H

#ifdef __cplusplus
extern "C" {
#endif

#include "NDTSEnums.h"

#ifdef NDTSERROR_EXPORTS
	#define NDTSERROR_API __declspec(dllexport)
#else
	#define NDTSERROR_API __declspec(dllimport)
#endif
 
#ifdef STDCALL
	#define CALL_CONV __stdcall
#else
	#define CALL_CONV
#endif

#define NDTS_MAXIMUM_NUMBER_OF_ERROR_LOG_STRINGS		64
#define NDTS_MAXIMUM_ERROR_STRING_LENGTH				512

typedef enum enum_NDTS_LogLevel
{
	NDTS_LLNone,   // Don't display any log messages.  If this is passed to LogLine, it is effectively ALWAYS.  
	NDTS_LLEmerg,   //     system is unusable
	NDTS_LLAlert,   //     action must be taken immediately
	NDTS_LLCrit,    //     critical conditions
	NDTS_LLErr,     //     error conditions.  All calls to NDTS_HandleError are logged at this level
	NDTS_LLWarning, //     warning conditions
	NDTS_LLNotice,  //     normal, but significant, condition
	NDTS_LLInfo,    //     informational message
	NDTS_LLDebug,   //     debug-level message
	NDTS_LLNever,  // End marker used to create arrays and with variables used as param to NDTS_LOG that can default to Never.
} NDTS_LogLevel;

#define NDTS_ERROR_NUMBER_OF_SUPPORTED_SDKS 11

#define NDTS_ERROR_RQ_SDK_INDEX 0
#define NDTS_ERROR_PRX_SDK_INDEX 1
#define NDTS_ERROR_HL_SDK_INDEX 2
#define NDTS_ERROR_DC_SDK_INDEX 3
#define NDTS_ERROR_A2F_SDK_INDEX 4
#define NDTS_ERROR_HAL_SDK_INDEX 5
#define NDTS_ERROR_RS2A_SDK_INDEX 6
#define NDTS_ERROR_SCO_SDK_INDEX 7
#define NDTS_ERROR_NDTS2100_SDK_INDEX 8
#define NDTS_ERROR_RAW_SCAN_SDK_INDEX 9
#define NDTS_ERROR_UTILITY_SDK_INDEX 10

typedef const char * (* FPNDTS_GetCodeString)(int errorCode) ;


#ifdef __cplusplus
}
#endif

#endif