Ejemplo n.º 1
0
///////////////////////////////////////////////////////////////
// SendCommandToEngine
//
//////////////////////////////////////////////////////////////
Command::Dpt_Error AlarmStatus::SendCommandToEngine( DPT_TAG_T hba, String_List** output )
	{
	Dpt_Error err;

	switch ( alarmCmd )
		{   
        case On:
			// If the alarm is not disabled then we can send
			// down the alarm on message.
			if ( !alarmDisabled )
				{
				err |= engine->Send( MSG_ALARM_ON, hba );
				
				if ( !err.Is_Error() ) { alarmOn = 1; }
				}
			else 
				{
				//(**output).add_Item( STR_CANT_DO_ALARM );
				}

			err |= GetAlarmStatus( hba , output );
        	break;
                       
        case Off:
			// If the alarm is not disabled then we can send
			// down the alarm off message.
			if ( !alarmDisabled )
				{
				err |= engine->Send( MSG_ALARM_OFF, hba );

				if ( !err.Is_Error() ) { alarmOn = 0; }
				}
			else 
				{
				//(**output).add_Item( STR_CANT_DO_ALARM );
				}

			err |= GetAlarmStatus( hba , output );
				
        	break;

        case Enable:
			err |= EnableAlarm( Enable, hba );
			err |= GetAlarmStatus( hba , output );
        	break;

        case Disable:
			err |= EnableAlarm( Disable, hba );
			err |= GetAlarmStatus( hba , output );
        	break;

        case Status:
			err |= GetAlarmStatus( hba , output );
        	break;
		}

	return( err );
	}
Ejemplo n.º 2
0
BOOL CheckAlarmTime(BYTE AlarmNum, BYTE AlarmMode, RTC_DATE_TIME* Time)
{
	if(GetAlarmStatus(AlarmNum) == 2) 
	{
		DBG(("闹钟由关闭到打开,注意调整闹钟时间\n"));
		if((AlarmMode <= ALARM_MODE_PER_WEEK) && (AlarmMode >= ALARM_MODE_ONCE_ONLY))
		{
			gAlarmMode = AlarmMode;
		}
		else
		{
			gAlarmMode = ALARM_MODE_ONCE_ONLY;
		}
	}
	
	if(AlarmMode == ALARM_MODE_ONCE_ONLY)
	{
		if(CheckTimeIsValid(Time) == FALSE)
		{
			DBG(("闹钟时间非法已纠正\n"));
		}
	}	
	else if(AlarmMode == ALARM_MODE_PER_DAY)
	{
		Time->Year = 1980;
		Time->Mon = 1;
		Time->Date = 1;
	}
	else if(AlarmMode == ALARM_MODE_PER_WEEK)
	{
		Time->Year = 1980;
		Time->Mon = 1;
		if(Time->WDay > 6)
		{			
			Time->WDay = WeekDayGet(DateToDays(Time));
		}
	}
	else
	{
		return FALSE;
	}
	return TRUE;
}
Ejemplo n.º 3
0
//这2个函数可以放在lib中,...结束
VOID RtcCtrlInit(VOID)
{	
#ifdef	FUNC_UARTDBG_EN
	 BYTE i;
#endif

#ifdef FUNC_ALARM_EN		
	extern BYTE GetRtcCurAlarmNum(VOID);
	
	InitRtc(gAlarmList, sizeof(gAlarmList) / sizeof(AlARM_INFO));
	gCurAlarmNum = GetRtcCurAlarmNum(); //0表示没有闹钟 
	DBG(("gCurAlarmNum:%02BX\n", gCurAlarmNum));	
#else
	InitRtc(NULL, 0); // 该函数必须调用
#endif

	RtcState = RTC_STATE_IDLE;
	RtcSubState = RTC_SET_NONE;
	RtcUpdateDisplay = FALSE;
	RtcFlag = 1;
	RtcAutOutTimeCount = 0;
	TimeOutSet(&RtcReadTimer, 0);
	TimeOutSet(&RtcSetCntTimer, 0);

#ifdef FUNC_ALARM_EN
#ifdef FUNC_BREAK_POINT_EN
	BP_SaveInfo((BYTE *)&gBreakPointInfo.PowerMemory.AlarmList2Store, sizeof(gBreakPointInfo.PowerMemory.AlarmList2Store));
#endif	

#ifdef	FUNC_UARTDBG_EN
	for(i = 0; i < MAX_ALARM_NUM; i++)
	{
		 DBG(("gpAlarmList[%bu].AlarmMode:%bx,", i, gAlarmList[i].AlarmMode));
		 DBG(("gAlarmList[%bu].AlarmTimeAsSeconds:%lu,", i, gAlarmList[i].AlarmTimeAsSeconds));
		 DBG(("gAlarmList[%bu].AlarmStatus:%bx\n", i, gAlarmList[i].AlarmStatus));
	}
#endif

#ifdef	AU6210K_CAR_MODEL_DEMO
	DBG(("InitRtc2\n"));
	RtcSourceState = RTC_SOURCE_CLOCK;
	DBG(("RtcSourceState=%bu\n", RtcSourceState));
	if(GetAlarmStatus(RtcAlarmNum))
	{
		gAlarmState = ALARM_STATUS_OPEN;
		DBG(("gAlarmState= ALARM_STATUS_OPEN\n"));
	}
	else
	{
		gAlarmState = ALARM_STATUS_CLOSE;
		DBG(("gAlarmState= ALARM_STATUS_CLOSE\n"));
	}			
#endif

	
#ifdef AU6210K_BOOMBOX_DEMO
	if(GetAlarmStatus(1))
	{
		gAlarm1State = ALARM_STATUS_OPEN;
		DBG(("gAlarm1State= ALARM1_STATUS_OPEN\n"));
	}
	else
	{
		gAlarm1State = ALARM_STATUS_CLOSE;
		DBG(("gAlarm1State= ALARM1_STATUS_CLOSE\n"));
	}		

	if(GetAlarmStatus(2))
	{
		gAlarm2State = ALARM_STATUS_OPEN;
		DBG(("gAlarm2State= ALARM2_STATUS_OPEN\n"));
	}
	else
	{
		gAlarm2State = ALARM_STATUS_CLOSE;
		DBG(("gAlarm2State= ALARM2_STATUS_CLOSE\n"));
	}			
#endif
#endif

	
//	//测试用,客户根据实际情况设置。
//	gRtcTime.Year = 1980;
//	gRtcTime.Mon = 1;
//	gRtcTime.Date = 1;
//	gRtcTime.WDay = 1;	// 0:星期日
//	gRtcTime.Hour = 7;
//	gRtcTime.Min = 0; 
//	gRtcTime.Sec = 0;
//  SetRTCCurrTime(&gRtcTime);
//	gAlarmTime.Year = 1980; 
//	gAlarmTime.Mon = 1;
//	gAlarmTime.Date = 1;
//	gAlarmTime.WDay = 1;
//	gAlarmTime.Hour = 8;
//	gAlarmTime.Min = 0;
//	gAlarmTime.Sec = 0;
//  gAlarmMode = ALARM_MODE_ONCE_ONLY;
//  SetAlarmTime(RtcAlarmNum, gAlarmMode, &gAlarmTime);

#ifdef AU6210K_BOOMBOX_DEMO	
	gRtcTime.Hour = 12;
	gRtcTime.Min = 0; 
	gRtcTime.Sec = 0;
	SetRTCCurrTime(&gRtcTime);
	
	gAlarmTime.Hour = 0;
	gAlarmTime.Min = 0;
	gAlarmTime.Sec = 0;
	gAlarmMode = ALARM_MODE_PER_DAY;
	SetAlarmTime(1, gAlarmMode, &gAlarmTime);
	SetAlarmTime(2, gAlarmMode, &gAlarmTime);
#endif
}
Ejemplo n.º 4
0
static VOID RtcSourceEnter(VOID)
{
	RtcFlag = 1;
	
	switch(RtcSourceState)
	{
		case RTC_SOURCE_CLOCK:
			RtcSubState = RTC_SET_HR;
			RtcState = RTC_STATE_SET_TIME;
			DBG(("RTC_SOURCE_CLOCK\n"));
			break;
			
		case RTC_SOURCE_YEAR:
			RtcSubState = RTC_SET_YEAR;
			RtcState = RTC_STATE_SET_TIME;
			gRtcRdWrFlag = SET_RTC_TIME_YEAR;
			DBG(("RTC_SOURCE_YEAR\n"));
			break;

		case RTC_SOURCE_MON:
			RtcSubState = RTC_SET_MON;
			RtcState = RTC_STATE_SET_TIME;
			DBG(("RTC_SOURCE_MON\n"));
			break;

		case RTC_SOURCE_ALARM:
			RtcFlag = 2;
			RtcUpdateDisplay = TRUE;
			if((RtcAlarmNum > 0) && (RtcAlarmNum < MAX_ALARM_NUM))
			{
				gAlarmMode = GetAlarmTime(RtcAlarmNum, &gAlarmTime);
				if((gAlarmMode < ALARM_MODE_ONCE_ONLY) || (gAlarmMode > ALARM_MODE_PER_WEEK))
				 {
					gAlarmMode = ALARM_MODE_PER_DAY;	
				}

				CheckAlarmTime(RtcAlarmNum, gAlarmMode, &gAlarmTime);									
			}
			else
			{
				DBG(("闹钟错误\n"));
			}
			RtcSubState = RTC_SET_HR;
			RtcState = RTC_STATE_SET_ALARM;
			DBG(("RTC_SOURCE_ALARM\n"));
			break;

		case RTC_SOURCE_ONOFF:
			RtcSubState = RTC_SET_ALARM_ONOFF;
			RtcState = RTC_STATE_SET_ALARM;
			if(GetAlarmStatus(RtcAlarmNum))
			{
				gAlarmState = ALARM_STATUS_OPEN;
			}
			else
			{
				gAlarmState = ALARM_STATUS_CLOSE;
			}
			DBG(("RTC_SOURCE_ONOFF\n"));
			break;

		default:
			break;			
	}
}