/** @file DMW_PsiSdds.h @brief Copyright 2010 Digital STREAM Technology, Inc. All Rights Reserved */ #ifndef __DMW_PSI_SDDS_H__ #define __DMW_PSI_SDDS_H__ #include "DHL_Types.h" #include "DLIB_SDDS.h" // Çì´õ ÆÄÀÏ ¾È¿¡¼­ DLIB ±¸Á¶Ã¼¸¦ Á÷Á¢ »ç¿ëÇÔ. #ifdef __cplusplus extern "C" { #endif #if COMMENT ____Overview____(){} #endif /** @file DHL_MMM.h À̰÷¿¡ ÀÌ ¸ðµâ¿¡ ´ëÇØ ¼³¸íÀÌ ÇÊ¿äÇÑ °¢Á¾ ³»¿ë ±â¼ú.. module overview - - APIs implementations dependencies */ #if COMMENT ____Config____(){} #endif /* ÀÌ ºÎºÐÀº º°µµÀÇ DHL_XXX_Config configuration file À» Ȱ¿ëÇÏ´Â °ÍÀÌ ÁÁÀ» °Í °°À½. */ /* Ç÷§Æû¿¡ µû¶ó ´Þ¶óÁü. EMMAÀÇ °æ¿ì NOR flash°¡ 4MB ¹Û¿¡ ¾ÈµÈ´Ù. image Å©±â°¡ 4M¸¦ ³ÑÁö ¾Ê´Â´Ù. */ #define SDDS_MAX_MODULE_SIZE (0x400000) #if COMMENT ____Types____(){} #endif /* client should fill this values, and pass back to MW. */ typedef struct { UINT32 oui; // IEEE OUI data UINT16 model; // product model. oui specific. 0xFFFF means any model. UINT16 version; // product version. oui specific. 0xFFFF means any version. } S_SDDS_CBPARAM_GET_OUI; typedef struct { sddsCompatDesc_t *desc; // [in] üũÇϰíÀÚ ÇÏ´Â compat. µð½ºÅ©¸³ÅÍ. BOOL isOk; // [out] ÀÌ descriptor°¡ ¸ÂÀ¸¸é TRUE·Î ¼³Á¤. } S_SDDS_CBPARAM_CHECK_DESC; typedef struct { //int index; // module index. from 0.. UINT16 id; // module id. UINT32 size; // ¸ðµâ ÀüüÀÇ Å©±â. ÀÌ Å©±â¿¡ ÇØ´çµÇ´Â ¹öÆÛ¸¦ ÇÒ´çÇØ µÎ¾î¾ß ÇÑ´Ù. UINT8 *name; UINT8 *version; UINT8 type; // ModuleType_BootLoader or ModuleType_Application // ÀÌ Æß¿þ¾î°¡ µ¿ÀÛ °¡´ÉÇÑ Çϵå¿þ¾î ¹öÀü (¸®ºñÀü) ¸®½ºÆ®. UINT8 numSupportedHwVersions; UINT8 *supportedHwVersions; UINT32 crc32; // ÀÌ Æß¿þ¾î ÆÄÀÏÀÇ crc32. // ´Ü¼øÈ÷ À̸§/¹öÀü ¸¸À¸·Î difference ¿©ºÎ¸¦ ½Å·ÚÇϱâ Èûµé´Ù¸é // flash¿¡ ±â·ÏµÈ firmware Àüü¿¡ ´ëÇÑ crc32¸¦ ºñ±³ÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. // À§ ¸ðµç »çÇ×ÀÌ Á¶°Ç¿¡ ¸Â´Â´Ù¸é ¾Æ·¡ isOk¸¦ True·Î ¼³Á¤ÇØÁà¾ß ÇÑ´Ù. BOOL isOk; // [out] } S_SDDS_CBPARAM_CHECK_FILE; typedef struct { UINT32 total_blocks; } S_SDDS_CBPARAM_DOWNLOAD_START; typedef struct { sddsDdbPtr_t ddb; UINT32 idxblk; UINT32 offset; UINT32 received_blocks; UINT32 total_blocks; } S_SDDS_CBPARAM_BLOCK_RECEIVED; typedef enum { eSDDS_CB_TYPE_GetOUI, // ¾ÆÁÖ °£´ÜÇÏ°Ô compat descriptor¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Â ¹æ¹ý. // Á¦Á¶»çÀÇ OUI µ¥ÀÌÅ͸¸ ¸®ÅÏÇØ ÁÖ¸é MW°¡ ¾Ë¾Æ¼­ ¼±ÅÃÇÑ´Ù. // param: S_SDDS_CBPARAM_GET_OUI * eSDDS_CB_TYPE_CheckCompatDesc, // Á» ´õ ¼¼¹ÐÇÏ°Ô compat desc. ¼±ÅÃÇÏ´Â ¹æ¹ý. // compat desc Æ÷ÀÎÅÍ ÀÚü¸¦ ¹Þ¾Æ¼­ ³»¿ëÀ» È®ÀÎ ÇØ º»ÈÄ yes/no ´äÇØÁØ´Ù. // param: S_SDDS_CBPARAM_CHECK_DESC * // MW¿¡¼­ÀÇ ¿ì¼± ¼øÀ§: // eSDDS_CB_TYPE_GetOUI -> eSDDS_CB_TYPE_CheckCompatDesc // // ¸ÕÀú GetOUI¸¦ ¾ò¾îº¸°í, OUI¸¦ ¾òÀ¸¸é ÀÌ °ªÀ» »ç¿ëÇÑ´Ù. // µû¶ó¼­ CheckCompatDesc ÄݹéÀ» »ç¿ëÇÏ·Á¸é GetOUI´Â ±¸ÇöÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù. eSDDS_CB_TYPE_NotifySchedules, // // param: sddsScheduleDesc_t * eSDDS_CB_TYPE_CheckModuleInfo, // // param: S_SDDS_CBPARAM_CHECK_FILE * eSDDS_CB_TYPE_DownloadNotRequired, // ¸ðµâ üũ °á°ú, ´Ù¿î·Îµå°¡ ÇÊ¿äÇÏÁö ¾Ê°Ô µÈ °æ¿ì¿¡ È£ÃâµÈ´Ù. // ÀÌ°Ô È£Ã⠵Ǹé dsi/dii°¡ º¯°æµÇ±â Àü±îÁö´Â // ´õ ÀÌ»óÀÇ sdds ÁøÇàÀº ÀÌ·ç¾îÁöÁö ¾Ê´Â´Ù. // // param: none eSDDS_CB_TYPE_DownloadStarted, // ¸ðµç Á¡°Ë °úÁ¤ÀÌ ³¡³­ ÈÄ¿¡ ´Ù¿î·Îµå ÇÒ ¸ðµâÀÌ ÀÖ´Â °æ¿ì È£ÃâµÈ´Ù. // ´Ù¿î·Îµå ÇÒ ¸ðµâÀÌ Çϳªµµ ¾ø´Â °æ¿ì¿¡´Â È£ÃâµÇÁö ¾Ê´Â´Ù. // // param: S_SDDS_CBPARAM_DOWNLOAD_START eSDDS_CB_TYPE_BlockReceived, // ddb blockÀÌ ¹Þ¾ÆÁú ¶§ ¸¶´Ù È£ÃâµÈ´Ù. // application¿¡¼­´Â ddb block ³»ÀÇ ¹öÆÛ ³»¿ëÀ» ´Ù¸¥ °÷À¸·Î memcpy ÇØ µÎ¾î¾ß ÇÑ´Ù. // ƯÁ¤ block ¿¡ ´ëÇØ¼­ ´Ü 1ȸ¸¸ callback µÈ´Ù. Áï Áߺ¹ È£ÃâµÇÁö´Â ¾Ê´Â´Ù. // // param: S_SDDS_CBPARAM_BLOCK_RECEIVED * eSDDS_CB_TYPE_DownloadCompleted, // °¢ ¸ðµâÀÇ ´Ù¿î·Îµå°¡ ¿Ï·á µÇ¸é È£ÃâµÈ´Ù. // ¸ðµç ¸ðµâÀÌ ´Ù ´Ù¿î·Îµå°¡ ¿Ï·á µÈ ÈÄ¿¡µµ È£ÃâµÈ´Ù. (module id: -1) // // param: module id or (UINT32)-1 if all completed. eSDDS_CB_TYPE_DownloadStopped, // ´Ù¿î·Îµå°¡ ÀϽà ÁßÁöµÈ °æ¿ì¿¡ È£ÃâµÈ´Ù. // eSDDS_CB_TYPE_DownloadStarted °¡ ¾ÆÁ÷ ºÒ¸®±â Àü¿¡µµ ÀÌ ÄݹéÀº È£ÃâµÉ ¼ö ÀÖ´Ù. // // param: none eSDDS_CB_TYPE_ResetDownload, // // param: none eSDDS_CB_TYPE_UserAction, // // param: userparam } E_SDDS_CB_TYPE; typedef void (*F_SDDS_CALLBACK)(E_SDDS_CB_TYPE cbtype, void *param); #if COMMENT ____Defines____(){} #endif #if COMMENT ____API____(){} #endif /* SDDS ¸ðµâÀ» ÃʱâÈ­ ÇÑ´Ù. DMW ¸ðµâ ÃʱâÈ­ ÇÒ ¶§ ºÒ·ÁÁö¸é µÈ´Ù. dependency: ŽºÅ© µîÀ» DHL_TIMER ¸ðµâÀ» »ç¿ëÇÏ¹Ç·Î ÇØ´ç ºÎºÐÀÌ ¸ÕÀú ÃʱâÈ­ µÇ¾î ÀÖ¾î¾ß ÇÔ. */ void DMW_SDDS_Init(void); /* SDDS ¸ðµâ¿¡ »ç¿ëµÉ user callbackÀ» µî·ÏÇÑ´Ù. ¾Æ¹« ¶§³ª ºÒ·Áµµ µÊ. º¸ÅëÀº Init ÈÄ¿¡ Start Àü¿¡ ºÒ·¯ÁÖ¸é ÁÁ´Ù. */ void DMW_SDDS_RegisterCallback(F_SDDS_CALLBACK cb); /* SDDS ´Ù¿î·Î´õ µ¿ÀÛÀ» °³½ÃÇÑ´Ù. ¸¸¾à ÀÌÀü¿¡ µ¿ÀÛ Çß´Ù°¡ Stop µÈ »óŶó¸é, ´Ù½Ã Resume ÇÑ´Ù. */ void DMW_SDDS_Start(int pid); /* SDDS ´Ù¿î·Î´õ µ¿ÀÛÀ» ÀϽà ÁßÁöÇÑ´Ù. ¸ðµç psi monitor´Â ÁߴܵȴÙ. ÇÏÁö¸¸ ÇöÀç ¼ö½ÅµÇ¾î ÀÖ´Â µ¥ÀÌÅÍ ¹× ÀÚ·á´Â º¸Á¸µÈ´Ù. ³ªÁß¿¡ ´Ù½Ã Start API¸¦ È£ÃâÇÏ¿© resume °¡´ÉÇÏ´Ù. */ void DMW_SDDS_Stop(void); /* */ void DMW_SDDS_Reset(void); /* */ void DMW_SDDS_PrintStatus(int level); /* */ void DMW_SDDS_UserAction(UINT32 userparam); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* __DMW_PSI_SDDS_H__ */