📄 tidtv_userapi.c
字号:
/*******************************************************************************
* @ModuleName :: TiDTV_UserApi.c
*
* @Copyright :: Copyright 2005- Texas Instruments, Inc.
*
* @Description:: User defined APIs
*
* @History ::
*---------------------------------------
* 06-09-2005 W.Shi Created
*******************************************************************************/
#include <stdio.h>
#include <string.h>
#include "ucos_ii.h"
#include "TvpArch.h"
#include "TvpDefs.h"
#include "Tvp9000.h"
#include "TvpError.h"
#include "TvpInt.h"
#include "TvpHdm.h"
#include "TvpInt926.h"
#include "TvpUarts.h"
#include "TvpEbi.h"
#include "TvpTpp.h"
#include "TvpIrrf.h"
#include "TvpGpio.h"
#include "TvpVideo.h"
#include "TvpAudio.h"
#include "TvpEncoder.h"
#include "TiDTV_DataType.h"
#include "TiDTV_SysCtrl.h"
#include "TiDTV_UserApi.h"
#include "TiDTV_Buffers.h"
#include "TiDTV_PSIP.h"
#include "TVP9K_I2C_Def.h"
#include "TVP9K_NV_Def.h"
#include "TVP9K_OSD_Def.h"
#include "TiDTV_GLib.h"
#include "TiDTV_GUI.h"
#include "TiDTV_McuComm.h"
#include "TiDTV_IrKey.h"
#include "TiDTV_AvInput.h"
#include "TiDTV_FlashMem.h"
// #define _DEBUG
#ifdef _DEBUG
static void TiDTV_DispCharSet(void);
#endif /* _DEBUG */
// TI_DTV_USER_STATE_DATA TiDTV_UserStateData;
/*******************************************************************************
* @RoutineName:: TiDTV_UserInit
*
* @Description:: User Initializations
*
* @Input :: none
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
void TiDTV_UserInit(void)
{
//----------------------------------------------------------
// System Date and Time (Local): backup from MCU
// (updated through PSIP STT or XDS or RTC)
//
TiDTV_InitialUserPreferDataTable();
memset(&TiDTV_SysDateTime, 0, sizeof(TiDTV_SysDateTime));
//----------------------------------------------------------
// System Management Structure: backup from Flash
//
memset(&TiDTV_SysCtrl, 0, sizeof(TiDTV_SysCtrl));
TiDTV_SysCtrl.Version = 0x0013; // Version number: ##.##
TiDTV_SysCtrl.DaylightSavings = 1; // Input = Daylight Savings Status: 1 = Yes, 0 = No
TiDTV_SysCtrl.TimeZone = -6; // Input = Time zone: [-12, +13], Dallas = -6
TiDTV_SysCtrl.AudioVolume = 32; // Default Audio Volume value for Test only
TiDTV_SysCtrl.MenuTimeOutValue = 16 * OS_TICKS_PER_SEC; // Time out value for Menu Task
TiDTV_SysCtrl.PromptMsgTimeOutValue = 2 * OS_TICKS_PER_SEC; // Time out value for Prompt Message Task
TiDTV_SysCtrl.ScaleMethod = TVP_VID_FILL_SCREEN; // scaling format: TVP_VID_FILL_SCREEN/TVP_VID_CURTAIN
// TiDTV_SysCtrl.AvInput = TI_DTV_AV_INPUT_A_VIDEO1;
TiDTV_SysCtrl.AvInput = TI_DTV_AV_INPUT_MAX_NUM_PORT;
//----------------------------------------------------------
// Closed Captioning Contrl structure: backup from Flash
//
memset(&TiDTV_CcCtrl, 0, sizeof(TiDTV_CcCtrl));
TiDTV_CcCtrl.CcTimeOutValue = 16 * OS_TICKS_PER_SEC; // Time out value (ticks) for CC Automatic Erasing
TiDTV_CcCtrl.DispCtrl = TI_DTV_CC_ENABLE; // CC Contrl: Disable/Enable/On-Mute
TiDTV_CcCtrl.Cc608SvcNo = 1; // A-TVCC (608CC) Service number: 0, 1-4 (CC1-CC4), 5-8 (T1-T4)
TiDTV_CcCtrl.Cc708SvcNo = 1; // D-TVCC (708CC) Service number: 0, 1-6 (Service1-6)
//----------------------------------------------------------
// Restore some data from Flash/E2PROM
//
memset(&TiDTV_ProgTable, 0, sizeof(TiDTV_ProgTable));
TiDTV_OsdBackColorCtrl(1); // force Backgound Color
//----------------------------------------------------------
// Initialize IR Remote I/F
//
#if 1
TiDTV_InitIR(TI_DTV_IR_NEC_PROTOCOL, 0x10EF);
// TiDTV_InitIR(TI_DTV_IR_NEC_PROTOCOL, 0x0099);
#else
TiDTV_IrCtrl.pIrUserDefine = &TiDTV_RcaIrProtocol;
TiDTV_IrCtrl.IrUserGetData = TiDTV_RcaIrGetData;
TiDTV_InitIR(TI_DTV_IR_USER_DEFINE, 0x0000);
#endif
#ifdef TVP9K_EVM
// Configure Audio DAC: PCM1740E on TVP9KEVM
// PCM1740E: 48KHz 256 OverSamp
TiDTV_I2cWriteByte(0, 0, 0x98, 1, 0x02, 0x98, OS_TICKS_PER_SEC / 2);
TiDTV_I2cWriteByte(0, 0, 0x98, 1, 0x03, 0x41, OS_TICKS_PER_SEC / 2);
#endif /* TVP9K_EVM */
// Initialize the Video Encoder
TiDTV_InitVideoEnc();
// Initialize Video Decoder (through I2C)
TiDTV_InitVideoDec();
// Initialize Audio Processor (through I2C)
// TiDTV_InitMsp34x0G();
//----------------------------------------------------------
#ifdef _DEBUG
TiDTV_DispCharSet(); // Display the character set
#endif /* _DEBUG */
//----------------------------------------------------------
#if 0
// Disable HDMI_PD
tvpGpioWrite(TVP_GPIO_0_CLK36_84, 0);
TDA9975_HDCP(0x64, 0x1b);
// GPIO30 to input for HDMI_VAI
tvpGpioEnable(TVP_GPIO_30_DATAIN_3,
TVP_GPIO_INPUT,
TVP_ENABLE,
TVP_GPIO_HIGH_TO_LOW);
#endif
}
/*******************************************************************************
* @RoutineName:: TiDTV_CommonMon
*
* @Description:: common Monitor Function for Root Task
*
* @Input :: none
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
void TiDTV_CommonMon(void)
{
// To do:
#if 0
TiDTV_OsdInitScreen(&TiDTV_OsdScreenMain, 100, 84,
TI_DTV_DISPLAY_SAFE_WIDTH - 100, TI_DTV_DISPLAY_SAFE_HEIGHT - 84);
TiDTV_OsdMove(&TiDTV_OsdScreenMain, 0, 0);
TiDTV_OsdSetCharColor(&TiDTV_OsdScreenMain, TI_DTV_COLOR_BRIGHT_WHITE, TI_DTV_COLOR_BLACK);
TiDTV_OsdDrawAsciiStr(&TiDTV_OsdScreenMain, "12345678901234567890123456789012");
#endif
#if 0
short i, j, x, y;
UCHAR Color = 0;
TiDTV_OsdInitScreen(&TiDTV_OsdScreenMain, 0, 0,
TI_DTV_DISPLAY_SAFE_WIDTH, TI_DTV_DISPLAY_SAFE_HEIGHT);
y = 50;
for (i = 0; i < 16; i++, y += 32) {
x = 200;
for (j = 0; j < 16; j++, Color++, x += 40)
TiDTV_OsdSolidRect(&TiDTV_OsdScreenMain, x, y, 32, 28, Color);
}
#endif
}
/*******************************************************************************
* @RoutineName:: TiDTV_InitVideoEnc
*
* @Description:: Video Encoder initializations
*
* @Input :: none
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
void TiDTV_InitVideoEnc(void)
{
tvpEncInit(TVP_ENC_USE_DEFAULTS, TVP_ENC_USE_DEFAULTS, TVP_ENC_USE_DEFAULTS, TVP_ENC_USE_DEFAULTS);
// Disable Color Bar
tvpEncHdCustomControl(TVP_BYPASS_GAMMA, TVP_BYPASS_COLOR_DISABLED, TVP_BYPASS_UP_SAMPLE, TVP_HD_COLOR_BAR_DISABLED);
#ifdef TVP9K_EVM
//---------------------------------------------------------
#if defined(TI_DTV_DISPLAY_480i)
// Configure the encoder for WVGA output, 8-bit YPbPr
tvpEncHdConfig(TVP_HD_480I, TVP_HD_YUV, TVP_DVO_POST_COLOR, TVP_DVO_SINGLE_8, TVP_DVO_ACTIVE_HIGH);
// Enable Y/Pb/Pr, disable CVBS & S-VIDEO
tvpEncDacControl(TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE,
TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE);
tvpEncNtscPalConfig(TVP_NTSC_MJ_PEDESTAL, TVP_VIDEO_RANGE);
#elif defined(TI_DTV_DISPLAY_WVGA)
// Configure the encoder for WVGA output, 16-bit YPbPr
tvpEncHdConfig(TVP_HD_WVGA, TVP_HD_YUV, TVP_DVO_POST_COLOR, TVP_DVO_DOUBLE_8, TVP_DVO_ACTIVE_HIGH);
// Enable Y/Pb/Pr, disable CVBS & S-VIDEO
tvpEncDacControl(TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE,
TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE);
#elif defined(TI_DTV_DISPLAY_WXGA)
// Configure the encoder for WXGA output, 16-bit YPbPr
tvpEncHdConfig(TVP_HD_WXGA, TVP_HD_YUV, TVP_DVO_POST_COLOR, TVP_DVO_DOUBLE_8, TVP_DVO_ACTIVE_HIGH);
// Enable Y/Pb/Pr, disable CVBS & S-VIDEO
tvpEncDacControl(TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE,
TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE);
#else
// Configure the encoder for 720p output, 16-bit YPbPr
tvpEncHdConfig(TVP_HD_720P, TVP_HD_YUV, TVP_DVO_POST_COLOR, TVP_DVO_DOUBLE_8, TVP_DVO_ACTIVE_HIGH);
// Enable Y/Pb/Pr, disable CVBS & S-VIDEO
tvpEncDacControl(TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE, TVP_ENC_DAC_ENABLE,
TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE);
#endif /* TI_DTV_DISPLAY_WXGA */
// tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_0, 0x122053);
#else
//---------------------------------------------------------
#if defined(TI_DTV_DISPLAY_WVGA)
// Configure the encoder for WVGA output, 24-bit RGB
tvpEncHdConfig(TVP_HD_WVGA, TVP_HD_RGB, TVP_DVO_POST_COLOR, TVP_DVO_TRIPLE_8, TVP_DVO_ACTIVE_HIGH);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_10_USER, 0x20D43E);
*(volatile ULONG *) 0x50028 = 0x20D43E;
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_10_USER_DELTA, 1);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_12, 0x10358010);
// tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_15, 0xA00A0);
// tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG2_16, 0x1B0104);
// tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG2_17, 0x1B0140);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG2_19, 0x3580010);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_0, 0x122053);
#elif defined(TI_DTV_DISPLAY_WXGA)
// Configure the encoder for WXGA output, 24-bit RGB
tvpEncHdConfig(TVP_HD_WXGA, TVP_HD_RGB, TVP_DVO_RAW_DATA, TVP_DVO_TRIPLE_8, TVP_DVO_ACTIVE_HIGH);
//-----------------------------------
#if 1 // 31.55MHz
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_10_USER, 0x31B71A);
*(volatile ULONG *) 0x50028 = 0x31B71A;
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_10_USER_DELTA, 1);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_12, 0x20558050);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_15, 0xAB0AF);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG2_16, 0x1B0104);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG2_17, 0x1B0140);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG2_19, 0x5580010);
#else // 27MHz
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_10_USER, 0x3265FE); // for 27MHz: was 0x3265FE
*(volatile ULONG *) 0x50028 = 0x3265FE; // for 27MHz: was 0x3265FE
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_10_USER_DELTA, 1); // for 27MHz
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_12, 0x20558050);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG_15, 0xAB0AF);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG2_16, 0x1B0104);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG2_17, 0x1B0140);
tvpEncHdRegWrite(TVP_ENC_HD_CTRL_REG2_19, 0x5580010);
#endif
//-----------------------------------
#else
// Configure the encoder for 720p output, 24-bit RGB
tvpEncHdConfig(TVP_HD_720P, TVP_HD_RGB, TVP_DVO_RAW_DATA, TVP_DVO_TRIPLE_8, TVP_DVO_ACTIVE_HIGH);
#endif /* TI_DTV_DISPLAY_WXGA */
// Disable all DACs (Y/Pb/Pr, CVBS & S-VIDEO)
tvpEncDacControl(TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE,
TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE, TVP_ENC_DAC_DISABLE);
#endif /* TVP9K_EVM */
}
/*******************************************************************************
* @RoutineName:: TiDTV_DispCharSet
*
* @Description:: Display the character set
*
* @Input :: none
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
#ifdef _DEBUG
#define TOTAL_NUM_CHARS 214
static void TiDTV_DispCharSet(void)
{
USHORT CharCode, Font;
short i, j, k, y;
TiDTV_OsdInitScreen(&TiDTV_OsdScreenMain, 0, 0, TI_DTV_DISPLAY_SAFE_WIDTH, TI_DTV_DISPLAY_SAFE_HEIGHT);
TiDTV_OsdSetCharColor(&TiDTV_OsdScreenMain, TI_DTV_COLOR_BRIGHT_WHITE, 0);
for (k = 0; k < 3; k++) {
TiDTV_OsdScreenMain.pCurDrawWindow->CurCharAttrib.Bits.FontSize = k;
for (Font = 0; Font < 8; Font++) {
CharCode = TI_DTV_CHAR_SET_EIA708B + (Font << 9);
i = 0;
y = 20;
while (i < TOTAL_NUM_CHARS) {
TiDTV_OsdMove(&TiDTV_OsdScreenMain, 16, y);
for (j = 0; j < 16 && i < TOTAL_NUM_CHARS; j++, CharCode++, i++) {
TiDTV_OsdDrawChar(&TiDTV_OsdScreenMain, CharCode);
TiDTV_OsdScreenMain.pCurDrawWindow->CurX += 8;
}
y += 30; // next Row
}
// OSTimeDly(1 * OS_TICKS_PER_SEC);
TiDTV_OsdClearWindow(&TiDTV_OsdScreenMain, &TiDTV_OsdScreenMain.pOsdWindows[0], 0);
}
}
}
#endif /* _DEBUG */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -