#include <math.h>

/* general form: y=A*(x^3) + B*(x^2) + (C*x) + D */

void pcsat_a_decode()
{

   extern int tlmframe;
   extern float tlmval[4][5];
   extern int rawtlmint[4][5];
   extern float ref5v;

   switch (tlmframe)
   {
      case 0:
         tlmval[tlmframe][0]=(float)(0.00*powf(rawtlmint[tlmframe][0],3.0))+(0.0012*(powf(rawtlmint[tlmframe][0],2.0))+(0.646*rawtlmint[tlmframe][0])-25.96);
         tlmval[tlmframe][1]=(float)(0.00*powf(rawtlmint[tlmframe][1],3.0))+(0.0048*(powf(rawtlmint[tlmframe][1],2.0))+(0.75*rawtlmint[tlmframe][1])-54.6);
         tlmval[tlmframe][2]=(float)(0.00*powf(rawtlmint[tlmframe][2],3.0))+(0.0031*(powf(rawtlmint[tlmframe][2],2.0))+(0.241*rawtlmint[tlmframe][2])-25.3);
         tlmval[tlmframe][3]=(float)(0.00*powf(rawtlmint[tlmframe][3],3.0))+(0.0024*(powf(rawtlmint[tlmframe][3],2.0))+(0.414*rawtlmint[tlmframe][3])-25.3);
         break;
      case 1:
         tlmval[tlmframe][0]=(float)(0.00*powf(rawtlmint[tlmframe][0],3.0))+(0.00*(powf(rawtlmint[tlmframe][0],2.0))+(0.3414*rawtlmint[tlmframe][0])-19.71);
         tlmval[tlmframe][1]=(float)(0.00*powf(rawtlmint[tlmframe][1],3.0))+(0.00*(powf(rawtlmint[tlmframe][1],2.0))+(0.3414*rawtlmint[tlmframe][1])-19.71);
         tlmval[tlmframe][2]=(float)(0.00*powf(rawtlmint[tlmframe][2],3.0))+(0.00*(powf(rawtlmint[tlmframe][2],2.0))+(0.3414*rawtlmint[tlmframe][2])-19.71);
         tlmval[tlmframe][3]=(float)(0.00*powf(rawtlmint[tlmframe][3],3.0))+(0.00*(powf(rawtlmint[tlmframe][3],2.0))+(0.3414*rawtlmint[tlmframe][3])-19.71);
         break;
      case 2:
         tlmval[tlmframe][0]=(float)(0.00*powf(rawtlmint[tlmframe][0],3.0))+(0.00*(powf(rawtlmint[tlmframe][0],2.0))+(0.3414*rawtlmint[tlmframe][0])-19.71);
         tlmval[tlmframe][1]=(float)(0.00*powf(rawtlmint[tlmframe][1],3.0))+(0.00*(powf(rawtlmint[tlmframe][1],2.0))+(0.3414*rawtlmint[tlmframe][1])-19.71);
         tlmval[tlmframe][2]=(float)(0.00*powf(rawtlmint[tlmframe][2],3.0))+(0.0037*(powf(rawtlmint[tlmframe][2],2.0))+(0.0264*rawtlmint[tlmframe][2])-18.5);
         tlmval[tlmframe][3]=(float)(-0.00004*powf(rawtlmint[tlmframe][3],3.0))+(0.0114*(powf(rawtlmint[tlmframe][3],2.0))+(-2.56*rawtlmint[tlmframe][3])+252);
         break;
      case 3:
         tlmval[tlmframe][0]=(float)(0.00*powf(rawtlmint[tlmframe][0],3.0))+(0.00*(powf(rawtlmint[tlmframe][0],2.0))+(0.0984*rawtlmint[tlmframe][0]));
         tlmval[tlmframe][1]=(float)(0.00*powf(rawtlmint[tlmframe][1],3.0))+(0.00*(powf(rawtlmint[tlmframe][1],2.0))+(0.09826*rawtlmint[tlmframe][1]));
         tlmval[tlmframe][2]=(float)(0.00*powf(rawtlmint[tlmframe][2],3.0))+(0.00*(powf(rawtlmint[tlmframe][2],2.0))+(0.0311*rawtlmint[tlmframe][2]));
         tlmval[tlmframe][3]=(float)(0.00*powf(rawtlmint[tlmframe][3],3.0))+(0.00*(powf(rawtlmint[tlmframe][3],2.0))+(0.0356*rawtlmint[tlmframe][3]));
         break;
   }
   ref5v=(float)(rawtlmint[tlmframe][4])*5.0/213.0;
}

