⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ir_main.c

📁 NEC IR 控制源代码,包括接受,处理.些代码来自TV 软件开发.
💻 C
📖 第 1 页 / 共 5 页
字号:
/******************************************************************************/
/**
 * @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 + -