int test1() {
  word retval;
  dword serialno;
  if (1!=OpenDLL(dtHandyscope3)) {
    printf("failed loading dlls\n");
    return 1;
  }

  retval=InitInstrument(0);
  if (retval!=NO_ERROR) {
    printf("failed to initialize the instrument, code=%d\n", retval);
    CloseDLL();
    return 1;
  }

  retval=GetSerialNumber(&serialno);
  if (retval!=NO_ERROR) {
    printf("could not read serial number, code=%d\n", retval);
    ExitInstrument();
    CloseDLL();
    return 1;
  }

  printf("serial no %d\n", serialno);

  ExitInstrument();
  CloseDLL();
  return 0;
}
Instrument::Instrument(const api::Core& core)
    : OTScriptable(core)
    , m_InstrumentDefinitionID(Identifier::Factory())
    , m_NotaryID(Identifier::Factory())
    , m_VALID_FROM(OT_TIME_ZERO)
    , m_VALID_TO(OT_TIME_ZERO)
{
    InitInstrument();
}
Instrument::Instrument(
    const api::Core& core,
    const Identifier& NOTARY_ID,
    const Identifier& INSTRUMENT_DEFINITION_ID)
    : OTScriptable(core)
    , m_InstrumentDefinitionID(Identifier::Factory(INSTRUMENT_DEFINITION_ID))
    , m_NotaryID(Identifier::Factory(NOTARY_ID))
    , m_VALID_FROM(OT_TIME_ZERO)
    , m_VALID_TO(OT_TIME_ZERO)
{
    InitInstrument();
}
TiePieHS3::TiePieHS3() {
  if (1!=OpenDLL(dtHandyscope3)){
    throw ADC_exception("could not find driver dll for HS3!");
  }
  if (NO_ERROR!=InitInstrument(0)) {
    ADC_exception("HS3 not available!");
  }
  unsigned int serialno=0;
  unsigned short int retval=GetSerialNumber(&serialno);
  //fprintf(stderr, "sizeof(unsigned int)=%d, sizeof(unsigned short int)=%d\n", sizeof(serialno), sizeof(retval));
  if (NO_ERROR!=retval) {
    char buffer[256];
    snprintf(buffer, sizeof(buffer), "could not get device's serial number: GetSerialNumber returned %d", retval);
    throw ADC_exception(std::string(buffer));
  }
  fprintf(stderr, "successfully initialized HS3, SN=%d\n",serialno);
  trigger_line_id=0;
  trigger_line_mask=1<<2;
}