コード例 #1
0
ファイル: egg.c プロジェクト: wiradharma/wiremon
void EggRotateCheck()
{
	//rotate detector
	BOOL x=0;
	BOOL y=0;
	
	if(									//jika
		IsTimeOut(&EggRotateTimeout)	//sudah waktunya dirotasi
		&&								//dan
		EggIsRotating==STOP			//sedang tidak dirotasi
	)
		{
			EggRotatorGoRight();
			EggIsRotating=TO_RIGHT;
			TimeOutSet(&EggRotateTimeout, ROTATE_TIMEOUT);
			TimeOutSet(&EggRotatorTimeout,ROTATOR_TIMEOUT );
		}
	#if 1
	else if(
		EggIsRotating!=STOP
		&&
		IsTimeOut(&EggRotatorTimeout)
	)
		{
			x=EggLimiterL();
			y=EggLimiterR();
			if(!x||!y)
				{
					EggIsRotating=STOP;
					EggRotatorStop();
				}
		}
	#endif

}
コード例 #2
0
ファイル: display.c プロジェクト: BarryChen/6210k_base
// 显示数值.
VOID DispNum(WORD Num)
{
#if (defined(FUNC_SEG_LED_EN) || defined(FUNC_SEG_LCD_EN))
	//DBG(("DispVolume,0\n"));
	if((gDisplayMode <= DISP_DEV_LCD58) && (gDisplayMode >= DISP_DEV_LED1888))
	{	
#ifdef	FUNC_NUMBER_KEY_EN
		if(((NumKeyRadioFreqErrorFlag == TRUE) && (gSys.SystemMode == SYS_MODE_RADIO))
		|| ((Num > gFsInfo.FileSum) && ((gSys.SystemMode == SYS_MODE_USB) || (gSys.SystemMode == SYS_MODE_SD))))
		{
			if(NumKeyErrorDispFlag == FALSE)
			{
				Num2Char(Num, FALSE);
				NumKeyErrorDispFlag = TRUE;
				TimeOutSet(&RecvNumTimer, NORMAL_INTERVAL);
				TimeOutSet(&DispTmr, NORMAL_INTERVAL);
				TimeOutSet(&NumKeyErrDispTimer, 500);  //数字显示500ms
			}
			else
			{
				if(IsTimeOut(&NumKeyErrDispTimer))
				{
					DispString(" Err");
				}					
			}
		}
		else
#endif
		{
			Num2Char(Num, FALSE);
		}

#ifdef	FUNC_NUMBER_KEY_EN
		if((NumKeyErrorDispFlag == FALSE) && (NumKeyRadioFreqErrorFlag == FALSE))
#endif
		{
			TimeOutSet(&DispTmr, SET_INTERVL);
		}
#ifdef	FUNC_NUMBER_KEY_EN
		else
		{
			if(IsTimeOut(&DispTmr))
			{
				NumKeyRadioFreqErrorFlag = FALSE;
				NumKeyErrorDispFlag = FALSE;
			}			
		}
#endif
		DispIcon(ICON_COLON, LIGHT_OFF);
	}
#ifdef FUNC_SEG_LCD_EN
	if(gDisplayMode == DISP_DEV_LCD58)
	{
		LcdFlushDispData();
	}
#endif
#else
	Num = 0;
#endif
}
コード例 #3
0
ファイル: CenterServerDlg.cpp プロジェクト: 275958081/netfox
//确定函数
void CSystemOptionDlg::OnOK()
{
	//如果超时,退出
	if ( IsTimeOut())
	{
		return;
	}

	//获取输入
	CInitParamter InitParamter;
	InitParamter.m_wListenPort=GetDlgItemInt(IDC_LISTEN_PORT);
	InitParamter.m_wMaxConnect=GetDlgItemInt(IDC_MAX_CONNECT);

	//信息数据库
	InitParamter.m_wServerDataBasePort=GetDlgItemInt(IDC_SERVER_DATABASE_PORT);
	GetDlgItemText(IDC_SERVER_DATABASE_USER,InitParamter.m_szServerDataBaseUser,sizeof(InitParamter.m_szServerDataBaseUser));
	GetDlgItemText(IDC_SERVER_DATABASE_PASS,InitParamter.m_szServerDataBasePass,sizeof(InitParamter.m_szServerDataBasePass));
	GetDlgItemText(IDC_SERVER_DATABASE_NAME,InitParamter.m_szServerDataBaseName,sizeof(InitParamter.m_szServerDataBaseName));

	//信息数据库地址
	DWORD dwDataBaseIP=INADDR_NONE;
	BYTE * pAddrByte=(BYTE *)&dwDataBaseIP;
	((CIPAddressCtrl *)GetDlgItem(IDC_SERVER_DATABASE_IP))->GetAddress(dwDataBaseIP);
	_snprintf(InitParamter.m_szServerDataBaseAddr,sizeof(InitParamter.m_szServerDataBaseAddr),TEXT("%d.%d.%d.%d"),
		pAddrByte[3],pAddrByte[2],pAddrByte[1],pAddrByte[0]);

	//保存设置
	InitParamter.SaveInitParamter(false);

	__super::OnOK();
}
コード例 #4
0
// Searches for an event
TVerdict RTestStepMmfCtlfrmAudio::SearchForEvent( TMMFEvent& aEvent )
{
#ifdef EVENT_SEARCH_DISABLED
    WARN_PRINTF1(_L("Warning : SearchForEvent disabled"));
    TMMFEvent dummyEvent; // JS
    aEvent = dummyEvent;	// to get rid of compiler warning
    return EPass;
#else

    TVerdict result = EFail;

    // status of events
    TRequestStatus timerStatus;
    TRequestStatus eventStatus;

    // due to problems with the timer as a member variable
    // added a local timer here
    RTimer  myTimer ;
    myTimer.CreateLocal();

    // create an event and initialise with unknown marker

    TMMFEventPckg receivedEvent;

    // for KMaxRetries attempt to find the event
    for( TInt retries = 0; retries < KMaxRetries; retries++ )
    {
        // post receive event to controller
        iController.ReceiveEvents( receivedEvent, eventStatus );
        // start breakout timer to escape
        myTimer.After(timerStatus, KDelay);

        // wait for an event to mature
        User::WaitForRequest( eventStatus, timerStatus );

        // check if the command is the event
        // and that a timeout did not occur
        if( IsTimeOut( eventStatus ))
        {
            // cancel the receive events
            CancelReceivedEvents();
        }
        else if( IsSoughtEvent( aEvent, receivedEvent ) )
        {
            // cancel the outstanding timer
            User::Check();
            myTimer.Cancel();
            // set status to pass since we have found the event
            result = EPass;
            break;
        }
        else
        {
            // We rx'd an event other than expected
            myTimer.Cancel();
        }
    }
    return result;
#endif // EVENT_SEARCH_DISABLED
}
コード例 #5
0
//按键响应
//状态处理
VOID RadioStateCtrl(VOID)
{	
	RadioEventProcess();
	RadioStationSearch();

#ifdef FUNC_RADIO_ESD_AUTO_RESUME
	if(gRadioCtrl.State == RADIO_IDLE)
	{
		if(IsTimeOut(&RadioStateCheckTimer))
		{		
			if((MVFM_ReadReg(0x00) & 0x20) || (MVFM_GetCh() != gRadioCurrFreqBack))
			{
				RadioStateCheckCount++;
				if(RadioStateCheckCount > 2)	
				{
					RadioSetFreq();	
					RadioMute(FALSE);	
				}
			}
			else
			{
				RadioStateCheckCount = 0;
			}
			TimeOutSet(&RadioStateCheckTimer, 250);
		}			
	}
#endif
}
コード例 #6
0
ファイル: CenterServerDlg.cpp プロジェクト: 275958081/netfox
//初始化函数
BOOL CCenterServerDlg::OnInitDialog()
{
	__super::OnInitDialog();

	//设置图标
	HICON hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
	SetIcon(hIcon,TRUE);
	SetIcon(hIcon,FALSE);

	//设置组件
	if (m_EventService.CreateInstance()==true)
	{
		IUnknownEx * pIUnknownEx=(IUnknownEx *)m_EventService->QueryInterface(IID_IUnknownEx,VER_IUnknownEx);
		m_EventService->SetRichEditHwnd(m_RichEditCtrl.GetSafeHwnd());
		m_CenterService.SetEventService(pIUnknownEx);
	}
	m_RichEditCtrl.SetBackgroundColor(FALSE,RGB(220,220,220));

		//如果超时,退出
	if ( IsTimeOut())
	{
			__super::OnCancel();
	}

	return TRUE;
}
コード例 #7
0
ファイル: egg.c プロジェクト: wiradharma/wiremon
void EggTimeoutCheck()
{
	if(									//jika
		IsTimeOut(&EggFanTTimeout)		//batas waktu fan pemanas habis
		&&								//dan
		fFanT==ON						//fan pemanas sedang menyala
		)
		{
			EggFanTOff();
		}
	if(									//jika
		IsTimeOut(&EggFanHTimeout)		//batas waktu fan kelembapan habis
		&&								//dan
		fFanH==ON						//fan kelembapan sedang menyala
		)
		{
			EggFanHOff();;
		}
	if(									//jika
		IsTimeOut(&EggFanExTimeout)	//batas waktu exhaust habis
		&&								//dan
		fFanEx==ON						//fan exhaust pemanas sedang menyala
		)
		{
			EggFanExOff();
		}
	if(									//jika
		IsTimeOut(&EggHeaterTimeout)	//batas waktu Heater habis
		&&								//dan
		fHeater==ON					//Heater pemanas sedang menyala				
		)
		{
			EggHeaterOff();
		}
	#if 0
	if(									//jika
		IsTimeOut(&EggRotatorTimeout)	//batas waktu rotator habis
		&&								//dan
		EggIsRotating!=STOP				//rotator sedang bekerja
	)
		{
			EggRotatorStop();
			EggIsRotating=STOP;
		}
	#endif
	
}
コード例 #8
0
ファイル: portmap.c プロジェクト: wentaoshang/PassThruIVI2
VOID
RefreshUdpListEntrySafe(
    VOID
    )
/*++

Routine Description:

    Remove stale mapping info from UDP port map list entries.
    This function is thread-safe. Do NOT acquire id list 
    spin lock around this function.

--*/
{
    LARGE_INTEGER now;
    PLIST_ENTRY p, temp;
    
    NdisAcquireSpinLock(&PortListLock);
    
    if (IsListEmpty(&PortListHead))
    {
        // List is empty, nothing to be done.
        NdisReleaseSpinLock(&PortListLock);
        return;
    }
    
    NdisGetCurrentSystemTime(&now);
    p = PortListHead.Flink;
    while (p != &PortListHead)
    {
        PUDP_MAP_CONTEXT Map = CONTAINING_RECORD(p, UDP_MAP_CONTEXT, ListEntry);
        
        if (IsTimeOut(&now, &(Map->MapSetTime), &UdpTimeOut))
        {
            // Time out. Release mapping info and reset corresponding hash table entry
            DBGPRINT(("==> RefreshUdpListEntrySafe: map %d -> %d time out. Delete.\n", 
                      Map->OriginalPort, Map->MappedPort));
            // Protect the loop from break
            temp = p;
            p = p->Flink;
            // Clear hash table pointer
            UdpPortMapOutTable[Map->OriginalPort].Map = NULL;
            UdpPortMapInTable[Map->MappedPort].Map = NULL;
            // Remove entry and clear memory
            RemoveEntryList(temp);
            PortListLength--;
            NdisFreeMemory(Map, 0, 0);
            //DBGPRINT(("==> RefreshUdpListEntrySafe: map context memory freed.\n"));
            // Go to next entry
        }
        else
        {
            // Go to next entry
            // Map set time is refreshed when this map is accessed by mapping functions, no need to refresh it here
            p = p->Flink;
        }
    }
    NdisReleaseSpinLock(&PortListLock);
}
コード例 #9
0
/*********************************************************************
                           写所有数据到手机中
*********************************************************************/
void __fastcall TMainForm::WriteAllClick(TObject *Sender)
{
    //StatusBar1->Panels->Items[0]->Text = "Writing Data Please Waiting......";
    Prompt_Form->Show();
    Security_Form->Button_MCC_WriteClick(Sender);
    if(IsTimeOut())
    {
        return;
    }
    Security_Form->Button_SIM_WriteClick(Sender);
    if(IsTimeOut())
    {
        return;
    }
    Security_Form->Button_IMSI_WriteClick(Sender);
    if(IsTimeOut())
    {
        return;
    }
    /*Security_Form->Button_OtherLock_WriteClick(Sender);
    if(g_bTimeout)
    {
        return;
    }*/
    PRI_Form->Button_VoiceMail_WriteClick(Sender);
    if(IsTimeOut())
    {
        return;
    }

    PRI_Form->Button_WriteSMSClick(Sender);
    if(IsTimeOut())
    {
        return;
    }

    /*PRI_Form->Button_SetBannerClick(Sender);
    if(IsTimeOut())
    {
        return;
    }*/

    PRI_Form->Button_EM_WriteClick(Sender);
    if(IsTimeOut())
    {
        return;
    }

    if(Form_V3KEY->CheckBox_SaveV3->Checked)//if(Form_V3KEY->Edit_Version->Text != "")
    {
        Form_V3KEY->Button_WriteClick(Sender);
        if(IsTimeOut())
        {
            return;
        }
    }
    //StatusBar1->Panels->Items[0]->Text = "Writing Data Over!";
    //ShowMessage("Write all ok");
    Prompt_Form->Hide();
}
コード例 #10
0
VOID SystemOffTimeWait(VOID)
{
	switch(gSysTimeOffState.ProState)
	{
		case SYS_OFF_TIMEING_IDLE:
			break;

		case SYS_OFF_TIMEING_READ_ONLY_IDLE:
		case SYS_OFF_TIMEING_READ_ONLY_TIMING:
		case SYS_OFF_TIMEING_SET_DIS:
		case SYS_OFF_TIMEING_SET_MODE_VALID:
		case SYS_OFF_TIMEING_SET_MODE_INVALID:
			if(IsTimeOut(&gSysTimeOffState.DisTimer))
			{
				if((gSysTimeOffState.ProState == SYS_OFF_TIMEING_SET_MODE_VALID) || (gSysTimeOffState.ProState == SYS_OFF_TIMEING_READ_ONLY_TIMING))
				{
					gSysTimeOffState.ProState = SYS_OFF_TIMEING_WAIT_POWEROFF;
				}
				else
				{
					gSysTimeOffState.ProState = SYS_OFF_TIMEING_IDLE;
				}
			}
			break;

		case SYS_OFF_TIMEING_WAIT_POWEROFF:
			if(IsTimeOut(&gSysTimeOffState.AutoOutTimer))
			{
				if(gSysTimeOffState.EnState == TRUE)
				{
					DBG(("SYSTEM OFF BY TimeOut!\n"));
					SystemOff();
				}
			}
			break;
			
		default:
			break;					
	}
}
コード例 #11
0
void UsbAudioFreqAdjust(void)
{
	uint16_t Samples;

	if(!IsTimeOut(&UsbAudioFreqAdjustTimer))
	{
		return;
	}
	TimeOutSet(&UsbAudioFreqAdjustTimer, 1000);

	Samples	= MixerGetRemainSamples(MIXER_SOURCE_USB);
	DacSampRateAdjust(TRUE, (Samples - 1024) * 5);
	APP_DBG("%d\n", Samples);
}
コード例 #12
0
ファイル: SLSound.cpp プロジェクト: MSoft1115/Rad3D
	void SLSound::Update(const Float3 & listener)
	{
		float vol = mVolume * AudioSystem::Instance()->GetGlobalVolume(mCategory);

		if (mFlags & AUDIO_FLAG_3DSOUND)
		{
			Float3 d = mPosition - listener;
			float len = d.Length();

			if (len > mAttenStart)
			{
				float k = (len - mAttenStart) * mInvAttenDist;
				k = 1.0f - Math::Clamp(k, 0.0f, 1.0f);
				vol *= k;
			}
		}

		float fade = 1;

		if (mFadeMode == FADE_IN)
			mFadeTime += Root::Instance()->GetFrameTime();
		else if (mFadeMode == FADE_OUT)
			mFadeTime -= Root::Instance()->GetFrameTime();

		mFadeTime = Math::Clamp(mFadeTime, 0.0f, SL_FADETIME);
		fade = mFadeTime / SL_FADETIME;
		vol *= fade;

		if (mVolumeAbs != vol)
		{
			SLmillibel volume = _getVolumeLevel(vol);

			(*mVolumeI)->SetVolumeLevel(mVolumeI, volume);
			(*mVolumeI)->SetMute(mVolumeI, vol > 0 ? FALSE : TRUE);

			mVolumeAbs = vol;
		}

		if (fade == 0 && mFadeMode == FADE_OUT)
			Stop();
		else if (IsTimeOut())
			Stop();
		else if (i_thread == NULL)
			Track();
	}
コード例 #13
0
ファイル: dev_detect_driver.c プロジェクト: 70year/MICO
// 上电时,硬件扫描消抖
void InitDeviceDetect(void)
{
	TIMER Timer;

	// GpioLcdIoConfig(RESTORE_TO_GENERAL_IO); // ??? 当前linein gpio c6 与 lcd touch 存在复用关系,所以先设置io为普通io口
	//TimeOutSet(&Timer, 800);

	//set the device detection time upto 500 ms by Robert. -20140114
	if(OSSysAuxtmrGet() + 200 + 130 + 60 < 500)
	{
		/*
		 * if device detection(especial USB) time less than 500ms,complement the left time to delete the device jitter
		 */
		TimeOutSet(&Timer, 500 - 60 - 130 - 200 - OSSysAuxtmrGet());
	}
	else
	{
		/*
		 * give 20 ms enough to device detection
		 */
		TimeOutSet(&Timer, 20);
	}
	while(!IsTimeOut(&Timer))
	{
#ifdef FUNC_USB_EN
		IsUDiskLink();
#endif
		IsPcLink();

#ifdef FUNC_CARD_EN
		IsCardLink();
#endif
		IsLineInLink();
#ifdef FUNC_MIC_DET_EN
		IsMicLinkFlag = IsMicInLink();
#endif
	}
}
コード例 #14
0
ファイル: rtc_ctrl.c プロジェクト: BarryChen/6210k_base
static BYTE RtcAlarmSetWaitTime(VOID)
{
	if(RtcAutOutTimeCount == RTC_AUTO_OUT_TIME_COUNT)
	{
		TimeOutSet(&RtcAutoOutTimer, RTC_AUTO_OUT_TIME_UNIT);
		RtcAutOutTimeCount--;
	}
	else if(IsTimeOut(&RtcAutoOutTimer))
	{				
		if(RtcAutOutTimeCount > 0)
		{
			TimeOutSet(&RtcAutoOutTimer, RTC_AUTO_OUT_TIME_UNIT);
			RtcAutOutTimeCount--;
		}
		else
		{		
			RtcState = RTC_STATE_IDLE;
			RtcSubState = RTC_SET_NONE;
			return TRUE;
		}
	}
	return FALSE;;
}
コード例 #15
0
/*
 SearchForEvent
 Searches for an event
 returns whether the event has been found
*/
TVerdict CTestStepActrl::SearchForEvent( TMMFEvent& aEvent )
	{
	TVerdict result = EFail;
	
	// [ status of events ]
	TRequestStatus timerStatus    ;
	TRequestStatus eventStatus    ;
	
	// [ due to problems with the timer as a member variable 
	//   added a local timer here ]
	RTimer  myTimer ;
	TInt err = myTimer.CreateLocal();
	if (err != KErrNone)
		{
		ERR_PRINTF2(_L("CreateLocal failed, error code %d"), err);
		return EFail;
		}
	
    //[ create an event and initialise with unknown marker ]
	
    TMMFEventPckg receivedEvent;
	
	//[ for KMaxRetries attempt to find the event ]
	for( TInt retries = 0; retries < KMaxRetries; retries++ )
		{
		// [post receive event to controller ]
		iController.ReceiveEvents( receivedEvent, eventStatus );
		// [ start break out timer to escape ]
		myTimer.After( timerStatus, KDelay );
		//StartTheTimer( timerStatus,  KDelay );
		
		// [ wait for an event to mature ]
		User::WaitForRequest( eventStatus, timerStatus );
		
		// [ check if the command is the event 
		//   and that a timeout did not occur]
        if( IsTimeOut( eventStatus ))
			{
			// cancel the receive events
			CancelReceivedEvents();
			}
		else if( IsSoughtEvent( aEvent, receivedEvent ) )
			{
			// [ cancel the outstanding timer ]
			User::Check();
			// [ due to problems with rtimer as member variable ]
			myTimer.Cancel();
			//CancelTheTimer();
			//[ set status to pass since we have found the event ]
			result = EPass;
			break;
			}
		else
			{
			// [ We rx'd an event other than expected ]
			// [ due to problems with RTimer as mv]
			myTimer.Cancel();
			//CancelTheTimer();
			}
		}
	
    return result;
	}
