📄 sample.c
字号:
/*******************************************************************************
*
* FILENAME : sample.c
* DESCRIPTION : Sample codes for qatv module
* CREATION DATE : September 2007
* REVISION : 0.8
*
********************************************************************************
* (C) Copyright 2007, QuestLabs, Inc. All rights reserved.
********************************************************************************
*
*
*
*
*
* 20 Feb 2007 Rudy Lee Initial version
*
*******************************************************************************/
/*
================================================================================
INCLUDE FILES
================================================================================
*/
#include "qatv.h"
/*
================================================================================
DEFINES
================================================================================
*/
/*
#define USE_I2S_AUDIO
*/
#define NUM_OF_QATV_COUNTRY_CODE 8
/*
================================================================================
GLOBAL VARIABLES
================================================================================
*/
extern QATV_CHANNEL_MAP(qatv_ntsc_chn_map);
extern QATV_CHANNEL_MAP(qatv_pald_chn_map);
extern QATV_CHANNEL_MAP(qatv_vietnam_chn_map);
extern QATV_CHANNEL_MAP(qatv_w_europe_chn_map);
extern QATV_CHANNEL_MAP(qatv_ntsc_japan_chn_map);
extern QATV_CHANNEL_MAP(qatv_a_uk_chn_map);
extern QATV_CHANNEL_MAP(qatv_brazil_chn_map);
extern QATV_CHANNEL_MAP(qatv_argentina_chn_map);
extern QATV_CHANNEL_MAP(qatv_fm_chn_map);
/*
================================================================================
LOCAL VARIABLES
================================================================================
*/
QATV_CHANNEL_MAP(qatv_scan_chn_map) = {
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}
};
static QATV_CHANNEL_MAP_P(qatv_country_data_table[NUM_OF_QATV_COUNTRY_CODE]) =
{
qatv_ntsc_chn_map,
qatv_pald_chn_map,
qatv_vietnam_chn_map,
qatv_w_europe_chn_map,
qatv_ntsc_japan_chn_map,
qatv_a_uk_chn_map,
qatv_brazil_chn_map,
qatv_argentina_chn_map,
};
static int foundChannelList[30] = {0,};
static int foundChannelIndex = 0;
static int scanFinished = 0;
/*
================================================================================
FUNCTIONS
================================================================================
*/
static void system_polling_handler(void)
{
QATV_SystemPolling();
StartTimerFunction(1000, system_polling_handler);
}
static void channel_scan_handler(void)
{
int curChannel = 0;
int result = QATV_ERR_FAIL;
result = QATV_ScanChannels2(&curChannel);
if (result == QATV_ERR_SUCCESS)
{
StartTimerFunction(500, channel_scan_handler);
}
else
{
StartTimerFunction(1000, system_polling_handler);
// channel scan is finished
scanFinished = 1;
}
}
static void FoundChannelCallBack(int channel)
{
DEBUG("\nChannel Found : %d %d\n",channel, foundChannelIndex);
foundChannelList[foundChannelIndex] = channel;
foundChannelIndex++;
}
static void FoundChannelCallBack2(int channel, int found)
{
DEBUG("\nCurrent Channel : %d %d %d\n",channel, foundChannelIndex, found);
if (found)
{
foundChannelList[foundChannelIndex] = channel;
foundChannelIndex++;
}
}
void qatv_init(void)
{
QATV_SetI2CBaseAddr(QATVI2C_DEFAULT_BASE_ADDR);
/* only for testing */
if (QATV_TestI2C() != QATV_ERR_SUCCESS)
{
DEBUG ("I2C ERROR !!!");
while(1);
}
QATV_Init();
}
void qatv_set_mode(QATV_CHANNEL_MAP_P(map), Boolean scan)
{
QATV_SetChannelMap(map);
if (map[0][3] != QATV_ASTD_FM_RADIO)
{
QATV_SetVideoResolution(QATV_VID_320_240);
QATV_Set601VideoOutClock(QATV_VID_CLOCK_INVERT);
QATV_SetChromaLumaOrder(QATV_VID_CHRLUM_NORMAL);
QATV_SetCbCrOrder(QATV_VID_CBCR_INVERT);
QATV_SetVSyncPolarity(QATV_VID_ACTIVE_LOW);
QATV_SetHSyncPolarity(QATV_VID_ACTIVE_HIGH);
QATV_SetBright(7);
QATV_SetColor(2);
QATV_SetTint(0);
}
#if defined (USE_I2S_AUDIO)
QATV_SetAudioSampleRateForI2S(QATV_AUD_RATE_44_118KHZ);
QATV_SetAudioMode(QATV_AUD_MASTER);
QATV_SetAudioGain(QATV_AUD_MASTER, 5);
#else
QATV_SetAudioMode(QATV_AUD_DAC);
QATV_SetAudioChannelForDAC(QATV_LEFT_RIGHT);
QATV_SetAudioGain(QATV_AUD_DAC, 5);
#endif
if (scan)
{
foundChannelIndex = 0;
QATV_ScanChannels(qatv_scan_chn_map, 30, FoundChannelCallBack);
}
}
void qatv_set_mode2(QATV_CHANNEL_MAP_P(map), Boolean scan)
{
QATV_SetChannelMap(map);
if (map[0][3] != QATV_ASTD_FM_RADIO)
{
QATV_SetVideoResolution(QATV_VID_320_240);
QATV_Set601VideoOutClock(QATV_VID_CLOCK_INVERT);
QATV_SetChromaLumaOrder(QATV_VID_CHRLUM_NORMAL);
QATV_SetCbCrOrder(QATV_VID_CBCR_INVERT);
QATV_SetVSyncPolarity(QATV_VID_ACTIVE_LOW);
QATV_SetHSyncPolarity(QATV_VID_ACTIVE_HIGH);
QATV_SetBright(7);
QATV_SetColor(2);
QATV_SetTint(0);
}
#if defined (USE_I2S_AUDIO)
QATV_SetAudioSampleRateForI2C(QATV_AUD_RATE_44_118KHZ);
QATV_SetAudioMode(QATV_AUD_MASTER);
QATV_SetAudioGain(QATV_AUD_MASTER, 5);
#else
QATV_SetAudioMode(QATV_AUD_DAC);
QATV_SetAudioChannelForDAC(QATV_LEFT_RIGHT);
QATV_SetAudioGain(QATV_AUD_DAC, 5);
#endif
if (scan)
{
int result = QATV_ScanChannels2Start(PNULL, 0, 30, 0, FoundChannelCallBack2);
foundChannelIndex = 0;
if (result == QATV_ERR_SUCCESS)
{
// stop system_polling_handler while scanning
StopTimerFunction(system_polling_handler);
// calling channel_scan_handler function per 500ms (500ms can be changed)
StartTimerFunction(500, channel_scan_handler);
}
}
}
void qatv_set_channel(int channel, Boolean useScanedChannel)
{
if (useScanedChannel)
{
QATV_SetChannel(foundChannelList[channel]);
}
else
{
QATV_SetChannel(channel);
}
QATV_SetAudioEnable(QATV_ENABLE);
// calling system_polling_handler function per 1000ms
StartTimerFunction(1000, system_polling_handler);
}
void qatv_change_channel_map (unsigned short countryCode)
{
QATV_CHANNEL_MAP_P(channelMap_p) = PNULL;
int result = -1;
if(countryCode < NUM_OF_QATV_COUNTRY_CODE)
{
channelMap_p = qatv_country_data_table[countryCode];
}
else
{
DevFail("invalid country code");
channelMap_p = qatv_country_data_table[0];
}
QATV_SetChannelMap(channelMap_p);
if (channelMap_p[0][3] != QATV_ASTD_FM_RADIO)
{
QATV_SetVideoResolution(QATV_VID_320_240);
}
QATV_SetChannel(channelMap_p[0][0]);
}
void qatv_main(void)
{
/* initialising QATVM1100 */
qatv_init();
/* TV function */
/* setting channel which is scanned firstly (0:index, 1:using scanned channel) */
qatv_turn_on_tv(0, 1);
/* in case of direct channel */
/*
qatv_turn_on_tv(25, 0);
*/
/* FM Radio function */
/* setting channel which is scanned firstly (0:index, 1:using scanned channel) */
qatv_turn_on_radio(0, 1);
/* in case of direct channel */
/*
qatv_turn_on_radio(8750, 0);
*/
}
/* case 1 : Analog TV */
void qatv_turn_on_tv((int index, int scanned)
{
if (scanned)
{
#if defined (NEW_SCAN_CHANNEL)
scanFinished = 0;
/* setting channel map and scanning channel using new scan function */
qatv_set_mode2(qatv_ntsc_chn_map, 1);
while (scanFinished == 0);
qatv_set_channel(index, 1);
#else
/* setting channel map and scanning channel */
qatv_set_mode(qatv_ntsc_chn_map, 1);
qatv_set_channel(index, 1);
#endif
}
else
{
qatv_set_mode(qatv_ntsc_chn_map, 0);
qatv_set_channel(index, 0);
}
}
/* case 2 : FM Radio */
void qatv_turn_on_radio(int index, int scanned)
{
if (scanned)
{
#if defined (NEW_SCAN_CHANNEL)
scanFinished = 0;
/* setting channel map and scanning channel using new scan function */
qatv_set_mode2(qatv_fm_chn_map, 1);
while (scanFinished == 0);
qatv_set_channel(index, 1);
#else
/* setting channel map and scanning channel */
qatv_set_mode(qatv_fm_chn_map, 1);
qatv_set_channel(index, 1);
#endif
}
else
{
qatv_set_mode(qatv_fm_chn_map, 0);
qatv_set_channel(index, 0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -