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

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

?? m41t11rtc.c

?? INTEL IXP425的VXWORKS BSP
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
void rtcDateSet
    (
    int year,
    int month,
    int dayOfMonth,
    int dayOfWeek
    )

    {
    /*040322 james changed*/
    #if 0
    rtc_Year = year%100;
   #else
   if(year<CENTURY)
   	rtc_Year = year%100;
   else
   	rtc_Year = (year-CENTURY)%100;
  #endif
  
    rtc_Month = month;
    rtc_DayOfMonth = dayOfMonth;
    rtc_DayOfWeek = dayOfWeek;

    /*
     * evaluate distance to last leap year (don't pay attention to full
     * century rule, because only 3 year differences can be stored)
     */

    rtc_LeapYearDist = 4 - (year % 4);

    rtc_DayOfYear = dayOfYear (month, dayOfMonth);

    rtcSpIoctl (SET_DATE, FALSE);
    }

/*******************************************************************************
*
* rtcDateGet - get the date
*
* RETURNS: N/A.
*/

void rtcDateGet (void)

    {
    rtcSpIoctl (GET_DATE, TRUE);
    }

/*******************************************************************************
*
* rtcTimeSet - set the time
*
* RETURNS: N/A.
*/

void rtcTimeSet
    (
    int hour,
    int minute,
    int second
    )

    {
    rtc_Hour = hour;
    rtc_Minute = minute;
    rtc_Second = second;

    rtcSpIoctl (SET_TIME, FALSE);
    }

/*******************************************************************************
*
* rtcTimeGet - get the time
*
* RETURNS: N/A.
*/

void rtcTimeGet (void)

    {
    rtcSpIoctl (GET_TIME, TRUE);
    }

/*******************************************************************************
*
* rtcModeSet - set the mode
*
* RETURNS: OK or ERROR, if incorrect mode.
*/

STATUS rtcModeSet
    (
    int mode
    )

    {
    switch (mode)
        {
        case 12:    
            rtcSpIoctl (MODE_12HOUR, FALSE);
            return (OK);
        case 24:    
            rtcSpIoctl (MODE_24HOUR, FALSE);
            return (OK);
        default:
            return (ERROR);
        }
    }

/*******************************************************************************
*
* i2cReset() - Reset I2C BUS
*
*  This function should be called in initialization, to ensure that I2C bus is free.
*/


void i2cReset()
{
    rtcSpIoctl (I2C_RESET, FALSE);
}

/*******************************************************************************
*
* rtcSpIoctl - special device control routine
*
* This routine must be called by the user to access the driver ioctl routine
* correctly.
*
* NOMANUAL
*/

void rtcSpIoctl
    (
    int request,    /* request code */
    BOOL print      /* print if TRUE, else only set structure */
    )

    {
    int fd;

    fd = open (RTC_DEVICE, 0, 0);
 
    if(fd <= 0)
    	{
		printf(" open RTC error \n");
		return ;
	}
	else
	{
		printf("\r\nopen RTC ok \r\n");	
	}
    ioctl (fd, request, print);

    close (fd);
    }

/*******************************************************************************
*
* rtcIoctl - special device control
*
* This driver responds to the ioctl calls described in the header.
*/

