#include "xc.h"
#include "dsp.h"

float ConvertIntToEngUnits(int x, const int *cnt, const float *eng)
{
  return ((eng[1]-eng[0])*(x-cnt[0]))/((cnt[1]-cnt[0]))+eng[0];
}

int ConvertEngUnitsToInt(float x, const int *cnt, const float *eng)
{
  return ((cnt[1]-cnt[0])*(x-eng[0]))/(eng[1]-eng[0])+cnt[0];
}

float ConvertFractToEngUnits(fractional x, const int *cnt, const float *eng)
{
  return ((eng[1]-eng[0])*x)/((cnt[1]-cnt[0]));
}

fractional ConvertEngUnitsToFract(float x, const int *cnt, const float *eng)
{
  return (x*(cnt[1]-cnt[0]))/(eng[1]-eng[0]);
}


int ConvertDegreesToFract(float degrees)
{
return (int) (degrees*32768/180);
}

float ConvertFractToDegrees(int counts)
{
if(counts >=0)
  return  ((float) counts)*180/32768;
else
  return ((float) counts)*180/32768 + 360.0;  //Ensure result is always between is greater than zero (0->360)
}