亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? utc.c

?? 漢字在計算機內(nèi)存放分為兩種情況
?? C
?? 第 1 頁 / 共 2 頁
字號:
  INT32  underflow;
  UINT32 result;

  underflow = 0;

  hours   = ((((lhs & 0xF000) >> 12) * 10) + ((lhs & 0x0F00) >> 8) - 
             (((rhs & 0xF000) >> 12) * 10) - ((rhs & 0x0F00) >> 8));
  minutes = ((((lhs & 0x00F0) >> 4) * 10) + (lhs & 0x000F) - 
             (((rhs & 0x00F0) >> 4) * 10) - (rhs & 0x000F));

  /* Check for underflows */
  if (minutes < 0)
  {
    hours--;
    minutes += 60;
  }
  if (hours < 0)
  {
    underflow--;
    hours += 24;
  }

  /*
  ** Hours digits.
  */
  result  = (UINT32)(underflow << 16);
  result |= (UINT32)(((hours / 10) & 0xF) << 12);
  result |= (UINT32)(((hours % 10) & 0xF) << 8);

  /*
  ** Minutes digits.
  */
  result |= (UINT32)(((minutes / 10) & 0xF) << 4);
  result |= (UINT32) ((minutes % 10) & 0xF);

  return result;
}

/****************************************************************************
** Function     UTCSetDateAndTime
**
** Description  Called whenever a new time is extracted from the TOT/TDT.
**              Stores the new time, applies any offset, updates the display 
**              and informs the application of the new time.
**              
** Input        UINT16 mjd - Modified Julian Date extracted from the TOT/TDT
**
**              UINT16 utc - BCD Time extracted from the TOT/TDT
**
** Modified     None
**
** Return       Nothing
**              
*****************************************************************************/
extern UINT32 MainTaskQueue;
void UTCSetDateAndTime( UINT16 mjd, UINT16 utc )
{
  UINT32     result;
  T_FTA_Event response;

#if (UTC_DEBUG==TRUE)
  Print( "UTCSetDateAndTime( %X, %X )\n", mjd, utc );
#endif

  if( utc != UTCCurrentTime )
    {
      /* Update the local storage of the current UTC */
      UTCCurrentTime = utc;
      UTCCurrentMJD  = mjd;

      /* Add or subtract the offset */
      result = UTCApplyOffset( utc );
      if( (result >> 16) != 0 )
        {
          mjd += (result >> 16);
        }
      
      /* Send message to the application */
      response.code   = FTA_TIME_UPDATE;
      response.param1 = utc;    
      response.param2 = FTA_TIME_UPDATE;    
      
      DTOS_DRV_SendMessage( MainTaskQueue, &response);
    }
}

/****************************************************************************
** Function     UTCSetCountryOffset
**
** Description  Called whenever a new offset is extracted from the TOT. If 
**              the country code matches one of the user requested countries
**              then the offset is stored, otherwise it is discarded.
**              
** Input        UINT16 countryCode - The country code that the offset applies
**                                   to. This is extracted from the TOT.
**
**              UINT8 regionID     - The regionID of the country (if any)
**
**              UINT8 offset       - The offset extracted from the TOT in BCD
**
**              UINT8 negative     - Whether the offset is positive or 
**                                   negative.
**
** Modified     None
**
** Return       Nothing
**              
*****************************************************************************/
void UTCSetCountryOffset( UINT16 countryCode, UINT8 regionID, 
                          UINT16 offset, UINT8 negative )
{
  T_UTCOffset *userOffset;
  UINT32       i;
  UINT16       currentUTC;

#if (UTC_DEBUG==TRUE)
  Print( "UTCSetCountryOffset(%d, %d, %X, %d)\n",
         countryCode, regionID, offset, negative );
  Print( "Offset Country codes: %d, %d, %d\n",
         UTCOffsets[0].countryCode,
         UTCOffsets[1].countryCode,
         UTCOffsets[2].countryCode );
#endif
  
  userOffset = UTCOffsets;
  i          = UTC_MAX_OFFSETS;  
  do
    {
      if( userOffset->countryCode == countryCode )
        {
          /* Store the offset */
          userOffset->offset   = offset;
          userOffset->negative = negative;
          
          /* Update the current offset to point to this offset. */
          UTCCurrentOffset = userOffset;
          break;
        }
      else if( userOffset->countryCode == 0xFFFF )
        {
          break;
        }
      userOffset++;
    } while( --i );

  currentUTC = UTCCurrentTime;

  /* In order to force the new offset to take effect we invalidate the current time */
  UTCCurrentTime = 0xFFFF;

  /* Update the current time with the new offset */
  UTCSetDateAndTime( UTCCurrentMJD, currentUTC );
}


