app_key.c 4.74 KB
#include "c_def.h"
#include "debug.h"
#include "oem.h"

#include "app_key.h"
#include "remote.h"
#include "app_cmd.h"
#include "app_main.h"
#include "app_ver.h"


//for different application, include different pin define
#include "app_key_OEM.h"


U8 vAdMapMainVer (U16 ad_val)
{
	U8 i;
	VER_AD_ENTRY *p;

	p = (VER_AD_ENTRY *) oem_main_version_entry;

	for (i=0; i<(sizeof oem_main_version_entry / sizeof oem_main_version_entry[0]); i++)
	{
		if ( (ad_val >= p->ad_min) && (ad_val <= p->ad_max) )
		{
			break;
		}

		p++;
	}

	return i;
}

#if 1
static const KEY_AD_ENTRY *oem_main_kbd_map[] = {
	oem_main_kbd_entry0,
	oem_main_kbd_entry1,
	oem_main_kbd_entry2
};
#else
static const KEY_AD_ENTRY *oem_main_kbd_map_K515[] = {
	oem_main_kbd_entry0_K515,
	oem_main_kbd_entry1_K515,
	oem_main_kbd_entry2_K515
};

static const KEY_AD_ENTRY *oem_main_kbd_map_S55[] = {
	oem_main_kbd_entry0_S55,
	oem_main_kbd_entry1_S55,
	oem_main_kbd_entry2_S55
};
#endif

APP_KEY vAdMapMainKey (U8 ad_channel, U16 ad_val)
{
	KEY_AD_ENTRY *p ;
	APP_KEY key = APP_KEY_INVALID;

#if 1
	for (p = oem_main_kbd_map[ad_channel]; p->key != APP_KEY_INVALID; p++)
	{
		if ( (ad_val >= p->ad_min) && (ad_val <= p->ad_max) )
		{
			key = p->key;
			break;
		}
	}
#else
	if (app_main_data.model == EXS55)
	{
		p = (KEY_AD_ENTRY *) oem_main_kbd_map_S55[ad_channel];
	}
	else if (app_main_data.model == XK515)
	{
		p = (KEY_AD_ENTRY *) oem_main_kbd_map_K515[ad_channel];
	}
	
	while (p->key != APP_KEY_INVALID)
	{
		if ( (ad_val >= p->ad_min) && (ad_val <= p->ad_max) )
		{
			key = p->key;
			
			if (app_main_data.model == EXS55)
			{
#if 1//def SKIPFAST_SEPARATED_FROM_STOP
				rmt_keyStopType = enKEY_STOP_UNKNOWN;
				if (key == APP_KEY_STOP)
				{
					rmt_keyStopType = enKEY_MAIN_BOARD_STOP;
				}

#endif


#if 1//def SKIPFAST_SEPARATED_FROM_SKIP
				rmt_keySkipType = enKEY_SKIP_UNKNOWN;
				rmt_keyPlayType = enKEY_PLAY_UNKNOWN;
				rmt_keyanologType = enKEY_TUNER_AUX_UNKNOWN;	
				if (key == APP_KEY_SKIPB || key == APP_KEY_SKIPF)
				{
					rmt_keySkipType= enKEY_MAIN_BOARD_SKIP;
				}

				if (key == APP_KEY_TUNER)
				{
					rmt_keyanologType = enKEY_MAIN_BOARD_TUNER_AUX;	
				}
			
				if (key == APP_KEY_CD)
				{
					key = APP_KEY_PLAY;
					rmt_keyPlayType = enKEY_CD_PLAY;
				}
				else if (key == APP_KEY_USB)
				{
					key = APP_KEY_PLAY;
					rmt_keyPlayType = enKEY_USB_PLAY;
				}
				else if (key == APP_KEY_BLUETOOTH)
				{
					key = APP_KEY_PLAY;
					rmt_keyPlayType = enKEY_BLUETOOTH_PLAY;
				}
#endif			
			
			}
			else if (app_main_data.model == XK515) 
			{
#if 1//def SKIPFAST_SEPARATED_FROM_SKIP
				rmt_keySkipType = enKEY_SKIP_UNKNOWN;
				if (key == APP_KEY_SKIPB || key == APP_KEY_SKIPF)
				{
					rmt_keySkipType= enKEY_MAIN_BOARD_SKIP;
				}
#endif

#if 1//def SKIPFAST_SEPARATED_FROM_SKIP
				rmt_keyPlayType = enKEY_PLAY_UNKNOWN;
				if (key == APP_KEY_PLAY)
				{
					rmt_keyPlayType= enKEY_MAIN_BOARD_PLAY;
				}
#endif
		}

			break;
		}

		p++;
	}
#endif

	return key;
}


#ifdef REMOTE_ENABLE

const KEY_REMOTE_MAP oem_main_remote_map = {
	(KEY_REMOTE_ENTRY *) oem_main_remote_entry,
	sizeof (oem_main_remote_entry) / sizeof (oem_main_remote_entry[0])
};

#if 0
const KEY_REMOTE_MAP oem_main_remote_map_1 = {
	(KEY_REMOTE_ENTRY *) oem_main_remote_entry_1,
	sizeof (oem_main_remote_entry_1) / sizeof (oem_main_remote_entry_1[0])
};
#endif


void vRemoteMapMainKey(U32 *key_ad)
{
#if 1
	U16 i;
	U16 temp;

#if 1
	temp = oem_main_remote_map.entries;
	for (i=0; i<temp; i++)
	{
		if (*key_ad  == oem_main_remote_map.key_remote_entry[i].key_val)
		{
			*key_ad = i;
			break;
		}
	}

	if (i >= oem_main_remote_map.entries)
	{
		*key_ad = APP_KEY_INVALID;
	}
#else
	if (app_main_data.model == EXS55)
	{
		temp = oem_main_remote_map_S55.entries;
		for (i=0; i<temp; i++)
		{
			if (*key_ad  == oem_main_remote_map_S55.key_remote_entry[i].key_val)
			{
				*key_ad = i;
				break;
			}
		}

		if (i >= oem_main_remote_map_S55.entries)
		{
			*key_ad = APP_KEY_INVALID;
		}
	}
	else if (app_main_data.model == XK515)
	{
		temp = oem_main_remote_map_K515.entries;
		for (i=0; i<temp; i++)
		{
			if (*key_ad  == oem_main_remote_map_K515.key_remote_entry[i].key_val)
			{
				*key_ad = i;
				break;
			}
		}

		if (i >= oem_main_remote_map_K515.entries)
		{
			*key_ad = APP_KEY_INVALID;
		}
	}
#endif

#endif
}


U32 remote_key_to_app_key(U32 val)
{
#if	1//def REMOTE_CONTROL_MAP
	int i;

	for (i=0; i<(sizeof remote_key_tab1 / sizeof remote_key_tab1[0]); i++)
	{
		if (remote_key_tab1[i].val == val)
		{
			//asm("nop");
			return remote_key_tab1[i].key;
		}
	}

	return APP_KEY_INVALID;
#else
	int i;

	for (i=0; i<(sizeof remote_key_tab / sizeof remote_key_tab[0]); i++)
	{
		if (remote_key_tab[i].val == val)
		{
//			asm("nop");
			return remote_key_tab[i].key;
		}
	}

	return APP_KEY_INVALID;
#endif
}

#endif //REMOTE_ENABLE