📄 command.c
字号:
#include "command.h"
#include "ir.h"
#include "keyboard.h"
#include "register.h"
#include "timer.h"
#include "tv_glob.h"
#include "autosrch.h"
#include "macro.h"
#include "service.h"
const unsigned char IR_TABLE[];
/*****************************************************************************
INPUTS : none
OUTPUTS : command_flags - Cleared command flags (NEW and VALID)
command - Set to no command
DESCRIPTION: This function initializes the command handler and disable
command processing.
*****************************************************************************/
void init_command(void)
{
/* Reset command flags */
command_flags = command_flags & ~(COMMAND_VALID | COMMAND_NEW);
/* disable commands */
/* command = NO_KEYBOARD_COMMAND;*/
command = NO_COMMAND;
}
/*****************************************************************************
INPUTS : COMMAND_TIMER - Key repeat timer
command - Contain the previous command
see get_IR
OUTPUTS : see init_command
COMMAND_NEW - Set if new command available
COMMAND_VALID - Set if same command
command - New IR or keyboard command
DESCRIPTION: Get possible keyboard or IR commands. Keyboard commands take
precedence over IR commands.
The new command flag is set for each new command.
The valid command flag is set every XXms, as long as the current
command is valid.
XXms id defined according to the command selected.
*****************************************************************************/
unsigned char get_command(void)
{
unsigned char i; /* Temporary storage */
i = get_keyboard(); /* keyboard.c */
if (i != NO_KEYBOARD_COMMAND)
{
key_debounce(i);
return command = i;
}
else
{
i = get_IR(); /* ir.c */
i = IR_TABLE[i];
/* If there is no IR command available, then disable processing */
if (i == NO_IR_COMMAND)
{
/* Disable command processing and exit */
command_flags = command_flags &~ (COMMAND_VALID | COMMAND_NEW);
return(i);
}
}
/* Set new command if there was no command previously detected or if
the current command is different than the previous one */
toggle_flag = toggle_flag & 0x03;
if ((toggle_flag == 0x01) || (toggle_flag == 0x2))
{
/* it is a new command */
command_flags = command_flags | (COMMAND_VALID | COMMAND_NEW);
/* Save this new command and toggle bit */
command = i;
asm ("rlc %0" : "=R"(toggle_flag) : );
}
else
/* check to see if it is the same command */
if (command == i)
{
/* Same command so, set valid command flag if it time to do it */
if (fast_timers[COMMAND_TIMER] == 0x00)
command_flags = command_flags | COMMAND_VALID;
}
return(i);
}
/*******************************************
*******************************************/
void init_auto_demo_var(void)
{
band_number = 0;
first_autosearch =0;
}
/***********************************************************************************************
This function decides whether a new local key is pressed or not
and also decides on key debouncing time.
***********************************************************************************************/
void key_debounce(unsigned char i)
{
/* Same command so, set valid command flag if it time to do it */
if (fast_timers[COMMAND_TIMER] == 0x00)
{
/* Set valid command flag */
command_flags = command_flags | (COMMAND_VALID | COMMAND_NEW);
}
}
/*****************************************************************************
IR Key Array
*****************************************************************************/
const unsigned char IR_TABLE[] = {
COMMAND_VSM, //0
COMMAND_MUTE, //1
COMMAND_OK, /*0x02*/
NO_COMMAND, /*0x3*/
NO_COMMAND,
NO_COMMAND,
COMMAND_RIGHT, //6
COMMAND_LEFT,
NO_COMMAND,
COMMAND_RECALL,
NO_COMMAND, /*0x0A*/
NO_COMMAND, /*0B*/
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
COMMAND_0,
COMMAND_1,
COMMAND_2,
COMMAND_3,
COMMAND_4,
COMMAND_5,
COMMAND_6,
COMMAND_7,
COMMAND_8,
COMMAND_9,
COMMAND_TWO_DIGIT,//1a
COMMAND_SERVICE,//1b
NO_COMMAND,
NO_COMMAND,
NO_COMMAND, /*1E*/
NO_COMMAND, //1f
COMMAND_POWER, //20
NO_COMMAND, //21
NO_COMMAND, /* 22*/
COMMAND_MENU,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
COMMAND_TV_AV,
COMMAND_CHANNEL_DOWN, //29
COMMAND_CHANNEL_UP, //2a
COMMAND_7,
NO_COMMAND,
NO_COMMAND, /*2D*/
NO_COMMAND,
COMMAND_SLEEP,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND, /*33*/
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND,
NO_COMMAND, /*0x3D*/
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -