📄 tidtv_guiapi.c
字号:
*
* @Description:: Audio Volume Control
*
* @Input :: none
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
static void TiDTV_AudioVolumeCtrl(void)
{
UCHAR Color;
short k = TiDTV_SysCtrl.AudioVolume;
if (TiDTV_KeyBuf.CurKeyCodePromptMsg != TI_DTV_IR_KEY_VOL_UP &&
TiDTV_KeyBuf.CurKeyCodePromptMsg != TI_DTV_IR_KEY_VOL_DOWN)
{
// use Bottom Window
TiDTV_OsdClearWindow(&TiDTV_OsdScreenAux, TiDTV_OsdScreenAux.pCurDrawWindow, 0);
TiDTV_OsdSetDrawWindow(&TiDTV_OsdScreenAux, &TiDTV_OsdScreenAux.pOsdWindows[1]);
TiDTV_OsdMove(&TiDTV_OsdScreenAux, TI_DTV_AUDIO_CTRL_X - TI_DTV_AUDIO_CTRL_H * 2, TI_DTV_AUDIO_CTRL_Y);
TiDTV_OsdDrawIcon(&TiDTV_OsdScreenAux, TI_DTV_CHAR_SET_ICON + 5);
TiDTV_OsdRect(&TiDTV_OsdScreenAux, TI_DTV_AUDIO_CTRL_X - 10, TI_DTV_AUDIO_CTRL_Y - 5,
TI_DTV_AUDIO_CTRL_W + 10 * 2, TI_DTV_AUDIO_CTRL_H + 5 * 2,
TI_DTV_G_BORDER | TI_DTV_G_OPAQUE, TI_DTV_COLOR_BRIGHT_CYAN,
TI_DTV_COLOR_BLEND_BLACK, 0);
k = TiDTV_SysCtrl.AudioVolume & 0x7F;
TiDTV_OsdSolidRect(&TiDTV_OsdScreenAux, TI_DTV_AUDIO_CTRL_X, TI_DTV_AUDIO_CTRL_Y,
(TVP_AUD_MAX_ATTEN - k + 1) * TI_DTV_AUDIO_CTRL_STRIDE,
TI_DTV_AUDIO_CTRL_H, TI_DTV_COLOR_BRIGHT_GREEN);
return;
}
//----------------------------------------------------------
// Enable repeat Scan Key through (uC/OS-II tick timer)
//
TiDTV_KeyRptScan(OS_TICKS_PER_SEC, OS_TICKS_PER_SEC / 10);
if (TiDTV_KeyBuf.CurKeyCode == TI_DTV_IR_KEY_VOL_UP) {
if (--k < 0)
k = 0;
} else {
if (++k > TVP_AUD_MAX_ATTEN)
k = TVP_AUD_MAX_ATTEN;
}
if (TiDTV_SysCtrl.AudioVolume != (UCHAR) k) {
TiDTV_SysCtrl.AudioVolume = (UCHAR) k;
tvpAudVolume(k, k, k, k, k, k);
if (TiDTV_KeyBuf.CurKeyCode == TI_DTV_IR_KEY_VOL_UP) {
Color = TI_DTV_COLOR_BRIGHT_GREEN;
} else {
Color = TI_DTV_COLOR_BLEND_BLACK;
k--;
}
TiDTV_OsdSolidRect(&TiDTV_OsdScreenAux, TI_DTV_AUDIO_CTRL_X + (TVP_AUD_MAX_ATTEN - k) * TI_DTV_AUDIO_CTRL_STRIDE, TI_DTV_AUDIO_CTRL_Y,
TI_DTV_AUDIO_CTRL_STRIDE, TI_DTV_AUDIO_CTRL_H, Color);
}
}
/*******************************************************************************
* @RoutineName:: TiDTV_ProcIrKeyCC
*
* @Description:: Process IR Key - CC
*
* @Input :: none
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
static void TiDTV_ProcIrKeyCC(void)
{
UCHAR Color;
if (TiDTV_MenuTaskStatus() == OS_NO_ERR)
return; // if Menu Handling Task is Running, then ignore this Key Strobe
if (++TiDTV_CcCtrl.DispCtrl >= TI_DTV_MAX_NUM_CC_CTRL)
TiDTV_CcCtrl.DispCtrl = 0;
// use Bottom Window
TiDTV_OsdClearWindow(&TiDTV_OsdScreenAux, TiDTV_OsdScreenAux.pCurDrawWindow, 0);
TiDTV_OsdSetDrawWindow(&TiDTV_OsdScreenAux, &TiDTV_OsdScreenAux.pOsdWindows[1]);
TiDTV_OsdMove(&TiDTV_OsdScreenAux, TI_DTV_AUDIO_CTRL_X - TI_DTV_AUDIO_CTRL_H * 2, TI_DTV_AUDIO_CTRL_Y);
if (TiDTV_CcCtrl.DispCtrl == TI_DTV_CC_DISABLE) {
// CC is disabled
Color = TI_DTV_COLOR_BRIGHT_RED;
} else {
// CC is enabled
Color = TI_DTV_COLOR_BRIGHT_GREEN;
}
TiDTV_OsdSetCharColor(&TiDTV_OsdScreenAux, Color, TI_DTV_COLOR_BLEND_BLACK);
TiDTV_OsdDrawAsciiStr(&TiDTV_OsdScreenAux, (char *) pTiDTV_GuiMsg[TiDTV_CcCtrl.DispCtrl]);
// CC Service control: Enable/Disable/On-Mute
TiDTV_CcServiceCtrl();
}
/*******************************************************************************
* @RoutineName:: TiDTV_CcServiceCtrl
*
* @Description:: CC Service control: Disable/Enable/On-Mute
*
* @Input :: none
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
void TiDTV_CcServiceCtrl(void)
{
switch (TiDTV_CcCtrl.DispCtrl) {
case TI_DTV_CC_DISABLE: // Disable
TiDTV_SetCc608Service(0, 0); // Disable CC608
TiDTV_DtvCcSetService(0); // Disable CC708
break;
case TI_DTV_CC_ON_MUTE: // On-mute
if ((TiDTV_SysCtrl.AudioVolume & 0x80) == 0) {
TiDTV_SetCc608Service(0, 0); // Disable CC608
TiDTV_DtvCcSetService(0); // Disable CC708
break;
}
case TI_DTV_CC_ENABLE: // Enable
if (TiDTV_SysCtrl.AvInput == TI_DTV_AV_INPUT_DTV) {
// D-TV: Enable DTV-CC and NTSC-CC
TiDTV_SetCc608Service(0, 0); // Disable CC608
TiDTV_DtvCcSetService(TiDTV_CcCtrl.Cc708SvcNo);
} else {
// A-TV: Enable NTSC-CC and Disable DTV-CC
TiDTV_DtvCcSetService(0); // Disable CC708
TiDTV_SetCc608Service(TiDTV_CcCtrl.Cc608SvcNo, 0);
}
break;
default:
break; // error
}
}
/*******************************************************************************
* @RoutineName:: TiDTV_ProcIrKeyChanUpDown
*
* @Description:: Process IR Key - Chan-up/Chan-down
*
* @Input :: none
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
static void TiDTV_ProcIrKeyChanUpDown(void)
{
// Enable repeat Scan Key through (uC/OS-II tick timer)
TiDTV_KeyRptScan(OS_TICKS_PER_SEC, OS_TICKS_PER_SEC / 5);
// DTVCC Initializations while TV Channel changed
TiDTV_DtvCcChanChangeInit();
if (TiDTV_KeyBuf.CurKeyCode == TI_DTV_IR_KEY_CH_UP)
TiDTV_TvChanUp(); // Channel Up (++)
else
TiDTV_TvChanDown(); // Channel Down (--)
TiDTV_DispCurTvChannel(); // Display current TV Channel
}
/*******************************************************************************
* @RoutineName:: TiDTV_GetLocalDateStr
*
* @Description:: Get current local date string
*
* @Input ::
* char *pDateStr : pointer to the Locate Date String (Friday, 07/15/2005)
* TI_DTV_SYS_DATE_TIME *pSysDateTime : pointer to Local Time
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
void TiDTV_GetLocalDateStr(char *pDateStr, TI_DTV_SYS_DATE_TIME *pSysDateTime)
{
char *pWorkChar = pDateStr;
// Week day
strcpy(pWorkChar, pTiDTV_WeekDayName[pSysDateTime->WeekDay]);
pWorkChar += strlen(pWorkChar);
*pWorkChar++ = ',';
// Month
pWorkChar += TiDTV_MyInt2Str(pSysDateTime->Month, pWorkChar, 2, '0');
*pWorkChar++ = '/';
// Day
pWorkChar += TiDTV_MyInt2Str(pSysDateTime->Day, pWorkChar, 2, '0');
*pWorkChar++ = '/';
// Year
pWorkChar += TiDTV_MyInt2Str(pSysDateTime->Year, pWorkChar, 4, '0');
*pWorkChar = '\0';
}
/*******************************************************************************
* @RoutineName:: TiDTV_GetLocalTimeStr
*
* @Description:: Get current local dtime string
*
* @Input ::
* char *pTimeStr : pointer to the Locate Time String (00:00:00)
* TI_DTV_SYS_DATE_TIME *pSysDateTime : pointer to Local Time
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
void TiDTV_GetLocalTimeStr(char *pTimeStr, TI_DTV_SYS_DATE_TIME *pSysDateTime)
{
char *pWorkChar = pTimeStr;
// Hour
pWorkChar += TiDTV_MyInt2Str(pSysDateTime->Hour, pWorkChar, 2, '0');
*pWorkChar++ = ':';
// Minute
pWorkChar += TiDTV_MyInt2Str(pSysDateTime->Minute, pWorkChar, 2, '0');
*pWorkChar++ = ':';
// Second
pWorkChar += TiDTV_MyInt2Str(pSysDateTime->Second, pWorkChar, 2, '0');
*pWorkChar = '\0';
}
/*******************************************************************************
* @RoutineName:: TiDTV_CheckDigitKeyBuf
*
* @Description:: Check Digits Key Buffer
*
* @Input ::
* int Flag : Flag for Checking Digits Key Buffer: 0 = Unconditional
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
void TiDTV_CheckDigitKeyBuf(int Flag)
{
TI_DTV_PROGRAM_TABLE *pProgTable;
TI_DTV_PROGRAM_DEF *pProgDef;
UINT16 MajorChanNo, MinorChanNo;
char *pWorkChar = TiDTV_KeyBuf.DigitKeyBuf;
int i, ProgTableIndx;
switch (TiDTV_SysCtrl.AvInput) {
case TI_DTV_AV_INPUT_DTV: // Digital TV Channels
if ((Flag == 0 && TiDTV_KeyBuf.NumDigitKey > 0) ||
TiDTV_KeyBuf.NumDigitKey == 6 ||
(TiDTV_KeyBuf.CurKeyCode == TI_DTV_IR_KEY_SELECT &&
TiDTV_KeyBuf.NumDigitKey > 0))
{
MajorChanNo = atoi(pWorkChar);
pWorkChar = strchr(pWorkChar, '-');
if (pWorkChar != NULL)
MinorChanNo = atoi(pWorkChar + 1);
else
MinorChanNo = 0xffff;
TiDTV_KeyBuf.NumDigitKey = 0; // reset number of Digits Key
ProgTableIndx = TiDTV_GetProgIndexViaMajorChanNo(MajorChanNo);
if (ProgTableIndx < 0)
break;
pProgTable = &(TiDTV_ProgTable[ProgTableIndx]);
pProgDef = pProgTable->ProgDef;
for (i = 0; i < pProgTable->TotalNumProg; i++, pProgDef++) {
if (MinorChanNo == pProgDef->MinorChanNo)
break;
}
if (i >= pProgTable->TotalNumProg) {
i = 0;
pProgDef = pProgTable->ProgDef;
}
// save current Program Table Index, and set the new Index
TiDTV_SysCtrl.PreviousProgTableIdx = TiDTV_SysCtrl.CurProgTableIdx;
TiDTV_SysCtrl.CurProgTableIdx = ProgTableIndx;
TiDTV_SysCtrl.PreviousProgramIdx = TiDTV_SysCtrl.CurProgramIdx;
TiDTV_SysCtrl.CurProgramIdx = i;
TiDTV_SysCtrl.CurPhyChanDTV = pProgTable->RfChanNo; // Physical TV Channel number
TiDTV_ChangeDtvRfChan(TiDTV_SysCtrl.CurPhyChanDTV, 0);
}
break;
case TI_DTV_AV_INPUT_A_VIDEO1: // Analog TV Channels
if ((Flag == 0 && TiDTV_KeyBuf.NumDigitKey > 0) ||
TiDTV_KeyBuf.NumDigitKey == 3 ||
(TiDTV_KeyBuf.CurKeyCode == TI_DTV_IR_KEY_SELECT &&
TiDTV_KeyBuf.NumDigitKey > 0))
{
MajorChanNo = atoi(pWorkChar);
if (MajorChanNo >= TI_DTV_MIN_PHY_CHANNEL_NO &&
MajorChanNo <= TI_DTV_MAX_PHY_CHANNEL_NO)
{
// Set to Analog TV Channel
TiDTV_SysCtrl.PreviousPhyChanATV = TiDTV_SysCtrl.CurPhyChanATV;
TiDTV_SysCtrl.CurPhyChanATV = MajorChanNo;
TiDTV_SetTunerPhyChan(TiDTV_SysCtrl.CurPhyChanATV);
}
}
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -