📄 ir_main.c
字号:
/******************************************************************************/
/**
* @file ir_main.c
*
* @brief This module contains functions for:
* - Decoding of infrared remote control commands
* - Interrupts: EXTERN0 : IR No0, infrared receiving
*
* @note (c) 2001 - 2003 Micronas GmbH. All rights reserved.
* Any use of the Software is permitted only in accordance
* with the terms set forth in the Disclaimer text file.
*
* @author ACOM software team
******************************************************************************/
#define _SOURCE_IR_MAIN_
/******************************************************************************/
/**
* INCLUDES:
******************************************************************************/
#include <system.h>
#include <api_tvt_ports.h>
#include <ctrl_main.h>
#include <ir_main.h>
#include <mnu_main.h>
#include <core_main.h>
#include <ctrl_msgparse.h>
#ifdef __DEMO_LOOP__
#include <demo_loop.h>
#endif
#include <fmnu_main.h>
#include <main_special.h>
#include <pip_vctp_main.h>
#ifdef __DVB_T__
#include <OnBoardModule.h> //sl
#endif
#ifdef __RSTEP_WITH_WD_TIMER__
#define IR_PORT P2_2
#define LED_PORT P2_1
#endif
#ifdef __REMOTE_ON_INT1__
#define INTSOURCE INTSRC1
#define CRT_CON0_INIT 0x55 /* SEL = 1 */
#else
#define INTSOURCE INTSRC0
#define CRT_CON0_INIT 0x54 /* SEL = 0 */
#endif
/******************************************************************************/
/**
* LOCAL VARIABLES:
******************************************************************************/
static uint8_t data irState;
static uint16_t data captold;
static uint16_t data info;
static uint16_t data systemcode;
#if defined __RC5__ || defined __IR60__ || defined __NEC__
static uint16_t data irOldCommand;
#endif
static bool_t buttonDown;
#ifdef __RSTEP_WITH_WD_TIMER__
static uint16_t data oldTimerValue;
static uint16_t oldBitValue;
static uint16_t bitStartIndicator;
uint16_t WordWithIRInfo_g;
#else
#ifdef DEBUG_IN_OSD
uint16_t WordWithIRInfo_g;
#endif
#endif
/******************************************************************************/
/**
GLOBAL VARIABLES:
******************************************************************************/
uint8_t data irActiveCounter_g;
uint8_t data irOpenCounter_g;
Message_t idata irMessage_g;
bool_t waitForFirstCommand_g;
uint8_t deviceId_g;
extern uint8_t DTV_State;
#ifdef __CHECK_VSYNC_DEBUG__
extern uint8_t vsync_diff_limit1;
extern uint8_t vsync_diff_limit2;
#endif
/******************************************************************************/
/**
LOCAL FUNCTION PROTOTYPES:
******************************************************************************/
#ifdef __IR60__
static void convertIR60Message(uint16_t *pcommand);
#endif
#ifdef __RC5__
static void convertRC5Message(uint16_t *pCommand);
#endif
#ifdef __NEC__
static void convertNECMessage(uint16_t *pCommand);
#endif
#ifdef __RSTEP__
static void convertRSTEPMessage(uint16_t *pCommand);
static void IrHandleMessage(void);
#endif
/******************************************************************************/
/**
IMPORTED DATA FROM EXCEL SHEET (do not modifiy manually!)
******************************************************************************/
/* --> First line of datablock NEC-Decoder in IR_MAIN.C from Mints STATE-EVENT */
uint8_t code convertNECTable1[256] =
{
VOLUMEUP, /* 0 */
VOLUMEDOWN, /* 1 */
CHANNELUP, /* 2 */
CHANNELDOWN, /* 3 */
TEXTKEY, /* 4 */
STBYKEY, /* 5 */
CURUP, /* 6 */
CURDOWN, /* 7 */
SLEEPKEY, /* 8 */
PIPSWAPKEY, /* 9 */
PCKEY, /* 10 */
MUTEKEY, /* 11 */
JUMPKEY, /* 12 */
TVSCARTKEY, /* 13 */
NOEVENT, /* 14 */
SCANKEY, /* 15 */
DIGIT0, /* 16 */
DIGIT1, /* 17 */
DIGIT2, /* 18 */
DIGIT3, /* 19 */
DIGIT4, /* 20 */
DIGIT5, /* 21 */
DIGIT6, /* 22 */
DIGIT7, /* 23 */
DIGIT8, /* 24 */
DIGIT9, /* 25 */
INFOKEY, /* 26 */
ENTKEY, /* 27 */
PIPKEY, /* 28 */
FREEZEKEY, /* 29 */
MENUKEY, /* 30 */
RETURNKEY, /* 31 */
FAVCHANNELKEY, /* 32 */
SOUNDMODEKEY, /* 33 */
PIPSIZEKEY, /* 34 */
PIPPOSITIONKEY, /* 35 */
PIPCHANNELUPKEY, /* 36 */
PIPCHANNELDOWNKEY, /* 37 */
CHILDLOCKKEY, /* 38 */
COLORTEMPKEY, /* 39 */
CLOCKKEY, /* 40 */
NOEVENT, /* 41 */
NOEVENT, /* 42 */
NOEVENT, /* 43 */
HELPKEY, /* 44 */
NOEVENT, /* 45 */
NOEVENT, /* 46 */
EPGKEY, /* 47 */
NOEVENT, /* 48 */
NOEVENT, /* 49 */
NOEVENT, /* 50 */
NOEVENT, /* 51 */
NOEVENT, /* 52 */
PAUSEKEY, /* 53 */
STOPKEY, /* 54 */
RECORDKEY, /* 55 */
NOEVENT, /* 56 */
NOEVENT, /* 57 */
NOEVENT, /* 58 */
NOEVENT, /* 59 */
NOEVENT, /* 60 */
NOEVENT, /* 61 */
NOEVENT, /* 62 */
NOEVENT, /* 63 */
SOURCEKEY, /* 64 */
CURLEFT, /* 65 */
OKKEY, /* 66 */
CURRIGHT, /* 67 */
NICAMKEY, /* 68 */
SOUNDKEY, /* 69 */
EPGKEY, /* 70 */
PICTUREKEY, /* 71 */
SUBTITILEKEY, /* 72 */
NOEVENT, /* 73 */
RADIOKEY, /* 74 */
TVKEY, /* 75 */
INDEXKEY, /* 76 */
HIDDENKEY, /* 77 */
TEXTSCALEKEY, /* 78 */
PAUSEKEY, /* 79 */
REDKEY, /* 80 */
GREENKEY, /* 81 */
YELLOWKEY, /* 82 */
BLUEKEY, /* 83 */
NOEVENT, /* 84 */
NOEVENT, /* 0 */
NOEVENT, /* 1 */
NOEVENT, /* 2 */
NOEVENT, /* 3 */
NOEVENT, /* 4 */
NOEVENT, /* 5 */
NOEVENT, /* 6 */
NOEVENT, /* 7 */
NOEVENT, /* 8 */
NOEVENT, /* 9 */
NOEVENT, /* 10 */
NOEVENT, /* 11 */
G1_STBY, /* 12 */
G1_MUTE, /* 13 */
NOEVENT, /* 14 */
G1_INFO, /* 15 */
NOEVENT, /* 16 */
NOEVENT, /* 17 */
G1_MENU, /* 18 */
NOEVENT, /* 19 */
NOEVENT, /* 20 */
NOEVENT, /* 21 */
NOEVENT, /* 22 */
G1_OK, /* 23 */
G1_PIP, /* 24 */
G1_RED, /* 25 */
G1_GREEN, /* 26 */
NOEVENT, /* 27 */
G1_BLUE, /* 28 */
NOEVENT, /* 29 */
NOEVENT, /* 30 */
G1_SOUND, /* 31 */
NOEVENT, /* 32 */
NAVIGATIONKEY, /* 33 */
SWAPKEY, /* 34 */
G1_NAVIGATION, /* 35 */
SUBTITLEKEY, /* 36 */
G1_REWIND, /* 37 */
G1_FORWARD, /* 38 */
REWINDKEY, /* 39 */
FOWARDKEY, /* 40 */
NOEVENT, /* 41 */
NOEVENT, /* 42 */
NOEVENT, /* 43 */
G1_HELP, /* 44 */
NOEVENT, /* 45 */
NOEVENT, /* 46 */
NOEVENT, /* 47 */
NOEVENT, /* 48 */
NOEVENT, /* 49 */
NOEVENT, /* 50 */
NOEVENT, /* 51 */
NOEVENT, /* 52 */
NOEVENT, /* 53 */
NOEVENT, /* 54 */
NOEVENT, /* 55 */
NOEVENT, /* 56 */
NOEVENT, /* 57 */
NOEVENT, /* 58 */
NOEVENT, /* 59 */
G1_TEXT, /* 60 */
NOEVENT, /* 61 */
NOEVENT, /* 62 */
NOEVENT, /* 63 */
NOEVENT, /* 63 */
NOEVENT, /* 63 */
NOEVENT, /* 63 */
NOEVENT, /* 63 */
NOEVENT, /* 63 */
NOEVENT, /* 63 */
NOEVENT, /* 64 */
NOEVENT, /* 65 */
NOEVENT, /* 66 */
NOEVENT, /* 67 */
NOEVENT, /* 68 */
NOEVENT, /* 69 */
NOEVENT, /* 70 */
NOEVENT, /* 71 */
NOEVENT, /* 72 */
NOEVENT, /* 73 */
NOEVENT, /* 73 */
NOEVENT, /* 73 */
NOEVENT, /* 73 */
NOEVENT, /* 73 */
NOEVENT /* 73 */
};
/* --> Last line of datablock NEC-Decoder in IR_MAIN.C from Mints STATE-EVENT */
/* BEGIN INFRARED DECODING */
#ifdef __IR60__
/* --> First line of datablock IR60-Decoder in IR_MAIN.C from Mints STATE-EVENT */
uint8_t code convertIR60Table1[64] =
{
OKKEY, /* 0 */
MUTEKEY, /* 1 */
STBYKEY, /* 2 */
NOEVENT, /* 3 */
NOEVENT, /* 4 */
HELPKEY, /* 5 */
NOEVENT, /* 6 */
RETURNKEY, /* 7 */
CURRIGHT, /* 8 */
CURLEFT, /* 9 */
NOEVENT, /* 10 */
NOEVENT, /* 11 */
NOEVENT, /* 12 */
NOEVENT, /* 13 */
NOEVENT, /* 14 */
NOEVENT, /* 15 */
DIGIT0, /* 16 */
DIGIT1, /* 17 */
DIGIT2, /* 18 */
DIGIT3, /* 19 */
DIGIT4, /* 20 */
DIGIT5, /* 21 */
DIGIT6, /* 22 */
DIGIT7, /* 23 */
DIGIT8, /* 24 */
DIGIT9, /* 25 */
SIZEKEY, /* 26 */
NOEVENT, /* 27 */
CHANNELUP, /* 28 */
CHANNELDOWN, /* 29 */
VOLUMEUP, /* 30 */
VOLUMEDOWN, /* 31 */
SWAPKEY, /* 32 */
RADIOKEY, /* 33 */
EPGKEY, /* 34 */
NAVIGATIONKEY, /* 35 */
SOUNDKEY, /* 36 */
SUBTITLEKEY, /* 37 */
CLOCKKEY, /* 38 */
MENUKEY, /* 39 */
NOEVENT, /* 40 */
PIPKEY, /* 41 */
CURUP, /* 42 */
CURDOWN, /* 43 */
NOEVENT, /* 44 */
INFOKEY, /* 45 */
BLUEKEY, /* 46 */
NOEVENT, /* 47 */
TEXTKEY, /* 48 */
NOEVENT, /* 49 */
RECORDKEY, /* 50 */
STOPKEY, /* 51 */
REWINDKEY, /* 52 */
PAUSEKEY, /* 53 */
FOWARDKEY, /* 54 */
NOEVENT, /* 55 */
NOEVENT, /* 56 */
NOEVENT, /* 57 */
REDKEY, /* 58 */
YELLOWKEY, /* 59 */
NOEVENT, /* 60 */
NOEVENT, /* 61 */
GREENKEY, /* 62 */
NOEVENT /* 63 */
};
uint8_t code convertIR60Table2[64] =
{
G1_OK, /* 0 */
G1_MUTE, /* 1 */
G1_STBY, /* 2 */
NOEVENT, /* 3 */
NOEVENT, /* 4 */
G1_HELP, /* 5 */
NOEVENT, /* 6 */
NOEVENT, /* 7 */
NOEVENT, /* 8 */
NOEVENT, /* 9 */
NOEVENT, /* 10 */
NOEVENT, /* 11 */
NOEVENT, /* 12 */
NOEVENT, /* 13 */
NOEVENT, /* 14 */
NOEVENT, /* 15 */
NOEVENT, /* 16 */
NOEVENT, /* 17 */
NOEVENT, /* 18 */
NOEVENT, /* 19 */
NOEVENT, /* 20 */
NOEVENT, /* 21 */
NOEVENT, /* 22 */
NOEVENT, /* 23 */
NOEVENT, /* 24 */
NOEVENT, /* 25 */
NOEVENT, /* 26 */
NOEVENT, /* 27 */
NOEVENT, /* 28 */
NOEVENT, /* 29 */
NOEVENT, /* 30 */
NOEVENT, /* 31 */
NOEVENT, /* 32 */
NOEVENT, /* 33 */
NOEVENT, /* 34 */
G1_NAVIGATION, /* 35 */
G1_SOUND, /* 36 */
NOEVENT, /* 37 */
NOEVENT, /* 38 */
G1_MENU, /* 39 */
NOEVENT, /* 40 */
G1_PIP, /* 41 */
NOEVENT, /* 42 */
NOEVENT, /* 43 */
NOEVENT, /* 44 */
G1_INFO, /* 45 */
G1_BLUE, /* 46 */
NOEVENT, /* 47 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -