📄 tv_mmi.c
字号:
#include "Tv_Include.h"
unsigned char Tlg_i2c_write_data(unsigned char dadd, unsigned short radd, unsigned short *data);
unsigned char Tlg_i2c_read_data(unsigned char dadd, unsigned short radd, unsigned short *data);
TLG_TV_SCANLINES gTvScanLines;
TLG_TV_OPTIONS gTvOptions;
TLG_TV_STORAGE gTvStorage;
TLG_FM_OPTIONS gFmOptions;
TLG_FM_STORAGE gFmStorage;
void TLG_WriteLog(char *str)
{
}
DECLSPEC TLGI2C_WriteBurst(unsigned i2c_addr, unsigned start_addr, int length, unsigned short * data)
{
return 0;
}
DECLSPEC TLGI2C_ReadBurst(unsigned i2c_addr, unsigned start_addr, int length, unsigned short * data)
{
return 0;
}
DECLSPEC TLGI2C_WriteReg(unsigned i2c_addr, unsigned reg_addr, unsigned short data)
{
return Tlg_i2c_write_data((unsigned char)i2c_addr, (unsigned short)reg_addr, &data);
}
DECLSPEC TLGI2C_ReadReg(unsigned i2c_addr, unsigned reg_addr, unsigned short * data)
{
return Tlg_i2c_read_data((unsigned char)i2c_addr, (unsigned short)reg_addr, data);
}
void TLG_Delay(uint16 milliseconds)
{
volatile uint32 delay;
for (delay = milliseconds * 20000; delay > 0; delay--);
}
/*****************************************************************************
* TLGAPP_SetLnaGpio
* BEGIN CUSTOM SECTION: This procedure is called to perform LNA switching.
* It may be customized for a given build.
*****************************************************************************/
#ifdef TLG1100
#if TLG_VERSION_MAJOR == 1 && TLG_VERSION_MINOR == 9 && TLG_VERSION_PATCH == 3
TLG1100DLL_API void TLGAPP_SetLnaGpio(uint32 hz)
#elif TLG_VERSION_MAJOR == 1 && TLG_VERSION_MINOR == 10 && TLG_VERSION_PATCH == 0
TLGDLL_API void TLGAPP_SetLnaGpio(uint32 hz)
#endif
#else
#ifdef TLG3100
TLG3100DLL_API void TLGAPP_SetLnaGpio(uint32 hz)
#else
#ifdef TLG1120
#endif /* TLG1120 */
#endif /* TLG3100 */
#endif /* TLG1100 */
#ifndef TLG1120
{
if (hz > TLG_UHF_CUTOFF_HZ)
{
if (tlg_cur_lna != TLG_LNA_UHF)
{
tlg_cur_lna = TLG_LNA_UHF;
/** BEGIN CUSTOM SECTION: DO GPIO FOR UHF SWITCH HERE **/
TLG_SetGPIOEnable(tlg_i2c_addr, TLG_GPIO1|TLG_GPIO2, TLG_GPIO1_SET|TLG_GPIO2_SET);
TLG_SetGPIOOutput(tlg_i2c_addr, TLG_GPIO1|TLG_GPIO2, TLG_GPIO1_SET|TLG_GPIO2_SET);
}
} else if (hz > TLG_VHF2_CUTOFF_HZ) {
if (tlg_cur_lna != TLG_LNA_VHF2)
{
tlg_cur_lna = TLG_LNA_VHF2;
/** BEGIN CUSTOM SECTION: DO GPIO FOR VHF2 SWITCH HERE **/
TLG_SetGPIOEnable(tlg_i2c_addr, TLG_GPIO1|TLG_GPIO2, TLG_GPIO1_SET|TLG_GPIO2_SET);
TLG_SetGPIOOutput(tlg_i2c_addr, TLG_GPIO1|TLG_GPIO2, TLG_GPIO1_SET|TLG_GPIO2_CLR);
}
} else {
if (tlg_cur_lna != TLG_LNA_VHF1)
{
tlg_cur_lna = TLG_LNA_VHF1;
/** BEGIN CUSTOM SECTION: DO GPIO FOR VHF1 SWITCH HERE **/
TLG_SetGPIOEnable(tlg_i2c_addr, TLG_GPIO1|TLG_GPIO2, TLG_GPIO1_SET|TLG_GPIO2_SET);
TLG_SetGPIOOutput(tlg_i2c_addr, TLG_GPIO1|TLG_GPIO2, TLG_GPIO1_CLR|TLG_GPIO2_CLR);
}
}
}
#endif /* TLG1120 */
void TLGAPP_InitVideoAndAudio(void)
{
TLG_SetChnStandard(tlg_i2c_addr, TLG_VSTD_NTSC_M);
TLG_SetChnBandwidth(tlg_i2c_addr, TLG_BW_6);
tlg_cur_gain = 4;
tlg_cur_aud_mode = TLG_DAC;
if (tlg_cur_aud_mode != TLG_DAC)
TLG_SetAudioSampleRate(tlg_i2c_addr, TLG_AUD_RATE_26_367KHZ);
TLG_SetAudioMode(tlg_i2c_addr, tlg_cur_aud_mode);
TLG_SetAudioGain(tlg_i2c_addr, tlg_cur_aud_mode, tlg_cur_gain);
TLG_SetAudioChan(tlg_i2c_addr, TLG_LEFT_RIGHT);
TLG_SetAudioEnable(tlg_i2c_addr, TLG_ENABLE);
TLG_Set601VideoOutClock(tlg_i2c_addr, TLG_NORMAL);
TLG_SetHDecimate(tlg_i2c_addr, TLG_ON);
TLG_SetVidOutType(tlg_i2c_addr, TLG_VID_LCD);
TLG_SetVSyncPolarity(tlg_i2c_addr, TLG_ACTIVE_LOW);
TLG_SetHSyncPolarity(tlg_i2c_addr, TLG_ACTIVE_HIGH);
TLG_SetHsyncLowPower(tlg_i2c_addr, TLG_ON);
TLG_SetAntennaType(tlg_i2c_addr, TLG_ANTENNA_DEF);
}
const TLG_REGION_SETTING RegionSetting[] = {
{/* TLG_REGION_USA */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_CANADA */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_KOREA */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_TAIWAN */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_MEXICO */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_CHILE */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_VENEZUELA */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_PHILIPPINES */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_JAMAICA */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_CHINA */ tlg_china_pald_chn_map, TLG_BW_8, TLG_VSTD_PAL_D, TLG_TV_625_LINES},
{/* TLG_REGION_SHENZHEN */ tlg_shenzhen_map, TLG_BW_8, TLG_VSTD_PAL_I, TLG_TV_625_LINES},
{/* TLG_REGION_VIETNAM */ tlg_vietnam_pal_d_k_chn_map, TLG_BW_8, TLG_VSTD_PAL_D, TLG_TV_625_LINES},
{/* TLG_REGION_W_EUROPE */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_TURKEY */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_UAE */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_AFGHANISTAN */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_SINGAPORE */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_THAILAND */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_CAMBODIA */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_INDONESIA */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_MALAYSIA */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_LAOS */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_PORTUGAL */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_SWEDEN */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_PAKISTAN */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_SPAIN */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_JAPAN */ tlg_ntsc_japan_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_UK */ tlg_pal_i_chn_map, TLG_BW_8, TLG_VSTD_PAL_I, TLG_TV_625_LINES},
{/* TLG_REGION_HONGKONG */ tlg_pal_i_chn_map, TLG_BW_8, TLG_VSTD_PAL_I, TLG_TV_625_LINES},
{/* TLG_REGION_SOUTHAFRICA */ tlg_pal_i_chn_map, TLG_BW_8, TLG_VSTD_PAL_I, TLG_TV_625_LINES},
{/* TLG_REGION_BRAZIL */ tlg_brazil_pal_m_chn_map, TLG_BW_6, TLG_VSTD_PAL_M, TLG_TV_525_LINES},
{/* TLG_REGION_ARGENTINA */ tlg_argentina_pal_nc_chn_map, TLG_BW_6, TLG_VSTD_PAL_NC, TLG_TV_625_LINES},
{/* TLG_REGION_INDIA */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_BURMA */ tlg_burma_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_SUDAN */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_YEMEN */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_PERU */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_BOLIVIA */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_ECUADOR */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_SURINAME */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_AUSTRALIA */ tlg_australia_pal_b_chn_map, TLG_BW_7, TLG_VSTD_PAL_B, TLG_TV_625_LINES},
{/* TLG_REGION_NEWZEALAND */ tlg_new_zealand_pal_b_chn_map,TLG_BW_7, TLG_VSTD_PAL_B, TLG_TV_625_LINES},
{/* TLG_REGION_COLUMBIA */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_COSTARICA */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_HONDURAS */ tlg_ntsc_chn_map, TLG_BW_6, TLG_VSTD_NTSC_M, TLG_TV_525_LINES},
{/* TLG_REGION_GERMAN */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_ITALY */ tlg_italy_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
{/* TLG_REGION_KENYA */ tlg_pal_b_g_chn_map, TLG_BW_8, TLG_VSTD_PAL_G, TLG_TV_625_LINES},
};
void TLGAPP_InitHsyncAndVsync(void)
{
uint16 v_hi_start1, v_hi_stop1, v_hi_start2, v_hi_stop2, v_hi_start3, v_hi_stop3;
uint16 h_hi_start, h_hi_stop, h_kill_start1, h_kill_stop1, h_kill_start2, h_kill_stop2;
switch(gTvScanLines)
{
case TLG_TV_525_LINES:
TLG_SetChromaLumaOrder(tlg_i2c_addr, TLG_CHRLUM_NORMAL);
TLG_SetCbCrOrder(tlg_i2c_addr, TLG_CBCR_NORMAL);
h_hi_start = 139+((H_OFFSET_525+gTvOptions.mHOffset)*2+(H_REDUCE_525+gTvOptions.mHReduce))*PIXEL_STEP;
h_hi_stop = 858+((H_OFFSET_525+gTvOptions.mHOffset-H_OFFSET_RANGE)*2-(H_REDUCE_525+gTvOptions.mHReduce))*PIXEL_STEP;
h_kill_start1 = 1;
h_kill_stop1 = 19+(V_OFFSET_525+gTvOptions.mVOffset+(V_REDUCE_525+gTvOptions.mVReduce+1)/2)*PIXEL_STEP;
h_kill_start2 = 264+(V_OFFSET_525+gTvOptions.mVOffset-(V_REDUCE_525+gTvOptions.mVReduce+0)/2-V_OFFSET_RANGE)*PIXEL_STEP;
h_kill_stop2 = 525;
v_hi_start1 = 1;
v_hi_stop1 = h_kill_stop1;
v_hi_start2 = 0;
v_hi_stop2 = 0;
v_hi_start3 = 0;
v_hi_stop3 = 0;
break;
case TLG_TV_625_LINES:
TLG_SetChromaLumaOrder(tlg_i2c_addr, TLG_CHRLUM_NORMAL);
TLG_SetCbCrOrder(tlg_i2c_addr, TLG_CBCR_NORMAL);
h_hi_start = 145+((H_OFFSET_625+gTvOptions.mHOffset)*2+(H_REDUCE_625+gTvOptions.mHReduce))*PIXEL_STEP;
h_hi_stop = 864+((H_OFFSET_625+gTvOptions.mHOffset-H_OFFSET_RANGE)*2-(H_REDUCE_625+gTvOptions.mHReduce))*PIXEL_STEP;
h_kill_start1 = 1;
h_kill_stop1 = 22+(V_OFFSET_625+gTvOptions.mVOffset+(V_REDUCE_625+gTvOptions.mVReduce+1)/2)*PIXEL_STEP;
h_kill_start2 = 311+(V_OFFSET_625+gTvOptions.mVOffset-(V_REDUCE_625+gTvOptions.mVReduce+0)/2-V_OFFSET_RANGE)*PIXEL_STEP;
h_kill_stop2 = 625;
v_hi_start1 = 1;
v_hi_stop1 = h_kill_stop1;
v_hi_start2 = 0;
v_hi_stop2 = 0;
v_hi_start3 = 0;
v_hi_stop3 = 0;
break;
default:
#ifdef WIN32
printf("ATV ERROR: Unsupported scan lines!\n\n");
#else
#ifdef ADS_MTK
kal_prompt_trace(MOD_MMI, "ATV ERROR: Unsupported scan lines!\n");
#else /* default */
;
#endif /* ADS_MTK */
#endif /* WIN32 */
}
TLG_SetExtHSync(tlg_i2c_addr, h_hi_start, h_hi_stop, h_kill_start1, h_kill_stop1, h_kill_start2, h_kill_stop2);
TLG_SetExtVSync(tlg_i2c_addr, v_hi_start1, v_hi_stop1, v_hi_start2, v_hi_stop2, v_hi_start3, v_hi_stop3);
#ifdef WIN32
printf("TLG_SetExtHSync(tlg_i2c_addr, %d, %d, %d, %d, %d, %d);\n", h_hi_start, h_hi_stop, h_kill_start1, h_kill_stop1, h_kill_start2, h_kill_stop2);
printf("TLG_SetExtVSync(tlg_i2c_addr, %d, %d, %d, %d, %d, %d);\n", v_hi_start1, v_hi_stop1, v_hi_start2, v_hi_stop2, v_hi_start3, v_hi_stop3);
printf(" TV window: w=%d, h=%d\n", (h_hi_stop - h_hi_start + 1) / 2, h_kill_start2 - h_kill_stop1 - 1);
#endif /* WIN32 */
}
void TLGAPP_InitTvChannelMap(void)
{
if (gTvStorage.mRegion < TLG_REGION_TOTAL)
{
TLGAPP_SetChannelMap(
(uint32 (*)[4])RegionSetting[gTvStorage.mRegion].chnmap,
#ifdef TLG1100
TLG_MODE_ANALOG_TV
#else
#ifdef TLG3100
TLG_MODE_ANALOG_TV
#else
#ifdef TLG1120
TLG_MODE_ANALOG_TV_UNCOMP
#endif /* TLG1120 */
#endif /* TLG3100 */
#endif /* TLG1100 */
, RegionSetting[gTvStorage.mRegion].bw,
RegionSetting[gTvStorage.mRegion].vidstd);
gTvScanLines = RegionSetting[gTvStorage.mRegion].scanlines;
}
else
{
#ifdef WIN32
printf("ATV ERROR: Undefined region code!\n");
#else
#ifdef ADS_MTK
kal_prompt_trace(MOD_MMI, "ATV ERROR: Undefined region code!\n");
#else /* default */
;
#endif /* ADS_MTK */
#endif /* WIN32 */
}
#ifdef WIN32
printf("Total channel number = %d\n", tlg_cur_chn_cnt);
#endif /* WIN32 */
TLGAPP_InitHsyncAndVsync();
}
#if CHANNEL_SWITCH_EFFECT == 0
int TLGAPP_SetChannelExt(int iChn)
{
return TLGAPP_SetChannel(iChn);
}
#elif CHANNEL_SWITCH_EFFECT == 1
uint16 Fading = 0, FadeStep, Silence;
uint16 AudioMode, AudioGain, VideoY, VideoU, VideoV;
#if USE_SYNC_CONTROL
static uint16 v_hi_start1, v_hi_stop1, v_hi_start2, v_hi_stop2, v_hi_start3, v_hi_stop3,
h_hi_start, h_hi_stop, h_kill_start1, h_kill_stop1, h_kill_start2, h_kill_stop2;
#endif /* USE_SYNC_CONTROL */
static void FadeCallback(void)
{
uint16 VideoY1, VideoU1, VideoV1, AudioGain1;
if (FadeStep == 0)
{
TLG_SetYUVScale(tlg_i2c_addr, 0, 0, 0);
#if USE_PA_CONTROL
#ifdef ADS_MTK
AFE_TurnOffSpeaker(L1SP_FM_RADIO);
#endif
#endif /* USE_PA_CONTROL */
TLG_SetAudioGain(tlg_i2c_addr, AudioMode, 0);
#if USE_MUTE_CONTROL
TLG_SetAudioEnable(tlg_i2c_addr, TLG_MUTE);
#endif /* USE_MUTE_CONTROL */
#if USE_SYNC_CONTROL
TLG_SetExtHSync(tlg_i2c_addr, 0, 0, 0, 0, 0, 0);
TLG_SetExtVSync(tlg_i2c_addr, 0, 0, 0, 0, 0, 0);
#endif /* USE_SYNC_CONTROL */
Silence = 1;
}
else
{
if (FadeStep > SILENCE_STEP)
{
if (Silence == 1)
{
#if USE_SYNC_CONTROL
TLG_SetExtHSync(tlg_i2c_addr, h_hi_start, h_hi_stop, h_kill_start1, h_kill_stop1, h_kill_start2, h_kill_stop2);
TLG_SetExtVSync(tlg_i2c_addr, v_hi_start1, v_hi_stop1, v_hi_start2, v_hi_stop2, v_hi_start3, v_hi_stop3);
#endif /* USE_SYNC_CONTROL */
#if USE_MUTE_CONTROL
TLG_SetAudioEnable(tlg_i2c_addr, TLG_ENABLE);
#endif /* USE_MUTE_CONTROL */
#if USE_PA_CONTROL
#ifdef ADS_MTK
AFE_TurnOnSpeaker(L1SP_FM_RADIO);
#endif
#endif /* USE_PA_CONTROL */
Silence = 0;
}
VideoY1 = VideoY * (FadeStep - SILENCE_STEP) / (FADE_IN_STEP - SILENCE_STEP);
VideoU1 = VideoU * (FadeStep - SILENCE_STEP) / (FADE_IN_STEP - SILENCE_STEP);
VideoV1 = VideoV * (FadeStep - SILENCE_STEP) / (FADE_IN_STEP - SILENCE_STEP);
TLG_SetYUVScale(tlg_i2c_addr, VideoY1, VideoU1, VideoV1);
AudioGain1 = AudioGain * (FadeStep - SILENCE_STEP) / (FADE_IN_STEP - SILENCE_STEP);
TLG_SetAudioGain(tlg_i2c_addr, AudioMode, AudioGain1);
}
}
if (FadeStep++ < FADE_IN_STEP)
{
StartTimer(ATV_TIMER_CHANNEL_CHANGE, STEP_DURATION, FadeCallback);
Fading = 1;
}
else
{
StopTimer(ATV_TIMER_CHANNEL_CHANGE);
Fading = 0;
}
}
int TLGAPP_SetChannelExt(int iChn)
{
if (Fading == 0)
{
#if USE_SYNC_CONTROL
TLG_GetExtHSync(tlg_i2c_addr, &h_hi_start, &h_hi_stop, &h_kill_start1, &h_kill_stop1, &h_kill_start2, &h_kill_stop2);
TLG_GetExtVSync(tlg_i2c_addr, &v_hi_start1, &v_hi_stop1, &v_hi_start2, &v_hi_stop2, &v_hi_start3, &v_hi_stop3);
#endif /* USE_SYNC_CONTROL */
TLG_GetYUVScale(tlg_i2c_addr, &VideoY, &VideoU, &VideoV);
TLG_GetAudioMode(tlg_i2c_addr, &AudioMode);
TLG_GetAudioGain(tlg_i2c_addr, AudioMode, &AudioGain);
}
else
StopTimer(ATV_TIMER_CHANNEL_CHANGE);
FadeStep = 0;
FadeCallback();
return TLGAPP_SetChannel(iChn);
}
#elif CHANNEL_SWITCH_EFFECT == 2
int is_switching = 0;
int TLGAPP_SetChannelExt(int iChn)
{
int ret;
is_switching = 1;
// Mute
ret = TLGAPP_SetChannel(iChn);
TLG_Delay(100);
// De-mute
is_switching = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -