void LogoManager_MoveExternalUpdates(void)
{
  TRACEENTER();

  char                  Files[3][20] = {"LogoPack.tar", "Logos.lil", "lil.add"};
  char                  Drive, Partition;
  int                   File;
  char                  DatFile[28], cmd[255];

  //Scan some external drives to find the logo updates
  for(File = 0; File < 3; File++)
  {
    for(Drive = 'b'; Drive < 'f'; Drive++)
    {
      for(Partition = '0'; Partition < '2'; Partition++)
      {
        if(Partition == '0')
          TAP_SPrint(DatFile, "/mnt/sd%c/%s", Drive, Files[File]);
        else
          TAP_SPrint(DatFile, "/mnt/sd%c%c/%s", Drive, Partition, Files[File]);

        if(!access(DatFile, F_OK))
        {
          TAP_SPrint(cmd, "mv %s /mnt/hd/ProgramFiles/Settings/Logos", DatFile);
          system(cmd);
        }
      }
    }
  }

  TRACEEXIT();
}
Пример #2
0
void SaveDatToFile( void )
{
	TYPE_File	*writeFile;
	int i;
	char	str[256];

    appendToLogfile("SaveDatToFile: Started.", INFO);
	playDataBuffer_ini = TAP_MemAlloc( PLAYBACKDATA_BUFFER_SIZE_ini );				// Buffer the write data to memory before writing all in one hit
	memset( playDataBuffer_ini, '\0', PLAYBACKDATA_BUFFER_SIZE_ini );				// set the whole buffer to the string termination character (null)
	playDataBufferPtr_ini = 0;

	TAP_SPrint(str, "%d\r\n", numberOfPlayedFiles);   // First entry is the number of played files.
	WriteStrToDatBuf( str );

    for (i = 0; i <= numberOfPlayedFiles; i++)
    {
         // Write entry TAB with delimited fields.
         // 1. startcluster
         // 2. current block position.
         // 3. total block size.
         // 4. filename.
         TAP_SPrint(str, "%d\t%d\t%d\t%s\r\n", playedFiles[i]->startCluster, playedFiles[i]->currentBlock, playedFiles[i]->totalBlock, playedFiles[i]->name); 
	     WriteStrToDatBuf( str );
    }

    appendToLogfile("SaveDatToFile: WriteDatFile called to write DATA file.", WARNING);
	WriteDatFile( writeFile );										// write all the data in one pass
	TAP_MemFree( playDataBuffer_ini );										// must return the memory back to the heap
    appendToLogfile("SaveDatToFile: Finished.", INFO);
}
Пример #3
0
//-----------------------------------------------------------------------
//
void ReturnFromMoveRenameYesNo( bool result)
{
    // Routine if invoked upon return from the "Automatic Rename on Move" confirmation prompt.
     
    char str1[200], str2[200];
    int  renameResult;

    appendToLogfile("ReturnFromMoveRenameYesNo: Started.", INFO);

    // Check the result of the confirmation panel to decide what to do.
	switch (result)
    {
           case TRUE:  // YES
                       appendStringToLogfile("ReturnFromMoveRenameYesNo: Rename from %s", GlbSourceFile, WARNING);
                       appendStringToLogfile("ReturnFromMoveRenameYesNo: to %s", GlbRenamedFile, WARNING);
                       #ifdef WIN32  // If testing on WIN32 platform don't do rename as not yet implemented in the TAP SDK.
                       renameResult=0;
                       #else
                  	   renameResult=TAP_Hdd_Rename(GlbSourceFile,GlbRenamedFile);
                       #endif          
                  	   if (renameResult!=0)
                       {
                          TAP_SPrint(str1,"Error renaming: '%s'", GlbSourceFile);
                          TAP_SPrint(str2,"to: '%s'", GlbRenamedFile);
                          fileMoved      = FALSE;
                          returnFromMove = FALSE;   // Don't close the Move window to give user a chance to choose a different folder.
                          ShowMessageWin( rgn, "Rename On Move Failed.", str1, str2, 500 ); 
                          break;
                       }   
                       strncpy( GlbSourceFile, GlbRenamedFile, 256 );   // Copy the renamed filename into the Global variable so that we move the renamed file.
                       PerformMove();
                       switch (RenameOnMoveOption)
                       {
                              case 0:   // "Rename and confirm"
                                        // Close the Move Window after this, otherwise it is closed as part of the other routines.
                                        CloseArchiveMoveWindow();			    // Close the move window
                                        break;
                                        
                              case 2:   // "Rename automatically (with message) "
                                        TAP_SPrint(str1, "%s/%s", GlbTargetDir, GlbRenamedFile);  
                                        ShowMessageWin( rgn, "File Move Successful.", "Moved and renamed file to:", str1, 400 ); 
                                        break;
                                        
                              default:  // "Rename automatically (no message) "
                                        break;
                       }
                       break;
                      
	       case FALSE: // NO
                       fileMoved      = FALSE;
                       returnFromMove = FALSE;   // Don't close the Move window to give user a chance to choose a different folder.
                       break;	
    }   
    appendToLogfile("ReturnFromMoveRenameYesNo: Finished.", INFO);
}
Пример #4
0
void DumpMemoryDword(dword *p, dword size)
{
  TRACEENTER();

  dword                *StartAddress = p;
  int                   CollectedBytes;
  char                  Header[20];
  char                  s[255];
  int                   Remaining;

  if(!p)
  {
    TAP_Print("0x00000000 NULL\n");

    TRACEEXIT();
    return;
  }

  s[0] = '\0';
  CollectedBytes = 0;

  TAP_SPrint(Header, "%p 0x%4.4x: ", p, (dword)p - (dword)StartAddress);

  Remaining = size;
  while(Remaining > 0)
  {
    TAP_SPrint(&s[strlen(s)], "%8.8x ", *p);

    CollectedBytes += 4;
    p++;
    Remaining -= 4;

    if(CollectedBytes >= 16)
    {
      strcat(s, "\n");
      TAP_Print(Header);
      TAP_Print(s);
      s[0] = '\0';
      TAP_SPrint(Header, "%p 0x%4.4x: ", p, (dword)p - (dword)StartAddress);
      CollectedBytes = 0;
    }
  }

  if(strlen(s))
  {
    strcat(s, "\n");
    TAP_Print(Header);
    TAP_Print(s);
  }

  TRACEEXIT();
}
Пример #5
0
bool HDD_Move (char *FileName, char *FromDir, char *ToDir)
{
  dword                 TAP_Hdd_MoveOld;
  char                  FromFile [FBLIB_DIR_SIZE], TempFromDir [FBLIB_DIR_SIZE], TempToDir [FBLIB_DIR_SIZE];

  if (strlen(FromDir) >= sizeof(TempFromDir) || strlen(ToDir) >= sizeof(TempToDir)) return FALSE;

  //The move function doesn't recognize a / as root. Use /DataFiles/.. instead.
  strcpy (TempFromDir, FromDir);
  if (!strcmp (TempFromDir, "/")) strcpy (TempFromDir, "/DataFiles/..");

  strcpy (TempToDir, ToDir);
  if (!strcmp (TempToDir, "/")) strcpy (TempToDir, "/DataFiles/..");

  if (TAP_Hdd_Move == NULL) TAP_Hdd_Move = (tTAP_Hdd_Move) TAP_GetSystemProc(oTAP_Hdd_Move);
  if (TAP_Hdd_Move == NULL)
  {
#ifdef DEBUG_FIREBIRDLIB
    TAP_Print ("FireBirdLib: HDD_Move: _appl_version = %4.4x\n", _appl_version);
#endif
    if (!(TAP_Hdd_MoveOld = FIS_fwMoveOld())) return FALSE;

    if (strlen(TempFromDir) + 1 + strlen(FileName) >= sizeof(FromFile)) return FALSE;
    TAP_SPrint (FromFile, "%s/%s", TempFromDir, FileName);

#ifdef DEBUG_FIREBIRDLIB
    TAP_Print ("FireBirdLib: MoveOld: %s => %s\n", FromFile, TempToDir);
#endif
    CallFirmware (TAP_Hdd_MoveOld, (dword) FromFile, (dword) TempToDir, 0, 0);
    return TRUE;
  }
  else return TAP_Hdd_Move(TempFromDir, TempToDir, FileName);
}
Пример #6
0
void CallTraceExportStats(char *FileName)
{
  char                  Output[512];
  char                  AbsFileName[FBLIB_DIR_SIZE];
  int                   f;
  double                t;
  int                   i;

  if(!CallTraceInitialized) CallTraceInit();

  if(CallTraceStats && FileName)
  {
    ConvertPathType(FileName, AbsFileName, PF_FullLinuxPath);
    f = open(AbsFileName, O_WRONLY | O_CREAT | O_TRUNC);
    if(f >= 0)
    {
      strcpy(Output, "Name;NrCalls;MinTime;MaxTime;TotalTime;AvgTime\r\n");
      write(f, Output, strlen(Output));

      for(i = 0; i < CallTraceStatsEntries;i++)
      {
        if(CallTraceStats[i].NrCalls)
          t = (double)(CallTraceStats[i].TotalTime * 10) / CallTraceStats[i].NrCalls;
        else
          t = 0;
        TAP_SPrint(Output, "%s;%d;%d;%d;%d;%1.1f\r\n", CallTraceStats[i].ProcName, CallTraceStats[i].NrCalls, CallTraceStats[i].MinTime*10, CallTraceStats[i].MaxTime*10, CallTraceStats[i].TotalTime*10, t);
        write(f, Output, strlen(Output));
      }
      close(f);
    }
  }
}
Пример #7
0
char* Time_HHMM( dword mjd ) {
    static char time[10];
    int min;
    int hour;
    hour = (mjd&0xff00)>>8;				// extract the time
    min = (mjd&0xff);
    TAP_SPrint(time, "%02d:%02d", hour, min);
    return time;
}
Пример #8
0
bool EPGInfo_CreateCache(int NrRecords)
{
  TRACEENTER();

  extern dword __tap_ud__;

  TAP_SPrint(EPGCacheFile, "/mnt/hd/tmp/EPGCache_%x.bin", __tap_ud__);

  if(EPGInfoCacheFile) EPGInfo_DestroyCache();

  EPGInfoCacheSize = NrRecords * sizeof(TYPE_EPGInfo);

  //Delete the old cache
  unlink(EPGCacheFile);

  mkdir("/mnt/hd/tmp", 0777);
  EPGInfoCacheFile = open(EPGCacheFile, O_RDWR | O_CREAT | O_TRUNC, (mode_t)0600);

  if(EPGInfoCacheFile == -1)
  {
    LogEntryFBLibPrintf(TRUE, "EPGInfo: failed to create the memory mapped EPG cache");

    TRACEEXIT();
    return FALSE;
  }

  //Increase the size of the cache as needed
  if(lseek(EPGInfoCacheFile, EPGInfoCacheSize, SEEK_SET) == -1)
  {
    LogEntryFBLibPrintf(TRUE, "EPGInfo: failed to stretch the memory mapped EPG cache");
    close(EPGInfoCacheFile);
    unlink(EPGCacheFile);

    TRACEEXIT();
    return FALSE;
  }
  write(EPGInfoCacheFile, "", 1);

  //Map the memory
  EPGInfoCacheMap = mmap(0, EPGInfoCacheSize, PROT_READ | PROT_WRITE, MAP_SHARED, EPGInfoCacheFile, 0);
  if(EPGInfoCacheMap == MAP_FAILED)
  {
    LogEntryFBLibPrintf(TRUE, "EPGInfo: failed to memory map the EPG cache file");
    close(EPGInfoCacheFile);
    unlink(EPGCacheFile);

    TRACEEXIT();
    return FALSE;
  }

  EPGInfoCache = (TYPE_EPGInfo*)EPGInfoCacheMap;

  TRACEEXIT();
  return TRUE;
}
Пример #9
0
void DisplayChannelSelection( void )
{
	char str[256];
	TYPE_TapChInfo	chInfo;	
	
	TAP_Channel_GetInfo( selectedSvc, selectedLogo, &chInfo );
	TAP_SPrint( str, "%d -> %d: %d: %s", oldPageNumber, pageNumber, chInfo.logicalChNum, chInfo.chName );

	TAP_Osd_FillBox( rgn, 53, 490, 614, 86, FILL_COLOUR );				// clear the bottom portion
	TAP_Osd_PutStringAf1622( rgn, 58, 518, 610, str, INFO_COLOUR, FILL_COLOUR );
}
void InitTAPexFailedMsg(char *ProgramName)
{
  TRACEENTER();

  char                  s[28];

  TAP_SPrint(s, "%d %4.4x", GetSysID(), ApplID);
  ShowMessageWin(ProgramName ? ProgramName : "", "FBLib failed to init", s, 500);

  TRACEEXIT();
}
Пример #11
0
//-----------------------------------------------------------------------
//
void ActivateDeleteWindow(char* filename, dword attr)
{
    char title[50], str1[200], str2[200], str3[200];

	if (myfiles[CurrentDirNumber][chosenLine]->isRecording)  // We cannot delete a recording file.
	{
         ShowMessageWin( rgn, "File Delete Not Allowed.", "You cannot delete a file that is", "currently recording.", 400 );
         return;
    }     
                                          
    deleteWindowShowing = TRUE;
    fileDeleted = FALSE;

    switch (attr)
    {
           case ATTR_FOLDER: TAP_SPrint(title, "Folder Delete Confirmation");
                             TAP_SPrint(str1,  "Folder: %s",filename);
                             TAP_SPrint(str2, "Do you want to delete this folder?");
                             break;
                
           default:          TAP_SPrint(title, "File Delete Confirmation");
                             TAP_SPrint(str1, "File: %s",filename);
                             TAP_SPrint(str2, "Do you want to delete this file?");
                             break;
    }
    

    DisplayYesNoWindow(title, str1, str2, "Yes", "No", 1, &ReturnFromDeleteYesNo );

}
char *LogoManager_GetPathToLogoByChannelID(ulong64 ChannelID, tLogoStyle LogoStyle, tLogoSize LogoSize, tLogoAspect LogoAR, char *LogoPath)
{
  TRACEENTER();

  char                  s[20], LP[FBLIB_DIR_SIZE];

  if(LogoPath)
  {
    LogoManager_Initialize(LogoManager_CB);

    TAP_SPrint(LogoPath, "%s/", LogoManager_GetDirectory(LogoStyle, LogoAR, LP));

    HDD_TAP_PushDir();
    HDD_ChangeDir(LOGOROOT);
    if(TAP_Hdd_Exist(LILNAME))
    {
      TAP_SPrint(s, "%16.16llx", ChannelID);
      INIOpenFile(LILNAME, NULL);
      INIGetString(s, &LogoPath[strlen(LogoPath)], "", 40);
      INICloseFile();
      HDD_TAP_PopDir();

      switch(LogoSize)
      {
        case LGSZ_qtl: strcat(LogoPath, ".qtl"); break;
        case LGSZ_ibl: strcat(LogoPath, ".ibl"); break;
        case LGSZ_qsl: strcat(LogoPath, ".qsl"); break;
          default:
            break;
      }

      TRACEEXIT();
      return LogoPath;
    }
    HDD_TAP_PopDir();
  }

  TRACEEXIT();
  return "";
}
Пример #13
0
dword TAP_EventHandler(word wEvent, dword dwParam1, dword dwParam2)
{
	char message[10];
	dword returnKey, state, subState;

	returnKey = dwParam1;

	switch(wEvent)
	/* ------------------------------------------------------------------------------------ */
	{
	case EVT_IDLE:

		tmMain();

		returnKey = 0;

		break;
	/* ------------------------------------------------------------------------------------ */
	case EVT_KEY:

	 	TAP_GetState( &state, &subState );

		if
		(
			(dwParam1 == RKEY_Exit)
			&&
			(state == STATE_Normal)
			&&
			(subState == SUBSTATE_Normal)
		)
		{
			TAP_SPrint( message, "%5u", tmNumberOfEvents);

			ShowMessageWin("Number Of Events Stored:",message);
		}

		if(dwParam1 == RKEY_F4)
		{
			ShowMessageWin("Exiting","TimeMon Tap");

			TAP_Exit();
		}

		break;
	/* ------------------------------------------------------------------------------------ */
	default :
		 	break;
	/* ------------------------------------------------------------------------------------ */
	}

	return (returnKey);
}
Пример #14
0
//-----------------------------------------------------------------------
//
void DisplayArchiveMoveWindow()
{
    char title[50];

    appendToLogfile("DisplayArchiveMoveWindow: Started.", INFO);
 
    // Display the pop-up window - will also clear any old text if we are doing a refresh.
    TAP_Osd_PutGd( rgn, MOVE_WINDOW_X, MOVE_WINDOW_Y, &_popup476x416Gd, TRUE );
//	TAP_Osd_FillBox( moveRgn, 0, 0, 720, 576, POPUP_FILL_COLOUR );		// clear the memory region with FILL COLOUR

    // Format and display the title for the Move Window.
    TAP_SPrint(title, "Select Destination Folder");
    PrintCenter( rgn, MOVE_WINDOW_X, MOVE_WINDOW_Y +  14, MOVE_WINDOW_X+MOVE_WINDOW_W, title, MAIN_TEXT_COLOUR, 0, FNT_Size_1926 );
	
    DisplayMoveLine();
    appendToLogfile("DisplayArchiveMoveWindow: Finised.", INFO);
}
Пример #15
0
bool ExtAttribSet(char *FileName, char *AttrName, byte *Data, int DataLen)
{
  TRACEENTER();

  char                  FullAttrName[128];
  char                  AbsFileName[FBLIB_DIR_SIZE];
  int                   f;

  if(!FileName || !*FileName || !AttrName || !*AttrName)
  {
    TRACEEXIT();
    return FALSE;
  }

  ConvertPathType(FileName, AbsFileName, PF_FullLinuxPath);
  if(*AbsFileName)
  {
    f = open(AbsFileName, O_RDWR, 0600);
    if(f >= 0)
    {
      TAP_SPrint(FullAttrName, "user.%s", AttrName);
      if(fsetxattr(f, FullAttrName, Data, DataLen, XATTR_CREATE) == 0)
      {
        close(f);

        TRACEEXIT();
        return TRUE;
      }
      else
      {
        //As the attribute may already exist, retry with the replace flag
        if(fsetxattr(f, FullAttrName, Data, DataLen, XATTR_REPLACE) == 0)
        {
          close(f);

          TRACEEXIT();
          return TRUE;
        }
      }
      close(f);
    }
  }

  TRACEEXIT();
  return FALSE;
}
Пример #16
0
void DisplayChannelListWindow( int svcNum, byte svcType, void (*ReturningProcedure)( int, byte, bool ) )
{
	char str[256];

	CallbackChannelSelect = ReturningProcedure;

	channelListWindowShowing = TRUE;
	selectedLogo = svcNum;
	selectedSvc = svcType;

	sysDrawGraphicBorders();												// Draw the pretty graphical surround

	TAP_SPrint( str, text_ChannelSelection/*see language.c */ );
	TAP_Osd_PutStringAf1926( rgn, 58, 40, 390, str, TITLE_COLOUR, COLOR_Black );

	pageNumber = ( selectedLogo / MAX_CHANNELS_PER_PAGE ); 
	ReDrawAllLogosInPage(pageNumber);
}
Пример #17
0
char* Endtime_HHMM( dword mjd, word duration ) {
    static char time[10];
    int min;
    int hour;
    hour = (mjd&0xff00)>>8;				// extract the time
    min = (mjd&0xff);
    hour += (duration-(duration%60))/60;
    min += (duration%60);
    // Check for increase in the hour
    if( min >= 60 ) {
        hour++;
        min -= 60;
    }
    // Check hour sanity
    if( hour >= 24 ) hour -= 24;
    TAP_SPrint(time, "%02d:%02d", hour, min);
    return time;
}
Пример #18
0
void tmLogEvent(void)
{
	char	tmBuffer[TM_EVENT_BUFFER_SIZE];

	TYPE_File* fp;

	memset (tmBuffer, 0, TM_EVENT_BUFFER_SIZE);

	TAP_SPrint( tmBuffer, "%02u:%02u:%02u %02u/%02u/%04u, %3u,  %3u, %3u       %02u:%02u:%02u %02u/%02u/%04u, %3u,  %3u, %3u\r\n", hourLast, minLast, secLast, dayLast, monthLast, yearLast, signalLevelLast, signalQualityLast, timersLast, hour, min, sec, day, month, year, signalLevel, signalQuality, timers);

	if (fp = TAP_Hdd_Fopen (TM_FILENAME))
	{
		TAP_Hdd_Fseek (fp, tmBufferOffset, 0);

		TAP_Hdd_Fwrite (tmBuffer, 1, strlen(tmBuffer), fp);

		TAP_Hdd_Fclose (fp);

		tmBufferOffset += strlen(tmBuffer);

		tmNumberOfEvents++;

		if (tmBufferOffset >= (TM_FILE_MAX_LENGTH - TM_EVENT_BUFFER_SIZE))
		{
			ShowMessageWin("Log File Full","Exiting!");

			TAP_Exit();

			return;
		}
	}
	else
	{
		ShowMessageWin("Error! - Unable to open file","Exiting!");

		TAP_Exit();

		return;
	}
}
Пример #19
0
//------------
//
void DeleteFileFolder(void)
{
     char str[TS_FILE_NAME_SIZE];
     
     if (myfiles[CurrentDirNumber][chosenLine]->isPlaying)
        TAP_Hdd_StopTs();  // Stop the current playback to allow us to delete the file.
     TAP_Hdd_Delete(myfiles[CurrentDirNumber][chosenLine]->name);
     
     // Check if the delete was successful.
#ifdef WIN32
     if (FALSE)
#else  
     if (TAP_Hdd_Exist(myfiles[CurrentDirNumber][chosenLine]->name))  // Delete didn't work
#endif
     {
         TAP_SPrint(str,myfiles[CurrentDirNumber][chosenLine]->name);
         ShowMessageWin( rgn, "File Deletion Failed.", "Failed to delete file:", str, 400 );
         fileDeleted = FALSE;
     }
     else
         fileDeleted = TRUE;
     
}
void SeparatePathComponents(char *FullName, char *Path, char *FileName, char *FileExt)
{
  TRACEENTER();

  int                   Index;
  bool                  isDel;

  if(Path) Path[0] = '\0';
  if(FileName) FileName[0] = '\0';
  if(FileExt) FileExt[0] = '\0';

  if(!FullName || !*FullName)
  {
    TRACEEXIT();
    return;
  }

  SeparateFileNameComponents(FullName, Path, FileName, FileExt, &Index, NULL, &isDel);

  if(Index && FileName) TAP_SPrint(&FileName[strlen(FileName)], "-%d", Index);
  if(isDel && FileExt) strcat(FileExt, ".del");

  TRACEEXIT();
}
Пример #21
0
char *TimeFormat(dword DateTime, byte Sec, eTimeStampFormat TimeStampFormat)
{
  static char           sTimeStamp [25];      //Log adds a SPACE to sTimeStamp. Do not make it too small!
  word                  Mjd, Year;
  byte                  Month, Day, WeekDay, Hour, Min;

  Mjd  = MJD    (DateTime);
  Hour = HOUR   (DateTime);
  Min  = MINUTE (DateTime);
  TAP_ExtractMjd (Mjd, &Year, &Month, &Day, &WeekDay);

  switch (TimeStampFormat)
  {
    case TIMESTAMP_HM     : TAP_SPrint (sTimeStamp, "%02d:%02d", Hour, Min); break;
    case TIMESTAMP_HMS    : TAP_SPrint (sTimeStamp, "%02d:%02d:%02d", Hour, Min, Sec); break;
    case TIMESTAMP_YMD    : TAP_SPrint (sTimeStamp, "%02d-%02d-%02d", Year, Month, Day); break;
    case TIMESTAMP_YMDHM  : TAP_SPrint (sTimeStamp, "%04d-%02d-%02d %02d:%02d", Year, Month, Day, Hour, Min); break;
    case TIMESTAMP_YMDHMS : TAP_SPrint (sTimeStamp, "%04d-%02d-%02d %02d:%02d:%02d", Year, Month, Day, Hour, Min, Sec); break;
    case TIMESTAMP_FNYMDHM: TAP_SPrint (sTimeStamp, "%04d%02d%02d_%02d%02d", Year, Month, Day, Hour, Min); break;
    default               : sTimeStamp [0] = '\0';
  }

  return sTimeStamp;
}
Пример #22
0
char *TimeFormat(dword DateTime, byte Sec, eTimeStampFormat TimeStampFormat, char *Result)
{
  TRACEENTER();

  word                  Mjd, Year;
  byte                  Month, Day, WeekDay, Hour, Min;

  if(Result)
  {
    Mjd  = MJD    (DateTime);
    Hour = HOUR   (DateTime);
    Min  = MINUTE (DateTime);
    TAP_ExtractMjd(Mjd, &Year, &Month, &Day, &WeekDay);
    if(Mjd == 0)
    {
      Year = 0;
      Month = 0;
      Day = 0;
      WeekDay = 0;
    }

    switch(TimeStampFormat)
    {
      case TIMESTAMP_HM     : TAP_SPrint(Result, "%02d:%02d", Hour, Min); break;
      case TIMESTAMP_HMS    : TAP_SPrint(Result, "%02d:%02d:%02d", Hour, Min, Sec); break;
      case TIMESTAMP_YMD    : TAP_SPrint(Result, "%02d-%02d-%02d", Year, Month, Day); break;
      case TIMESTAMP_YMDHM  : TAP_SPrint(Result, "%04d-%02d-%02d %02d:%02d", Year, Month, Day, Hour, Min); break;
      case TIMESTAMP_YMDHMS : TAP_SPrint(Result, "%04d-%02d-%02d %02d:%02d:%02d", Year, Month, Day, Hour, Min, Sec); break;
      case TIMESTAMP_FNYMDHM: TAP_SPrint(Result, "%04d%02d%02d_%02d%02d", Year, Month, Day, Hour, Min); break;
      default               : Result[0] = '\0'; break;
    }
  }

  TRACEEXIT();
  return Result;
}
Пример #23
0
void SaveConfigurationToFile( void )
{
	TYPE_File	*writeFile = NULL;
	int	i = 0;
	char	str[256];

	dataBuffer_ini = TAP_MemAlloc( DATA_BUFFER_SIZE_ini );		// Buffer the write data to memory before writing all in one hit
	memset( dataBuffer_ini, '\0', DATA_BUFFER_SIZE_ini );		// set the whole buffer to the string termination character (null)
	dataBufferPtr_ini = 0;

	switch ( unitModelType )
	{
		case TF5800 : TAP_SPrint(str, "TF5800\r\n" ); break;
		case TF5000 : TAP_SPrint(str, "TF5000\r\n" ); break;
		default	: TAP_SPrint(str, "BAD\r\n" ); break;
	}
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", mainActivationKey );
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", schMainPerformSearchMode );
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", schMainPerformSearchTime );
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", FirmwareCallsEnabled );
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", schMainTRCEnabled );
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", schMainPerformSearchDays );
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", schMainDateFormat );
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", schMainTimeFormat );
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", keyboardLanguage );
	WriteStrToIniBuf( str );

	TAP_SPrint(str, "%d\r\n", schMainConflictOption );
	WriteStrToIniBuf( str );

	WriteIniFile( writeFile );					// write all the data in one pass

	TAP_MemFree( dataBuffer_ini );					// must return the memory back to the heap
}
Пример #24
0
bool SetHandler(dword EventID, void *Handler, void **OrigHandler)
{
  TRACEENTER();

  static dword         *__topEvent = NULL;
  tEventQueue          *EventQueue;
  tEventQueueDetails   *EventQueueDetails;
  int                   i;

  if(!Handler && !(dword*)Handler)
  {
    TRACEEXIT();
    return FALSE;
  }

  if(!__topEvent)
  {
    __topEvent = (dword*)FIS_vTopEvent();
    if(!__topEvent)
    {
      if(LastStatus != -10) WriteLog("Failed to resolve _topEvent");
      LastStatus = -10;

      TRACEEXIT();
      return FALSE;
    }
  }

  EventQueue = (tEventQueue*)*__topEvent;
  for(i = 0; i < 512; i++)
  {
    if(EventQueue->Queue)
    {
      if(EventQueue->EventID == EventID)
      {
        EventQueueDetails = (tEventQueueDetails*)EventQueue->Queue;

        if(((dword)Handler > 0x01400000) && (EventQueueDetails->Handler > 0x01400000))
        {
          if(LastStatus != -11)
          {
            TAP_SPrint(Log, "Found 0x%x handler @ index %d. Already redirected to 0x%8.8x", EventID, i, EventQueueDetails->Handler);
            WriteLog(Log);
            LastStatus = -11;
          }

          TRACEEXIT();
          return FALSE;
        }

        if(LastStatus != -12)
        {
          TAP_SPrint(Log, "Found 0x%x handler @ index %d. Redirecting from 0x%8.8x to 0x%8.8x", EventID, i, EventQueueDetails->Handler, (dword)Handler);
          WriteLog(Log);
          LastStatus = -12;
        }
        if(OrigHandler) *OrigHandler = (void*)EventQueueDetails->Handler;
        EventQueueDetails->Handler = (dword)Handler;

        TRACEEXIT();
        return TRUE;
      }
    }
    EventQueue++;
  }

  if(LastStatus != -13)
  {
    TAP_SPrint(Log, "EventID %4.4x not yet declared", EventID);
    WriteLog(Log);
    LastStatus = -13;
  }

  TRACEEXIT();
  return FALSE;
}
Пример #25
0
bool SDS(void)
{
  TRACEENTER();

  static dword              Timeout = 0;
  static tHookHandlerState  LastHHS = HHS_Exit;
  static dword              EF00FilterTimeout = 0;

  if(LastHHS != HookHandlerState)
  {
    switch(HookHandlerState)
    {
      case HHS_Init:                WriteLog("HHS_Init"); break;
      case HHS_Idle:                WriteLog("HHS_Idle"); break;
      case HHS_EF00Received:        WriteLog("HHS_EF00Received"); break;
      case HHS_PowerOffCancel:      WriteLog("HHS_PowerOffCancel"); break;
      case HHS_ShutdownTimerDiags:  WriteLog("HHS_ShutdownTimerDiags"); break;
      case HHS_Shutdown:            WriteLog("HHS_Shutdown"); break;
      case HHS_Exit:                WriteLog("HHS_Exit"); break;
    }
    LastHHS = HookHandlerState;
  }

  switch(HookHandlerState)
  {
    case HHS_Init:
    {
      char             *TAPFileName;
      tTAPInfo          TAPInfo;

      CreateRootDir();

      //Init some firmware routines
      if(!__DevFront_PowerOffReply)
      {
        __DevFront_PowerOffReply = (void*)FIS_fwDevFront_PowerOffReply();
        if(!__DevFront_PowerOffReply)
        {
          if(LastStatus != -1) WriteLog("Failed to resolve DevFront_PowerOffReply()");
          LastStatus = -1;
          HookHandlerState = HHS_Exit;

          TRACEEXIT();
          return FALSE;
        }
      }

      if(!__DevFront_PowerOffCancel)
      {
        __DevFront_PowerOffCancel = (void*)FIS_fwDevFront_PowerOffCancel();
        if(!__DevFront_PowerOffCancel)
        {
          if(LastStatus != -2) WriteLog("Failed to resolve DevFront_PowerOffCancel()");
          LastStatus = -2;
          HookHandlerState = HHS_Exit;

          TRACEEXIT();
          return FALSE;
        }
      }

      //Modify the handler pointer of the ef00 event queue
      if(!SetHandler(0xef00, Hooked_ApplEvent_CallHandler, (void*)&OrigHandler))
      {
        TRACEEXIT();
        return FALSE;
      }

      if(!LibInitialized && !InitTAPex())
      {
        TRACEEXIT();
        return FALSE;
      }

      if(HDD_TAP_GetFileNameByIndex(TAP_TableIndex, &TAPFileName))
      {
        if(!HDD_TAP_GetInfo(TAPFileName, &TAPInfo)) strcpy(TAPInfo.TAPName, "???");
      }
      else
        strcpy(TAPInfo.TAPName, "???");
      TAP_SPrint(Log, "SDS has been activated by '%s'", TAPInfo.TAPName);
      WriteLog(Log);

      HookHandlerState = HHS_Idle;
      break;
    }

    case HHS_Idle:
    {
      if(EF00FilterTimeout && TAP_GetTick() > EF00FilterTimeout) EF00FilterTimeout = 0;

      if(ShutdownHooked)
      {
        HookHandlerState = HHS_EF00Received;
        ShutdownHooked = FALSE;
      }
      break;
    }

    case HHS_EF00Received:
    {
      __DevFront_PowerOffReply();

      if(EF00FilterTimeout)
      {
        Timeout = TAP_GetTick() + 50;
        HookHandlerState = HHS_PowerOffCancel;
      }
      else
      {
        dword ret = HDD_TAP_SendEvent(0, TRUE, EVT_STOP, 2, 0);
        if(ret == 0)
        {
          if(LastStatus != -4) WriteLog("A TAP has intercepted the shutdown notfication");
          LastStatus = -4;
          Timeout = TAP_GetTick() + 50;
          HookHandlerState = HHS_PowerOffCancel;
        }
        else
        {
          HookHandlerState = HHS_ShutdownTimerDiags;
        }
      }

      break;
    }

    case HHS_PowerOffCancel:
    {
      if(TAP_GetTick() > Timeout)
      {
        if(LastStatus != -5) WriteLog("The shutdown has been canceled");
        LastStatus = -5;
        __DevFront_PowerOffCancel();
        EF00FilterTimeout = TAP_GetTick() + 200;
        HookHandlerState = HHS_Idle;
      }
      break;
    }

    case HHS_ShutdownTimerDiags:
    {
      if(LastStatus != -6) WriteLog("Notifiying TimerDiags about the shutdown");
      LastStatus = -6;
      HDD_TAP_SendEvent(0x8E0A4224, FALSE, EVT_STOP, 0, 0);
      Timeout = TAP_GetTick() + 200;
      HookHandlerState = HHS_Shutdown;
      break;
    }

    case HHS_Shutdown:
    {
      if(TAP_GetTick() > Timeout)
      {
        if(OrigHandler)
        {
          SetHandler(0xef00, OrigHandler, NULL);
          OrigHandler = NULL;
        }
        if(LastStatus != -7) WriteLog("Notifiying all TAPs about the shutdown");
        LastStatus = -7;
        HDD_TAP_SendEvent(0, FALSE, EVT_STOP, 0, 0);
        //TAP_Exit();
        if(LastStatus != -8) WriteLog("Enqueuing the shutdown event");
        LastStatus = -8;
        Shutdown(TaskPower);
        HookHandlerState = HHS_Exit;
      }
      break;
    }

    case HHS_Exit:
    {
      if(OrigHandler)
      {
        SetHandler(0xef00, OrigHandler, NULL);
        OrigHandler = NULL;
        if(LastStatus != -9) WriteLog("SDS has been deactivated");
        LastStatus = -9;
      }

      TRACEEXIT();
      return FALSE;
    }
  }

  TRACEEXIT();
  return TRUE;
}
Пример #26
0
void OSDDrawList(void)
{
    TRACEENTER();

    int                   i;
    dword                 XStart, XEnd, Y;
    tMenu                *pMenu;
    tItem                *pItem;
    dword                 ItemColor;
    char                  s[4];
    dword                 MaxNameIconWidth, MaxValueIconWidth;

    pMenu = &Menu[CurrentMenuLevel];

    //Get maximum width of icons
    MaxNameIconWidth = 0;
    MaxValueIconWidth = 0;
    for(i = 0; i < pMenu->NrItems; i++)
    {
        if(pMenu->Item[i].pNameIconGd && (pMenu->Item[i].pNameIconGd->width > MaxNameIconWidth)) MaxNameIconWidth = pMenu->Item[i].pNameIconGd->width;
        if(pMenu->Item[i].pValueIconGd && (pMenu->Item[i].pValueIconGd->width > MaxValueIconWidth)) MaxValueIconWidth = pMenu->Item[i].pValueIconGd->width;
        if(pMenu->Item[i].ColorPatch && (MaxValueIconWidth < 50)) MaxValueIconWidth = 50;
    }

    if(MaxNameIconWidth) MaxNameIconWidth += 8;
    if(MaxValueIconWidth) MaxValueIconWidth += 8;

    //The background
    TAP_Osd_Draw3dBoxFill(OSDRgn, 60, 96, 600, 367, RGB(30, 30, 30), RGB(30, 30, 30), RGB(30, 30, 30));

    for(i = 0; i < 10; i++)
    {
        pItem = &pMenu->Item[i + pMenu->CurrentTopIndex];

        //Draw the background or selection bar and the optional value arrows
        if((i + pMenu->CurrentTopIndex) == pMenu->CurrentSelection)
        {
            OSDMenuDrawCursor(60, 95 + (i * 37), 600);

            if(pMenu->HasValueColumn && pItem->ValueArrows)
            {
                TAP_Osd_PutGd(OSDRgn, pMenu->ValueXPos + 20 , 95 + 10 +(i * 37), (MenuCursorType == CT_Standard ? &_pfeil_l_Gd : &_pfeil_l_bright_Gd), TRUE);
                TAP_Osd_PutGd(OSDRgn, 640 , 95 + 10 +(i * 37), (MenuCursorType == CT_Standard ? &_pfeil_r_Gd : &_pfeil_r_bright_Gd), TRUE);
            }
        }
        else
        {
            TAP_Osd_DrawRectangle(OSDRgn, 60, 130 + (i * 37), 600, 2, 1, RGB(16, 16, 16));
        }

        XEnd = (pMenu->HasValueColumn ? pMenu->ValueXPos : 645);
        Y = 99 + (i * 37);

        if(pItem->Selectable)
            ItemColor = pItem->TextColor;
        else
            ItemColor = RGB(128, 128, 140);

        //Line numbers
        if(pMenu->NumberedItems)
        {
            int MaxX = 100;

            XStart = 101;

            if(pItem->CustomIndex >= 0)
            {
                TAP_SPrint(s, "%2.2d", pItem->CustomIndex);

                if(pItem->CustomIndex > 99)
                {
                    XStart += 10;
                    MaxX += 10;
                }

                if(pItem->CustomIndex > 999)
                {
                    XStart += 10;
                    MaxX += 10;
                }
            }
            else
            {
                TAP_SPrint(s, "%2.2d", i + pMenu->CurrentTopIndex + 1);

                if(i + pMenu->CurrentTopIndex + 1 > 99)
                {
                    XStart += 10;
                    MaxX += 10;
                }

                if(i + pMenu->CurrentTopIndex + 1 > 999)
                {
                    XStart += 10;
                    MaxX += 10;
                }
            }

            FMUC_PutStringAA(OSDRgn, 71, Y + 5 + FONTYOFFSET, MaxX, s, ItemColor, COLOR_None, pMenu->FontListLineNumber, FALSE, ALIGN_LEFT, 1);
        }
        else
        {
            XStart = 76;
        }

        //Icons on the left column
        if(pItem->pNameIconGd)
            TAP_Osd_PutGd(OSDRgn, XStart, Y + 13 - (pItem->pNameIconGd->height >> 1), pItem->pNameIconGd, TRUE);

        //The text of the left column
        FMUC_PutStringAA(OSDRgn, XStart + MaxNameIconWidth, Y + 5 + FONTYOFFSET, XEnd, pItem->Name, ItemColor, COLOR_None, pMenu->FontListNameColumn, TRUE, ALIGN_LEFT, 1);

        if(pMenu->HasValueColumn)
        {
            //The text of the right column
            FMUC_PutStringAA(OSDRgn, pMenu->ValueXPos + 45 + MaxValueIconWidth, Y + 5 + FONTYOFFSET, 645, pItem->Value, ItemColor, COLOR_None, pMenu->FontListValueColumn, TRUE, ALIGN_LEFT, 1);

            //The color patch or icon of the right column. The former has priority
            if(pItem->ColorPatch)
            {
                TAP_Osd_FillBox(OSDRgn, pMenu->ValueXPos + 45, Y + 5, 50, 18, (pItem->ColorPatch & 0x00ffffff) | 0xff000000);
                TAP_Osd_DrawRectangle(OSDRgn, pMenu->ValueXPos + 45, Y + 5, 50, 18, 1, RGB(192,192,192));
            }
            else
            {
                if(pItem->pValueIconGd)
                    TAP_Osd_PutGd(OSDRgn, pMenu->ValueXPos + 45 , Y + 13 - (pItem->pValueIconGd->height >> 1), pItem->pValueIconGd, TRUE);
            }
        }
    }
Пример #27
0
//--------------
//
void DisplayConfigLine(char lineNumber)
{
    char	str[80], str2[80];
	char	*text;
	int     optionNumber, page;


	if (( lineNumber < 1 ) || ( lineNumber > CONFIG_LINES )) return;		// bound check

    optionNumber = lineNumber;
    page = ((optionNumber-1)/LINES_PER_PAGE)+1;
    lineNumber = lineNumber % LINES_PER_PAGE;
    if (lineNumber == 0) lineNumber = 10;  // Put the Save/Cancel options always on line 10.	

	if (( chosenConfigLine == optionNumber ) && ( optionNumber != 10 ))		// highlight the current cursor line
    {																	// save, cancel, delete looks after itself
		TAP_Osd_PutGd( rgn, 53, lineNumber*CONFIG_Y_STEP+CONFIG_Y_OFFSET-8, &_highlightGd, FALSE );
	}
	else
	{
		TAP_Osd_PutGd( rgn, 53, lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET - 8, &_rowaGd, FALSE );
	}
	TAP_SPrint(str,"%d.",optionNumber);
	TAP_Osd_PutStringAf1622(rgn, 75, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), 700, str, MAIN_TEXT_COLOUR, 0 );
	

	switch ( optionNumber )
	{
		case 1 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Model Type", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );


				if ( currentModelType == TF5800 ) TAP_SPrint(str,"TF5800  (UK)");
				else TAP_SPrint(str,"TF5000  (International)");
				
				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;


		case 2 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Language", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				TAP_SPrint(str, "English");
				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, COLOR_DarkGray, 0 );
			    break;

				
		case 3 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1,  "Activation Key", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( keyStage )
				{
				    case 0 : 	text = GetButtonText( &localKeyCodes, CurrentActivationKey );
								strcpy( str, text );
								break;
								
					case 1 : 	TAP_SPrint( str, "Press new key now" );
								break;

					case 2 : 	TAP_SPrint( str, "Invalid choice" );
						    	break;

					default : 	TAP_SPrint( str, "eh?" );
								break;
				}
				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
			    break;


		case 4 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Highlight", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );


				TAP_SPrint(str,"%d", currentHighlight );
				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

				
		case 5 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Selection Style", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( displayOption )
				{
				    case 0 : 	TAP_SPrint( str, "Carousel" );
								break;
								
					case 1 : 	TAP_SPrint( str, "Linear" );
								break;

					default : 	TAP_SPrint( str, "BAD" );
								break;
				}
				
				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

		case 6 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Now/Next Tag", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentNowNextTag )
				{
				    case 0 : 	TAP_SPrint( str, "Off" );
								break;
								
					case 1 : 	TAP_SPrint( str, "On" );
								break;

					default : 	TAP_SPrint( str, "BAD" );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

				
				
		case 7 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Progress Info", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentProgressInfo )
				{
				    case 0 : 	TAP_SPrint( str, "Off" );
								break;
								
					case 1 : 	TAP_SPrint( str, "Text" );
								break;

					default : 	TAP_SPrint( str, "BAD" );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

				
				
		case 8 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Recall/PiP-Swap Key", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentRecallKey )
				{
				    case 0 : 	TAP_SPrint( str, "First Channel" );
								break;
								
					case 1 : 	TAP_SPrint( str, "Swap Channels" );
								break;

					default : 	TAP_SPrint( str, "BAD" );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

				
				
		case 9 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Screen Fading", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentScreenFade)
				{
				    case 0 : 	TAP_SPrint( str, "Off - no screen fading" );
								break;
								
					case 1 : 	TAP_SPrint( str, "Manual - use Blue key" );
								break;

					default : 	TAP_SPrint( str, "Automatic after %d seconds", currentScreenFade  );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

				
		case 11 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Start Channel", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentStartChannel)
				{
				    case 0 : 	TAP_SPrint( str, "Channel Last Highlighted" );
								break;
								
					case 1 : 	TAP_SPrint( str, "Current Channel" );
								break;

					default : 	TAP_SPrint( str, "BAD"  );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

		case 12 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Timer Start Offset", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentStartOffset)
				{
				    default : 	TAP_SPrint( str, "%d minutes",currentStartOffset );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

		case 13 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Timer End Offset", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentEndOffset)
				{
				    default : 	TAP_SPrint( str, "%d minutes",currentEndOffset );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;


		case 14 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Guide At Startup", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentGuideStart )
				{
				    case 0 : 	TAP_SPrint( str, "Start hidden" );
								break;
								
					case 1 : 	TAP_SPrint( str, "Start displayed" );
								break;

					case 2 : 	TAP_SPrint( str, "Start as it was when last exited" );
								break;

					default : 	TAP_SPrint( str, "BAD"  );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

				
				
		case 15 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "TV Screen Ratio", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentTvRatio)
				{
				    case 0 : 	TAP_SPrint( str, "4:3 Standard" );
								break;
								
					case 1 : 	TAP_SPrint( str, "16:9 Widescreen" );
								break;

					default : 	TAP_SPrint( str, "BAD"  );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

				
				
		case 16 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1, "Main/Guide window", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				switch ( currentGuideWindowOption)
				{
				    case 0 : 	TAP_SPrint( str, "Normal size" );
								break;
								
					case 1 : 	TAP_SPrint( str, "Shrink to fit" );
								break;

					default : 	TAP_SPrint( str, "BAD"  );
								break;
				}

				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
				break;

				
		case 17 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1,  "Progress Bars", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );
				switch ( currentProgressBarOption )
				{
				    case 0 : 	TAP_SPrint( str, "Multi Coloured" );
								break;
								
					case 1 : 	sprintf( str, "Single colour, %% filled" );
						    	break;

					case 2 : 	TAP_SPrint( str, "Single colour, all filled" );
								break;

					case 3 : 	sprintf( str, "White colour, %% filled" );
								break;

					default : 	TAP_SPrint( str, "[Invalid value]" );
								break;
				}
				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
			    break;
				
		case 18 :
				PrintCenter(rgn, CONFIG_E0, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E1,  "Channel Numbers", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );
				switch ( currentChannelNumberOption )
				{
				    case 0 : 	TAP_SPrint( str, "LCN" );
								break;
								
					case 1 : 	sprintf( str, "Topfield" );
						    	break;

					default : 	TAP_SPrint( str, "[Invalid value]" );
								break;
				}
				TAP_Osd_PutStringAf1622(rgn, CONFIG_X2, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), CONFIG_E2, str, MAIN_TEXT_COLOUR, 0 );
			    break;	

		case 10 :		
		case 20 :
				TAP_Osd_PutGd( rgn, 53, lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET - 8, &_rowaGd, FALSE );		// No highlight for us
	            TAP_SPrint(str,"%d.",optionNumber);
                TAP_Osd_PutStringAf1622(rgn, 75, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), 700, str, MAIN_TEXT_COLOUR, 0 );

				if (( configOption == 0 ) && ( chosenConfigLine%10 == 0 ))
				{
					TAP_Osd_PutGd( rgn, 116, lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET - 8, &_smallgreenbarGd, FALSE );
				    PrintCenter(rgn, 144, lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET, 244, "Save", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );
				}
				else PrintCenter(rgn, 144, lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET, 244, "Save", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

				if (( configOption == 1 ) && ( chosenConfigLine%10 == 0 ))
				{
					TAP_Osd_PutGd( rgn, 278, lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET - 8, &_smallgreenbarGd, FALSE );
					PrintCenter(rgn, 306, lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET, 406, "Cancel", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );
				}
				else PrintCenter(rgn, 306, lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET, 406, "Cancel", MAIN_TEXT_COLOUR, 0, FNT_Size_1622 );

			    TAP_Osd_FillBox( rgn, 437, lineNumber*CONFIG_Y_STEP+CONFIG_Y_OFFSET-8, 3, CONFIG_Y_STEP, FILL_COLOUR );		// one extra column seperator for us
			    
	            TAP_SPrint(str,"Page %d of %d",page,TOTAL_PAGES);
	            TAP_Osd_PutStringAf1622(rgn, 470, (lineNumber * CONFIG_Y_STEP + CONFIG_Y_OFFSET), 700, str, MAIN_TEXT_COLOUR, 0 );
			    
				break;


		default :
			break;
	}


    TAP_Osd_FillBox( rgn, CONFIG_E0, lineNumber*CONFIG_Y_STEP+CONFIG_Y_OFFSET-8, 3, CONFIG_Y_STEP, FILL_COLOUR );		// draw the column seperators
    TAP_Osd_FillBox( rgn, CONFIG_E1, lineNumber*CONFIG_Y_STEP+CONFIG_Y_OFFSET-8, 3, CONFIG_Y_STEP, FILL_COLOUR );

}
Пример #28
0
dword TAP_EventHandler( word event, dword param1, dword param2 )
{
	static int count = 0, err1, filelen;
	static byte flip = 0;
	int i, y;
	const int LINE_H = 21;
	const int STR_COUNT = 21;
	dword t1, t2;
	char strings[21][40] = {
		{"Test ajJsjjOjsj"},
		{"qUIck tESt"},
		{"ma"},
		{"keяд"},
		{"<< Nelonen >>"} ,
		{"03:20 "},
		{" leading SPACE"},
		{"Test ajJsjjOjsj"},
		{"qUIck tESt"},
		{"ma"},
		{"ke"},
		{"<< Nelonen >>"} ,
		{"03:20 "},
		{" leading SPACE"},
		{"Test ajJsjjOjsj"},
		{"qUIck tESt"},
		{"ma"},
		{"ke"},
		{"<< Nelonen >>"} ,
		{"03:20 "},
		{" leading SPACE"}
	};
	char msg[64];


	if( event == EVT_KEY )
	{
		if ( param1 == RKEY_Exit)
		{
			TAP_Osd_SetTransparency(rgn, 0xFF - transparency_orig);

			Delete_Font(&font0);
			Delete_Font(&font1);
			Delete_Font(&font2);

			TAP_Osd_Delete( rgn );

#ifdef DLALLOC
			dlmalloc_exit();
#endif

			TAP_EnterNormal();
			TAP_Exit();
			return 0;
		}
		if ( param1 == RKEY_1)
		{
			TAP_ExitNormal();
			TAP_Osd_FillBox(rgn, 30, 10, 620, 500, COLOR_DarkBlue);

			t1 = TAP_GetTick();
			y = 20;
			for (i = 0; i < STR_COUNT; i++, y+=LINE_H)
			{
				TAP_Osd_PutS_Font(rgn, 50, y,  199, strings[i], COLOR_Red, COLOR_White, &font0, ALIGN_LEFT);
				TAP_Osd_PutS_Font(rgn, 200, y, 349, strings[i], COLOR_Red, COLOR_White, &font1, ALIGN_LEFT);
				TAP_Osd_PutS_Font(rgn, 350, y, 499, strings[i], COLOR_Red, COLOR_White, &font2, ALIGN_LEFT);
			}
			t2 = TAP_GetTick() - t1;

			TAP_SPrint(msg, "Ticks: %d", t2);
			TAP_Osd_PutS(rgn, 500, 500, 650, msg, COLOR_Green, COLOR_Black, 0, FNT_Size_1419, 0, ALIGN_LEFT);

			return 0;
		}
		if ( param1 == RKEY_2)
		{
			TAP_ExitNormal();
			TAP_Osd_FillBox(rgn, 30, 10, 620, 500, COLOR_DarkBlue);

			t1 = TAP_GetTick();
			y = 20;
			for (i = 0; i < STR_COUNT; i++, y+=LINE_H)
			{
				TAP_Osd_PutS_FontL(rgn, 50, y,  199, strings[i], &font0, ALIGN_LEFT);
				TAP_Osd_PutS_FontL(rgn, 200, y, 349, strings[i], &font1, ALIGN_LEFT);
				TAP_Osd_PutS_FontL(rgn, 350, y, 499, strings[i], &font2, ALIGN_LEFT);
			}
			t2 = TAP_GetTick() - t1;

			TAP_SPrint(msg, "Ticks: %d", t2);
			TAP_Osd_PutS(rgn, 500, 500, 650, msg, COLOR_Green, COLOR_Black, 0, FNT_Size_1419, 0, ALIGN_LEFT);

			return 0;
		}
		if ( param1 == RKEY_3)
		{
			TAP_ExitNormal();
			TAP_Osd_FillBox(rgn, 30, 10, 620, 500, COLOR_DarkBlue);

			t1 = TAP_GetTick();
			y = 20;
			for (i = 0; i < STR_COUNT; i++, y+=LINE_H)
			{
				TAP_Osd_PutS_FontEx(rgn, 50, y,  199, 19, 2, strings[i], COLOR_Red, COLOR_White, &font0, ALIGN_LEFT);
				TAP_Osd_PutS_FontEx(rgn, 200, y, 349, 19, 2, strings[i], COLOR_Red, COLOR_White, &font1, ALIGN_LEFT);
				TAP_Osd_PutS_FontEx(rgn, 350, y, 499, 19, 2, strings[i], COLOR_Red, COLOR_White, &font2, ALIGN_LEFT);
			}
			t2 = TAP_GetTick() - t1;

			TAP_SPrint(msg, "Ticks: %d", t2);
			TAP_Osd_PutS(rgn, 500, 500, 650, msg, COLOR_Green, COLOR_Black, 0, FNT_Size_1419, 0, ALIGN_LEFT);

			return 0;
		}
		if ( param1 == RKEY_4)
		{
			TAP_ExitNormal();
			TAP_Osd_FillBox(rgn, 30, 10, 620, 500, COLOR_DarkBlue);

			t1 = TAP_GetTick();
			y = 20;
			for (i = 0; i < STR_COUNT; i++, y+=LINE_H)
			{
				TAP_Osd_PutS(rgn, 50, y,  199, strings[i], COLOR_Red, COLOR_White, 0, FNT_Size_1419, 0, ALIGN_LEFT);
				TAP_Osd_PutS(rgn, 200, y, 349, strings[i], COLOR_Red, COLOR_White, 0, FNT_Size_1419, 0, ALIGN_LEFT);
				TAP_Osd_PutS(rgn, 350, y, 499, strings[i], COLOR_Red, COLOR_White, 0, FNT_Size_1419, 0, ALIGN_LEFT);
			}
			t2 = TAP_GetTick() - t1;

			TAP_SPrint(msg, "Ticks: %d", t2);
			TAP_Osd_PutS(rgn, 500, 500, 650, msg, COLOR_Green, COLOR_Black, 0, FNT_Size_1419, 0, ALIGN_LEFT);

			return 0;
		}
	}
	return param1;//event;
}
Пример #29
0
void LogEntryGeneric(char *ProgramName, bool Console, char *Text)
{
    TRACEENTER();

    char                 *s;
    int                   l;
    TYPE_File             *File;
    char                  TimeResult[40];
    char                  CRLF[] = {'\r', '\n'};
    byte                  Sec;
    byte                 *ISOText;

#define FILENAME      "TAPSystem.log"

    if(!ProgramName || !Text)
    {
        TRACEEXIT();
        return;
    }

    HDD_TAP_PushDir();
    if(!HDD_ChangeDir("/ProgramFiles/Settings"))
    {
        HDD_ChangeDir("/ProgramFiles");
        if(!TAP_Hdd_Exist("Settings")) TAP_Hdd_Create("Settings", ATTR_FOLDER);
        HDD_ChangeDir("Settings");
    }

    l = strlen(ProgramName) + strlen(Text) + 4;
    s = TAP_MemAlloc(l);
    if(s)
    {
        memset(s, 0, l);
        TAP_SPrint(s, "%s: %s", ProgramName, Text);
        StrToISOAlloc(s, &ISOText);
        if(ISOText)
        {
            TimeFormat(Now(&Sec), Sec, TIMESTAMP_YMDHMS, TimeResult);
            strcat(TimeResult, " ");

            if(!TAP_Hdd_Exist(FILENAME)) TAP_Hdd_Create(FILENAME, ATTR_NORMAL);
            if((File = TAP_Hdd_Fopen(FILENAME)) != NULL)
            {
                TAP_Hdd_Fseek(File, 0, SEEK_END);
                TAP_Hdd_Fwrite(TimeResult, strlen(TimeResult), 1, File);
                TAP_Hdd_Fwrite(ISOText, strlen(ISOText), 1, File);
                TAP_Hdd_Fwrite(CRLF, 2, 1, File);
                TAP_Hdd_Fclose(File);
            }

            if(Console)
            {
                TAP_PrintNet("%s%s\n", TimeResult, ISOText);
            }

            TAP_MemFree(ISOText);
        }
        TAP_MemFree(s);
    }
    HDD_TAP_PopDir();

    TRACEEXIT();
}
int LogoManager_UpdateLIL(void)
{
  TRACEENTER();

  typedef struct
  {
    ulong64             ChannelID;
    char                Name[MAXLOGONAME+1];
  }tNewIDs;

  int                   nTvSvc, nRadioSvc;
  int                   i;
  TYPE_TapChInfo        chInfo;
  char                  s[255], LogoName[MAX_SvcName + 1];
  SYSTEM_TYPE           SystemType;
  tFlashSatTable        SatInfo;

  word                  SatPos;
  ulong64               ChannelID;
  tNewIDs              *NewIDs;
  int                   NewIDCount;

  SystemType = GetSystemType();

  HDD_TAP_PushDir();
  HDD_ChangeDir(LOGOROOT);

  TAP_Channel_GetTotalNum(&nTvSvc, &nRadioSvc);
  NewIDs = TAP_MemAlloc((nTvSvc + nRadioSvc) * sizeof(tNewIDs));
  NewIDCount = 0;

  INIOpenFile(LILNAME, NULL);

  for(i = 0; i < nTvSvc; i++)
  {
    TAP_Channel_GetInfo(SVC_TYPE_Tv, i, &chInfo);
    FlashSatTablesGetInfo(chInfo.satIdx, &SatInfo);

    switch(SystemType)
    {
      case ST_S:
      case ST_TMSS:
      {
        SatPos = SatInfo.SatPosition;
        break;
      }

      default:
        SatPos = 0;
        break;
    }

    ChannelID = LogoManager_CalculateChannelID(SatPos, chInfo.orgNetId, chInfo.tsId, chInfo.svcId);
    TAP_SPrint(s, "%16.16llx", ChannelID);
    if(!INIKeyExists(s))
    {
      NewIDs[NewIDCount].ChannelID = ChannelID;
      strcpy(NewIDs[NewIDCount].Name, LogoManager_ChannelNameToLogoName(chInfo.chName, LogoName, sizeof(LogoName)));
      if(NewIDs[NewIDCount].Name[0]) NewIDCount++;
    }
  }

  for(i = 0; i < nRadioSvc; i++)
  {
    TAP_Channel_GetInfo(SVC_TYPE_Radio, i, &chInfo);
    FlashSatTablesGetInfo(chInfo.satIdx, &SatInfo);

    switch(SystemType)
    {
      case ST_S:
      case ST_TMSS:
      {
        SatPos = SatInfo.SatPosition;
        break;
      }

      default:
        SatPos = 0;
        break;
    }

    ChannelID = LogoManager_CalculateChannelID(SatPos, chInfo.orgNetId, chInfo.tsId, chInfo.svcId);
    TAP_SPrint(s, "%16.16llx", ChannelID);
    if(!INIKeyExists(s))
    {
      NewIDs[NewIDCount].ChannelID = ChannelID;
      TAP_SPrint(NewIDs[NewIDCount].Name, "r_%s", LogoManager_ChannelNameToLogoName(chInfo.chName, LogoName, sizeof(LogoName)));
      if(NewIDs[NewIDCount].Name[0]) NewIDCount++;
    }
  }

  INICloseFile();

  if(NewIDCount > 0)
  {
    TYPE_File          *f;
    word                year;
    byte                month, day, weekDay;

    if(!TAP_Hdd_Exist(LILNAME)) TAP_Hdd_Create(LILNAME, ATTR_NORMAL);
    f = TAP_Hdd_Fopen(LILNAME);

    if(!f)
    {
      HDD_TAP_PopDir();
      if(LogoManager_CB) LogoManager_CB(-1, 3);

      TRACEEXIT();
      return -1;
    }

    TAP_Hdd_Fseek(f, 0, SEEK_END);
    TAP_ExtractMjd(Now(NULL) >> 16, &year, &month, &day, &weekDay);
    TAP_SPrint(s, "\n\n# Added %4.4d-%2.2d-%2.2d\n", year, month, day);
    TAP_Hdd_Fwrite(s, 1, strlen(s), f);

    for(i = 0; i < NewIDCount; i++)
    {
      TAP_SPrint(s, "%16.16llx=%s\n", NewIDs[i].ChannelID, NewIDs[i].Name);
      TAP_Hdd_Fwrite(s, 1, strlen(s), f);
    }
    TAP_Hdd_Fclose(f);
    if(LogoManager_CB) LogoManager_CB(5, NewIDCount);

  }