Files
core/src/ir_decoder/irda_lib.h

265 lines
6.0 KiB
C
Raw Normal View History

/**************************************************************************************************
Filename: irda_lib.h
Revised: Date: 2016-02-23
Revision: Revision: 1.0
Description: This file provides algorithms for UCON IR decode (command type)
Copyright 2014-2016 UCON Tech all rights reserved
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"
#if defined BOARD_CC254X
#include "ucon_remote.h"
#endif
/**************************************************************************************************
* 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_ */