void CM_TempInit(void) { memset(&gCmPacket, 0, sizeof(CH_PAC_T)); suspendTask(500); dbgprint("Requesting PSIP Reset Channel"); PSIP_ResetChannel(0, gTrId); suspendTask(500); dbgprint("Requesting PSIP Channel Info"); PSIP_RequestChInfo(CH_PORT, PHYSICAL_CH_NUM, VSB_ANT, ChCh); }
/*============================================================================== Function Name : WaitNvmStable() Version : 0.2 Create Date : 2003.03.04 Author : [email protected] Description : wait until NVM is stable after write page Input : none Output : none Remarks : internal function ==============================================================================*/ static void WaitNvmStable(int isRead) { static UINT32 wr_mlbolt = 0; volatile SINT32 i, j; UINT16 subAddr = 0xffff; /* Unused address space */ UINT08 readData; /* Check last write time and force delay */ if ((readMsTicks() - wr_mlbolt) < 20) suspendTask(20); /* Wait 20 ms */ for (i = 0; i < 10; i++) { if (i2cmsMasterRead(nvmI2cLine,nvmI2cAddr,(UINT08 *)&subAddr, 2, &readData, 1)==I2C_ERROR) { NVMDRV_PRINT("NVM Wait for Stable"); continue; } else { for (j = 0; j < 10; j++) ; break; } } /* Update last write time in milli second */ if (!isRead) wr_mlbolt = readMsTicks(); return; }
void CM_Status(void) { //TODO while(1) { suspendTask(1000); } }
void YKDelayTask(int count) { /* Delays a task for specified number of clock ticks*/ YKEnterMutex(); runningTask->delay=count; suspendTask(runningTask); YKExitMutex(); YKScheduler(0); }
// INPUT : Main Audio not 0 -> Mute // 0 -> Audio On UINT08 GPIO_MainAudioMute(UINT08 on) { //GPIO를 이용한 하드웨어적 Mute는 Tr과 Power로 두가지의 방법으로 뮤트를 건다. //이렇게 해야 완벽하게 소리를 막는다. //Power관련해서는 동작시간이 좀 걸리므로 시간 간격이 필요하다. if (on) { //Mute On GPIO_MainAudioTrMute(TRUE); //Tr Mute suspendTask(100); GPIO_MainAudioEnableData(FALSE); //DATA } else { //Mute Off GPIO_MainAudioEnableData(TRUE); //DATA suspendTask(50); GPIO_MainAudioTrMute(FALSE); //Tr Mute } return(on); }
// INPUT : Main Audio not 0 -> Mute // 0 -> Audio On UINT08 GPIO_MainAudioMute(UINT08 on) { //GPIO를 이용한 하드웨어적 Mute는 Tr과 Power로 두가지의 방법으로 뮤트를 건다. //이렇게 해야 완벽하게 소리를 막는다. //Power관련해서는 동작시간이 좀 걸리므로 시간 간격이 필요하다. if(on) { GPIO_MainAudioTrMute(TRUE); suspendTask(500); GPIO_MainAudioPower(FALSE); } else { GPIO_MainAudioPower(TRUE); suspendTask(500); GPIO_MainAudioTrMute(FALSE); } return(on); }
void AccPeriodicTask(void) { #ifdef _UCOS_ int tickCount=99; while(1) { suspendTask(10); /// 10ms //ACC_DEBUG("^G^%s:%d]",__FUNCTION__,__LINE__); if ( PeriodicWork & PERIODIC_D1RATING_MASK) { if(RatingPath == MainSubBoth) //if(tickCount%100== 1) /// Once a second if( tickCount == 2) /// Once a second Check_D1_RatingDataCounter(); } if ( PeriodicWork & PERIODIC_EXTRATING_MASK) { if(RatingPath != UnknownPath) if( tickCount == 3) /// Once a second Check_Ext_RatingDataCounter(); } if ( PeriodicWork & PERIODIC_FRAMERATE_MASK) { //if(tickCount%15 == 1) CC_CheckFrameRate(); } if ( PeriodicWork & PERIODIC_WATCHDOG_MASK) { //if(tickCount%3 == 1) /// Once every 30ms if (!(tickCount & 0x3)) /// Once every 40ms (0/1/2/3 -> Once out of 4 turns -> 40ms) Process_Caption_Watchdog(); } if ( PeriodicWork & PERIODIC_USERDATA_MASK) { //if(tickCount%3 == 1) /// Once every 30ms if ((tickCount & 0x3) == 1) /// Once every 40ms Monitor_Caption_UserData(); } if (tickCount) tickCount--; else tickCount=99; } #else UINT64 tickCount = 0; int i; while(1) { SC_TaskSleep(10); //10ms for(i=0; i<5; i++) { if(PeriodicWorkActive[i] == TRUE) { switch(i) { case PERIODIC_D1RATING: if(RatingPath == MainSubBoth) if(tickCount%100== 1) Check_D1_RatingDataCounter(); break; case PERIODIC_EXTRATING: if(RatingPath != UnknownPath) if(tickCount%100 == 1) Check_Ext_RatingDataCounter(); break; case PERIODIC_FRAMERATE: //if(tickCount%15 == 1) CC_CheckFrameRate(); break; case PERIODIC_WATCHDOG: if(tickCount%3 == 1) Process_Caption_Watchdog(); break; case PERIODIC_USERDATA: if(tickCount%3 == 1) Monitor_Caption_UserData(); break; } } } tickCount++; } #endif }