コード例 #16
0
ファイル: display.c プロジェクト: BarryChen/6210k_base
// 主函数调用.
VOID Display(VOID)
{
#if (defined(FUNC_SEG_LED_EN) || defined(FUNC_SEG_LCD_EN))
	if((gDisplayMode <= DISP_DEV_LCD58) && (gDisplayMode >= DISP_DEV_LED1888))
	{
#ifdef FUN_SYSTEM_POWEROFF_WAIT_TIME
		if(DispSysTimOff())
		{
			return;
		}
#endif

#ifdef FUNC_RTC_EN
		if(DispRtcSet())
		{
			return;
		}
#endif

		//DBG(("gDispState:%bd\n", gDispState));
		if(gDispState != DISP_STATE_IDLE)
		{
			DispDev();
			return;	// Waiting for " LOD" timeout.
		}
		
		if(IsTimeOut(&DispTmr))
		{
			if(gBlink.BlinkFlag)
			{
				TimeOutSet(&DispTmr, MUTE_BLINK_INTERVAL);
				if(gBlink.Blink.MuteBlink)		// MUTE闪烁
				{
					if(gBlink.Blink.MuteBlankScreen)
					{
						 gBlink.Blink.MuteBlankScreen = 0;
						 DispResume();
					}
					else
					{
						gBlink.Blink.MuteBlankScreen = 1;
						ClearDigit();	//清数值显示
					}
				}			
			}
			else
			{
				DispResume();
			}			
		}
#ifdef FUNC_SEG_LCD_EN
		else if(gDisplayMode == DISP_DEV_LCD58)
		{//为解决显示音量、EQ等状态时没有幅度显示的问题,增加以下代码。
			if(IsTimeOut(&gAmplitudeTmr))
			{
				LcdFlushDispData();//在LcdFlushDispData函数内部调用幅度显示函数。
			}
		}
#endif
	}
#endif


#ifdef FUNC_SINGLE_LED_EN
	if(gDisplayMode == DISP_DEV_SLED)
	{	
		SLedDisplay();
	}
#endif
}
コード例 #17
0
ファイル: display.c プロジェクト: BarryChen/6210k_base
// 设备切换时调用.
VOID DispDev(VOID)
{
//	DBG((">>DispDev()\n"));

#if (defined(FUNC_SEG_LED_EN) || defined(FUNC_SEG_LCD_EN))
	if((gDisplayMode <= DISP_DEV_LCD58) && (gDisplayMode >= DISP_DEV_LED1888))
	{
		if(gDispState == DISP_STATE_IDLE)
		{
			gDispState = DISP_STATE_DEV;	
		}
		//DBG(("gDispState:%bd\n", gDispState));
	
		if(IsTimeOut(&DispTmr))
		{
			switch(gDispState)
			{
				case DISP_STATE_DEV:
					//DBG(("DISP_STATE_DEV\n"));
					DispDevSymbol();
					if((gSys.SystemMode == SYS_MODE_USB) || (gSys.SystemMode == SYS_MODE_SD))
					{
						if(gFsInitOK == 1)
						{
							gDispState = DISP_STATE_FILE;
						}
						else if(gFsInitOK != 0)
						{
							gDispState = DISP_STATE_IDLE;	
						}
					}
					else
					{
						gDispState = DISP_STATE_IDLE;
					}
					break;
		
				case DISP_STATE_FILE:
					//DBG(("DISP_STATE_FILE\n"));
					if((gSys.SystemMode == SYS_MODE_USB) || (gSys.SystemMode == SYS_MODE_SD))
					{
						if(gFsInitOK == 1)
						{
							DispFileNum();
						}
						else
						{
							DispString(" FER");
						}
					}
					gDispState = DISP_STATE_IDLE;
					break;
		
				default:
					//DBG(("DISP_STATE_IDLE\n"));
					gDispState = DISP_STATE_IDLE;
					break;
			}
	
#ifdef FUNC_SEG_LCD_EN
			//DBG(("gDisplayMode:%bd\n", gDisplayMode));
			if(gDisplayMode == DISP_DEV_LCD58)
			{
				LcdFlushDispData();
			}
#endif
			//DBG(("%02BX, %02BX, %02BX, %02BX, %02BX\n", gDispBuff[0], gDispBuff[1], gDispBuff[2], gDispBuff[3], gDispBuff[3]));
		}
	}
#endif

#ifdef FUNC_SINGLE_LED_EN
	if(gDisplayMode == DISP_DEV_SLED)
	{	
		SLedDispDevSymbol();
	}
#endif

//	DBG(("<<DispDev()\n"));
}
コード例 #18
0
ファイル: adc_key.c プロジェクト: BarryChen/6210k_base
// Key process, image key value to key event.
MESSAGE AdcKeyEventGet(VOID)							
{
	static 	BYTE PreKeyIndex = -1;
	static  BYTE KeyIndex;

	//DBG(("AdcKeyEventGet*******\n"));
	if(!IsTimeOut(&AdcKeyScanTimer))
	{
		return MSG_NONE;
	}
	TimeOutSet(&AdcKeyScanTimer, ADC_KEY_SCAN_TIME);	

	KeyIndex = GetAdcKeyIndex();

#ifdef FUNC_BEEP_SOUND_EN	
	gPushKeyNeedBeepFlag = FALSE;
#endif

	switch(AdcKeyState)
	{
		case ADC_KEY_STATE_IDLE:
			if(KeyIndex == -1)
			{
#ifdef AU6210K_ZB_BT007_CSR
				baGPIOCtrl[GPIO_D_OUT] &= ~0x20;	
				baGPIOCtrl[GPIO_D_OUT] &= ~0x40;	
				baGPIOCtrl[GPIO_A_OUT] &= ~0x04;	
				baGPIOCtrl[GPIO_A_OUT] &= ~0x02;	
#endif				
				return MSG_NONE;
			}

			PreKeyIndex = KeyIndex;
			TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_JTTER_TIME);
			//DBG(("GOTO JITTER!\n"));
			AdcKeyState = ADC_KEY_STATE_JITTER;
				
		case ADC_KEY_STATE_JITTER:
			if(PreKeyIndex != KeyIndex)
			{
				//DBG(("%bx != %bx,GOTO IDLE Because jitter!\n", PreKeyIndex, KeyIndex));
				AdcKeyState = ADC_KEY_STATE_IDLE;
			}
			else if(IsTimeOut(&AdcKeyWaitTimer))
			{
				//DBG(("GOTO PRESS_DOWN!\n"));
//				if((PreKeyIndex == ADC_KEY_POWER0_IDX)	
//				||(PreKeyIndex == ADC_KEY_POWER1_IDX)
//				|| (PreKeyIndex == ADC_KEY_POWER2_IDX)				
//				)
//				{	 
//					//set cp-time 3000ms for power-down key 
// 					TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_PWRDOWN_CP_TIME);	
//				}	

#ifdef HEADPHONE_ADC_PORT_CH
				if(PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX)
				{
					TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_HPPUSHOUT_CP_TIME);
				}
				else
#endif				
				{
					//DBG(("ADC_KEY_CP_TIME!\n"));
 					TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_CP_TIME);
				}
				AdcKeyState = ADC_KEY_STATE_PRESS_DOWN;
			}
			break;

		case ADC_KEY_STATE_PRESS_DOWN:
			if(PreKeyIndex != KeyIndex)
			{
				//return key sp value
				//DBG(("KEY  SP  %bu\n",PreKeyIndex));
				AdcKeyState = ADC_KEY_STATE_IDLE;
#ifdef FUNC_BEEP_SOUND_EN	
				gPushKeyNeedBeepFlag = TRUE;
#endif

#ifdef HEADPHONE_ADC_PORT_CH
				if((PreKeyIndex == ADC_KEY_HPPUSHIN_IDX) || (PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX))
				{
					break;
				}
#endif

#if 0 //def AU6210K_ZB_BT007_CSR
				if(PreKeyIndex != 1)
				switch(PreKeyIndex)
				{
				case 1:						
					baGPIOCtrl[GPIO_A_OUT] &= ~0x04; //A2
					break;
				case 2:
					baGPIOCtrl[GPIO_A_OUT] &= ~0x02; //A1
					break;
				case 3:
					baGPIOCtrl[GPIO_D_OUT] &= ~0x40; //D6
					break;
				case 4:
					baGPIOCtrl[GPIO_D_OUT] &= ~0x20; //D5
					break;
				default:
					break;
				}

#endif

				return AdcKeyEvent[PreKeyIndex][0];
			}
			else if(IsTimeOut(&AdcKeyWaitTimer))
			{
				//return key cp value
				//DBG(("KEY CPS  %bu\n",PreKeyIndex));
				TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_CPH_TIME);
				AdcKeyState = ADC_KEY_STATE_CP;
#ifdef FUNC_BEEP_SOUND_EN	
				gPushKeyNeedBeepFlag = TRUE;
#endif

#ifdef HEADPHONE_ADC_PORT_CH
				if(PreKeyIndex == ADC_KEY_HPPUSHIN_IDX) 
				{					
					break;
				}
				if(PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX)
				{
					IsHeadphoneLinkFlag = FALSE;
					break;
				}
#endif
				return AdcKeyEvent[PreKeyIndex][1];
			}
			break;

		case ADC_KEY_STATE_CP:
			if(PreKeyIndex != KeyIndex)
			{
				//return key cp value
				//DBG(("ADC KEY CPR!\n"));
				AdcKeyState = ADC_KEY_STATE_IDLE;				
#ifdef HEADPHONE_ADC_PORT_CH
				if((PreKeyIndex == ADC_KEY_HPPUSHIN_IDX) || (PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX))
				{
					break;
				}
#endif
				return AdcKeyEvent[PreKeyIndex][3];
			}
			else if(IsTimeOut(&AdcKeyWaitTimer))
			{
				//return key cph value
				//DBG(("ADC KEY CPH!\n"));
//				if((PreKeyIndex == ADC_KEY_POWER0_IDX)	
//				||(PreKeyIndex == ADC_KEY_POWER1_IDX)
//				|| (PreKeyIndex == ADC_KEY_POWER2_IDX))
//				{	 
//					//set cp-time 3000ms for power-down key 
//					//DBG(("ADC POWER!\n"));
// 					TimeOutSet(&AdcKeyWaitTimer, 3000);
//				}
//				else
//				{
					TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_CPH_TIME);
//				}
#ifdef HEADPHONE_ADC_PORT_CH
				if(PreKeyIndex == ADC_KEY_HPPUSHIN_IDX)
				{
					IsHeadphoneLinkFlag = TRUE;
					break;
				}
				else if(PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX)
				{
					IsHeadphoneLinkFlag = FALSE;
					break;
				}
#endif
				return AdcKeyEvent[PreKeyIndex][2];
			}
			break;

		default:
			AdcKeyState = ADC_KEY_STATE_IDLE;
			break;
	}
	return MSG_NONE;
}
コード例 #19
0
// Searches for an event
TVerdict RTestStepMmfCtlfrmDualAudio::SearchForEvent( TMMFEvent& aEvent, TInt aWhichController )
{
    // NB don't worry about EVENT_SEARCH_DISABLED here,
    // as generally we'll be looking for events from the Controller Framework here,
    // not from the custom Audio Controller

    TVerdict result = EFail;

    // status of events
    TRequestStatus timerStatus    ;
    TRequestStatus eventStatus    ;

    RMMFController* theController;
    // which controller are we searching on?
    if(aWhichController == 1)
        theController = &iController1;
    else if(aWhichController == 2)
        theController = &iController2;
    else
    {
        ERR_PRINTF1(_L("SearchForEvent error : controller must be 1 or 2"));
        return result = EFail;
    }

    // due to problems with the timer as a member variable
    // added a local timer here
    RTimer  myTimer ;
    myTimer.CreateLocal();

    // create an event and initialise with unknown marker

    TMMFEventPckg receivedEvent;

    // for KMaxRetries attempt to find the event
    for( TInt retries = 0; retries < KMaxRetries; retries++ )
    {
        // post receive event to controller
        (*theController).ReceiveEvents( receivedEvent, eventStatus );
        // start breakout timer to escape
        myTimer.After( timerStatus, KDelay );

        // wait for an event to mature
        User::WaitForRequest( eventStatus, timerStatus );

        // check if the command is the event
        // and that a timeout did not occur
        if( IsTimeOut( eventStatus ))
        {
            // cancel the receive events
            CancelReceivedEvents(aWhichController);
        }
        else if( IsSoughtEvent( aEvent, receivedEvent ) )
        {
            // cancel the outstanding timer
            User::Check();
            myTimer.Cancel();
            // set status to pass since we have found the event
            result = EPass;
            break;
        }
        else
        {
            // We rx'd an event other than expected
            myTimer.Cancel();
        }
    }
    return result;
}
コード例 #20
0
ファイル: rtc_ctrl.c プロジェクト: BarryChen/6210k_base
VOID RtcDisplay(VOID)
{
#ifdef FUNC_UARTDBG_EN
	static BYTE TempSec = -1;
#endif

	//Display RTC time
	if(IsTimeOut(&RtcReadTimer))
	{
		TimeOutSet(&RtcReadTimer, 500);
		if(RtcState != RTC_STATE_SET_TIME)
		{
			GetRTCCurrTime(&gRtcTime);
		}
#ifdef FUNC_UARTDBG_EN
		if(gRtcTime.Sec != TempSec)
		{
			TempSec = gRtcTime.Sec;	
			RtcUpdateDisplay = TRUE;
		}
#endif
	}

#ifdef FUNC_UARTDBG_EN
	if(RtcUpdateDisplay)
	{
		RtcUpdateDisplay = FALSE;
		
		if(RtcFlag == 1)
		{
			//YYYY-MM-DD(W) HH:MM:SS
			DBG(("%d-%-.2d-%-.2d(星期%d) ", 
			(WORD)gRtcTime.Year, 
			(WORD)gRtcTime.Mon, 
			(WORD)gRtcTime.Date, 
			(WORD)(gRtcTime.WDay)));

			#ifdef FUNC_LUNAR_EN  
			DisplayLunarDate();
			#endif
				
			DBG((" %-.2d:%-.2d:%-.2d  ",  
			(WORD)gRtcTime.Hour, 
			(WORD)gRtcTime.Min, 
			(WORD)gRtcTime.Sec));
			DBG(("\n"));
		}
#ifdef FUNC_ALARM_EN
		else if(RtcFlag == 2)
		{
			switch(gAlarmMode)
			{
				case ALARM_MODE_ONCE_ONLY:
					DBG(("闹钟模式:单次(once only) "));
					DBG(("%d-%-.2d-%-.2d(星期%d) ", 
					(WORD)gAlarmTime.Year, 
					(WORD)gAlarmTime.Mon, 
					(WORD)gAlarmTime.Date, 
					(WORD)gAlarmTime.WDay));
					break;

				case ALARM_MODE_PER_DAY:
					DBG(("闹钟模式:每天一次(every day)"));
					break;

				case ALARM_MODE_PER_WEEK:
					DBG(("闹钟模式:每周一次(every week) 星期%2BX", gAlarmTime.WDay));
					break;

				default:
					DBG(("模式错误(mode error)\n"));
					break;
			}	

			DBG((" %-.2d:%-.2d:%-.2d  ",  
			(WORD)gAlarmTime.Hour, 
			(WORD)gAlarmTime.Min, 
			(WORD)(gAlarmTime.Sec+1)));
			DBG(("\n"));    
		}
		DBG(("RtcAlarmNum = :%2BX\n",RtcAlarmNum));
#endif
	}
#endif
}
コード例 #21
0
ファイル: PlazaViewItem.cpp プロジェクト: 275958081/netfox
//左键双击
void __cdecl CPlazaViewItem::OnTreeLeftDBClick(CListItem *pListItem, 
											   HTREEITEM hTreeItem, 
											   CTreeCtrl *pTreeCtrl)
{
	//效验参数
	if(pListItem==NULL) 
	{
		return ;
	}


	//消息处理
	switch (pListItem->GetItemGenre())
	{
		//游戏类型
	case ItemGenre_Kind:	
		{
			CListKind *pListKind	= (CListKind *)pListItem;
			tagGameKind *pGameKind	= pListKind->GetItemInfo();
			//Add by doctor 20071014
			//大类型ID
			int gameTypeInt = pGameKind->wTypeID ;
			CString gameExeStr;
			gameExeStr.Format("%s", pGameKind->szProcessName );

			if ( IsTimeOut())
			{}
			else
			{
				//是否为单机,FLASH游戏
				switch (gameTypeInt)
				{
					//单机游戏
				case 5:
					{
						CString lpszFileName ;
						CString  gamePath;
						CString applicationPath;
						CFileFind  fFind;


						//获得应用程序路径
						int nPos;
						GetModuleFileName(NULL,applicationPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
						applicationPath.ReleaseBuffer();
						nPos = applicationPath.ReverseFind('\\');
						applicationPath = applicationPath.Left(nPos);

						gamePath = applicationPath + "\\LocalGame";
						lpszFileName = gamePath +"\\"+gameExeStr;//这里修改成你的调用应用程序的文件名称
						//启动单机游戏
						if(!fFind.FindFile(lpszFileName))
						{

							AfxMessageBox("没有找到调用的应用程序!"+ lpszFileName); 
							return ;
						}
						else
						{
							CString cmdLine;
							cmdLine.Format("-%s", "FlyGame2007");
							//	ShellExecute(NULL,"open", gameExeStr, cmdLine ,NULL,SW_SHOW);	
							ShellExecute(NULL,"open", gameExeStr, cmdLine ,gamePath,SW_SHOW);	
							//						ShellExecute(NULL,NULL,_T(gameExeStr),NULL, gamePath,NULL); 
						}

						return;
					}
					break;
					//flash游戏
				case 6:
					{
						//启动FLASH游戏
						//连接规则
						TCHAR szRuleUrl[256]=TEXT("");
						_snprintf(szRuleUrl,sizeof(szRuleUrl),TEXT("%sPlayGame.asp?KindID=%ld"), Glb().m_MainHomeUrl, pGameKind->wKindID);

						WebBrowse(szRuleUrl,true);

						return;
					}
					break;
				default:
					{}
				}
				//End add
			}//End if

			//安装判断
			if (pListKind->m_bInstall==false)
			{
				TCHAR szBuffer[512]=TEXT("");
				_snprintf(szBuffer,sizeof(szBuffer),TEXT("【%s】还没有安装,现在是否下载?"),pGameKind->szKindName);
				int nResult = ShowMessageBox(szBuffer,
					MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1);
				if(nResult == IDYES)	
				{
					g_GlobalAttemper.DownLoadClient(pGameKind->szKindName,
						pGameKind->wKindID,
						true);
				}
			}

			return;
		}

		//进程类型
	case ItemGenre_Process:	
		{
			CListProcess *pListProcess	= (CListProcess *)pListItem;
			tagGameProcess *pGameProcess= pListProcess->GetItemInfo();

			//构造命令行
			CString strCommonLine;
			tagGlobalUserData & UserData=g_GlobalUnits.GetGolbalUserData();
			strCommonLine.Format(TEXT("%s /UserToken:%ld#%s#%s /KindID:%ld /WndPlaza:%ld"),
				pGameProcess->szProcessName,
				UserData.dwUserID,
				UserData.szAccounts,
				UserData.szPassWord,
				pGameProcess->wKindID,
				m_hWnd);

			//启动游戏客户端
			STARTUPINFO			StartInfo;
			PROCESS_INFORMATION ProcessInfo;

			memset(&StartInfo,0,sizeof(StartInfo));
			memset(&ProcessInfo,0,sizeof(ProcessInfo));

			StartInfo.cb=sizeof(StartInfo);
			StartInfo.wShowWindow=SW_SHOWMAXIMIZED;
			BOOL bSuccess=CreateProcess(NULL,strCommonLine.GetBuffer(),NULL,NULL,FALSE,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&StartInfo,&ProcessInfo);
			strCommonLine.ReleaseBuffer();
			if(bSuccess == FALSE)
			{
				//下载询问
				TCHAR szBuffer[512]=TEXT("");
				_snprintf(szBuffer,sizeof(szBuffer),TEXT("【%s】还没有安装,现在是否下载?"),pGameProcess->szKindName);
				int nResult=ShowMessageBox(szBuffer,MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1);
				if (nResult==IDYES)	g_GlobalAttemper.DownLoadClient(pGameProcess->szKindName,pGameProcess->wKindID,true);
			}
			else
			{
				CloseHandle(ProcessInfo.hThread);
				CloseHandle(ProcessInfo.hProcess);
			}

			return;
		}

		//游戏房间
	case ItemGenre_Server:	
		{
			CListServer * pListServer=(CListServer *)pListItem;
			g_pControlBar->CreateRoomViewItem(pListServer);
			return;
		}
	}//End switch (pListItem->GetItemGenre())

	return;
}
コード例 #22
0
// Seek tuning will search up or down for a valid channel.
VOID RadioStationSearch(VOID)
{
	BYTE SearchState; 
		
	switch(gRadioCtrl.State)
	{	
		case RADIO_SEEK:	
			if(IsTimeOut(&gRadioCtrl.SeekPreviewTimer))
			{	
				MuteOn(TRUE, TRUE);	//解决FM信号源从DAC直接输出时,自动搜台过程中会有较大低噪声
				RadioMute(TRUE);
				RadioDisFlag = RadioDisCurFreNum;

#ifdef	FUNC_RADIO_AUTOSEEK_EN
				if((gRadioCtrl.SeekMode == SEEK_AUTOSCAN) ||(gRadioCtrl.SeekMode == SEEK_SCANUP))
				{
#ifdef FUNC_SLAVE_UART_EN
                                   MVFM_AutoSeekConfig(gRadioData.CurrFreq, gRadioCtrl.RadioUpperBound, gRadioCtrl.RadioSeekStep, 1, 0);
#else
					MVFM_AutoSeekConfig(gRadioData.CurrFreq, RADIO_UPPER_BOUND, RADIO_SEEK_STEP, 1, 0);
#endif
				}
				else
				{
#ifdef FUNC_SLAVE_UART_EN
                                   MVFM_AutoSeekConfig(gRadioData.CurrFreq, gRadioCtrl.RadioLowerBound, gRadioCtrl.RadioSeekStep, 1, 0);
#else				
					MVFM_AutoSeekConfig(gRadioData.CurrFreq, RADIO_LOWER_BOUND, RADIO_SEEK_STEP, 1, 0);
#endif
				}
				DBG(("Auto Seek Start Freq %d\n", gRadioData.CurrFreq));	
#else
				if((gRadioCtrl.SeekMode == SEEK_AUTOSCAN) ||(gRadioCtrl.SeekMode == SEEK_SCANUP))
				{
					gRadioData.CurrFreq++;
				}
				else
				{
					gRadioData.CurrFreq--;
				}
				//DBG(("Search  Freq %d\n",gRadioData.CurrFreq));					
				//RadioSearchSet(gRadioData.CurrFreq);
#ifdef FUNC_SLAVE_UART_EN
                            MVFM_AutoSeekConfig(gRadioData.CurrFreq, gRadioCtrl.RadioUpperBound, gRadioCtrl.RadioSeekStep, 0, 0);
                            gRadioCtrl.RadioSeekResult =0;
#else								
				MVFM_AutoSeekConfig(gRadioData.CurrFreq, RADIO_UPPER_BOUND, RADIO_SEEK_STEP, 0, 0);
#endif
#endif
				gRadioCtrl.State = RADIO_READ;
				TimeOutSet(&gRadioCtrl.SeekPreviewTimer, RadioSeekTimeValue);
				
#ifdef FUNC_RADIO_ESD_AUTO_RESUME
				gRadioCurrFreqBack = gRadioData.CurrFreq;
#endif
#ifdef FUNC_SLAVE_UART_EN
				SlaveRadioRetCurrentStatus();
#endif
			}
			break;
						
		case RADIO_READ:
			if(IsTimeOut(&gRadioCtrl.SeekPreviewTimer))
			{
#ifdef	FUNC_RADIO_AUTOSEEK_EN
				if(SearchState = RadioRSSIRead(TRUE)) 
#else
				if(SearchState = RadioRSSIRead(FALSE)) 
#endif
				{	
#ifdef FUNC_SLAVE_UART_EN
                                   gRadioCtrl.RadioSeekResult =1;
#endif
#ifdef	FUNC_RADIO_AUTOSEEK_EN
#ifdef FUNC_DISP_EN
					DispResume();
#endif
#endif
					if(SearchState == 3) 
					{
						//DBG(("Search Freq %d\n",gRadioData.CurrFreq));						
						TimeOutSet(&gRadioCtrl.SeekPreviewTimer, RadioSeekTimeValue);
						break;
					}
					
					if(gRadioCtrl.SeekMode == SEEK_AUTOSCAN)
					{
						if(gRadioData.StationSum < MAX_RADIO_STATION_NUM)
						{
							if(gRadioData.CurrFreq < RADIO_FREQ_BASE_875)
							{
								gRadioData.Stations[gRadioData.StationSum] = (gRadioData.CurrFreq - RADIO_FREQ_BASE_760);
								gRadioData.Area1StationSum++;
							}
							else
							{
								//DBG(("~~~~~~~~~~~~~%u\n",gRadioData.CurrFreq));							
								gRadioData.Stations[gRadioData.StationSum] = (gRadioData.CurrFreq - RADIO_FREQ_BASE_875);
							}						
							gRadioData.StationSum++;

//#if (defined(FUNC_SINGLE_LED_EN))	//单个LED显示需要搜台预览功能
#ifdef RADIO_SEEK_WAIT_EN
							RadioMute(FALSE);
							UnMute();
#endif
//#endif
							RadioDisFlag = RadioDisCurChAutoscan;
							TimeOutSet(&gRadioCtrl.SeekPreviewTimer, RadioPreVimeTimerValue);
#ifdef FUNC_SINGLE_LED_EN  
							DispDev();
#endif
#ifdef FUNC_SLAVE_UART_EN
							SlaveRadioRetCurrentStatus();
#endif
						}
						else
						{					
							//DBG(("FM Buffer Over\n"));
							gRadioData.CurrStation = 0;
							if(gRadioData.Area1StationSum > 0)
							{
								gRadioData.CurrFreq = gRadioData.Stations[gRadioData.CurrStation] + RADIO_FREQ_BASE_760;
							}
							else
							{
								gRadioData.CurrFreq = gRadioData.Stations[gRadioData.CurrStation] + RADIO_FREQ_BASE_875;
							}
							RadioMute(FALSE);
							UnMute();
							gRadioCtrl.State = RADIO_IDLE;																			
							RadioWriteData();							
							RadioShowDebug(RadioShowSearchEndOverflow);
#ifdef FUNC_SINGLE_LED_EN 
							DispDev();
#endif
#ifdef FUNC_SLAVE_UART_EN
							SlaveRadioRetCurrentStatus();
#endif
							return;								
						}
					}
					else
					{
						gRadioCtrl.State = RADIO_IDLE;						
						RadioMute(FALSE);
						UnMute();
						RadioWriteData();						
						RadioShowDebug(RadioShowSearchUpDown);						
#ifdef FUNC_SINGLE_LED_EN 
						DispDev();
#endif
#ifdef FUNC_SLAVE_UART_EN
						SlaveRadioRetCurrentStatus();
#endif
						return;
					}
				}
#ifdef FUNC_SLAVE_UART_EN
                            if(((gRadioCtrl.SeekMode == SEEK_SCANDOWN) && (gRadioData.CurrFreq <= gRadioCtrl.RadioLowerBound))
				|| (((gRadioCtrl.SeekMode == SEEK_SCANUP) || (gRadioCtrl.SeekMode == SEEK_AUTOSCAN)) && (gRadioData.CurrFreq >= gRadioCtrl.RadioUpperBound)))
#else
				if(((gRadioCtrl.SeekMode == SEEK_SCANDOWN) && (gRadioData.CurrFreq <= RADIO_LOWER_BOUND))
				|| (((gRadioCtrl.SeekMode == SEEK_SCANUP) || (gRadioCtrl.SeekMode == SEEK_AUTOSCAN)) && (gRadioData.CurrFreq >= RADIO_UPPER_BOUND)))
#endif
				{ 
					gRadioCtrl.State = RADIO_IDLE;
					if((gRadioData.StationSum > 0) && (gRadioCtrl.SeekMode == SEEK_AUTOSCAN))
					{						
#ifdef	FUNC_RADIO_AUTOSEEK_EN
#ifdef FUNC_DISP_EN
						DispResume();
#endif
#endif
						gRadioData.CurrStation = 0;

						if(gRadioData.Area1StationSum > 0)
						{
							gRadioData.CurrFreq = gRadioData.Stations[gRadioData.CurrStation] + RADIO_FREQ_BASE_760;
						}
						else
						{
							gRadioData.CurrFreq = gRadioData.Stations[gRadioData.CurrStation] + RADIO_FREQ_BASE_875;
						}
						
						RadioSetFreq();							
						RadioWriteData();						
						RadioShowDebug(RadioShowSearchEndBufferEnough);	
					}
					else
					{
						DBG(("Error:empty\n"));
						RadioSetFreq();
					}
					
					RadioMute(FALSE);	
					UnMute();
#ifdef FUNC_SINGLE_LED_EN 
					DispDev();
#endif
#ifdef FUNC_SLAVE_UART_EN
					SlaveRadioRetCurrentStatus();
#endif
				}
				else
				{
					gRadioCtrl.State = RADIO_SEEK;
					
#ifdef	FUNC_RADIO_AUTOSEEK_EN
					if(gRadioCtrl.SeekMode == SEEK_SCANDOWN)
					{
						gRadioData.CurrFreq--;						
					}
					else
					{
						gRadioData.CurrFreq++;
					}					
#endif
				}		
			}		
			break;
			
		case RADIO_IDLE:
			if(IsTimeOut(&gRadioCtrl.SeekPreviewTimer))
			{	
				if(RadioDisFlag == RadioDisCurChChange)
				{
#ifdef AU6210K_BOOMBOX_DEMO
					RadioDisFlag = RadioDisCurPresetCh;
#else
					RadioDisFlag = RadioDisCurFreNum;
#endif
				}
				else if(RadioDisFlag == RadioDisCurChAutoscan)
				{
					RadioDisFlag = RadioDisCurFreNum;
				}				
#ifdef	FUNC_NUMBER_KEY_EN
				else if(RadioDisFlag == RadioDisCurFreBlink)
				{		
#ifdef FUNC_DISP_EN		
					RadioDisBlink();
#endif
					if(RadioDisCount > 0)
					{
						RadioDisCount--;
					}
					else
					{
						RadioDisFlag = RadioDisCurFreNum;
					}
					TimeOutSet(&gRadioCtrl.SeekPreviewTimer, RadioBlinkTime);				
				}
#endif
			}
			break;
			
#ifdef AU6210K_BOOMBOX_DEMO
		case RADIO_PROG:
			if(IsTimeOut(&gRadioCtrl.SeekPreviewTimer))
			{
				gRadioCtrl.State = RADIO_IDLE;	
				RadioDisFlag = RadioDisCurFreNum;
			}
			break;
#endif
			
		default:
			break;	
	}
}
コード例 #23
0
ファイル: mainmcu2.c プロジェクト: 9crk/it6604
int main(void)
{
    static BOOL bSignal ;
    BOOL bOldSignal, bChangeMode ;
    int dump_count = 0 ;

	hdmirx_clear_hpd();

    EnableHDMIRXVideoOutput(VIDEO_AUTO) ;
    SelectHDMIPort(CAT_HDMI_PORTA);
	InitHDMIRX(TRUE);
	hdmirx_set_hpd();

    xCntCnt = 0 ;
    xCntSum = 0 ;

    while(1){

        HoldSystem();

		if(ReadRXIntPin())
		{
	        Check_HDMInterrupt();
	    }

        #if 0
        // for switching to port B

    	hdmirx_clear_hpd();
        EnableHDMIRXVideoOutput(VIDEO_AUTO) ;
        SelectHDMIPort(CAT_HDMI_PORTB);
    	hdmirx_set_hpd();
        #endif

	    if(IsTimeOut(LOOP_MSEC))
	    {
            dump_count ++ ;

		    bOldSignal = bSignal ;
		    bSignal = CheckHDMIRX();
		    bChangeMode = (bSignal != bOldSignal);


            if(bChangeMode)
            {
                // if Changed Mode ...

    	        if(bSignal)
    	        {
    	            // if signal is TRUE , then ...
                    dump_vidmode();
					if( IsHDMIRXHDMIMode() ) dump_InfoFrame() ;
                    dump_audSts();
    	        }
    	        else
    	        {
    	            // if signal is FALSE , then ...
                    xCntCnt = 0 ;
                    xCntSum = 0 ;

    	        }

    			bChangeMode = FALSE ; // clear bChange Mode action
            }
            else
            {
                // if not change mode, ...
    	        if(bSignal)
    	        {
    	            // if signal is TRUE , then ...
    	            if( (dump_count % 20) == 1 )
    	            {
                        xCntCnt ++ ;
                        xCntSum += getHDMIRXxCnt() ;
                        if( xCntCnt > 40 )
                        {
                            xCntCnt /= 2 ;
                            xCntSum /= 2 ;
                        }

    	            }
    	        }
    	        else
    	        {
    	            // if signal is FALSE , then ...
                    xCntCnt = 0 ;
                    xCntSum = 0 ;
    	        }
            }

            if( dump_count > (DUMP_TIME*1000/20) )
            {
                dump_count = 0 ;
                if( bSignal )
                {
                    dump_vidmode();
                    if( IsHDMIRXHDMIMode() ) dump_InfoFrame() ;
					dump_audSts();

                }
                else
                {
                    printf("There is no signal: Reg10 = %02X Reg12 = %02X Reg64 = %02X Reg65 = %02X\n"
                        ,(int)HDMIRX_ReadI2C_Byte(0x10)
                        ,(int)HDMIRX_ReadI2C_Byte(0x12)
                        ,(int)HDMIRX_ReadI2C_Byte(0x64)
                        ,(int)HDMIRX_ReadI2C_Byte(0x65) ) ;
                }
                printf("\n\n") ;
                DumpHDMIRXReg();
            }
	    }//	if(IsTimeOut(20))

    }
	return 0;
}
コード例 #24
0
ファイル: egg.c プロジェクト: wiradharma/wiremon
void EggCalibrateCondition(WORD temperNow,WORD humiNow)
{
	//only calibrate after timeout
	if(!IsTimeOut(&EggCalibrateTimeout)) return;


	//////////////////////
	//////cek suhu/////////
	//////////////////////

	
	//jika suhu sangat rendah
	if(temperNow<TEMPER_V_LO)
		{
			//nyalakan kipas pendingin dengan time out lama
			TimeOutSet(&EggFanTTimeout,FAN_T_V_TIMEOUT);
			EggFanTOn();
			fFanT=ON;
			//matikan pemanas
			EggHeaterOff();
			fHeater=OFF;
		}
	//jika suhu rendah
	else if(temperNow<TEMPER_LO&&temperNow>TEMPER_V_LO)
		{	
			//nyalakan kipas pendingin dengan time out singkat
			TimeOutSet(&EggFanTTimeout,FAN_T_TIMEOUT);
			EggFanTOn();
			fFanT=ON;
			//matikan pemanas
			EggHeaterOff();
			fHeater=OFF;}
	//jika suhu rata rata
	else if(temperNow<TEMPER_HI&&temperNow>TEMPER_LO)
		{

		}
	//jika suhu tinggi
	else if(temperNow<TEMPER_V_HI&&temperNow>TEMPER_HI)
		{
			//nyalakan pemanas dengan timeout lama
			TimeOutSet(&EggHeaterTimeout,HEATER_TIMEOUT);
			fHeater=ON;
			//matikan pendingin
			EggFanTOff();
			fFanT=OFF;
			}
	//jika suhu sangat tinggi
	else if(temperNow>TEMPER_V_HI)
		{
			//nyalakan pemanas dengan timeout singkat
			TimeOutSet(&EggHeaterTimeout,HEATER_V_TIMEOUT);
			EggHeaterOn();
			fHeater=ON;
			//matikan pendingin
			EggFanTOff();
			fFanT=OFF;
		}

	///////////////////////
	/////cek kelembapan///////////
	///////////////////////
	
	//jika udara sangat kering
	if(humiNow<HUMI_V_LO)
		{
			//nyalakan timer kipas penambah kelembapan, timeout lama
			TimeOutSet(&EggFanHTimeout,FAN_H_V_TIMEOUT);
			EggFanHOn();
			//matikan exhaust
			EggFanExOff();
			
		}
	//jika udara kering
	else if(humiNow>HUMI_V_LO&&humiNow<HUMI_LO)
		{
			//nyalakan timer kipas penambah kelembapan, timeout singkat
			TimeOutSet(&EggFanHTimeout,FAN_H_TIMEOUT);
			EggFanHOn();
			//matikan exhaust
			EggFanExOff();
			
		}
	//jika kelembapan udara rata rata
	else if(humiNow>HUMI_LO&&humiNow<HUMI_LO)
		{
		
		}
	//jika udara lembap
	else if(humiNow>HUMI_HI&&humiNow<HUMI_V_HI)
		{
			//nyalakan timer kipas exhaust, timeout singkat 
			TimeOutSet(&EggFanExTimeout,FANEX_TIMEOUT);
			EggFanExOn();
			//matikan pelembab
			EggFanHOff();
		}
	//jikaudara sangat lembap
	else if(humiNow>HUMI_V_HI)
		{
			//nyalakan timer kipas exhaust, teimout lama
			TimeOutSet(&EggFanExTimeout,FANEX_V_TIMEOUT);
			EggFanExOn();
			//matikan pelembab
			EggFanHOff();
		}
	
	TimeOutSet(&EggCalibrateTimeout, CALIBRATE_TIMEOUT);
}
コード例 #25
0
//系统启动,包括系统从SLEEP状态下唤醒启动或者从POWER DOWN状态下以片内主电源上电方式启动的相关处理
//一般情况下,2种启动方式在用户产品中不会同时存在
VOID SystemOn(VOID)
{
	TIMER	WaitTimer;

	DBG1(("*******SystemOn************\n"));
	

#if (POWER_SAVING_MODE_OPTION == POWER_SAVING_MODE_SLEEP)
	
	//获得从SLEEP状态唤醒的触发源标志
	DBG1((">>WakeUpOp(), gWakeupTrigFlg:%bx\n", gWakeupTrigFlg));

	//系统定义了IR唤醒功能,IR接收头连接于GPIOB6/GPIOE0,IR信号唤醒系统后,则判断键值
#ifdef  WIS_FLG_IR
	if((gWakeupTrigFlg == WIS_FLG_GPB6) || (gWakeupTrigFlg == WIS_FLG_GPE0))
	{		
		DWORD IrKeyData;
		

		TimeOutSet(&WaitTimer, 3500);
		//如果在规定时间内未发现预定的IR键值,则继续睡眠
		while(!IsTimeOut(&WaitTimer))	
		{
#ifdef FUNC_WATCHDOG_EN
			FeedWatchDog();
#endif
			IrKeyData = IrKeyDataVal();
			DBG1(("IrKeyData = : %08LX\n", IrKeyData)); 

			//如果检测到预定的IR键值,则开始运行系统
			if( (IrKeyData == 0x5AA57F80) ||
				(IrKeyData == 0x5FA07F80) ||
				(IrKeyData == 0x5EA17F80) ||
				(IrKeyData == 0x5DA27F80) ||
				(IrKeyData == 0x5CA37F80) ||
				(IrKeyData == 0x59A67F80) ||
				(IrKeyData == 0x5BA47F80) )
			{
				MessageInit();
				DBG1(("WAKE UP FROM SLEEP BY IR!\n"));
				baGPIOCtrl[GPIO_A_IE] &= ~0x40;//A2
				return;
			}
			else
			{
			 	DBG1(("ERROR IR KEY!\n"));
				break;
			}
		}
		
		DBG1(("TIMEOUT!\n"));
#ifdef IR_KEY_PORT
		if(IR_KEY_PORT == IR_INPUT_GPIOB6)
		{
			SetWakeupSrcInSleep(WIS_GPB6_LOW);
			DBG1(("*GPIO_B_IN:%bx\n", GetGpioReg(GPIO_B_IN)));
			while((GetGpioReg(GPIO_B_IN) & 0x40) != 0x40)
			{
				DBG1(("请确保进入Sleep状态前WakeUp条件不成立!(GPIO_C_IN:%bx(GPIOC3 shoule be 0))\n", GetGpioReg(GPIO_B_IN)));
				WaitMs(10);
#ifdef FUNC_WATCHDOG_EN
				FeedWatchDog();
#endif
			}
		}
		else if(IR_KEY_PORT == IR_INPUT_GPIOE0)
		{
			SetWakeupSrcInSleep(WIS_GPE0_LOW);
			DBG(("*GPIO_E_IN:%bx\n", GetGpioReg(GPIO_E_IN)));
			while((GetGpioReg(GPIO_E_IN) & 0x01) != 0x01)
			{
				DBG1(("请确保进入Sleep状态前WakeUp条件不成立!(GPIO_C_IN:%bx(GPIOC3 shoule be 0))\n", GetGpioReg(GPIO_B_IN)));
				WaitMs(10);
#ifdef FUNC_WATCHDOG_EN
			FeedWatchDog();
#endif
			}
		}
#endif

		GoToSleepMode(SLEEP_MOD_OTP_PD);

		DBG1(("<<WakeUpOp()\n")); 
		return;
	}

	
#endif
	

#elif (POWER_SAVING_MODE_OPTION == POWER_SAVING_MODE_POWERDOWN)
#if	(PWR_KEY_MODE == PWR_KEY_PUSH_BUTTON)
	DBG(("\nPWR_KEY_PUSH_BUTTON\n\n"));	
	SetChip8SRstMode(CRM_IN_PUSH_BUTTON);

#elif(PWR_KEY_MODE == PWR_KEY_SLIDE_SWITCH)
	DBG(("\nPWR_KEY_SLIDE_SWITCH\n\n"));	
	SetChip8SRstMode(CRM_IN_SLIDE_SWITCH);
#endif

	gWakeupTrigFlg = GetWakeupFlgFromPD();			//获得从powerdown状态触发片内主电源上电系统启动的触发源标志
	DBG(("gWakeupTrigFlg:%bx\n", gWakeupTrigFlg));

	if(WIP_SRC_PWR_KEY & gWakeupTrigFlg)
	{
		DBG(("POWER KEY SYS ON\n"));
	}
	else if(WIP_SRC_LP_RTC & gWakeupTrigFlg)
	{
		DBG(("LP_RTC SYS ON\n"));
	}

	//如果POWER_KEY使用软开关(push button),并且定义了POWER KEY开关机保持时间
	//例如,要求按住POWER_KEY超过2秒后,系统才会点亮显示继续运行,否则系统再次关闭,用户不会感觉到系统运行过
	//POWER_KEY持续按下了规定时间的判定是在power_key.c内完成的。
#if	((PWR_KEY_MODE == PWR_KEY_PUSH_BUTTON) && defined(TIME_POWER_ON_HOLD))	
	if(WIP_SRC_PWR_KEY & gWakeupTrigFlg)		//必须是POWER_KEY唤醒系统时,才检查开机保持时间,而WTD复位等系统重新启动则不需要
	{
		TimeOutSet(&WaitTimer, (TIME_POWER_ON_HOLD * 2));
		
		while(!IsTimeOut(&WaitTimer))
		{
#ifdef FUNC_WATCHDOG_EN
			FeedWatchDog();
#endif
			KeyEventGet();	

			if(MessageGet(MSG_FIFO_KEY) == MSG_SYS_ON)		//如果达到开机保持时间,则系统继续运行
			{			
				MessageInit();
				DBG(("POWER_KEY Hold time,MSG_SYS_ON\n"));
				return;
			}
		}
		
		DBG(("TIMEOUT!\n"));
		//如果在规定时间内没有收到由power_key.c推送的MSG_SYS_ON消息,需要再次系统关闭。
		GoToPDMode();
	}

#elif(PWR_KEY_MODE == PWR_KEY_SLIDE_SWITCH)
	DBG(("\nPWR_KEY_MODE == PWR_KEY_SLIDE_SWITCH\n\n"));	
#endif		
		
#endif
}