#include <string.h>
#include <time.h>
#include <sys/time.h>
#include <ncurses.h>
#include <panel.h>
#include "aprstlm.h"

void pcsat_setup()
{
   extern time_t epochbird;

   extern WINDOW *tlm_win;
   extern WINDOW *raw_win;
   extern WINDOW *tlmb_win;
   extern WINDOW *rawb_win;
   extern WINDOW *arm_win;
   extern WINDOW *timer_win;

   extern PANEL *tlmb_pan;
   extern PANEL *rawb_pan;
   extern PANEL *tlmpanptr[4];

   extern int norad;
   extern char noradstr[6];

   extern int numtlmviews;

   extern char tlmlbl[24][15];
   extern char tlmlblb[24][15];

   extern int numtlmlbl;
   extern int numtlmlblb;

   extern char cmdstrings[8][CMD_STR_LEN+1];
   extern int numcmdstr;

   int lbly;

   int d;

   epochbird=1001817600;
   norad=26931;
   sprintf(noradstr,"%d",norad);

   strcpy(cmdstrings[0],"  UHF-A RX OFF ");
   strcpy(cmdstrings[1],"  UHF-B RX OFF ");
   strcpy(cmdstrings[2],"   GPS RX ON   ");
   strcpy(cmdstrings[3],"RESET OTHER TNC");
   strcpy(cmdstrings[4],"CLEAR 72HR FAIL");
   strcpy(cmdstrings[5],"MITEL GPS+QRP-A");
   strcpy(cmdstrings[6],"80LED TAILLIGHT");
   strcpy(cmdstrings[7]," CROSS CONNECT ");

   numcmdstr=6;

   strcpy(tlmlbl[0],"+X Temp:");
   strcpy(tlmlbl[1],"+Y Temp:");
   strcpy(tlmlbl[2],"+Z Temp:");
   strcpy(tlmlbl[3],"Batt A Temp:");
   strcpy(tlmlbl[4],"Batt B Temp:");

   strcpy(tlmlbl[5],"-X Temp :");
   strcpy(tlmlbl[6],"-Y Temp :");
   strcpy(tlmlbl[7],"-Z Temp :");
   strcpy(tlmlbl[8],"TXA Temp:");
   strcpy(tlmlbl[9],"TXB Temp:");

   strcpy(tlmlbl[10],"Stack A Temp:");
   strcpy(tlmlbl[11],"Stack B Temp:");
   strcpy(tlmlbl[12],"           ");
   strcpy(tlmlbl[13],"TXA Output:");
   strcpy(tlmlbl[14],"TXB Output:");


   strcpy(tlmlblb[0],"Batt A-A:"); 
   strcpy(tlmlblb[1],"Batt A-B:"); 
   strcpy(tlmlblb[2],"Batt B-A:"); 
   strcpy(tlmlblb[3],"Batt B-B:"); 
   strcpy(tlmlblb[4],"8V Reg:");

   strcpy(tlmlblb[5],"+X Current:");
   strcpy(tlmlblb[6],"+Y Current:");
   strcpy(tlmlblb[7],"+Z Current:");
   strcpy(tlmlblb[8],"Batt A Cur:");
   strcpy(tlmlblb[9],"Batt B Cur:");

   strcpy(tlmlblb[10],"-X Current :");
   strcpy(tlmlblb[11],"-Y Current :");
   strcpy(tlmlblb[12],"-Z Current :");
   strcpy(tlmlblb[13],"TXA Output:");
   strcpy(tlmlblb[14],"TXB Output:");

   numtlmlbl=15;
   numtlmlblb=15;

   numtlmviews=4;

   arm_win=newwin(4,40,20,0);
   timer_win=newwin(4,40,20,40);
   tlmb_win=newwin(8,80,5,0);
   rawb_win=newwin(8,80,5,0);
   tlmb_pan=new_panel(tlmb_win);
   rawb_pan=new_panel(rawb_win);

   wborder(arm_win,ACS_VLINE,' ',' ',ACS_HLINE,ACS_VLINE,' ',0,ACS_HLINE);
   wborder(timer_win,ACS_VLINE,ACS_VLINE,' ',ACS_HLINE,ACS_VLINE,ACS_VLINE,ACS_BTEE,0);
 
   wborder(tlmb_win,ACS_VLINE,ACS_VLINE,' ',ACS_HLINE,ACS_VLINE,ACS_VLINE,ACS_LTEE,ACS_RTEE);

   wborder(rawb_win,ACS_VLINE,ACS_VLINE,' ',ACS_HLINE,ACS_VLINE,ACS_VLINE,ACS_LTEE,ACS_RTEE);

   mvwprintw(tlm_win,0,23,"SPACE ENVIRONMENT TELEMETRY VALUES");
   mvwprintw(tlmb_win,0,24,"ELECTRICAL POWER TELEMETRY VALUES");

   mvwprintw(raw_win,0,27,"SIDE A RAW TELEMETRY VALUES");
   mvwprintw(rawb_win,0,27,"SIDE B RAW TELEMETRY VALUES");


   mvwaddch(tlmb_win,7,40,ACS_TTEE);
   mvwaddch(rawb_win,7,40,ACS_TTEE);
   mvwaddch(arm_win,0,40,ACS_PLUS);
   mvwprintw(arm_win,0,6,"+5V REF AND EXPERIMENT BITS");
   mvwprintw(arm_win,2,1,"5V Ref:");
   mvwprintw(arm_win,2,14,"V S  ISO-BATT S  ISO-TX S");

   mvwchgat(arm_win,2,16,1,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,19,8,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,28,1,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,31,6,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,38,1,A_NORMAL,COLOUR_INVIS,NULL);
   
   mvwprintw(raw_win,2,1,"FRAME  T#NNN   CH1   CH2   CH3   CH4   CH5   CMD BITS    SF  Z-BIT ");
   mvwprintw(raw_win,3,1,"A-00   T#");
   mvwprintw(raw_win,4,1,"A-01   T#");
   mvwprintw(raw_win,5,1,"A-10   T#");
   mvwprintw(raw_win,6,1,"A-11   T#");

   mvwprintw(rawb_win,2,1,"FRAME  T#NNN   CH1   CH2   CH3   CH4   CH5   CMD BITS   SF  Z-BIT ");
   mvwprintw(rawb_win,3,1,"B-00   T#");
   mvwprintw(rawb_win,4,1,"B-01   T#");
   mvwprintw(rawb_win,5,1,"B-10   T#");
   mvwprintw(rawb_win,6,1,"B-11   T#");

   for (d=0; d<=3; d++)
   {
      mvwprintw(raw_win,3+d,68,"S");
      mvwchgat(raw_win,3+d,68,1,A_NORMAL,COLOUR_INVIS,NULL);

      mvwprintw(rawb_win,3+d,68,"S");
      mvwchgat(rawb_win,3+d,68,1,A_NORMAL,COLOUR_INVIS,NULL);
   }

   for (lbly=0; lbly<=4; lbly++)
   {
      mvwprintw(tlm_win,2+lbly,1,tlmlbl[lbly]);
      mvwprintw(tlmb_win,2+lbly,1,tlmlblb[lbly]);
      mvwprintw(tlm_win,2+lbly,28,tlmlbl[lbly+5]);
      mvwprintw(tlmb_win,2+lbly,28,tlmlblb[lbly+5]);
      mvwprintw(tlm_win,2+lbly,54,tlmlbl[lbly+10]);
      mvwprintw(tlmb_win,2+lbly,54,tlmlblb[lbly+10]);

      mvwprintw(tlm_win,2+lbly,25,"S");
      mvwprintw(tlmb_win,2+lbly,25,"S");
      mvwprintw(tlm_win,2+lbly,51,"S");
      mvwprintw(tlmb_win,2+lbly,51,"S");
      mvwprintw(tlm_win,2+lbly,78,"S");
      mvwprintw(tlmb_win,2+lbly,78,"S");

      mvwchgat(tlm_win,2+lbly,25,1,A_NORMAL,COLOUR_INVIS,NULL);
      mvwchgat(tlmb_win,2+lbly,25,1,A_NORMAL,COLOUR_INVIS,NULL);
      mvwchgat(tlm_win,2+lbly,51,1,A_NORMAL,COLOUR_INVIS,NULL);
      mvwchgat(tlmb_win,2+lbly,51,1,A_NORMAL,COLOUR_INVIS,NULL);
      mvwchgat(tlm_win,2+lbly,78,1,A_NORMAL,COLOUR_INVIS,NULL);
      mvwchgat(tlmb_win,2+lbly,78,1,A_NORMAL,COLOUR_INVIS,NULL);

      mvwaddch(tlm_win,2+lbly,22,ACS_DEGREE);
      mvwaddch(tlm_win,2+lbly,48,ACS_DEGREE);
      mvwprintw(tlm_win,2+lbly,23,"C");
      mvwprintw(tlm_win,2+lbly,49,"C");

      mvwprintw(tlmb_win,2+lbly,23,"V");     
      mvwprintw(tlmb_win,2+lbly,48,"mA");

      if (lbly<=1)
      {
         mvwaddch(tlm_win,2+lbly,75,ACS_DEGREE);
         mvwprintw(tlm_win,2+lbly,76,"C");
      } 

      if (lbly>=3)
      {
         mvwprintw(tlm_win,2+lbly,76,"W");
         mvwprintw(tlmb_win,2+lbly,76,"W");
      }
      else
      {
         mvwprintw(tlmb_win,2+lbly,75,"mA");
      }
   }

   tlmpanptr[2]=tlmb_pan;
   tlmpanptr[3]=rawb_pan;
}
