亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? channel.c

?? 以ST公司CPU為核心的彩色電視機的完整源程序。
?? C
字號:
/********************** SGS-THOMSON MICROELECTRONICS ************************
FILENAME     : CHANNEL.C
VERSION      : V1.0
DATE         : JAN 1999
AUTHOR(s)    : ASHISH RUDOLA/ DEEPAK DOSHI
PROCESSOR    : ST92195
DESCRIPTION  : This module contains functions for handling the selection of
               channels. This includes functions to manage the channel
               memory into the EEPROM.
MODIFICATIONS:
	-
*****************************************************************************/
#include "autosrch.h"
#include "macro.h"
#include "eeprom.h"
#include "channel.h"
#include "command.h"
#include "i2c_bus.h"
#include "st92196.h"
#include "label.h"
#include "menuctrl.h"
#include "osdchar.h"
#include "register.h"
#include "source.h"
#include "timer.h"
#include "tuning.h"
#include "utility.h"
#include "alarm.h"
#include "tv_glob.h"


unsigned char channel;
unsigned char previous_channel;
unsigned char channel_tens;
/*****************************************************************************
INPUTS     : none
OUTPUTS    : channel - Set to the first available TV channel.
             previous_channel - Same as current TV channel
DESCRIPTION: This function initializes the current channel and previous
             channel to cold start values.
*****************************************************************************/
void init_channel(void)
{
	/* Save channel as previous channel */
	previous_channel = channel;
	/* need for status channel display */
//	 channel_tens = channel; 
}


/*****************************************************************************
INPUTS     :          
OUTPUTS    : 
DESCRIPTION:                              
*****************************************************************************/
void channel_up(void)
{
	get_valid_channel(SCAN_UP);
	select_channel();
}

/*****************************************************************************
INPUTS     : none
OUTPUTS    : see get_valid_channel
             see select_channel
DESCRIPTION: This function selects the previous available TV channel in the
             channel memory.
*****************************************************************************/
void channel_down(void)
{
	get_valid_channel(SCAN_DOWN);
	select_channel();
}

/*****************************************************************************
INPUTS     : channel - Current TV channel
             scanning mode (UP/DOWN)
OUTPUTS    : previous_channel - Current TV channel
             channel - Next/previous available TV channel
             see read_channel_info
             see get_possible_channel
             see update_settings
DESCRIPTION: This function updates the current channel with the next/previous
             channel stored in the channel list. If no channel has been found,
             return the same channel.
*****************************************************************************/
void get_valid_channel(unsigned char scanning_mode)
{
	unsigned char i, j;								/* Temporary storage */
	/* Save the current channel as the previous channel */
	previous_channel = channel;
	j = 0;
	do {
		j++;
		/* Get the next/previous possible channel */
		channel = get_possible_channel(scanning_mode, channel);
		/* Check if this channel is stored in the channel list (EEPROM) */
		i = read_channel_info(SETTINGS);
		if (!(i & SKIP_MASK))
			/* If so, exit loop */
			return;
	} while (previous_channel != channel && j != CHANNEL_NUMBER+1);
}

/*****************************************************************************
INPUTS     : scanning mode (UP/DOWN)
             Channel to start with
OUTPUTS    : Next/previous channel
DESCRIPTION: This function returns the next/previous available channel without
             taking care of the channel list.
*****************************************************************************/
unsigned char get_possible_channel(unsigned char scanning_mode,
                                   unsigned char current_channel)
{
	/* Get next valid channel (1 to CHANNEL_NUMBER) */
	if (scanning_mode == SCAN_UP)
	{
		current_channel++;
		if (current_channel > CHANNEL_NUMBER)
			current_channel = 1;
	}
	else
	{
		current_channel--;
		if (current_channel == VIDEO_CHANNEL || current_channel > CHANNEL_NUMBER)
			current_channel = CHANNEL_NUMBER;
	}
	return current_channel;
}

/*****************************************************************************
INPUTS     : Remote control digits
OUTPUTS    : STATUS_DISPLAY - Enable status display
             REFRESH_DISPLAY - Refresh the current display
             previous channel - current channel number
             channel - New channel number
             see select_channel
             see init_digit_entry
DESCRIPTION: This function updates channel entry. It handles the first and
             second digit commands.
*****************************************************************************/
void update_digit_entry(unsigned char digit_command)
{
/*	source = TUNER;*/
/* It no longer use the flags TENS_DIGIT|FIRST_DIGIT */
if (digit_command >= COMMAND_0 && digit_command <=COMMAND_9 && command_flags & COMMAND_NEW )
    {
    digit_command &= 0x0F;
    if((slow_timers[DIGIT_TIMER]!=0 )&& (display_request_flags & PROGRAM_DISPLAY))
        {
        if(channel_tens == DISABLE_CHANNEL )
            {
            channel_tens =  digit_command;
            display_request_flags = display_request_flags | (REFRESH_DISPLAY|PROGRAM_DISPLAY);
            slow_timers[STATUS_TIMER] = STATUS_TIME_OUT;
            return;
            }
        else
            channel = (channel_tens*10) + digit_command;
        }
    else
        channel = digit_command&0x0f;
    if(channel == 0)
        channel=1;
    previous_channel = channel;
    init_digit_entry();
    select_channel();
    }
}
/*****************************************************************************
INPUTS     : none
OUTPUTS    : TENS_DIGIT - Reset two digits request
             FIRST_DIGIT - Reset partial digits entry
             channel_tens - Cleared
DESCRIPTION: This function initializes partial channel entry.
*****************************************************************************/

void init_digit_entry(void)
{
	/* Reset partial digit entry */
	command_flags = command_flags & ~(TENS_DIGIT|FIRST_DIGIT);
	slow_timers[DIGIT_TIMER] = 0;
    display_request_flags &= ~(PROGRAM_DISPLAY | SLEEP_DISPLAY | NORMAL_DISPLAY);
	channel_tens = DISABLE_CHANNEL;
}

/*****************************************************************************
INPUTS     : channel - Current TV channel
             information to return
OUTPUTS    : information requested
             see read_eeprom
DESCRIPTION: This function returns TV channel informations stored in the
             EEPROM.
*****************************************************************************/
unsigned char read_channel_info(unsigned char info)
{
	return read_eeprom(EEPROM_START_CHANNEL_MEMORY + info + ((channel-1)*3));

}

/*****************************************************************************
INPUTS     : none
OUTPUTS    : STATUS_DISPLAY - Enable status display
             REFRESH_DISPLAY - Refresh the current display
             STATUS_TIMER - Status display time-out
             see init_autosearch
             see init_digit_entry
             see start_tuning
             see read_label
DESCRIPTION: This function starts the tuning procedure for the current TV
             channel.
*****************************************************************************/
void select_channel(void)
{
	/* Stop autosearch (in case of) */
	init_autosearch();
	/* Reset partial channel entry (in case of) */
	init_digit_entry();
	/* Read new label */
	read_label();
	/* Set status time-out */
	slow_timers[STATUS_TIMER] = STATUS_TIME_OUT;
	/* Start a new tuning */
	start_tuning();
}

/*****************************************************************************
INPUTS     : station_source channel - menu TV channel
OUTPUTS    : see write_eeprom
			  	copy_channel
DESCRIPTION: This function removes the selected channel from the EEPROM
             channel memory.
*****************************************************************************/
void delete_channel(void)
{
	unsigned char i;
	if (station_source>=99) 
		station_source-= 99;
	copy_channel(CHANNEL_NUMBER,station_source);
	i =read_eeprom(EEPROM_START_CHANNEL_MEMORY+(CHANNEL_NUMBER *3)+SETTINGS);
	i |= SKIP_MASK;
	write_eeprom(EEPROM_START_CHANNEL_MEMORY+(CHANNEL_NUMBER *3)+SETTINGS,i);		
	
	/* Get EEPROM location to free-up */
	for (i = station_source;i<CHANNEL_NUMBER;i++)
		copy_channel(i,i+1);
	station_edit_flags = EDIT_DONE;
	start_tuning();
    display_request_flags = display_request_flags | REFRESH_DISPLAY;
}

/*****************************************************************************
INPUTS     : station_source channel - menu TV channel
			station_target channel
OUTPUTS    : see write_eeprom
			  	copy_channel
DESCRIPTION: This function removes the selected channel from the EEPROM
             channel memory.
*****************************************************************************/
void move_channel(void)
{
        unsigned char i;
	copy_channel(CHANNEL_NUMBER,station_source);/*2.19*/
	if (station_target >=station_source)
	{
		for (i=station_source;i<station_target;i++)
			copy_channel(i,i+1);
	}
	else
	{
		for (i=station_source;i>station_target;i--)
			copy_channel(i,i-1);
	}
	copy_channel(station_target,CHANNEL_NUMBER);
	station_edit_flags = EDIT_DONE;
	start_tuning();
    display_request_flags = display_request_flags | REFRESH_DISPLAY;
}
/*****************************************************************************
INPUTS     :                             
OUTPUTS    : see write_eeprom
DESCRIPTION: This function removes the selected channel from the EEPROM
             channel memory.
*****************************************************************************/
void copy_channel(unsigned char copy_target,unsigned char copy_source) 
{
	unsigned char i;
	for (i=0;i<4;i++)
	{	
          write_eeprom(EEPROM_START_LABEL_MEMORY+(copy_target*4)+i,read_eeprom(EEPROM_START_LABEL_MEMORY+(copy_source*4)+i));
        }
        for (i=0;i<3;i++)
        {
          write_eeprom(EEPROM_START_CHANNEL_MEMORY+(copy_target*3)+i,read_eeprom(EEPROM_START_CHANNEL_MEMORY+(copy_source*3)+i));
	}
}

void check_edit_channel(void)
{
	if (station_edit_flags &DISPLAY_WAIT)
	    return;

	if (station_edit_flags & EDIT_DELETE)
		delete_channel();

	if (station_edit_flags & EDIT_MOVE_TARGET)
		move_channel();
}

/**********************************************************************************************************************************************

**********************************************************************************************************************************************/

void  store_nicam_info(unsigned char channel)
{
#ifdef NICAM
//			k = EEPROM_START_NICAM_STANDARD + (channel-1);
			write_eeprom(EEPROM_START_NICAM_STANDARD + (channel-1), 0x00);/* Write AutoNICAM standard*/
#endif	
}

void init_label(void)
{
    unsigned char i;
    unsigned int k;
    k = EEPROM_START_LABEL_MEMORY + ((channel - 1)*4);	
	for(i=0;i<4; i++,k++)
	  {		
	  write_eeprom(k, MINUS);               
	  }
    
}
void  store_skip_nonecolor_label_info(unsigned char channel)
{
    unsigned int k;
    unsigned char i;			
			
    write_eeprom(EEPROM_START_CHANNEL_MEMORY+((channel-1)*3)+SETTINGS,0x10) ;					
    k = EEPROM_START_LABEL_MEMORY + ((channel - 1)*4);	
    for(i=0;i<4; i++,k++)
        {		
        write_eeprom(k, MINUS);               
        }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品销魂美女一区二区三区| 欧美撒尿777hd撒尿| 日韩中文欧美在线| 亚洲精品伦理在线| 日韩美女视频一区| 国产精品福利一区| 亚洲男女毛片无遮挡| 日韩理论片中文av| 亚洲资源在线观看| 午夜不卡av免费| 天堂va蜜桃一区二区三区漫画版| 亚洲成年人影院| 日日摸夜夜添夜夜添亚洲女人| 日韩中文字幕av电影| 蜜臀av一区二区在线免费观看| 久久精品久久综合| 久久精品国产第一区二区三区| 九九国产精品视频| 国产在线一区观看| 国产不卡视频在线播放| 成人app在线| 欧美亚洲国产bt| 欧美一区午夜视频在线观看| 日本不卡123| 欧美日韩一级片在线观看| 在线观看91精品国产麻豆| 日韩一区二区三区四区五区六区 | 91精品国产综合久久久蜜臀图片| 91精品国产91久久综合桃花 | 亚洲精选视频免费看| 亚洲在线一区二区三区| 五月天一区二区三区| 黑人巨大精品欧美一区| 成人手机在线视频| 欧美亚洲一区二区在线观看| 日韩一区二区三区在线| 国产精品免费av| 亚洲成人免费视| 日本美女一区二区三区| 国产一区二区三区最好精华液| 99精品一区二区| 欧美美女视频在线观看| 久久亚洲精华国产精华液| 亚洲视频 欧洲视频| 日韩高清在线观看| 白白色 亚洲乱淫| 欧美精品一二三| 国产精品免费丝袜| 日韩中文字幕不卡| av在线这里只有精品| 欧美一区二区三区在线视频| 日韩欧美中文字幕一区| 国产suv精品一区二区6| 91看片淫黄大片一级在线观看| 777午夜精品免费视频| 中文字幕va一区二区三区| 亚洲国产毛片aaaaa无费看| 国产精品中文字幕日韩精品| 欧美性色黄大片| 久久精品一区二区三区不卡牛牛| 亚洲综合色婷婷| 国产91对白在线观看九色| 在线观看91精品国产麻豆| 日韩一区欧美小说| 久久爱www久久做| 欧洲激情一区二区| 国产精品视频麻豆| 日韩国产欧美在线观看| 91一区二区三区在线观看| 精品国产污网站| 五月天亚洲精品| 91网站在线观看视频| 久久中文娱乐网| 免费久久99精品国产| 欧亚一区二区三区| 中文字幕一区二区三区乱码在线| 六月丁香综合在线视频| 欧美亚洲图片小说| 亚洲欧洲美洲综合色网| 精品夜夜嗨av一区二区三区| 欧美巨大另类极品videosbest| 中文字幕日韩一区| 福利一区二区在线| 久久久蜜桃精品| 久久久九九九九| 精品国产a毛片| 日韩电影在线免费| 欧美午夜在线一二页| 国产精品护士白丝一区av| 国产一区二三区| 日韩女优制服丝袜电影| 日韩综合一区二区| 在线观看av不卡| 一区二区三区在线视频播放| av亚洲精华国产精华精华| 国产视频一区在线观看| 国产一区二区三区最好精华液| 精品伦理精品一区| 精品一区二区三区免费视频| 7878成人国产在线观看| 亚洲一区二区视频| 在线视频国产一区| 椎名由奈av一区二区三区| 成人av午夜影院| 国产精品麻豆视频| 99久久免费精品高清特色大片| 日本一区二区成人| 不卡在线视频中文字幕| 国产精品欧美久久久久无广告 | 一区二区三区中文字幕在线观看| 99re热视频精品| 亚洲少妇中出一区| 日本精品视频一区二区| 伊人性伊人情综合网| 在线区一区二视频| 国产综合久久久久久久久久久久| 日韩欧美一二三| 精品一区二区免费看| 国产亚洲女人久久久久毛片| 国产精品伊人色| 中文天堂在线一区| 91蜜桃传媒精品久久久一区二区| 亚洲免费观看高清完整版在线观看 | 国产日本一区二区| 成人av网站在线| 一区二区三区中文字幕电影| 欧美日韩国产综合视频在线观看 | 成人涩涩免费视频| 中文字幕字幕中文在线中不卡视频| 色屁屁一区二区| 午夜精品久久久久影视| 欧美一级在线视频| 国产成人午夜电影网| 国产最新精品精品你懂的| 91豆麻精品91久久久久久| 亚洲国产精品久久艾草纯爱| 69久久夜色精品国产69蝌蚪网| 理论电影国产精品| 久久久综合网站| 91视频免费观看| 免费在线观看一区二区三区| 久久精品视频免费观看| 岛国av在线一区| 香蕉成人伊视频在线观看| 日韩久久久精品| a在线播放不卡| 日日夜夜精品视频免费| 国产欧美日韩麻豆91| 欧美在线免费播放| 国产精品正在播放| 久久久亚洲高清| 欧美日韩一区小说| 国产精品一区专区| 亚洲高清视频的网址| 精品粉嫩超白一线天av| 91国产福利在线| 国产精品一区不卡| 亚洲v精品v日韩v欧美v专区 | 亚洲区小说区图片区qvod| 制服丝袜在线91| 成人美女视频在线观看18| 视频一区欧美日韩| 国产精品黄色在线观看| 欧美电影免费提供在线观看| 91网站在线观看视频| 激情成人午夜视频| 亚洲成人免费观看| 国产精品激情偷乱一区二区∴| 日韩免费高清电影| 在线观看日韩电影| 成人免费黄色大片| 蜜桃一区二区三区在线| 亚洲女人****多毛耸耸8| 久久综合久久久久88| 精品视频在线视频| 成人av免费网站| 国产麻豆日韩欧美久久| 亚洲一区精品在线| 欧美韩国一区二区| 精品国产乱码久久久久久牛牛| 欧美日韩国产小视频| 99久久久久久| 成人午夜在线免费| 国内不卡的二区三区中文字幕| 视频一区二区不卡| 一区二区三区四区在线播放| 国产精品毛片无遮挡高清| 92国产精品观看| 国产欧美视频一区二区三区| 日韩一区二区在线看| 欧美色大人视频| 日本精品一级二级| 色婷婷综合久久久中文字幕| 成人黄色综合网站| 国产麻豆精品在线| 国产麻豆一精品一av一免费| 精品一区在线看| 蜜臀国产一区二区三区在线播放| 日日摸夜夜添夜夜添亚洲女人| 香蕉乱码成人久久天堂爱免费|