kopia lustrzana https://github.com/F5OEO/rpidatv
Rewritten GUI
rodzic
8fa6d7f8d3
commit
d7383f3bbe
|
@ -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);
|
||||
|
|
Ładowanie…
Reference in New Issue