STATUS rtcIoctl
    (
    FAST RTC_DEV *pRtcDv,   /* device to control */
    FAST int request,       /* request code */
    BOOL print              /* print if TRUE, else only set structure */
    )

    {
    STATUS state = OK;      /* state of the ioctl calls */
   unsigned char data;    	
#if 1
    switch (request)
        {
        case SET_DATE:
            if (rtc_DayOfWeek < 0 || rtc_DayOfWeek > 6)
                {
                printErr ("Invalid day of week: %d\n", rtc_DayOfWeek);
                break;
                }
            if (rtc_Month < 1 || rtc_Month > 12)
                {
                printErr ("Invalid month: %d\n", rtc_Month);
                break;
                }
 
		 m41t11_Write(3, toBCD (rtc_DayOfWeek+1));
		 m41t11_Write(4, toBCD (rtc_DayOfMonth));
		 m41t11_Write(5, toBCD (rtc_Month));
		 m41t11_Write(6, toBCD (rtc_Year));
				

            break;

        case GET_DATE:
            m41t11_Read(3,&data);
	     rtc_DayOfWeek = 	fromBCD(data&0x07) -1;
		 
	     m41t11_Read(4,&data);
	     rtc_DayOfMonth = 	fromBCD(data&0x3f);
		 
	     m41t11_Read(5,&data);
	     rtc_Month = 	fromBCD(data&0x1f);
		 
	     m41t11_Read(6,&data);
	     rtc_Year  = 	fromBCD(data);
		 

            /* print out */

            if (print)
                {
                if (rtc_DayOfWeek < 0 || rtc_DayOfWeek > 6)
                    {
                    printErr ("Invalid day of week: %d\n", rtc_DayOfWeek);
                    break;
                    }
                if (rtc_Month < 1 || rtc_Month > 12)
                    {
                    printErr ("Invalid month: %d\n", rtc_Month);
                    break;
                    }
                printf ("Date: %s, %02d-%s-%4d.\n",
                    dayTable [rtc_DayOfWeek],
                    rtc_DayOfMonth,
                    monthTable [rtc_Month - 1],
                    CENTURY + rtc_Year);
                }

            break;

        case SET_TIME:
           
	        m41t11_Write(0, toBCD (rtc_Second));
	        m41t11_Write(1, toBCD (rtc_Minute));
		 m41t11_Write(2, toBCD (rtc_Hour));
            break;

        case GET_TIME:

	     m41t11_Read(0,&data);
	     rtc_Second = 	fromBCD(data&0x7f);
	     m41t11_Read(1,&data);
	     rtc_Minute = 	fromBCD(data&0x7f);
	     m41t11_Read(2,&data);
	     rtc_Hour = 	fromBCD(data&0x3f);

	
            if (print)
                {
                if (mode == 12)
                    {
                    
                    }
                else
                    {
                  
                    printf ("Time: %02d:%02d:%02d.\n",
                        rtc_Hour, rtc_Minute, rtc_Second);
                    }
                }
            break;
			
        case I2C_RESET:
              I2C_Init();
		break;
		
        case MODE_24HOUR:
            mode = 24;

            break;

        case MODE_12HOUR:
            mode = 12;

            break;

        default:
            state = S_ioLib_UNKNOWN_REQUEST;
            break;
        }
#endif
    return (state);
    }

/*******************************************************************************
*
* toBCD - convert to binary coded decimal
*/

int toBCD
    (
    int intValue
    )

    {
    int bcdValue;

    bcdValue = intValue%10;
    intValue /= 10;
    intValue *= 0x10;
    bcdValue += intValue;

    return (bcdValue);
    }

/*******************************************************************************
*
* fromBCD - convert from binary coded decimal
*/

int fromBCD
    (
    int bcdValue
    )

    {
    int intValue;

    intValue = bcdValue&0xf;
    intValue += ((bcdValue&0xf0)/0x10)*10;

    return (intValue);
    }

/*******************************************************************************
*
* dayOfYear - evaluate day of the year
*/

int dayOfYear
    (
    int month,
    int day
    )

    {
    int currentDay = 0;

    switch (month)
        {
        case 12:
            currentDay += 30;
        case 11:
            currentDay += 31;
        case 10:
            currentDay += 30;
        case 9:
            currentDay += 31;
        case 8:
            currentDay += 31;
        case 7:
            currentDay += 30;
        case 6:
            currentDay += 31;
        case 5:
            currentDay += 30;
        case 4:
            currentDay += 31;
        case 3:
            if (rtc_LeapYearDist == 0)
                currentDay += 29;
            else
                currentDay += 28;
        case 2:
            currentDay += 31;
        case 1:
            currentDay += day;
        }

    return (currentDay);
    }

/*##################################*/
/*##################################*/

STATUS sysPrintTime()
{
	struct tm	Date;
	time_t	tod;
	/*extern time_t	   time (time_t *_tod);*/
	time(&tod);
	localtime_r(&tod, &Date);
	printf("%d-%02d-%02d %02d:%02d:%02d \n",
		 			Date.tm_year+1900,  /*year*/
		 			Date.tm_mon+1,      /*month*/
		 			Date.tm_mday,        /*day*/
		   			 Date.tm_hour,		/* hour */
		   			 Date.tm_min,		/* minute */
		   			 Date.tm_sec
		   			 );

	return OK;
}

STATUS sysSetTime(char *str)
{
	struct timespec setTime;
	struct tm	Date;
	time_t	tod;
	time_t timeL;
	char *p;
	int tmp;

	p = str;
		
	/*get current time*/
	time(&tod);
	localtime_r(&tod, &Date);

	if (p == NULL )
		return ERROR ;
	while (*p == ' ')
		p ++;
	tmp = atoi(p);
	if(tmp >= 1970)
	{
		Date.tm_year = tmp - 1900;
	}	
	else
	{
		printf("invalid year %d\n",tmp);
		return ERROR;
	}
	while( isdigit(*p))
		p ++;
	p ++;
	if(!isdigit(*p))
	{
		goto sysSetTimeStrError;
	}
	tmp = atoi(p);
	if( ( tmp <= 12 ) && (tmp >=1) )
	{
		Date.tm_mon =tmp -1 ;
	}
	else
	{
		goto sysSetTimeStrError;
	}
	while( isdigit(*p))
		p ++;
	p ++;
	if(!isdigit(*p))
	{
		goto sysSetTimeStrError;
	}
	tmp = atoi(p);
	if( ( tmp <= 31 ) && (tmp >=1) )
	{
		Date.tm_mday =tmp;
	}
	else
	{
		goto sysSetTimeStrError;
	}
	while( isdigit(*p))
		p ++;
	p ++;
	while (*p == ' ')
		p ++;

	/*hour*/
	if(!isdigit(*p))
	{
		goto sysSetTimeStrError;
	}
	tmp = atoi(p);
	if( ( tmp <= 24 ) && (tmp >=0) )
	{
		Date.tm_hour =tmp;
	}
	else
	{
		goto sysSetTimeStrError;
	}
	while( isdigit(*p))
		p ++;
	p ++;
	/*tm_min*/
	if(!isdigit(*p))
	{
		goto sysSetTimeStrError;
	}
	tmp = atoi(p);
	if( ( tmp <= 59 ) && (tmp >=0) )
	{
		Date.tm_min =tmp;
	}
	else
	{
		goto sysSetTimeStrError;
	}
	while( isdigit(*p))
		p ++;
	p ++;
	/*tm_sec*/
	if(!isdigit(*p))
	{
		goto sysSetTimeStrError;
	}
	tmp = atoi(p);
	if( ( tmp <= 59 ) && (tmp >=0) )
	{
		Date.tm_sec =tmp;
	}
	else
	{
		goto sysSetTimeStrError;
	}

	printf("Set %d-%02d-%02d %02d:%02d:%02d \n",
		 			Date.tm_year+1900,  /*year*/
		 			Date.tm_mon+1,      /*month*/
		 			Date.tm_mday,        /*day*/
		   			 Date.tm_hour,		/* hour */
		   			 Date.tm_min,		/* minute */
		   			 Date.tm_sec
		   			 );
	timeL = mktime(&Date);
	setTime.tv_sec =  timeL;
	setTime.tv_nsec = 0;

	rtcDateSet(Date.tm_year-70, Date.tm_mon+1,Date.tm_mday,1/*??*/);
	rtcTimeSet(Date.tm_hour,Date.tm_min,Date.tm_sec);

	clock_settime(0,&setTime);
	sysSyncRtcToOs();
	return OK;
sysSetTimeStrError:
	printf("incalid format:%s\n",p);
	return ERROR;
}


STATUS sysSyncRtcToOs(void)
{
	struct tm	Date;
	struct timespec setTime;
	time_t timeTmp;
	rtcSpIoctl (GET_DATE, FALSE);
	rtcSpIoctl (GET_TIME, FALSE);
	Date.tm_year = 70 + rtc_Year;
	Date.tm_mon = rtc_Month -1 ;
	Date.tm_mday = rtc_DayOfMonth ;
	Date.tm_hour = rtc_Hour;
	Date.tm_min = rtc_Minute;
	Date.tm_sec = rtc_Second;
	timeTmp =  mktime(&Date);
	if (timeTmp > 0 )
	{
		setTime.tv_sec =  timeTmp;
		setTime.tv_nsec = 0;
		clock_settime(0,&setTime);
	}
	else
	{
		/* set RTC to 2004-3-25,12:0:0*/
		rtcDateSet(2004,3,25,1/*??*/);
		rtcTimeSet(12,0,0);
	}
	return OK;
}


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久亚洲综合| 亚洲大片一区二区三区| 久久伊人中文字幕| 欧美岛国在线观看| 日韩欧美第一区| 精品日韩欧美一区二区| 亚洲精品一区二区三区蜜桃下载| 日韩视频免费观看高清完整版 | 6080午夜不卡| 91久久一区二区| 欧美在线free| 欧美手机在线视频| 欧美丰满美乳xxx高潮www| 88在线观看91蜜桃国自产| 91精品国产综合久久久蜜臀粉嫩| 日韩情涩欧美日韩视频| 精品国产乱码久久久久久牛牛| 在线电影欧美成精品| 日韩欧美三级在线| 国产女主播视频一区二区| 国产精品视频九色porn| 玉足女爽爽91| 日本亚洲电影天堂| 国产美女在线观看一区| 成人97人人超碰人人99| 欧美综合一区二区| 精品国产一区二区三区久久久蜜月| 久久综合色婷婷| 成人免费在线观看入口| 午夜欧美电影在线观看| 激情六月婷婷久久| 91在线免费看| 日韩午夜精品视频| 国产精品视频一区二区三区不卡| 一区二区三区在线免费| 久久国产精品一区二区| 成人av电影在线观看| 欧美又粗又大又爽| 精品卡一卡二卡三卡四在线| 国产精品国产三级国产普通话蜜臀| 一级日本不卡的影视| 韩国一区二区视频| 在线欧美日韩精品| 精品成人一区二区三区四区| av成人免费在线观看| 欧美日韩视频专区在线播放| 国产欧美日韩在线| 日韩av网站在线观看| 成人激情午夜影院| 欧美二区三区91| 国产精品久久99| 日本不卡一二三区黄网| 97久久超碰精品国产| 日韩欧美国产一区二区三区| 国产精品三级电影| 免费在线看成人av| 91蜜桃免费观看视频| 国产a区久久久| 成人一级黄色片| 亚洲天堂成人在线观看| 日本亚洲视频在线| 91在线视频播放地址| 欧美精品一区二区三区高清aⅴ | 综合网在线视频| 午夜精品一区二区三区电影天堂| 欧美综合一区二区| 国产精品一区二区久激情瑜伽 | 久久99最新地址| 99视频国产精品| 久久亚洲精华国产精华液| 夜夜嗨av一区二区三区四季av| 国产精品小仙女| 51久久夜色精品国产麻豆| 亚洲精品一二三| 波多野洁衣一区| 久久青草欧美一区二区三区| 日韩精品成人一区二区在线| 一本一道波多野结衣一区二区| 久久久久久久久久久99999| 日本午夜精品视频在线观看| 欧美午夜影院一区| 亚洲天堂网中文字| 成人禁用看黄a在线| 久久久久88色偷偷免费| 国内外精品视频| 欧美大黄免费观看| 美日韩一级片在线观看| 欧美一区二区日韩| 五月激情综合婷婷| 欧美色视频在线| 一区二区理论电影在线观看| 91视频www| 亚洲免费毛片网站| 91一区二区三区在线观看| 国产精品免费视频一区| 粉嫩aⅴ一区二区三区四区五区| 亚洲精品在线观看网站| 激情欧美一区二区| 久久久噜噜噜久久中文字幕色伊伊| 久久国内精品自在自线400部| 91精品国产乱| 91精品国产综合久久精品app| 午夜欧美电影在线观看| 欧美日韩1区2区| 三级成人在线视频| 日韩欧美国产三级| 国产一区二区免费看| 久久久综合激的五月天| 成人综合日日夜夜| 国产精品国产三级国产普通话蜜臀| www.av精品| 亚洲一区二区四区蜜桃| 欧美精品777| 老司机精品视频一区二区三区| 欧美v国产在线一区二区三区| 国产伦精品一区二区三区视频青涩 | 色综合网色综合| 一区二区三区成人| 欧美日韩国产一区二区三区地区| 亚洲成a人片在线观看中文| 337p亚洲精品色噜噜噜| 精品中文字幕一区二区小辣椒| 久久久亚洲精品一区二区三区 | 7777精品伊人久久久大香线蕉经典版下载 | 久久嫩草精品久久久久| 国产99久久久国产精品潘金网站| 国产精品美女视频| 欧美在线观看视频一区二区| 青青草原综合久久大伊人精品优势| 欧美一区日韩一区| 国产91在线看| 一区二区三区 在线观看视频| 欧美一级高清片在线观看| 国产高清亚洲一区| 亚洲一区二区三区三| 日韩一区二区精品在线观看| 国产精品996| 亚洲国产婷婷综合在线精品| 日韩欧美国产小视频| 成人sese在线| 青娱乐精品视频| 亚洲欧美在线另类| 5月丁香婷婷综合| 不卡免费追剧大全电视剧网站| 性欧美大战久久久久久久久| 26uuu精品一区二区在线观看| 91色porny| 久久精品国产网站| 亚洲欧洲一区二区三区| 欧美日韩成人在线| 成人黄色软件下载| 免费观看91视频大全| 亚洲人成影院在线观看| 精品日韩一区二区三区| 91国偷自产一区二区使用方法| 精品一区二区在线免费观看| 亚洲人精品午夜| 欧美成人aa大片| 欧美在线高清视频| 成人一区二区三区在线观看| 日韩一区欧美二区| 国产精品美女久久久久aⅴ国产馆| 欧美人成免费网站| 不卡一区二区在线| 久久激情五月婷婷| 午夜成人在线视频| 亚洲三级在线免费观看| 久久久午夜精品| 欧美一区二区精品在线| 一本久久综合亚洲鲁鲁五月天| 国产一区二区三区黄视频| 亚洲一二三四久久| 国产精品动漫网站| 精品国产免费视频| 欧美精品黑人性xxxx| 91麻豆自制传媒国产之光| 国产主播一区二区| 奇米精品一区二区三区在线观看 | 日本中文字幕一区| 色婷婷精品大在线视频| 成人精品一区二区三区中文字幕| 日本午夜精品一区二区三区电影| 一区二区免费在线播放| 亚洲日本在线a| 国产精品人人做人人爽人人添| 欧美va亚洲va| 日韩视频免费观看高清在线视频| 欧美色图一区二区三区| 91在线精品秘密一区二区| 国产不卡视频在线播放| 久久成人久久鬼色| 男人的j进女人的j一区| 午夜成人免费电影| 五月天激情小说综合| 亚洲一区二区三区小说| 亚洲最新视频在线观看| 亚洲精品你懂的| 亚洲乱码国产乱码精品精可以看| 中文字幕欧美日本乱码一线二线| 久久一夜天堂av一区二区三区|