#include "Srf235.h"

// Constructor

Srf235::Srf235(int handle, int addr, char rt = 'c')
{
  readReg = 2;
  pingBuf[0] = 0;
  i2cHandle = handle;

  if(addr >=0 && addr <= 15)
  {
    i2cAddr = addr + 0x70;
  }
  else i2cAddr = 0x70;

  setResultType(rt);

} // Srf235

Srf235::ping()
{
  ioctl(i2cHandle, I2C_SLAVE, i2cAddr);

  write(i2cHandle, pingBuf, 2);

} // ping

int Srf235::read()
{
  ioctl(i2cHandle, I2C_SLAVE, i2cAddr);

  write(i2cHandle, &readReg, 1);
  read(i2cHandle, readBuf, 2);

  return readBuf[0]*256 + readBuf[1];

} // read

void Srf235::setResultType(char rt)
{
  switch(rt)
  {
    case 'i':
    case 'I':
      pingBuf[1] = 80;
      break;
    case 'c':
    case 'C':
      pingBuf[1] = 81;
      break;
    case 's':
    case 'S':
      pingBuf[1] = 82;
      break;
    default:
      pingBuf[1] = 81;
      break;
  }

} // setResultType
