/** @file DHL_COM.h @brief PHOENIX HAL library Communication API interface (UART, I2C, ..) Copyright 2006~2010 Digital STREAM Technology, Inc. All Rights Reserved */ #ifndef __DHL_COM_H__ #define __DHL_COM_H__ #include "DHL_OSAL.h" #ifdef __cplusplus extern "C" { #endif #if COMMENT ____Overview____(){} #endif /** @file DHL_COM.h À̰÷¿¡ ÀÌ ¸ðµâ¿¡ ´ëÇØ ¼³¸íÀÌ ÇÊ¿äÇÑ °¢Á¾ ³»¿ë ±â¼ú.. module overview - - APIs implementations dependencies nv parameters Å×À̺í, Ç¥, ±×¸² µîµµ ÇÊ¿äÇϸé ascii code¸¦ ÀÌ¿ëÇÏ¿© ÀÛ¼º.. (Âü°í) Á¦´ë·Î º¸ÀÌ·Á¸é ¸Ç ¿ÞÂÊÀ» Á¦¿ÜÇϰí´Â TAB µîÀÇ »ç¿ëÀ» ÇÏÁö ¾Ê¾Æ¾ß ÇÔ. example) fifo queue diagram start rp wp end +------+---+------+ | |XXX| | <--- API call +------+---+------+ @todo todo »çÇ×Àº ÄÚ¸àÆ® ¾î´À ºÎºÐÀ̵çÁö ÀÌ ¸í·É¾î¸¦ Ȱ¿ëÇÏÀÚ. */ #if COMMENT ____Config____(){} #endif /* ÀÌ ºÎºÐÀº º°µµÀÇ DHL_XXX_Config configuration file À» Ȱ¿ëÇÏ´Â °ÍÀÌ ÁÁÀ» °Í °°À½. */ #if COMMENT ____Types____(){} #endif /* ´Ù¸¥ ¸ðµâµé°ú °øÀ¯ µÇ´Â structure ¹× enumerations. */ #if COMMENT ____Defines____(){} #endif /** @brief UART ³»ºÎ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿¡·¯ °ªµé. ±×·¯³ª API´Â ¸ðµÎ DHL_RESULT ŸÀÔÀ» »ç¿ëÇØ¾ß ÇϹǷΠÁ÷Á¢ÀûÀ¸·Î À̵éÀ» »ç¿ëÇÒ ¼ö´Â ¾øÀ½. */ typedef enum { eDHL_COM_US__OK, eDHL_UART_ERROR, eDHL_UART_AlreadyOpen, eDHL_UART_OpenErr, eDHL_UART_WriteErr, eDHL_UART_UnknownCmd } tDHL_COM_UartStatus; /** @brief µ¥ÀÌÅÍ ¼ö½Å Äݹé ÇÔ¼ö ŸÀÔ. */ typedef void (*tDHL_COM_RX_CB)(UINT8 *pData, UINT32 size); /** @brief Åë½Å Æ÷Æ® ¼³Á¤ ŸÀÔ. DHL_COM_Config API ¿¡¼­ ¾î¶² ¼³Á¤À» ÇÒ °ÍÀÎÁö ÁöÁ¤. */ typedef enum { /** Åë½Å ¼Óµµ ¼³Á¤. ÀÌ ¼³Á¤À» Çϱâ Àü±îÁö´Â ¼Û¼ö½ÅÀÌ Á¦ÇѵȴÙ. ÀÎÀÚ: UINT32 baudrate. °ªÀº 9600, 19200, 115200 °ú °°ÀÌ ±×³É ¼ýÀÚ¸¦ »ç¿ëÇÑ´Ù. */ eDHL_COM_CT_Baudrate, /** Àü¼Û ¸ðµå ¼³Á¤. ÀÎÀÚ: BOOL bAsyncTxMode. TRUE¸¦ ÁöÁ¤Çϸé async mode·Î Àü¼ÛÇÑ´Ù. */ eDHL_COM_CT_AsyncTxMode, } tDHL_COM_ConfigType; /** @brief Åë½Å¿ë Æ÷Æ® ½Äº°ÀÚ. ¸¹Àº APIµéÀÌ ÀÌ ½Äº°ÀÚ¸¦ ù¹øÂ° ÀÎÀÚ·Î ¿ä±¸ÇÑ´Ù. º¸ÅëÀº ÇϳªÀÇ Åë½Å Æ÷Æ®¸¸ Á¦°øÇϴµ¥, ±×·² °æ¿ì ID´Â ¹«½ÃµÉ ¼ö ÀÖ´Ù. */ typedef UINT32 tDHL_COM_ID; #if COMMENT ____API____(){} #endif /** @brief Åë½Å ¸ðµâÀ» ÃʱâÈ­ ÇÑ´Ù. ÁÖÀÇ»çÇ×: config api¸¦ È£ÃâÇÏ¿© Åë½Å ¼³Á¤ÀÌ ¿Ï·áµÇ±â Àü ±îÁö´Â ½ÇÁ¦ Åë½Å ÀÛ¾÷Àº ÀÌ·ç¾îÁöÁö ¾Ê´Â´Ù. */ void DHL_COM_Init(void); /** @brief Åë½Å ¸ðµâÀ» ´Ý´Â´Ù. */ void DHL_COM_Uninit(void); /** @brief Tx Àü¼ÛÀÌ Áö±Ý ¹Ù·Î °¡´ÉÇÑÁö üũÇÑ´Ù. @param[in] port »ç¿ëÇÒ Åë½Å¿ë Æ÷Æ® ¹øÈ£. @return TRUE: busy. ÇöÀç´Â Àü¼Û ºÒ°¡. FALSE: not busy. Àü¼Û °¡´ÉÇÔ. */ BOOL DHL_COM_IsTxBusy(tDHL_COM_ID port); /** @brief Åë½Å Æ÷Æ®¸¦ ÅëÇØ µ¥ÀÌÅ͸¦ Àü¼ÛÇÑ´Ù. ³»ºÎ ¿É¼Ç¿¡ µû¶ó blocking callÀÌ µÉ ¼öµµ ÀÖ°í, ÀÎÅÍ·´Æ® ¶Ç´Â task¿¡¼­ Àü¼ÛÀÌ µÉ ¼öµµ ÀÖ´Ù. Àü¼Û ¹æ½Ä ¿É¼ÇÀº eDHL_COM_CT_AsyncTxMode ¸¦ »ç¿ëÇϵµ·Ï ÇÑ´Ù. @param[in] port »ç¿ëÇÒ Åë½Å¿ë Æ÷Æ® ¹øÈ£. @param[in] pData Àü¼ÛÇÒ µ¥ÀÌÅÍ ¹öÆÛ. @param[in] size Àü¼ÛÇÒ µ¥ÀÌÅÍ ±æÀÌ. ¹ÙÀÌÆ® ´ÜÀ§. */ DHL_RESULT DHL_COM_StartTx(tDHL_COM_ID port, UINT8 *pData, UINT32 size); /** @brief ÇöÀç Àü¼Û ÀÛ¾÷À» Áß´ÜÇÑ´Ù. Tx µ¿ÀÛÀÌ asynchrounous (non-blocking ¹æ½Ä) À̰í, ÇöÀç Àü¼Û ÁßÀÎ ÆÐŶÀÌ ÀÖ´Ù¸é Àü¼ÛÀ» Áß´ÜÇÑ´Ù. Tx µ¿ÀÛÀÌ synchronous ¹æ½Ä (blocking call) À̶ó¸é ÀÌ ÇÔ¼ö´Â ¾Æ¹« Àϵµ ÇÏÁö ¾Ê´Â´Ù. (ÀÌ °æ¿ì ¼³·É ´Ù¸¥ task¿¡¼­ abort¸¦ ½ÃµµÇÏ´õ¶óµµ abort´Â ¾ÈµÊ) firmware update µî¿¡¼­ ´ë·®ÀÇ Å« ÆÐŶÀ» º¸³»´Â Áß Áß´ÜÇÏ´Â °æ¿ì, ÀÌ API°¡ »ç¿ëµÉ ¼ö ÀÖ´Ù. @param[in] port »ç¿ëÇÒ Åë½Å¿ë Æ÷Æ® ¹øÈ£. */ void DHL_COM_AbortTx(tDHL_COM_ID port); /* */ BOOL DHL_COM_IsRxReady(tDHL_COM_ID port); /* */ void DHL_COM_Receive(tDHL_COM_ID port, UINT8 *pBuf, UINT32 nBufSize, UINT32 *pReadSize); /** @brief ¼ö½Å µ¥ÀÌÅ͸¦ Àü´ÞÇØ ÁÖ´Â ÄÝ¹é µî·Ï. µ¥ÀÌÅÍ ¼ö½Å¿¡ °üÇØ¼­´Â Á÷Á¢ Read, Receive µîÀÇ API´Â Á¦°øÇÏÁö ¾Ê´Â´Ù. HAL ³»ºÎ¿¡¼­ µ¥ÀÌÅÍ ¼ö½ÅÇÑ ÈÄ¿¡ »óÀ§ °èÃþ¿¡ callbackÀ» ¿Ã·ÁÁØ´Ù. ÆÐŶ Çϳª ÀüüÀÇ µ¥ÀÌÅͰ¡ ´Ù ¼ö½ÅµÈ ÀÌÈÄ¿¡ callbackÀÌ È£ÃâµÈ´Ù. Æ÷Æ® ´ç ÇϳªÀÇ ÄÝ¹é ¸¸ µî·Ï °¡´ÉÇÏ´Ù. ±âÁ¸¿¡ ¸ÕÀú µî·ÏµÈ ÄݹéÀÌ ÀÖ´Â °æ¿ì ±âÁ¸ Äݹé Á¤º¸´Â Áö¿öÁø´Ù. @param[in] port »ç¿ëÇÒ Åë½Å¿ë Æ÷Æ® ¹øÈ£. @param[in] callback µî·ÏÇÒ callback ÇÔ¼ö. */ void DHL_COM_RegisterRxCallback(tDHL_COM_ID port, tDHL_COM_RX_CB callback); /** @brief Åë½Å °ü·Ã °¢Á¾ ¼³Á¤. config api¸¦ È£ÃâÇÏ¿© Åë½Å ¼³Á¤ÀÌ ¿Ï·áµÇ±â Àü ±îÁö´Â ½ÇÁ¦ Åë½Å ÀÛ¾÷Àº ÀÌ·ç¾îÁöÁö ¾Ê´Â´Ù. @param[in] port ¼³Á¤À» ÇÒ Åë½Å Æ÷Æ®. global ÇÑ ¼³Á¤ÀÎ °æ¿ì ÀÌ °ªÀº ¹«½ÃµÈ´Ù. @param[in] type ¼³Á¤ Á¾·ù. @param[in] data ¼³Á¤ °ª. ¾Æ·¡¿¡´Â ŸÀÔÀÌ void* ¶ó°í µÇ¾î ÀÖÁö¸¸ type °ª¿¡ µû¶ó ½ÇÁ¦ ŸÀÔÀº ´Þ¶óÁø´Ù. */ void DHL_COM_Config(tDHL_COM_ID port, tDHL_COM_ConfigType type, void *data); /** */ void DHL_COM_Status(void); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* __DHL_COM_H__ */