void pcsat_b_decode()
{

   extern int tlmframe;
   extern float tlmval[4][5];
   extern int rawtlmint[4][5];
   extern float ref5v;

   switch (tlmframe)
   {
      case 0:
         tlmval[tlmframe][0]=(float)(0.00*powf(rawtlmint[tlmframe][0],3.0))+(0.0034*(powf(rawtlmint[tlmframe][0],2.0))+(0.2284*rawtlmint[tlmframe][0])-26.6);
         tlmval[tlmframe][1]=(float)(0.00*powf(rawtlmint[tlmframe][1],3.0))+(0.0096*(powf(rawtlmint[tlmframe][1],2.0))+(0.864*rawtlmint[tlmframe][1])-53.8);
         tlmval[tlmframe][2]=(float)(0.00*powf(rawtlmint[tlmframe][2],3.0))+(0.0023*(powf(rawtlmint[tlmframe][2],2.0))+(0.473*rawtlmint[tlmframe][2])-23.2);
         tlmval[tlmframe][3]=(float)(0.00*powf(rawtlmint[tlmframe][3],3.0))+(0.003*(powf(rawtlmint[tlmframe][3],2.0))+(0.4*rawtlmint[tlmframe][3])-26.6);
         break;
      case 1:
         tlmval[tlmframe][0]=(float)(0.00*powf(rawtlmint[tlmframe][0],3.0))+(0.00*(powf(rawtlmint[tlmframe][0],2.0))+(0.3414*rawtlmint[tlmframe][0])-19.71);
         tlmval[tlmframe][1]=(float)(0.00*powf(rawtlmint[tlmframe][1],3.0))+(0.00*(powf(rawtlmint[tlmframe][1],2.0))+(0.3414*rawtlmint[tlmframe][1])-19.71);
         tlmval[tlmframe][2]=(float)(0.00*powf(rawtlmint[tlmframe][2],3.0))+(0.00*(powf(rawtlmint[tlmframe][2],2.0))+(0.3414*rawtlmint[tlmframe][2])-19.71);
         tlmval[tlmframe][3]=(float)(0.00*powf(rawtlmint[tlmframe][3],3.0))+(0.00*(powf(rawtlmint[tlmframe][3],2.0))+(0.3414*rawtlmint[tlmframe][3])-19.71);
         break;
      case 2:
         tlmval[tlmframe][0]=(float)(0.00*powf(rawtlmint[tlmframe][0],3.0))+(0.00*(powf(rawtlmint[tlmframe][0],2.0))+(0.3414*rawtlmint[tlmframe][0])-19.71);
         tlmval[tlmframe][1]=(float)(0.00*powf(rawtlmint[tlmframe][1],3.0))+(0.00*(powf(rawtlmint[tlmframe][1],2.0))+(0.3414*rawtlmint[tlmframe][1])-19.71);
         tlmval[tlmframe][2]=(float)(0.00*powf(rawtlmint[tlmframe][2],3.0))+(0.0038*(powf(rawtlmint[tlmframe][2],2.0))+(0.0084*rawtlmint[tlmframe][2])-19.8);
         tlmval[tlmframe][3]=(float)(-0.00004*powf(rawtlmint[tlmframe][3],3.0))+(0.0158*(powf(rawtlmint[tlmframe][3],2.0))+(-3.32*rawtlmint[tlmframe][3])+259);
         break;
      case 3:
         tlmval[tlmframe][0]=(float)(0.00*powf(rawtlmint[tlmframe][0],3.0))+(0.00*(powf(rawtlmint[tlmframe][0],2.0))+(0.09774*rawtlmint[tlmframe][0]));
         tlmval[tlmframe][1]=(float)(0.00*powf(rawtlmint[tlmframe][1],3.0))+(0.00*(powf(rawtlmint[tlmframe][1],2.0))+(0.09457*rawtlmint[tlmframe][1]));
         tlmval[tlmframe][2]=(float)(0.00*powf(rawtlmint[tlmframe][2],3.0))+(0.00*(powf(rawtlmint[tlmframe][2],2.0))+(0.0223*rawtlmint[tlmframe][2]));
         tlmval[tlmframe][3]=(float)(0.00*powf(rawtlmint[tlmframe][3],3.0))+(0.00*(powf(rawtlmint[tlmframe][3],2.0))+(0.0351*rawtlmint[tlmframe][3]));
         break;
   }
   ref5v=(float)(rawtlmint[tlmframe][4])*5.0/213.0;
}
