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

void pcsat2_setup()
{
   extern WINDOW *tlm_win;
   extern WINDOW *raw_win;
   extern WINDOW *arm_win;
   extern WINDOW *timer_win;

   extern time_t epochbird;
   extern char cmdstrings[8][CMD_STR_LEN+1];
   extern int numcmdstr;
   extern char tlmlbl[24][10]; 
   extern int numtlmlbl;
   extern int numtlmviews;

   extern int norad;
   extern char noradstr[6];

   int lbly;

   int d;

   epochbird=1123067820;
   strcpy(cmdstrings[0],"96HR TIMER TOG");
   strcpy(cmdstrings[1],"RESET OTHER TNC");
   strcpy(cmdstrings[2],"RX HEATERS ON ");
   strcpy(cmdstrings[3],"VHF-TX ENABLED");
   strcpy(cmdstrings[4],"TOGGLESHUNTREF");
   strcpy(cmdstrings[5],"PSK-31 ENABLED");
   strcpy(cmdstrings[6],"FM REPEATER ON");
   strcpy(cmdstrings[7],"              ");

   norad=25544;
   sprintf(noradstr,"%d",norad);

   numcmdstr=7;

   strcpy(tlmlbl[0],"Cell 1:");
   strcpy(tlmlbl[1],"Cell 2:");
   strcpy(tlmlbl[2],"Cell 3:");
   strcpy(tlmlbl[3],"Batt V:");
   strcpy(tlmlbl[4],"5V Ref:");

   strcpy(tlmlbl[5],"Load mA:");
   strcpy(tlmlbl[6],"Batt mA:");
   strcpy(tlmlbl[7],"Sol  mA:");
   strcpy(tlmlbl[8],"TNCA mA:");
   strcpy(tlmlbl[9],"TNCB mA:");

   strcpy(tlmlbl[10],"RXA mA:");
   strcpy(tlmlbl[11],"RXB mA:");
   strcpy(tlmlbl[12],"TXA mA:");
   strcpy(tlmlbl[13],"TXB mA:");
   strcpy(tlmlbl[14],"PEC Temp:");

   strcpy(tlmlbl[15],"RX Temp :");
   strcpy(tlmlbl[16],"Bat Temp:");
   strcpy(tlmlbl[17],"TXA Temp:");
   strcpy(tlmlbl[18],"TXB Temp:");
   strcpy(tlmlbl[19],"TLM Temp:");

   numtlmlbl=20;

   numtlmviews=2;

   arm_win=newwin(4,40,20,0);
   timer_win=newwin(4,40,20,40);

   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);

   mvwaddch(arm_win,0,40,ACS_PLUS);
   mvwprintw(arm_win,0,16,"ARM VALUES");
   mvwprintw(timer_win,0,1,"TIMER AND INTERPRETED TELEMETRY VALUES");


   mvwprintw(arm_win,2,4,"ARMA1 S  ARMA2 S  ARMB1 S  ARMB2 S");

   mvwchgat(arm_win,2,4,5,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,13,5,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,22,5,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,31,5,A_NORMAL,COLOUR_INVIS,NULL);

   mvwchgat(arm_win,2,10,1,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,19,1,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,28,1,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(arm_win,2,37,1,A_NORMAL,COLOUR_INVIS,NULL);

   mvwprintw(timer_win,2,2,"48-HOUR S  60-HOUR S  LVSHUNT S  ROLL");

   mvwchgat(timer_win,2,2,7,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(timer_win,2,13,7,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(timer_win,2,24,7,A_NORMAL,COLOUR_INVIS,NULL);

   mvwchgat(timer_win,2,10,1,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(timer_win,2,21,1,A_NORMAL,COLOUR_INVIS,NULL);
   mvwchgat(timer_win,2,32,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,"F-00   T#");
   mvwprintw(raw_win,4,1,"F-01   T#");
   mvwprintw(raw_win,5,1,"F-10   T#");
   mvwprintw(raw_win,6,1,"F-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);
   }

   for (lbly=0; lbly<=4; lbly++)
   {
      mvwprintw(tlm_win,2+lbly,1,tlmlbl[lbly]);
      mvwprintw(tlm_win,2+lbly,20,tlmlbl[lbly+5]);
      mvwprintw(tlm_win,2+lbly,40,tlmlbl[lbly+10]);
      mvwprintw(tlm_win,2+lbly,59,tlmlbl[lbly+15]);

      mvwprintw(tlm_win,2+lbly,17,"S");
      mvwprintw(tlm_win,2+lbly,37,"S");
      mvwprintw(tlm_win,2+lbly,56,"S");
      mvwprintw(tlm_win,2+lbly,78,"S");

      mvwchgat(tlm_win,2+lbly,17,1,A_NORMAL,6,NULL);
      mvwchgat(tlm_win,2+lbly,37,1,A_NORMAL,6,NULL);
      mvwchgat(tlm_win,2+lbly,56,1,A_NORMAL,6,NULL);
      mvwchgat(tlm_win,2+lbly,78,1,A_NORMAL,6,NULL);

      mvwaddch(tlm_win,2+lbly,75,ACS_DEGREE);
      mvwprintw(tlm_win,2+lbly,76,"C");
   }

   mvwaddch(tlm_win,6,53,ACS_DEGREE);
   mvwprintw(tlm_win,6,54,"C");

   mvwprintw(tlm_win,0,25,"TELEMETRY ENGINEERING VALUES");
   mvwprintw(raw_win,0,31,"RAW TELEMETRY VALUES");


   touchwin(arm_win);
   touchwin(timer_win);

   wrefresh(arm_win);
   wrefresh(timer_win);
}
