#include "Sio32Interface.h"
#include "DmErrno.h"
#include <stdio.h>
#include <string.h>
#include "vxUtils.h"

Sio32Interface::Sio32Interface(const char *name, Nat16 channelNo) 
  : DeviceInterface(name, channelNo)
{
  if (sio32ChanInit(_channelNo, _chanName, &_sio32Chan) == ERROR)
  {
    setError("sio32ChanInit() failed");
    return;
  }
  
}


Sio32Interface::~Sio32Interface()
{
  sio32ChanDestroy(channelNo(), &_sio32Chan);
}


int Sio32Interface::readSRQ(Byte *packet, Int16 maxBytes, Int32 timeout)
{
  return(readSRQPacket(&_sio32Chan, packet, maxBytes, timeout));
}


Word Sio32Interface::getWord(Void *packet, Int32 index)
{
  return(wordFromBuf(packet, index));
}


STATUS Sio32Interface::enable()
{
  return(microCmdEnable(&_sio32Chan)); 
}


STATUS Sio32Interface::reset()
{
  return(microResetCmd(&_sio32Chan));
}


STATUS Sio32Interface::id(Char *identString)
{
  return(microGetIdent(&_sio32Chan, identString)) ;
}


STATUS Sio32Interface::serialNo(Char *serialNo)
{
  return(microSerialNo(&_sio32Chan, serialNo));
}


STATUS Sio32Interface::softwareRev(Char *softwareRev)
{
  return(microSoftwareRev(&_sio32Chan, softwareRev));
}


STATUS Sio32Interface::ramTest(MBool *ramTestStatus)
{
  return(microGetRamTest(&_sio32Chan, ramTestStatus));
}


sio32Chan *Sio32Interface::channel()
{
  return &_sio32Chan;
}







