/** UIOTest.c ÀÌ ¸ðµâÀº UIO API Test ¸¦ À§ÇÑ ·çƾÀÌ´Ù. */ #include "DHL_OSAL.h" #include "DHL_UIO.h" //#include "DHL_APITest.h" #if COMMENT ____Test___(){} #endif /* UIOTest ¸ðµâ Å×½ºÆ® µ¿ÀÛ. 0. ±âº» µ¿ÀÛ. UIOTest_init() ¸¸ ºÎ¸£°í ³ª¼­ ¸®¸ðÄÁ ÀÔ·ÂÀ» Çϸé log ¸Þ½ÃÁö·Î È®ÀÎ °¡´ÉÇÏ´Ù. ÀÌ »óȲ¿¡¼­´Â all-pass·Î µ¿ÀÛÇϹǷÎ, NEC ¹æ½ÄÀÇ ¾î¶² ¸®¸ðÄÁµµ Å×½ºÆ® °¡´É. Shell> UIOTest_init // Ű ÀÔ·Â.. IR key input => Code : 0xec130204, Repeat : ... 1. Vendor key filtering test Shell> UIOTest_setfilter 0x3412 // ¿ìÁø ¸®¸ðÄÁ. Shell> UIOTest_setfilter 0x0204 // µ¹ÇÉ ¸®¸ðÄÁ. ÁÖÀÇ. À§ ÇÔ¼ö¸¦ Çѹøµµ È£ÃâÇÏÁö ¾ÊÀº °æ¿ì´Â all-pass ·Î µ¿ÀÛÇÑ´Ù. ÀÏ´Ü À§ ÇÔ¼ö·Î filter¸¦ ¼³Á¤ÇÏ¸é °³°³ filter¸¦ reset ÇÏ´Â ¹æ¹ýÀº ¾ø°í, Àüü ÇÊÅÍ ¸®¼Â¸¸ °¡´ÉÇÔ. Shell> UIOTest_resetirfilter 2. global key repeat ó¸® Å×½ºÆ® Shell> UIOTest_setrepeat 2000 1000 ÀÌ·¸°Ô Çϸé ÀÓÀÇ Å°¸¦ °è¼Ó ´©¸£°í ÀÖÀ¸¸é ´ÙÀ½°ú °°ÀÌ ¹ÝÀÀÇÑ´Ù. ¹ÝÀÀÀº ·Î±× ¸Þ½ÃÁö·Î È®ÀÎÇÏ¸é µÈ´Ù. 2 sec 1 sec 1 sec 1 sec 1 sec +------------+------+------+------+---... 1st 2nd 3rd 4th 5th ¼ýÀÚ¸¦ º¯°æÇØ °¡¸é¼­ Å×½ºÆ® ÇØ º¼ °Í.. 3. °³º° Ű repeat ó¸® Å×½ºÆ® Shell> UIOTest_setrepeat2 1 0x02 1000 500 // IR ÀÔ·Â Áß key 0x02 ¿¡ ´ëÇØ¼­¸¸ first 1000, next 500 ÀÇ repeat ÆÄ¶ó¹ÌÅÍ ¼³Á¤. // Âü°í·Î woojin ¸®¸ðÄÁÀÇ UP ۰¡ 0x02 ÀÌ´Ù. // ±× ¿Ü ´Ù¸¥ Ű´Â global repeat ¼³Á¤ °ªÀ» µû¸¥´Ù. Shell> UIOTest_resetrepeat // UIOTest_setrepeat2 À» ¼³Á¤À» ÇØÁ¦.. // global repeatÀº º°µµÀÇ api·Î ¼³Á¤ÇϹǷΠ¿©ÀüÈ÷ À¯È¿ÇÔ. */ #if COMMENT ____Function___(){} #endif void UIO_input_process(tDHL_UIO_Type source, UINT32 data, tDHL_UIO_Flag flag) { if(source == eDHL_UIO_INPUT_IR) DHL_OS_Printf("IR key input => Code : 0x%08x, flag: %s\n", data, (flag & DHL_UIO_FLAG_IsRepeat)?"Repeat":""); else if(source == eDHL_UIO_INPUT_GPIO) DHL_OS_Printf("GPIO key input => index : %d, flag: %s\n", data, (flag & DHL_UIO_FLAG_IsRepeat)?"Repeat":""); } #if COMMENT ____UIO_Test___(){} #endif /* UIO ÃʱâÈ­ µ¿ÀÛ test ÇÔ¼ö. Á¤»óµ¿ÀÛ ¼öÇà½Ã IR ÀÔ·Â ¹× GPB(gpio ·Î ¿¬°áµÈ keypad) ÀÔ·ÂÀÌ enable µÇ¸ç ½Ã¸®¾ó ¸Þ¼¼Áö·Î Ãâ·ÂµÈ´Ù. */ void UIOTest_init(void) { DHL_UIO_Init(); DHL_UIO_RegisterCallback(UIO_input_process); } /* IR filtering ó¸® µ¿ÀÛ test ¸¦ À§ÇÑ ÇÔ¼ö. Á¤»óµ¿ÀÛ ¼öÇà½Ã ÁöÁ¤ÇÑ Custom code ¿¡ ´ëÇØ¼­¸¸ µ¥ÀÌÅÍ ¼ö½Å. value : ÇÊÅ͸µ(Åë°ú½ÃÅ´) ÇÒ ¸®¸ðÄÜÀÇ Custom ÄÚµå °ª. */ void UIOTest_setfilter(int value) { tDHL_UIO_InputDataFilter param; param.numFilter = 1; param.filters[0].mask = 0xFFFF; param.filters[0].data = (UINT32)value & 0xFFFF; DHL_UIO_Config(eDHL_UIO_Cfg_InputDataFilter, ¶m); } void UIOTest_resetfilter(void) { tDHL_UIO_InputDataFilter param; param.numFilter = 0; DHL_UIO_Config(eDHL_UIO_Cfg_InputDataFilter, ¶m); } static struct { tDHL_UIO_Type input; UINT32 g_first, g_next; // global param UINT8 key; UINT32 first, next; // interval } _repeat_param; /* key ÀÔ·Â(IR, keypadµî) ÀÇ Repeat ó¸® ½Ã°£ ¼ÂÆÃ µ¿ÀÛ test ¸¦ À§ÇÑ ÇÔ¼ö. Á¤»ó µ¿ÀÛ ¼öÇà½Ã ÁöÁ¤µÈ ½Ã°£À¸·Î repeat ۰¡ 󸮵ȴÙ. first : Ű ÀÔ·ÂÈÄ ÃÖÃÊ repeat key ·Î ÀÎ½Ä ÇÏ´Â ½Ã°£ (ms) next : ù¹øÂ° repeat key ÀÎ½Ä ÈÄÅÍ repeat ·Î ÀÎ½Ä ÇÏ´Â ½Ã°£(ms) */ void UIOTest_setrepeat(int first, int next) { tDHL_UIO_RepeatSetting param; param.msIntervalFirst = (UINT32)first; param.msIntervalNext = (UINT32)next; _repeat_param.g_first = first; _repeat_param.g_next = next; DHL_UIO_Config(eDHL_UIO_Cfg_RepeatSetting, ¶m); } static void _chk_repeat_cb(tDHL_UIO_Type source, UINT32 data, tDHL_UIO_RepeatSetting *settings) { if (source != _repeat_param.input) goto label_default; if (source == eDHL_UIO_INPUT_IR) { UINT8 key = (data >> 16) & 0xff; if (key != _repeat_param.key) goto label_default; settings->msIntervalFirst = _repeat_param.first; settings->msIntervalNext = _repeat_param.next; return; } else if (source == eDHL_UIO_INPUT_GPIO) { if (data != _repeat_param.key) goto label_default; settings->msIntervalFirst = _repeat_param.first; settings->msIntervalNext = _repeat_param.next; return; } label_default: { settings->msIntervalFirst = _repeat_param.g_first; settings->msIntervalNext = _repeat_param.g_next; } } void UIOTest_setrepeat2(tDHL_UIO_Type source, UINT32 data, UINT32 first, UINT32 next) { _repeat_param.input = source; _repeat_param.key = data; _repeat_param.first = first; _repeat_param.next = next; DHL_UIO_Config(eDHL_UIO_Cfg_CheckRepeatCb, _chk_repeat_cb); } void UIOTest_resetrepeat(void) { DHL_UIO_Config(eDHL_UIO_Cfg_CheckRepeatCb, NULL); } /* UIO ÀÇ output(User ¿¡°Ô º¸¿©Áö´Â Displayµî) ÄÁÆ®·Ñ µ¿ÀÛ test ÇÔ¼ö. Á¤»ó µ¿ÀÛ ¼öÇà½Ã ÇØ´ç output ¿¡ ¿øÇÏ´Â display °¡ Ãâ·ÂµÈ´Ù. type º°·Î id ¹× param Çü½ÄÀÌ ´Ù¸£´Ù. 1. eDHL_UIO_CT_LED UIO LED ÄÁÆ®·Ñ. id : GPIO number param : 0 (Off), 1 (On) 2. eDHL_UIO_CT_Indicator UIO Indicator ÄÁÆ®·Ñ. id : tDHL_UIO_IndicatorType Áß Çϳª°¡ µÈ´Ù. (1) id : 0 eDHL_UIO_IT_Power Power key µ¿ÀÛ¿¡ µû¸¥ Indicator Ç¥½Ã »óÅ ÄÁÆ®·Ñ. param : 0 (all off), 1 (standby mode »óÅÂÇ¥½Ã), 2 (operation mode »óÅÂÇ¥½Ã) (2) ³ª¸ÓÁö¿¡ ´ëÇØ¼­´Â ÇöÀç º¸µå¿¡¼­´Â ¹Ì±¸Çö. 3. ³ª¸ÓÁö¿¡ ´ëÇØ¼­´Â ÇöÀç º¸µå¿¡¼­´Â ¹Ì±¸Çö. */ void UIOTest_control(int type, int id, int param) { DHL_RESULT dhr = DHL_OK; dhr = DHL_UIO_Control((tDHL_UIO_ControlType)type, (UINT32)id, (UINT32)param); if(dhr != DHL_OK) { if(dhr == DHL_FAIL_INVALID_PARAM) DHL_OS_Printf("Invalid param (DHL_AV_init) \n"); else DHL_OS_Printf("Error (DHL_UIO_Control) \n"); } } /* UIO Uninit µ¿ÀÛ Test ¸¦ À§ÇÑ ÇÔ¼ö. Á¤»ó µ¿ÀÛ ¼öÇà½Ã IR ¹× Gpio keyµîÀÇ ÀÔ·ÂÀÌ Â÷´ÜµÈ´Ù. */ void UIOTest_uninit(void) { DHL_UIO_Uninit(); }