#ifndef epd2_h
#define epd2_h
/******************************************************************************
*
*    Module Name       : Reader3.DLL
*
*    File Name         : Epd3.h
*
*    File Description  : Public API For EPD MK3 Communication
*
*    Authors:          : T Banahan
*
******************************************************************************
*
*    This is an unpublished work, the copyright of which vests in Thermo
*    Fisher Scientific. All rights reserved.
*
*    The information contained herein is the property of Thermo Fisher
*    Scientific and is supplied without liability for errors or ommissions
*    and no part may be reproduced, used or disclosed except as authorised
*    by contract or other written permission. The copyright and the foregoing
*    restriction on reproduction, use and disclosure extends to all the media
*    in which this information may be embodied.
*
******************************************************************************/
#ifndef WINAPI
#define WINAPI __stdcall
#endif
#ifdef READER3_EXPORTS
#define EPDDLL_API __declspec(dllexport) WINAPI
#else
#define EPDDLL_API __declspec(dllimport) WINAPI
#endif
#include <stdint.h>
extern "C"
{
  /********************************************************************************************************************************************
  *
  *         Telemetry
  *
  ********************************************************************************************************************************************/
  CompletionToken EPDDLL_API BeginReadTelemetryMode_R2(CommsHandle hComms, CompletionCallback callback);
  int32_t  EPDDLL_API EndReadTelemetryMode_R2(CommsHandle hComms, CompletionToken token, uint8_t *mode);
  CompletionToken EPDDLL_API BeginWriteTelemetryMode_R2(CommsHandle hComms, uint8_t mode, CompletionCallback callback);
  int32_t  EPDDLL_API EndWriteTelemetryMode_R2(CommsHandle hComms, CompletionToken token);
  /********************************************************************************************************************************************
  *
  *         Calibration data
  *
  ********************************************************************************************************************************************/
  CompletionToken EPDDLL_API BeginReadCalibrationData_R2(CommsHandle hComms, CompletionCallback callback);
  int32_t EPDDLL_API  EndReadCalibrationData_R2(CommsHandle hComms, CompletionToken token,
    uint16_t * HGSens10, uint16_t * SGSens10, uint16_t * HGSens07, uint16_t * SGSens07,
    uint16_t * FBSens07, uint16_t * BCSens07,
    uint16_t * SGthresh, uint16_t * BCthresh,
    uint16_t * FBthresh, uint16_t * HGthresh);
  CompletionToken EPDDLL_API BeginWriteDetectorThresholds_R2(CommsHandle hComms, CompletionCallback callback,
    uint16_t SGthresh, uint16_t BCthresh,
    uint16_t FBthresh, uint16_t HGthresh);
  int32_t EPDDLL_API  EndWriteDetectorThresholds_R2(CommsHandle hComms, CompletionToken token);
  CompletionToken EPDDLL_API BeginWriteSensitivities_R2(CommsHandle hComms, CompletionCallback callback,
    uint16_t HGSens10, uint16_t SGSens10, uint16_t HGSens07, uint16_t SGSens07,
    uint16_t FBSens07, uint16_t BCSens07);
  int32_t EPDDLL_API  EndWriteSensitivities_R2(CommsHandle hComms, CompletionToken token);
  /********************************************************************************************************************************************
  *
  *     Manufacturer Login
  *
  ********************************************************************************************************************************************/
  CompletionToken EPDDLL_API BeginMfrLogin_R2(CommsHandle hComms, uint32_t password, CompletionCallback callback);
  int32_t EPDDLL_API  EndMfrLogin_R2(CommsHandle hComms, CompletionToken token);
}
#endif