pull/53/head
davecrump 2016-11-22 19:42:59 +00:00
rodzic 8fa6d7f8d3
commit d7383f3bbe
1 zmienionych plików z 329 dodań i 239 usunięć

Wyświetl plik

@ -60,33 +60,51 @@ typedef struct {
int LastEventTime;
} button_t;
#define MAX_BUTTON 20
#define MAX_BUTTON 25
int IndexButtonInArray=0;
button_t ButtonArray[MAX_BUTTON];
int IsDisplayOn=0;
#define TIME_ANTI_BOUNCE 500
//GLOBAL PARAM
//GLOBAL PARAMETERS
int fec;
int SR;
char ModeInput[255];
int TabSR[5]= {125,250,333,500,1000};
char freqtxt[255];
// Values to be stored in and read from rpidatvconfig.txt:
int TabSR[5]= {250,333,500,1000,2000};
int TabFec[5]={1,2,3,5,7};
char TabModeInput[5][255]={"CAMMPEG-2","CAMH264","PATERNAUDIO","FILETS","CARRIER"};
int Inversed=0;//Display is inversed (Waveshare)
char TabFreq[5][255]={"71","146.5","437","1249","1255"};
int Inversed=0;//Display is inversed (Waveshare=1)
pthread_t thfft,thbutton;
GetConfigParam(char *PathConfigFile,char *Param, char *Value)
/***************************************************************************//**
* @brief Looks up the value of Param in PathConfigFile and sets value
* Used to look up the configuration from rpidatvconfig.txt
*
* @param PatchConfigFile (str) the name of the configuration text file
* @param Param the string labeling the parameter
* @param Value the looked-up value of the parameter
*
* @return void
*******************************************************************************/
void GetConfigParam(char *PathConfigFile,char *Param, char *Value)
{
char * line = NULL;
size_t len = 0;
int read;
//printf("Read %s\n",PathConfigFile);
FILE *fp=fopen(PathConfigFile,"r");
if(fp!=0)
{
while ((read = getline(&line, &len, fp)) != -1)
{
//printf("%s", line);
if(strncmp (line,Param,strlen(Param)) == 0)
{
strcpy(Value,line+strlen(Param)+1);
@ -103,7 +121,7 @@ GetConfigParam(char *PathConfigFile,char *Param, char *Value)
}
SetConfigParam(char *PathConfigFile,char *Param,char *Value)
void SetConfigParam(char *PathConfigFile,char *Param,char *Value)
{
char * line = NULL;
size_t len = 0;
@ -185,16 +203,15 @@ int AddButton(int x,int y,int w,int h)
return IndexButtonInArray++;
}
AddButtonStatus(int ButtonIndex,char *Text,color_t *Color)
int AddButtonStatus(int ButtonIndex,char *Text,color_t *Color)
{
button_t *Button=&(ButtonArray[ButtonIndex]);
strcpy(Button->Status[Button->IndexStatus].Text,Text);
Button->Status[Button->IndexStatus].Color=*Color;
return Button->IndexStatus++;
}
DrawButton(int ButtonIndex)
void DrawButton(int ButtonIndex)
{
button_t *Button=&(ButtonArray[ButtonIndex]);
@ -202,10 +219,9 @@ DrawButton(int ButtonIndex)
Roundrect(Button->x,Button->y,Button->w,Button->h, Button->w/10, Button->w/10);
Fill(255, 255, 255, 1); // White text
TextMid(Button->x+Button->w/2, Button->y+Button->h/2, Button->Status[Button->NoStatus].Text, SerifTypeface, Button->w/strlen(Button->Status[Button->NoStatus].Text)/*25*/);
}
SetButtonStatus(int ButtonIndex,int Status)
void SetButtonStatus(int ButtonIndex,int Status)
{
button_t *Button=&(ButtonArray[ButtonIndex]);
Button->NoStatus=Status;
@ -218,7 +234,7 @@ int GetButtonStatus(int ButtonIndex)
}
GetNextPicture(char *PictureName)
void GetNextPicture(char *PictureName)
{
DIR *d;
@ -239,14 +255,11 @@ GetNextPicture(char *PictureName)
strncpy(PictureName,dir->d_name,strlen(dir->d_name)-4);
break;
}
}
}
closedir(d);
}
}
int openTouchScreen(int NoDevice)
@ -285,7 +298,7 @@ Supported events:
int getTouchScreenDetails(int *screenXmin,int *screenXmax,int *screenYmin,int *screenYmax)
{
unsigned short id[4];
//unsigned short id[4];
unsigned long bit[EV_MAX][NBITS(KEY_MAX)];
char name[256] = "Unknown";
int abs[6] = {0};
@ -339,7 +352,7 @@ int getTouchSample(int *rawX, int *rawY, int *rawPressure)
size_t rb;
/* the events (up to 64 at once) */
struct input_event ev[64];
static int Last_event=0;
//static int Last_event=0; //not used?
rb=read(fd,ev,sizeof(struct input_event)*64);
*rawX=-1;*rawY=-1;
int StartTouch=0;
@ -390,11 +403,10 @@ void UpdateWindow()
int i;
for(i=0;i<IndexButtonInArray;i++)
DrawButton(i);
End();
}
SelectInGroup(int StartButton,int StopButton,int NoButton,int Status)
void SelectInGroup(int StartButton,int StopButton,int NoButton,int Status)
{
int i;
for(i=StartButton;i<=StopButton;i++)
@ -403,48 +415,56 @@ SelectInGroup(int StartButton,int StopButton,int NoButton,int Status)
SetButtonStatus(i,Status);
else
SetButtonStatus(i,0);
}
}
SelectSR(int NoButton)
void SelectFreq(int NoButton) //Frequency
{
SelectInGroup(0,4,NoButton,1);
SR=TabSR[NoButton-0];
strcpy(freqtxt,TabFreq[NoButton-0]);
char Param[]="freqoutput";
printf("************** Set Frequency = %s\n",freqtxt);
SetConfigParam(PATH_CONFIG,Param,freqtxt);
}
void SelectSR(int NoButton) // Symbol Rate
{
SelectInGroup(5,9,NoButton,1);
SR=TabSR[NoButton-5];
char Param[]="symbolrate";
char Value[255];
sprintf(Value,"%d",SR);
printf("************** Set SR = %s\n",Value);
SetConfigParam(PATH_CONFIG,Param,Value);
}
SelectFec(int NoButton)
void SelectFec(int NoButton) // FEC
{
SelectInGroup(5,9,NoButton,1);
fec=TabFec[NoButton-5];
SelectInGroup(10,14,NoButton,1);
fec=TabFec[NoButton-10];
char Param[]="fec";
char Value[255];
sprintf(Value,"%d",fec);
printf("************** Set FEC = %s\n",Value);
SetConfigParam(PATH_CONFIG,Param,Value);
}
SelectSource(int NoButton,int Status)
void SelectSource(int NoButton,int Status) //Input mode
{
SelectInGroup(10,14,NoButton,Status);
strcpy(ModeInput,TabModeInput[NoButton-10]);
printf("************** Mode Input = %s\n",ModeInput);
SelectInGroup(15,19,NoButton,Status);
strcpy(ModeInput,TabModeInput[NoButton-15]);
printf("************** Set Input Mode = %s\n",ModeInput);
char Param[]="modeinput";
SetConfigParam(PATH_CONFIG,Param,ModeInput);
}
SelectPTT(int NoButton,int Status)
void SelectPTT(int NoButton,int Status) // TX/RX
{
SelectInGroup(15,16,NoButton,Status);
SelectInGroup(20,21,NoButton,Status);
}
TransmitStart()
void TransmitStart()
{
printf("Transmit Start\n");
@ -462,9 +482,10 @@ TransmitStart()
}
TransmitStop()
void TransmitStop()
{
printf("Transmit Stop\n");
system("sudo /home/pi/rpidatv/bin/adf4351 off"); // Turn the VCO off
system("sudo killall rpidatv >/dev/null 2>/dev/null");
system("sudo killall ffmpeg >/dev/null 2>/dev/null");
system("sudo killall tcanim >/dev/null 2>/dev/null");
@ -483,6 +504,7 @@ void coordpoint(VGfloat x, VGfloat y, VGfloat size, VGfloat pcolor[4]) {
#define FFT_SIZE 256
int FinishedButton=0;
void *DisplayFFT(void * arg)
{
FILE * pFileIQ = NULL;
@ -493,17 +515,15 @@ void *DisplayFFT(void * arg)
fftwf_plan plan ;
plan = fftwf_plan_dft_1d(fft_size, fftin, fftout, FFTW_FORWARD, FFTW_ESTIMATE );
system("mkfifo fifo.iq");
printf("Entering FFT thread\n");
pFileIQ = fopen("fifo.iq", "r");
while(FinishedButton==0)
{
int Nbread;
int log2_N=11; //FFT 1024
int ret;
int Nbread; // not used?
int log2_N=11; //FFT 1024 not used?
int ret; // not used?
Nbread=fread( fftin,sizeof(fftwf_complex),FFT_SIZE,pFileIQ);
fftwf_execute( plan );
@ -514,22 +534,18 @@ void *DisplayFFT(void * arg)
}
fftwf_free(fftin);
fftwf_free(fftout);
}
void *WaitButtonEvent(void * arg)
{
int rawX, rawY, rawPressure,i;
int rawX, rawY, rawPressure;
while(getTouchSample(&rawX, &rawY, &rawPressure)==0);
FinishedButton=1;
}
ProcessLeandvb()
void ProcessLeandvb()
{
#define PATH_SCRIPT_LEAN "sudo /home/pi/rpidatv/scripts/leandvbgui.sh 2>&1"
char *line=NULL;
@ -550,13 +566,13 @@ ProcessLeandvb()
pthread_create (&thfft,NULL, &DisplayFFT,NULL);
//END ThreadFFT
// Thread FFT
pthread_create (&thbutton,NULL, &WaitButtonEvent,NULL);
//END ThreadFFT
fp=popen(PATH_SCRIPT_LEAN, "r");
if(fp==NULL) printf("Process error\n");
@ -578,6 +594,7 @@ ProcessLeandvb()
token = strtok(line," ");
token = strtok(NULL," ");
sscanf(token,"%d",&NbData);
if(Decim%25==0)
{
//Start(wscreen,hscreen);
@ -617,10 +634,8 @@ ProcessLeandvb()
Roundrect(500,0,(MER*8),50, 10, 10);
Fill(255, 255, 255, 1); // White text
Text(500,20, sMER, SerifTypeface, 25);
}
if(Decim%25==0)
{
static VGfloat PowerFFTx[FFT_SIZE];
@ -702,14 +717,15 @@ ProcessLeandvb()
}*/
}
if((strcmp(strTag,"SS")==0))
{
token = strtok(line," ");
token = strtok(NULL," ");
sscanf(token,"%f",&SignalStrength);
//printf("Signal %f\n",SignalStrength);
}
if((strcmp(strTag,"MER")==0))
{
@ -718,6 +734,7 @@ ProcessLeandvb()
sscanf(token,"%f",&MER);
//printf("MER %f\n",MER);
}
if((strcmp(strTag,"FREQ")==0))
{
@ -726,14 +743,13 @@ ProcessLeandvb()
sscanf(token,"%f",&FREQ);
//printf("FREQ %f\n",FREQ);
}
if((strcmp(strTag,"LOCK")==0))
{
token = strtok(line," ");
token = strtok(NULL," ");
sscanf(token,"%d",&Lock);
}
free(line);
@ -745,36 +761,37 @@ usleep(5000000); // Time to FFT end reading samples
//pclose(fp);
pthread_join(thbutton, NULL);
printf("End Lean\n");
}
ReceiveStart()
void ReceiveStart()
{
//system("sudo SDL_VIDEODRIVER=fbcon SDL_FBDEV=/dev/fb0 mplayer -ao /dev/null -vo sdl /home/pi/rpidatv/video/mire250.ts &");
//system(PATH_SCRIPT_LEAN);
ProcessLeandvb();
}
ReceiveStop()
void ReceiveStop()
{
system("sudo killall leandvb");
system("sudo killall hello_video.bin");
//system("sudo killall mplayer");
}
// wait for a specific character
void waituntil(int w,int h,int endchar) {
int key;
void waituntil(int w,int h,int endchar)
{
// int key; not used?
int rawX, rawY, rawPressure,i;
int Toggle=0;
for (;;) {
for (;;)
{
//Start(w,h);
if (getTouchSample(&rawX, &rawY, &rawPressure)==0) continue;
printf("x=%d y=%d\n",rawX,rawY);
if(IsDisplayOn==0)
{
printf("Display ON\n");
TransmitStop();
ReceiveStop();
@ -783,57 +800,54 @@ int rawX, rawY, rawPressure,i;
BackgroundRGB(255,255,255,255);
IsDisplayOn=1;
SelectPTT(15,0);
SelectPTT(16,0);
SelectPTT(20,0);
SelectPTT(21,0);
UpdateWindow();
//usleep(500000);
continue;
}
for(i=0;i<IndexButtonInArray;i++)
{
if(IsButtonPushed(i,rawX,rawY)==1)
{
printf("Button Event %d\n",i);
if((i>=0)&&(i<=4)) //SR
if((i>=0)&&(i<=4)) //Frequency
{
SelectFreq(i);
}
if((i>=5)&&(i<=9)) //SR
{
SelectSR(i);
}
if((i>=5)&&(i<=9)) //FEC
if((i>=10)&&(i<=14)) //FEC
{
SelectFec(i);
}
if((i>=10)&&(i<=14)) //Source
if((i>=15)&&(i<=19)) //Source
{
SelectSource(i,1);
}
if((i>=15)&&(i<=16)) //Source
if((i>=20)&&(i<=21)) //PTT
{
printf("Status %d\n",GetButtonStatus(i));
if((i==15)&&(GetButtonStatus(i)==0))
if((i==20)&&(GetButtonStatus(i)==0))
{
usleep(500000);
SelectPTT(i,1);
UpdateWindow();
TransmitStart();
break;
}
if((i==15)&&(GetButtonStatus(i)==1))
if((i==20)&&(GetButtonStatus(i)==1))
{
TransmitStop();
usleep(500000);
SelectPTT(i,0);
UpdateWindow();
break;
}
if(i==16)
if(i==21)
{
printf("DISPLAY OFF \n");
//finish();
@ -842,8 +856,8 @@ int rawX, rawY, rawPressure,i;
BackgroundRGB(255,255,255,255);
IsDisplayOn=1;
SelectPTT(15,0);
SelectPTT(16,0);
SelectPTT(20,0);
SelectPTT(21,0);
UpdateWindow();
IsDisplayOn=1;
//usleep(500000);
@ -853,7 +867,7 @@ int rawX, rawY, rawPressure,i;
if(IsDisplayOn==1)
{
UpdateWindow();
// DrawButton(i);
// DrawButton(i)
// End();
}
@ -888,6 +902,9 @@ static void
terminate(int dummy)
{
printf("Terminate\n");
char Commnd[255];
sprintf(Commnd,"stty echo");
system(Commnd);
/*restoreterm();
finish();*/
@ -897,8 +914,8 @@ terminate(int dummy)
// main initializes the system and shows the picture.
// Exit and clean up when you hit [RETURN].
int main(int argc, char **argv) {
int n;
char *progname = argv[0];
// int n; // not used?
// char *progname = argv[0]; // not used?
int NoDeviceEvent=0;
saveterm();
init(&wscreen, &hscreen);
@ -945,78 +962,114 @@ int main(int argc, char **argv) {
int wbuttonsize=wscreen/5;
int hbuttonsize=hscreen/5;
int hbuttonsize=hscreen/6;
// Frequency
int button=AddButton(0*wbuttonsize+20,0+hbuttonsize*0+20,wbuttonsize*0.9,hbuttonsize*0.9);
color_t Col;
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"SR125",&Col);
AddButtonStatus(button," 71 MHz ",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"SR125",&Col);
AddButtonStatus(button," 71 MHz ",&Col);
button=AddButton(1*wbuttonsize+20,hbuttonsize*0+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"SR250",&Col);
AddButtonStatus(button,"146.5 MHz",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"SR250",&Col);
AddButtonStatus(button,"146.5 MHz",&Col);
button=AddButton(2*wbuttonsize+20,hbuttonsize*0+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"SR333",&Col);
AddButtonStatus(button,"437 MHz ",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"SR333",&Col);
AddButtonStatus(button,"437 MHz ",&Col);
button=AddButton(3*wbuttonsize+20,hbuttonsize*0+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"SR500",&Col);
AddButtonStatus(button,"1249 MHz",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"SR500",&Col);
AddButtonStatus(button,"1249 MHz",&Col);
button=AddButton(4*wbuttonsize+20,hbuttonsize*0+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"SR1000",&Col);
AddButtonStatus(button,"1255 MHz",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"SR1000",&Col);
// FEC
button=AddButton(0*wbuttonsize+20,hbuttonsize*1+20,wbuttonsize*0.9,hbuttonsize*0.9);
AddButtonStatus(button,"1255 MHz",&Col);
// Symbol Rate
button=AddButton(0*wbuttonsize+20,0+hbuttonsize*1+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"FEC 1/2",&Col);
AddButtonStatus(button,"SR 250",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"FEC 1/2",&Col);
AddButtonStatus(button,"SR 250",&Col);
button=AddButton(1*wbuttonsize+20,hbuttonsize*1+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"FEC 2/3",&Col);
AddButtonStatus(button,"SR 333",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"FEC 2/3",&Col);
AddButtonStatus(button,"SR 333",&Col);
button=AddButton(2*wbuttonsize+20,hbuttonsize*1+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"SR 500",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"SR 500",&Col);
button=AddButton(3*wbuttonsize+20,hbuttonsize*1+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"SR1000",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"SR1000",&Col);
button=AddButton(4*wbuttonsize+20,hbuttonsize*1+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"SR2000",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"SR2000",&Col);
// FEC
button=AddButton(0*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"FEC 1/2",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"FEC 1/2",&Col);
button=AddButton(1*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"FEC 2/3",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"FEC 2/3",&Col);
button=AddButton(2*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"FEC 3/4",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"FEC 3/4",&Col);
button=AddButton(3*wbuttonsize+20,hbuttonsize*1+20,wbuttonsize*0.9,hbuttonsize*0.9);
button=AddButton(3*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"FEC 5/6",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"FEC 5/6",&Col);
button=AddButton(4*wbuttonsize+20,hbuttonsize*1+20,wbuttonsize*0.9,hbuttonsize*0.9);
button=AddButton(4*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"FEC 7/8",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"FEC 7/8",&Col);
//SOURCE
button=AddButton(0*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
button=AddButton(0*wbuttonsize+20,hbuttonsize*3+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"CAM MPEG2",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"CAM MPEG2",&Col);
button=AddButton(1*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
button=AddButton(1*wbuttonsize+20,hbuttonsize*3+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"CAM H264",&Col);
Col.r=0;Col.g=128;Col.b=0;
@ -1025,20 +1078,20 @@ button=AddButton(0*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0
char PictureName[255];
//strcpy(PictureName,ImageFolder);
GetNextPicture(PictureName);
button=AddButton(2*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
button=AddButton(2*wbuttonsize+20,hbuttonsize*3+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"Patern",&Col);
AddButtonStatus(button,"Pattern",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,PictureName,&Col);
AddButtonStatus(button,"Pattern",&Col);
button=AddButton(3*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
button=AddButton(3*wbuttonsize+20,hbuttonsize*3+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"TS File",&Col);
Col.r=0;Col.g=128;Col.b=0;
AddButtonStatus(button,"Video Name",&Col);
AddButtonStatus(button,"TSFile",&Col);
button=AddButton(4*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0.9);
button=AddButton(4*wbuttonsize+20,hbuttonsize*3+20,wbuttonsize*0.9,hbuttonsize*0.9);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"Carrier",&Col);
Col.r=0;Col.g=128;Col.b=0;
@ -1046,13 +1099,13 @@ button=AddButton(4*wbuttonsize+20,hbuttonsize*2+20,wbuttonsize*0.9,hbuttonsize*0
//TRANSMIT
button=AddButton(0*wbuttonsize+20,hbuttonsize*3+20,wbuttonsize*1.2,hbuttonsize*1.2);
button=AddButton(0*wbuttonsize+20,hbuttonsize*4+20,wbuttonsize*1.2,hbuttonsize*1.2);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"TX ",&Col);
Col.r=255;Col.g=0;Col.b=0;
AddButtonStatus(button,"TX ON",&Col);
button=AddButton(1*wbuttonsize*3+20,hbuttonsize*3+20,wbuttonsize*1.2,hbuttonsize*1.2);
button=AddButton(1*wbuttonsize*3+20,hbuttonsize*4+20,wbuttonsize*1.2,hbuttonsize*1.2);
Col.r=0;Col.g=0;Col.b=128;
AddButtonStatus(button,"RX ",&Col);
Col.r=0;Col.g=128;Col.b=0;
@ -1061,21 +1114,54 @@ button=AddButton(1*wbuttonsize*3+20,hbuttonsize*3+20,wbuttonsize*1.2,hbuttonsize
Start(wscreen,hscreen);
IsDisplayOn=1;
// Determine button highlights
char Param[]="symbolrate";
// Frequency
char Param[255];
char Value[255];
strcpy(Param,"freqoutput");
GetConfigParam(PATH_CONFIG,Param,Value);
strcpy(freqtxt,Value);
printf("Value=%s %s\n",Value,"Freq");
if(strcmp(Value,"71")==0)
{
SelectFreq(0);
}
if(strcmp(Value,"146.5")==0)
{
SelectFreq(1);
}
if(strcmp(Value,"437")==0)
{
SelectFreq(2);
}
if(strcmp(Value,"1249")==0)
{
SelectFreq(3);
}
if(strcmp(Value,"1255")==0)
{
SelectFreq(4);
}
// Symbol Rate
strcpy(Param,"symbolrate");
GetConfigParam(PATH_CONFIG,Param,Value);
SR=atoi(Value);
printf("Value=%s %s\n",Value,"SR");
switch(SR)
{
case 125:SelectSR(0);break;
case 250:SelectSR(1);break;
case 333:SelectSR(2);break;
case 500:SelectSR(3);break;
case 1000:SelectSR(4);break;
case 125:SelectSR(5);break;
case 250:SelectSR(6);break;
case 333:SelectSR(7);break;
case 500:SelectSR(8);break;
case 1000:SelectSR(9);break;
}
// FEC
strcpy(Param,"fec");
strcpy(Value,"");
GetConfigParam(PATH_CONFIG,Param,Value);
@ -1083,37 +1169,41 @@ button=AddButton(1*wbuttonsize*3+20,hbuttonsize*3+20,wbuttonsize*1.2,hbuttonsize
fec=atoi(Value);
switch(fec)
{
case 1:SelectFec(5);break;
case 2:SelectFec(6);break;
case 3:SelectFec(7);break;
case 5:SelectFec(8);break;
case 7:SelectFec(9);break;
case 1:SelectFec(10);break;
case 2:SelectFec(11);break;
case 3:SelectFec(12);break;
case 5:SelectFec(13);break;
case 7:SelectFec(14);break;
}
// Input Mode
strcpy(Param,"modeinput");
GetConfigParam(PATH_CONFIG,Param,Value);
strcpy(ModeInput,Value);
printf("Value=%s %s\n",Value,"Input Mode"); //
if(strcmp(Value,"CAMH264")==0)
{
SelectSource(11,1);
SelectSource(16,1);
}
if(strcmp(Value,"CAMMPEG-2")==0)
{
SelectSource(10,1);
SelectSource(15,1);
}
if(strcmp(Value,"PATERNAUDIO")==0)
{
SelectSource(12,1);
SelectSource(17,1);
}
if(strcmp(Value,"CARRIER")==0)
{
SelectSource(13,1);
SelectSource(18,1);
}
UpdateWindow();
printf("Update Window\n");
// RESIZE JPEG TO BE DONE
/*char PictureName[255];
strcpy(PictureName,ImageFolder);