diff --git a/src/gui/rpidatvtouch.c b/src/gui/rpidatvtouch.c index 6dc735f..86bc07e 100644 --- a/src/gui/rpidatvtouch.c +++ b/src/gui/rpidatvtouch.c @@ -40,12 +40,12 @@ int wscreen, hscreen; float scaleXvalue, scaleYvalue; // Coeff ratio from Screen/TouchArea -typedef struct { +typedef struct { int r,g,b; } color_t; -typedef struct { +typedef struct { char Text[255]; color_t Color; } status_t; @@ -53,40 +53,58 @@ typedef struct { #define MAX_STATUS 10 typedef struct { int x,y,w,h; - + status_t Status[MAX_STATUS]; int IndexStatus; int NoStatus; 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; + size_t len = 0; int read; - //printf("Read %s\n",PathConfigFile); - FILE *fp=fopen(PathConfigFile,"r"); + 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); @@ -100,10 +118,10 @@ GetConfigParam(char *PathConfigFile,char *Param, char *Value) else printf("Config file not found \n"); fclose(fp); - + } -SetConfigParam(char *PathConfigFile,char *Param,char *Value) +void SetConfigParam(char *PathConfigFile,char *Param,char *Value) { char * line = NULL; size_t len = 0; @@ -113,7 +131,7 @@ SetConfigParam(char *PathConfigFile,char *Param,char *Value) strcat(BackupConfigName,".bak"); //printf("Read %s\n",PathConfigFile); FILE *fp=fopen(PathConfigFile,"r"); - + FILE *fw=fopen(BackupConfigName,"w+"); if(fp!=0) { @@ -155,8 +173,8 @@ int IsButtonPushed(int NbButton,int x,int y) } else { - scaledX = wscreen-y/scaleXvalue; //FOR INVERSED TOUCSCREEN (AIW) - scaledY = hscreen-x/scaleYvalue; + scaledX = wscreen-y/scaleXvalue; //FOR INVERSED TOUCSCREEN (AIW) + scaledY = hscreen-x/scaleYvalue; } //printf("x=%d y=%d scaledx %d scaledy %d\n",x,y,scaledX,scaledY); int margin=20; @@ -169,7 +187,7 @@ int IsButtonPushed(int NbButton,int x,int y) } else return 0; - + } int AddButton(int x,int y,int w,int h) @@ -185,27 +203,25 @@ 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++; - + return Button->IndexStatus++; } -DrawButton(int ButtonIndex) +void DrawButton(int ButtonIndex) { button_t *Button=&(ButtonArray[ButtonIndex]); - + Fill(Button->Status[Button->NoStatus].Color.r, Button->Status[Button->NoStatus].Color.g, Button->Status[Button->NoStatus].Color.b, 1); 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; @@ -215,15 +231,15 @@ int GetButtonStatus(int ButtonIndex) { button_t *Button=&(ButtonArray[ButtonIndex]); return Button->NoStatus; - + } -GetNextPicture(char *PictureName) +void GetNextPicture(char *PictureName) { - + DIR *d; struct dirent *dir; - + d = opendir(ImageFolder); if (d) { @@ -235,18 +251,15 @@ GetNextPicture(char *PictureName) if( len > 4 && strcmp(dir->d_name + len - 4, ".jpg") == 0) { printf("%s\n", dir->d_name); - + 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}; @@ -325,9 +338,9 @@ int getTouchScreenDetails(int *screenXmin,int *screenXmax,int *screenYmin,int *s } } - } + } } - + return IsAtouchDevice; } @@ -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; @@ -388,13 +401,12 @@ int getTouchSample(int *rawX, int *rawY, int *rawPressure) void UpdateWindow() { int i; - for(i=0;i/dev/null 2>/dev/null" if((strcmp(ModeInput,TabModeInput[0])==0)||(strcmp(ModeInput,TabModeInput[1])==0)) //CAM { printf("DISPLAY OFF \n"); - IsDisplayOn=0; + IsDisplayOn=0; finish(); - + system("v4l2-ctl --overlay=1 >/dev/null 2>/dev/null"); } - + system(PATH_SCRIPT_A); - + } -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,55 +504,50 @@ 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; int fft_size=FFT_SIZE; fftwf_complex *fftin; - fftin = (fftwf_complex *)fftwf_malloc(sizeof(fftwf_complex) * fft_size); - fftout = (fftwf_complex *)fftwf_malloc(sizeof(fftwf_complex) * fft_size); + fftin = (fftwf_complex *)fftwf_malloc(sizeof(fftwf_complex) * fft_size); + fftout = (fftwf_complex *)fftwf_malloc(sizeof(fftwf_complex) * fft_size); 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"); + 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 ); - + //printf("NbRead %d %d\n",Nbread,sizeof(struct GPU_FFT_COMPLEX)); - + fseek(pFileIQ,(1200000-FFT_SIZE)*sizeof(fftwf_complex),SEEK_CUR); } 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" + #define PATH_SCRIPT_LEAN "sudo /home/pi/rpidatv/scripts/leandvbgui.sh 2>&1" char *line=NULL; size_t len = 0; ssize_t read; @@ -544,25 +560,25 @@ ProcessLeandvb() RGBA(255, 255, 128,1, shapecolor); printf("Entering LeandProcess\n"); - FinishedButton=0; + FinishedButton=0; // Thread FFT pthread_create (&thfft,NULL, &DisplayFFT,NULL); - + //END ThreadFFT - // Thread FFT + +// Thread FFT pthread_create (&thbutton,NULL, &WaitButtonEvent,NULL); - -//END ThreadFFT +//END ThreadFFT fp=popen(PATH_SCRIPT_LEAN, "r"); if(fp==NULL) printf("Process error\n"); while (((read = getline(&line, &len, fp)) != -1)&&(FinishedButton==0)) { - + char strTag[20]; int NbData; static int Decim=0; @@ -574,10 +590,11 @@ ProcessLeandvb() static float FREQ=0; if((strcmp(strTag,"SYMBOLS")==0)) { - + token = strtok(line," "); token = strtok(NULL," "); sscanf(token,"%d",&NbData); + if(Decim%25==0) { //Start(wscreen,hscreen); @@ -590,7 +607,7 @@ ProcessLeandvb() { strcpy(sLock,"Lock"); Fill(0,255,0, 1); - + } else { @@ -599,7 +616,7 @@ ProcessLeandvb() } Roundrect(200,0,100,50, 10, 10); Fill(255, 255, 255, 1); // White text - Text(200, 20, sLock, SerifTypeface, 25); + Text(200, 20, sLock, SerifTypeface, 25); //Signal Strength char sSignalStrength[100]; @@ -617,30 +634,28 @@ 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]; static VGfloat PowerFFTy[FFT_SIZE]; StrokeWidth(2); - + Stroke(150, 150, 200, 0.8); int i; if(fftout!=NULL) { for(i=0;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; + break; } - if((i==15)&&(GetButtonStatus(i)==1)) + if((i==20)&&(GetButtonStatus(i)==1)) { - - TransmitStop(); usleep(500000); SelectPTT(i,0); - UpdateWindow(); + UpdateWindow(); break; } - if(i==16) + if(i==21) { printf("DISPLAY OFF \n"); //finish(); BackgroundRGB(0,0,0,255); ReceiveStart(); BackgroundRGB(255,255,255,255); - IsDisplayOn=1; - - SelectPTT(15,0); - SelectPTT(16,0); + IsDisplayOn=1; + + SelectPTT(20,0); + SelectPTT(21,0); UpdateWindow(); IsDisplayOn=1; //usleep(500000); @@ -853,29 +867,29 @@ int rawX, rawY, rawPressure,i; if(IsDisplayOn==1) { UpdateWindow(); - // DrawButton(i); + // DrawButton(i) // End(); } /*if((i==0)&&(GetButtonStatus(i)==0)) - { + { printf("DISPLAY OFF \n"); finish(); IsDisplayOn=0; } if((i==0)&&(GetButtonStatus(i)==1)) - { + { printf("DISPLAY ON \n"); init(&wscreen, &hscreen); Start(wscreen,hscreen); - IsDisplayOn=1; + IsDisplayOn=1; UpdateWindow(); }*/ //FixMe : Add a Antibounce } } //circleCursor(scaledX,h-scaledY); - + // key = getchar(); // if (key == endchar || key == '\n') { @@ -888,7 +902,10 @@ static void terminate(int dummy) { printf("Terminate\n"); - + char Commnd[255]; + sprintf(Commnd,"stty echo"); + system(Commnd); + /*restoreterm(); finish();*/ exit(1); @@ -897,15 +914,15 @@ 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); rawterm(); int screenXmax, screenXmin; int screenYmax, screenYmin; - int ReceiveDirect=0; + int ReceiveDirect=0; int i; for (i = 0; i < 16; i++) { struct sigaction sa; @@ -944,101 +961,137 @@ int main(int argc, char **argv) { - int wbuttonsize=wscreen/5; - int hbuttonsize=hscreen/5; + int wbuttonsize=wscreen/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,"SR 333",&Col); + Col.r=0;Col.g=128;Col.b=0; + 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*1+20,wbuttonsize*0.9,hbuttonsize*0.9); + + 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); - Col.r=0;Col.g=0;Col.b=128; + + 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); - Col.r=0;Col.g=0;Col.b=128; + + 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; - AddButtonStatus(button,"CAM H264",&Col); + AddButtonStatus(button,"CAM H264",&Col); -char PictureName[255]; + char PictureName[255]; //strcpy(PictureName,ImageFolder); GetNextPicture(PictureName); -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,"Patern",&Col); - Col.r=0;Col.g=128;Col.b=0; - AddButtonStatus(button,PictureName,&Col); - -button=AddButton(3*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,"Pattern",&Col); + Col.r=0;Col.g=128;Col.b=0; + AddButtonStatus(button,"Pattern",&Col); + + 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,36 +1099,69 @@ 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); + 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; - AddButtonStatus(button,"RX ON",&Col); - + AddButtonStatus(button,"RX ON",&Col); + Start(wscreen,hscreen); IsDisplayOn=1; - - char Param[]="symbolrate"; - char Value[255]; +// Determine button highlights + + // 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,42 +1169,46 @@ 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); GetNextPicture(PictureName); - + Image(0,0,300,200,PictureName); End();