/****************************************************************************
** Function     UTCSetCountryCode
**
** Description  Specify which country codes to use in order of preference.
**              
** Input        UINT32 level        - Which level to replace (0 highest, 2 
**                                    lowest).
**
**              UINT16 countryCode  - The new country code to use.
**
**              UINT8 regionID      - The new region ID to use.
**
** Modified     None
**
** Return       Nothing
**              
*****************************************************************************/
void UTCSetCountryCode( UINT32 level, UINT16 countryCode, UINT8 regionID )
{
  if( level > UTC_MAX_OFFSETS )
    return;
  
  UTCOffsets[level].countryCode = countryCode;
  UTCOffsets[level].regionID    = regionID;
}

/****************************************************************************
** Function     UTCGetCountryCode
**
** Description  Get the current country code and offset for the specified 
**              user preference.
**              
** Input        UINT32 level - Which user perference to get
**
** Modified     UINT16 *countryCode - The current country code.
**
**              UINT8  *regionID    - The current region ID
**
**              UINT16 *offset      - The current offset in BCD (0xFFFF 
**                                    implies that the offset has not be 
**                                    obtained from the TOT)
**
**              UINT8  *negative    - Whether the offset is negative or 
**                                    positive
**
** Return       Nothing
**              
*****************************************************************************/
void UTCGetCountryCode( UINT32 level, UINT16 *countryCode, UINT8 *regionID,
                        UINT16 *offset, UINT8 *negative )
{
  if( level > UTC_MAX_OFFSETS )
    return;
  
  *countryCode = UTCOffsets[level].countryCode;
  *regionID    = UTCOffsets[level].regionID;
  *offset      = UTCOffsets[level].offset;
  *negative    = UTCOffsets[level].negative;
}

/****************************************************************************
** Function     UTCApplyOffset
**
** Description  Takes the current time and applies (adds or subtracts) the 
**              current offset.
**              
** Input        UINT16 utc - BCD time to apply the offset to
**
** Modified     None
**
** Return       UINT32 - The new time.
**              
*****************************************************************************/
UINT32 UTCApplyOffset( UINT16 utc )
{
  UINT32 result;

  result = utc;
  if( UTCCurrentOffset != NULL )
    {
      if( UTCCurrentOffset->offset != 0 )
        {
          if( UTCCurrentOffset->negative == TRUE )
            {
              result = UTCSubtract( utc, UTCCurrentOffset->offset );
            }
          else
            {
              result = UTCAdd( utc, UTCCurrentOffset->offset );
            }
        }
    }
  
  return result;
}

INT32 UTCGetCurrentOffset(void)
{
	INT32 result;
	if(UTCCurrentOffset->negative == TRUE)
		result = -UTCCurrentOffset->offset;
	else result = UTCCurrentOffset->offset;

	return result;
}

/****************************************************************************
** Function     UTCConvertDateToString
**
** Description  Converts the requested MJD into a string of the specified 
**              format. Currently supported formats are:
**     
**              UTC_DDD_DD_MMM  - "Mon, 2 Aug"
**              UTC_DDDD        - "Monday"
**              
** Input        UINT16 MJD    - The date to convert
**
**              UINT32 format - The output format
**
** Modified     UINT8 *string - Pointer to the output string. Note there must 
**                              be enough space available in the string.
**
** Return       UINT32 - The number of characters written to string
**              
*****************************************************************************/
static const UINT8 dddString[8][7] = { "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天" };
static const UINT8 MMDD[2][3] = {"月","日"};
UINT32 UTCConvertDateToString( UINT16 MJD, UINT32 format, UINT8 *string )
{
  UINT32 weekDay, day, month;
  UINT32 length;
  UINT32 i,j;
  const UINT8 *srcPtr;


  /*
  ** The following algorithm was developed by Peter Baum.
  ** See http://www.capecod.net/~pbaum/date/date0.htm for more details.
  */
  UINT32 Z    = MJD - 1721118 + 2400000;
  UINT32 H    = (100 * Z) - 25;
  UINT32 A    = H / 3652425;
  UINT32 B    = A - (A >> 2);
  UINT32 year = (100 * B + H) / 36525;
  UINT32 C    = B + Z - (365 * year) - (year >> 2);
  month       = ((535 * C) + 48950) >> 14;
  day         = C - (153 * month - 457) / 5;
  
  if( month > 12 )
    {
      /* Year not used      year++; */
      month -= 12;
    }

  weekDay = ((MJD + 2) % 7) + 1;

  length = 0;  

  /* Validate results before accessing array */
  if( weekDay > 7 || 
      month > 12 )
  {
    *string = '\0';      
    return length;
  }

  switch( format )
  {
    case UTC_DDD_DD_MMM:   
      /* Month */
      if ( (i = (month / 10)) != 0)
      {
        *string++ = (UINT8)(i + '0');
        month      -= (i * 10);
        length++;
      }
      *string++ = (UINT8)(month + '0');
	  *string++ = MMDD[0][0]; 
	  *string++ = MMDD[0][1]; 

      /* Date */
      if ( (i = (day / 10)) != 0)
      {
        *string++ = (UINT8)(i + '0');
        day      -= (i * 10);
        length++;
      }
      *string++ = (UINT8)(day + '0');
	  *string++ = MMDD[1][0]; 
	  *string++ = MMDD[1][1]; 
      
	  *string++ = ' ';
      /* Day */
	  for(i = 0;i < 6;i++)
		  *string++ = dddString[weekDay][i];

      length += 13;
      break;

    case UTC_DDDD:
      i      = 6;
      srcPtr = dddString[weekDay];
      length = i;
      do
      {
        *string++ = *srcPtr++;
      } while( --i );
      break;
  }

  *string = '\0';  

  return(length);
}  

INT32 epgConvertUTCTimeToMinutes(UINT32 time)
{
  INT16  days;
  INT32  hours;
  INT32  minutes;

  days = (INT16)((time & 0xFFFF0000) >> 16);
  
  hours = (((time & 0xF000) >> 12) * 10) + 
           ((time & 0x0F00) >> 8);

  minutes = ( (((time & 0x00F0) >> 4) * 10) + (time & 0x000F) +
              (hours * 60) +
              (days  * EPG_NUMBER_MINUTES_PER_DAY) );

  return (minutes);
}  

void epgConvertMinutesToEPGTime( INT32 time, UINT16 MJD, T_EPGTime *newTime )
{
  newTime->MJD  = MJD;
  if( time < 0 )
  {
    newTime->min = (UINT16)(time + EPG_NUMBER_MINUTES_PER_DAY);
    newTime->MJD--;
  }
  else if( time >= EPG_NUMBER_MINUTES_PER_DAY )
  {
    newTime->min = (UINT16)(time - EPG_NUMBER_MINUTES_PER_DAY);
    newTime->MJD++;
  }
  else
  {
    newTime->min = (UINT16)time;
  }
}  
void epgConvertMinutesToString( INT32 min, UINT8 *buffer )
{
  UINT32 hours = (min / 60);
  
  hours %= 24;
  min = (min % 60);

  *buffer++ = (UINT8)((hours / 10) + '0');
  *buffer++ = (UINT8)((hours % 10) + '0');
  *buffer++ = ':';
  *buffer++ = (UINT8)((min / 10)   + '0');
  *buffer++ = (UINT8)((min % 10)   + '0');
  *buffer   = '\0';  
  
}  

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精选午夜久久久乱码6080| 色婷婷久久久久swag精品| 久久久久成人黄色影片| 懂色av一区二区在线播放| 亚洲日本在线视频观看| 911国产精品| 成人午夜视频网站| 亚洲国产人成综合网站| 久久尤物电影视频在线观看| 色婷婷国产精品久久包臀| 黑人精品欧美一区二区蜜桃| 一区二区三区精品在线| 91福利国产成人精品照片| 久久精品国产亚洲高清剧情介绍 | 精品入口麻豆88视频| 视频一区二区欧美| 日本一区二区视频在线| 欧美一区二区三区男人的天堂| 一本色道久久综合亚洲aⅴ蜜桃| 免费观看日韩av| 亚洲欧美电影一区二区| 久久久不卡网国产精品二区 | 国产福利91精品| 一二三四区精品视频| 国产日韩亚洲欧美综合| 在线综合视频播放| 一本大道综合伊人精品热热| 国产永久精品大片wwwapp | 国产精品狼人久久影院观看方式| 日韩午夜中文字幕| 欧美色成人综合| 91视视频在线观看入口直接观看www| 久久不见久久见中文字幕免费| 亚洲综合免费观看高清完整版| 亚洲欧美在线视频| 日本一区二区三区四区在线视频| 日韩一二在线观看| 欧美日韩卡一卡二| 久久av老司机精品网站导航| 美女精品一区二区| 五月天国产精品| 一区二区三区久久久| 亚洲免费视频成人| 国产精品久久二区二区| 久久久精品日韩欧美| 欧美一级精品在线| 欧美精品视频www在线观看| 日本高清不卡视频| 欧美视频一区在线| 在线一区二区视频| 99九九99九九九视频精品| 国产精品99久久久| 奇米在线7777在线精品| 日本午夜精品视频在线观看| 午夜精品一区在线观看| 久久久久9999亚洲精品| 国产福利精品一区二区| 精品制服美女久久| 成人午夜在线播放| 日韩国产在线一| 亚洲成va人在线观看| 国产精品国产馆在线真实露脸| 欧美激情在线一区二区| 麻豆精品在线看| 亚洲成va人在线观看| 视频一区视频二区中文字幕| 天天色综合天天| 日韩电影在线观看一区| 亚洲综合视频在线| 午夜av电影一区| 免费av成人在线| 国内精品久久久久影院色| 日韩国产成人精品| 国产一区二区三区不卡在线观看| 高清beeg欧美| 91麻豆福利精品推荐| 欧美日韩综合在线| 欧美男女性生活在线直播观看| 欧美一级理论性理论a| 久久嫩草精品久久久久| 国产精品卡一卡二卡三| 亚洲欧洲国产日本综合| 免费av成人在线| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 99国产精品久久久久久久久久久| 91麻豆精品视频| 欧美日本一区二区| 精品精品国产高清一毛片一天堂| 中文字幕永久在线不卡| 免费高清在线一区| 菠萝蜜视频在线观看一区| 欧美丰满美乳xxx高潮www| 国产无遮挡一区二区三区毛片日本| 亚洲主播在线播放| 粉嫩欧美一区二区三区高清影视| 51久久夜色精品国产麻豆| 国产嫩草影院久久久久| 日韩精品五月天| 91福利精品视频| 国产精品国产三级国产普通话蜜臀| 日韩在线一二三区| 91捆绑美女网站| 国产欧美一区二区在线观看| 日本aⅴ免费视频一区二区三区 | 国内精品伊人久久久久av一坑| 在线视频一区二区三| 国产欧美视频一区二区| 青青草国产精品97视觉盛宴| 一道本成人在线| 亚洲情趣在线观看| 九九国产精品视频| 欧美三级视频在线播放| 亚洲欧美一区二区三区孕妇| 国产69精品一区二区亚洲孕妇| 欧美一区二区在线看| 五月激情丁香一区二区三区| 91精品1区2区| 亚洲欧美激情插| www.欧美亚洲| 久久精品夜夜夜夜久久| 国产一区999| 精品国内片67194| 奇米精品一区二区三区四区| 欧美色涩在线第一页| 亚洲一区在线观看免费| 欧美在线免费视屏| 亚洲一区二区三区国产| 91成人免费电影| 依依成人精品视频| 色婷婷久久久亚洲一区二区三区| 中文字幕一区日韩精品欧美| av午夜一区麻豆| 亚洲欧洲日产国码二区| 99国内精品久久| 亚洲精选一二三| 在线观看免费一区| 亚洲高清久久久| 欧美精品久久天天躁| 首页欧美精品中文字幕| 91精品国产入口在线| 理论片日本一区| 2021中文字幕一区亚洲| 国产精品一二三在| 亚洲国产精品精华液2区45| 国产suv精品一区二区883| 国产精品情趣视频| 色呦呦国产精品| 亚洲一区在线视频观看| 69久久夜色精品国产69蝌蚪网| 日本一道高清亚洲日美韩| 日韩欧美一区二区久久婷婷| 国产一区二区三区四区五区入口| 国产女人aaa级久久久级| 91热门视频在线观看| 亚洲午夜日本在线观看| 欧美一区二区福利在线| 国产在线精品国自产拍免费| 国产精品福利一区| 欧美日韩一区精品| 欧美bbbbb| 中文字幕av一区二区三区| 一本大道久久精品懂色aⅴ| 午夜免费欧美电影| 欧美大肚乱孕交hd孕妇| 成人v精品蜜桃久久一区| 亚洲一二三区不卡| 精品第一国产综合精品aⅴ| jvid福利写真一区二区三区| 午夜电影久久久| 国产肉丝袜一区二区| 欧美午夜不卡在线观看免费| 另类人妖一区二区av| 中文字幕一区二区不卡| 91精品国产欧美日韩| 不卡欧美aaaaa| 同产精品九九九| 国产精品免费视频观看| 欧美一卡二卡三卡四卡| 成人精品亚洲人成在线| 午夜精品成人在线| 亚洲国产精品精华液ab| 欧美一区二视频| 91日韩在线专区| 国产一区二区三区黄视频 | 国产日韩欧美a| 欧美在线三级电影| 国产乱理伦片在线观看夜一区| 一区二区三区中文字幕精品精品| 日韩欧美国产wwwww| 91小视频在线免费看| 美腿丝袜亚洲一区| 亚洲欧美日韩一区二区三区在线观看 | 一区二区三区 在线观看视频| 91精品国产丝袜白色高跟鞋| 99久久99久久久精品齐齐| 蜜臀va亚洲va欧美va天堂| 亚洲欧美国产高清| 国产亚洲欧美激情| 日韩欧美色综合| 色狠狠av一区二区三区|