2016-11-02 22:29:13 +08:00
|
|
|
/**************************************************************************************************
|
|
|
|
|
Filename: irda_lib.h
|
|
|
|
|
Revised: Date: 2016-02-23
|
|
|
|
|
Revision: Revision: 1.0
|
|
|
|
|
|
2016-11-03 22:53:45 +08:00
|
|
|
Description: This file provides algorithms for IR decode (compressed command type)
|
|
|
|
|
|
2016-11-02 22:29:13 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
Revision log:
|
|
|
|
|
* 2016-01-21: created by strawmanbobi
|
|
|
|
|
* 2016-05-06: upadted by xiangjiang
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
#ifndef _IRDA_H_
|
|
|
|
|
#define _IRDA_H_
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
* INCLUDES
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
#include "irda_defs.h"
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
* MACROS
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
* CONSTANTS
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
#define STB_CHANNEL_OFFSET 14
|
|
|
|
|
|
|
|
|
|
#define IRDA_FLAG_NORMAL 0
|
|
|
|
|
#define IRDA_FLAG_INVERSE 1
|
|
|
|
|
|
|
|
|
|
#define IRDA_LEVEL_LOW 0
|
|
|
|
|
#define IRDA_LEVEL_HIGH 1
|
|
|
|
|
|
|
|
|
|
#define IRDA_LSB 0
|
|
|
|
|
#define IRDA_MSB 1
|
|
|
|
|
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
IRDA_DECODE_1_BIT = 0,
|
|
|
|
|
IRDA_DECODE_2_BITS,
|
|
|
|
|
IRDA_DECODE_4_BITS,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
* GLOBAL DATA TYPES
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
//======================== IRDA protocol definition =============================
|
|
|
|
|
typedef enum irda_flags
|
|
|
|
|
{
|
|
|
|
|
IRDA_BOOT = 0,
|
|
|
|
|
IRDA_STOP,
|
|
|
|
|
IRDA_SEP,
|
|
|
|
|
IRDA_ONE,
|
|
|
|
|
IRDA_ZERO,
|
|
|
|
|
IRDA_FLIP,
|
|
|
|
|
IRDA_TWO,
|
|
|
|
|
IRDA_THREE = 7,
|
|
|
|
|
IRDA_FOUR,
|
|
|
|
|
IRDA_FIVE,
|
|
|
|
|
IRDA_SIX,
|
|
|
|
|
IRDA_SEVEN,
|
|
|
|
|
IRDA_EIGHT,
|
|
|
|
|
IRDA_NINE,
|
|
|
|
|
IRDA_A,
|
|
|
|
|
IRDA_B,
|
|
|
|
|
IRDA_C,
|
|
|
|
|
IRDA_D,
|
|
|
|
|
IRDA_E,
|
|
|
|
|
IRDA_F,
|
|
|
|
|
IRDA_MAX = 20,
|
|
|
|
|
} irda_flags_t;
|
|
|
|
|
|
|
|
|
|
typedef struct irda_data
|
|
|
|
|
{
|
|
|
|
|
UINT8 bits;
|
|
|
|
|
UINT8 lsb;
|
|
|
|
|
UINT8 mode;
|
|
|
|
|
UINT8 index;
|
|
|
|
|
} irda_data_t;
|
|
|
|
|
|
|
|
|
|
#if (defined BOARD_PC) || (defined BOARD_MC200) || (defined BOARD_MT6580)
|
|
|
|
|
#pragma pack(1)
|
|
|
|
|
#endif
|
|
|
|
|
typedef struct irda_cycles
|
|
|
|
|
{
|
|
|
|
|
UINT8 flag;
|
|
|
|
|
UINT16 mask;
|
|
|
|
|
UINT16 space;
|
|
|
|
|
} irda_cycles_t;
|
|
|
|
|
#if (defined BOARD_PC) || (defined BOARD_MC200) || (defined BOARD_MT6580)
|
|
|
|
|
#pragma pack()
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//================================== TV ==================================
|
|
|
|
|
typedef enum tv_key_value
|
|
|
|
|
{
|
|
|
|
|
TV_POWER = 0,
|
|
|
|
|
TV_MUTE,
|
|
|
|
|
TV_UP,
|
|
|
|
|
TV_DOWN,
|
|
|
|
|
TV_LEFT,
|
|
|
|
|
TV_RIGHT,
|
|
|
|
|
TV_OK,
|
|
|
|
|
TV_VOL_UP,
|
|
|
|
|
TV_VOL_DOWN,
|
|
|
|
|
TV_BACK,
|
|
|
|
|
TV_INPUT,
|
|
|
|
|
TV_MENU,
|
|
|
|
|
TV_HOME,
|
|
|
|
|
TV_SET,
|
|
|
|
|
TV_0,
|
|
|
|
|
TV_1,
|
|
|
|
|
TV_2,
|
|
|
|
|
TV_3,
|
|
|
|
|
TV_4,
|
|
|
|
|
TV_5,
|
|
|
|
|
TV_6,
|
|
|
|
|
TV_7,
|
|
|
|
|
TV_8,
|
|
|
|
|
TV_9,
|
|
|
|
|
TV_KEY_MAX,
|
|
|
|
|
} tv_key_value_t;
|
|
|
|
|
|
|
|
|
|
//================================== STB ==================================
|
|
|
|
|
typedef enum stb_key_value
|
|
|
|
|
{
|
|
|
|
|
STB_POWER = 0,
|
|
|
|
|
STB_MUTE,
|
|
|
|
|
STB_UP,
|
|
|
|
|
STB_DOWN,
|
|
|
|
|
STB_LEFT,
|
|
|
|
|
STB_RIGHT,
|
|
|
|
|
STB_OK,
|
|
|
|
|
STB_VOL_UP,
|
|
|
|
|
STB_VOL_DOWN,
|
|
|
|
|
STB_BACK,
|
|
|
|
|
STB_INPUT,
|
|
|
|
|
STB_MENU,
|
|
|
|
|
STB_PAGE_UP,
|
|
|
|
|
STB_PAGE_DOWN,
|
|
|
|
|
STB_0,
|
|
|
|
|
STB_1,
|
|
|
|
|
STB_2,
|
|
|
|
|
STB_3,
|
|
|
|
|
STB_4,
|
|
|
|
|
STB_5,
|
|
|
|
|
STB_6,
|
|
|
|
|
STB_7,
|
|
|
|
|
STB_8,
|
|
|
|
|
STB_9,
|
|
|
|
|
STB_KEY_MAX,
|
|
|
|
|
} stb_key_value_t;
|
|
|
|
|
|
|
|
|
|
//================================== NW ==================================
|
|
|
|
|
typedef enum nw_key_value
|
|
|
|
|
{
|
|
|
|
|
NW_POWER = 0,
|
|
|
|
|
NW_UP,
|
|
|
|
|
NW_DOWN,
|
|
|
|
|
NW_LEFT,
|
|
|
|
|
NW_RIGHT,
|
|
|
|
|
NW_OK,
|
|
|
|
|
NW_VOL_UP,
|
|
|
|
|
NW_VOL_DOWN,
|
|
|
|
|
NW_BACK,
|
|
|
|
|
NW_MENU,
|
|
|
|
|
NW_HOME,
|
|
|
|
|
NW_0,
|
|
|
|
|
NW_1,
|
|
|
|
|
NW_2,
|
|
|
|
|
NW_3,
|
|
|
|
|
NW_4,
|
|
|
|
|
NW_5,
|
|
|
|
|
NW_6,
|
|
|
|
|
NW_7,
|
|
|
|
|
NW_8,
|
|
|
|
|
NW_9,
|
|
|
|
|
NW_KEY_MAX,
|
|
|
|
|
} nw_key_value_t;
|
|
|
|
|
|
|
|
|
|
//================================== COMMON ==================================
|
|
|
|
|
typedef enum cm_key_value
|
|
|
|
|
{
|
|
|
|
|
CM_POWER = 0,
|
|
|
|
|
CM_UP,
|
|
|
|
|
CM_DOWN,
|
|
|
|
|
CM_LEFT,
|
|
|
|
|
CM_RIGHT,
|
|
|
|
|
CM_OK,
|
|
|
|
|
CM_VOL_UP,
|
|
|
|
|
CM_VOL_DOWN,
|
|
|
|
|
CM_FUNC_1,
|
|
|
|
|
CM_FUNC_2,
|
|
|
|
|
CM_FUNC_3,
|
|
|
|
|
CM_BACK,
|
|
|
|
|
CM_HOME,
|
|
|
|
|
CM_MENU,
|
|
|
|
|
CM_MODE,
|
|
|
|
|
CM_KEY_MAX,
|
|
|
|
|
} cm_key_value_t;
|
|
|
|
|
|
|
|
|
|
typedef struct irda_data_tv
|
|
|
|
|
{
|
|
|
|
|
char magic[4];
|
|
|
|
|
UINT8 per_keycode_bytes;
|
|
|
|
|
} irda_data_tv_t;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
* GLOBAL VARIABLES
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
* EXTERNAL VARIABLES
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
* GLOBAL TABLES
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
* EXTERNAL FUNCTIONS
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
* GLOBAL FUNCTION PROTOTYPES
|
|
|
|
|
**************************************************************************************************/
|
|
|
|
|
extern void irda_lib_open(UINT8 *binary_file, UINT16 binary_length);
|
|
|
|
|
extern BOOL irda_lib_parse(UINT8 encode_type);
|
|
|
|
|
extern UINT16 irda_lib_control(UINT8 key, UINT16 *user_data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* _IRDA_H_ */
|
|
|
|
|
|