/**
 * @brief ProcUVAlarm
 *
 *  UV alarm function
 *
 * @para  data  address of SystemDataType
 * @return  NULL
 */
void ProcUVAlarm(SystemDataType *data)
{
  _sys_u8_ tmp8[4];
  
  /// [AT-PM] : Check alarm is enable or not ; 04/08/2013
  if(!(data->ggbParameter->alarmEnable & CELL_PARAMETER_ALARM_EN_UV))
  {
    /// [AT-PM] : Disable UV and OV alarm ; 04/08/2013
    AlarmDisable(ALARM_EN_V1_ALARM_EN);
    return;
  }

  if(data->uvAlarm.state == _UPI_TRUE_)
  {
    /// [AT-PM] : UV alarm has been set -> Wait for OV alarm ; 04/08/2013
    if(data->alarmSts & SYS_ALARM_STS_OV1)
    {
      data->uvAlarm.state = _UPI_FALSE_;
      
      /// [AT-PM] : Release UV alarm by disable ; 04/08/2013
      AlarmDisable(ALARM_EN_V1_ALARM_EN);

      /// [AT-PM] : UV release threshold reached -> set alarm threshold ; 04/08/2013
      tmp8[0] = 0xff;
      tmp8[1] = 0x7f;
      tmp8[2] = (_sys_u8_)(data->uvAlarm.alarmThrd & 0x00ff);
      tmp8[3] = (_sys_u8_)(data->uvAlarm.alarmThrd >> 8);      
    }
    else
    {
예제 #2
0
/*------------------------------------------------------*/
int			SetAlarm (void)
			{
			rtime	t = Time;
			int		i,j,k,n;
			char	s[8][8];

			for(i=0; i<8; ++i) {
				writeRTC(i,0);
				s[i][0] = 0;
                }
			n=sscanf(&LinkBuff[1],"%2d:%02d:%02d%s%s%s%s%s",
				&i,&j,&k,&s[0],&s[1],&s[2],&s[3],&s[4]);
			if(n>=3) {
					if(n==3) {
						t.hour=i;
						t.min=j;
						t.sec=k;
						AlarmEnable(&t);
						puts_pc("Wakeup on\r\n");
						}
					if(n>3)  {
						writeRTC(0,i);
						writeRTC(1,j);
						writeRTC(2,k);
						n -=3;
						for(i=0; n--; ++i)
							writeRTC(i+3,chrtx(s[i]));
						puts_pc("Submit on\r\n");
						}
					}
			else	{
					AlarmDisable();
					puts_pc("Wakeup off\r\n");
					}
            shutdown_save(NULL);
			return(null);
			}