//-----------------------------------------------------------------------------// // dst_eroum_interface.h // V2.23 ÀÌⱸ POWER °ü·Ã Á¤ÀÇ Á¦°Å // V2.22 ÀÌⱸ ¿ÜºÎ ÀÔ·Â °ü·Ã Á¦°Å // V2.20 ÀÌⱸ 2012.02.20 Audio Info Ãß°¡ // Open ÇÔ¼ö¸¦ TV/CVBS ºÐ¸® // Power Manager ÇÔ¼ö Ãß°¡ // Rear View Detect ÇÔ¼ö Ãß°¡ // V1.01 ÀÌⱸ 2012.01.19 Dual Decoding Ãß°¡ // V1.00 ÀÌⱸ 2012.01.13 First Draft //-----------------------------------------------------------------------------// #ifndef __DST_EROUM_INTERFACE_H__ #define __DST_EROUM_INTERFACE_H__ #ifdef DSTAR #include #include #else #include #include "DHL_OSAL.h" #endif #include #include "DST_Types.h" #ifdef DSTAR #define DST_Printf printf #else #define DST_Printf printf #endif #define T() DST_Printf("[INFO][%d]%s %d\n",__LINE__,__func__, (int)DST_OS_GetTickCount()) typedef unsigned int DHL_HANDLE; // ¿¡·¯ ÄÚµå Á¤ÀÇ typedef enum { DHL_OK_, DHL_FAIL_ } DHL_ERROR; // ÀԷµǴ ºñµð¿À ¼Ò½ºÀÇ ASPECT // ¸í½ÃÀûÀ¸·Î 16:9 ÀÔ·ÂÀÌ ¾Æ´Ï¶ó¸é ¸ðµÎ 4:3À¸·Î ó¸® typedef enum { DHL_SOURCE_UNKNOWN, DHL_SOURCE_4x3, DHL_SOURCE_16x9 } DHL_SOURCE_ASEPCT; // singal info Äݹé ÇÔ¼öÀÇ prototype // TV¿¡¼­ ºñµð¿À µðÄÚµùÀÌ ½ÃÀÛµÈ °æ¿ì È­¸éÇØ»óµµ Á¤º¸¸¦ Äݹé // CVBS¿¡¼­ ºñµð¿À ÀÔ·ÂÀÌ ½ÃÀÛµÈ °æ¿ì È­¸éÇØ»óµµ Á¤º¸¸¦ Äݹé // CVBS¿¡¼­ ºñµð¿À ÀÔ·ÂÀÌ ¾ø¾îÁø °æ¿ì È­¸é nWidth¿Í nHeight ¸¦ 0À¸·Î Äݹé typedef void (*DHL_SignalInfoCallBack)( int nWidth, // ºñµð¿À Æø int nHeight, // ºñµð¿À ³ôÀÌ int RefreshRate, // Refresh À² bool bInterlaced, // ÀÎÅÍ·¹À̽º ¿©ºÎ true = interlace DHL_SOURCE_ASEPCT); // ºñµð¿À ÀÔ·Â ¼Ò½ºÀÇ ¿ÍÀ̵忩ºÎ // B-CAS Ä«µå°¡ ²ÈÈ÷°Å³ª Á¦°ÅµÉ ¶§ ¹ß»ý // TV°¡ ±¸µ¿µÇ°í CAS°ü·Ã ÃʱâÈ­°¡ ¿Ï·áµÇ¸é È£ÃâµÊ // Ä«µå°¡ »ðÀÔ¶Ç´Â Á¦°Å½Ã¸¶´Ù È£ÃâµÊ typedef enum { DHL_CAS_UNKNOWN, DHL_CAS_ERROR, DHL_CAS_INSERTED, DHL_CAS_ACTIVATED, DHL_CAS_REMOVED } DHL_CAS_STATE; // Caption ÄݹéÀÇ prototype typedef void (*DHL_CCCallBack) (DS_U8 *buffer, int Context); // video start Äݹé ÇÔ¼öÀÇ prototype // TV VideoµðÄÚµùÀÌ ½ÃÀ۵Ǿî È­¸éÀÌ ³ª¿À±â ½ÃÀÛÇÏ¸é ¹ß»ýÇÏ´Â Callback // Mute Á¦¾î¿¡ »ç¿ëµÊ typedef void (*DHL_VideoStartCallBack)(); // SI Äݹé ÇÔ¼öÀÇ prototype typedef void (*DHL_SiCallBack)(DS_U32 RF, DS_U32 nRequestID, DS_U8** buff, DS_U32 nBuffLength); // IR ÄݹéÀÇ ÇÁ·ÎÅäŸÀÔ typedef void (*DHL_IrCallBack) (DS_U32 key, DS_U32 repeat, DS_U32 tick); // ºñµð¿À µðÄÚµù ÄÚµ¦ typedef enum { DHL_VIDEO_NONE, DHL_VIDEO_MPEG1, DHL_VIDEO_MPEG2, DHL_VIDEO_MPEG4 } DHL_VIDEO_TYPE; // ¿Àµð¿À µðÄÚµù ÄÚµ¦ typedef enum { DHL_AUDIO_NONE, DHL_AUDIO_MPEG1, DHL_AUDIO_MPEG2, DHL_AUDIO_AAC_ADTS, DHL_AUDIO_AAC_LATM, DHL_AUDIO_AC3, }DHL_AUDIO_TYPE; // ¿Àµð¿À LR ¼³Á¤ // Dual Mono°¡ ¾Æ´Ñ °æ¿ì Ç×»ó DHL_AUDIO_BOTH·Î È£ÃâÇÔ typedef enum { DHL_AUDIO_BOTH, DHL_AUDIO_LEFT, DHL_AUDIO_RIGHT }DHL_AUDIO_LR; // Play ÁßÀÎ ¿Àµð¿ÀÀÇ ¸ðµå¸¦ ¹ÝȯÇÑ´Ù. typedef enum { DHL_AUDIO_UNKNOWN, // ¿Àµð¿À ¸ðµå¸¦ ¾Ë ¼ö ¾ø°Å³ª ¿Àµð¿À°¡ ½ÃÀÛÇÏÁö ¾ÊÀº °æ¿ì DHL_AUDIO_DUAL_MONO, DHL_AUDIO_MONO, DHL_AUDIO_STEREO, DHL_AUDIO_5_1 } DHL_AUDIO_MODE; typedef enum { DHL_ASPECT_4x3_4x3, // 4:3 ÀԷ¼ҽº 4:3 Ãâ·Â DHL_ASPECT_16x9_4x3_WIDE, // 16:9 ÀԷ¼ҽº 4:3 Ãâ·Â wide DHL_ASPECT_16x9_4x3_NORMAL, // 16:9 ÀԷ¼ҽº 4:3 Ãâ·Â normal DHL_ASPECT_16x9_4x3_ZOOM, // 16:9 ÀԷ¼ҽº 4:3 Ãâ·Â zoom } DHL_ASPECT_RATIO; // audio start Äݹé ÇÔ¼öÀÇ prototype // TV AudioµðÄÚµùÀÌ ½ÃÀ۵Ǿî È­¸éÀÌ ³ª¿À±â ½ÃÀÛÇÏ¸é ¹ß»ýÇÏ´Â Callback // Mute Á¦¾î¿¡ »ç¿ëµÊ typedef void (*DHL_AudioStartCallBack)(DS_U32); #if 0 ____System___() #endif // SYSTEM ÃʱâÈ­ DHL_ERROR DHL_SYS_Initialize(); // TV ½ÃÀÛ DHL_ERROR DHL_SYS_TV_Open( DHL_SignalInfoCallBack, DHL_VideoStartCallBack, DHL_AudioStartCallBack, DHL_SiCallBack, DHL_CCCallBack, DHL_IrCallBack); // TV Á¾·á DHL_ERROR DHL_SYS_TV_Close(); #if 0 ____Video___() #endif // Video ½ÃÀÛ DHL_ERROR DHL_VID_Start(DS_U16 VideoPID, DS_U16 PcrPID, DHL_VIDEO_TYPE); // Dual Decoding Video ½ÃÀÛ // Ç®¼¼±×¿Í ¿ø¼¼±× µ¿½Ã¿¡ ºñµð¿À µðÄÚµùÀ» ½ÃÀÛÇÏ´Â ÇÔ¼ö // bDisplayFullSeg = true Ç®¼¼±× ºñµð¿À¸¦ È­¸é¿¡ Ç¥½Ã // bDisplayFullSeg = false ¿ø¼¼±× ºñµð¿À¸¦ È­¸é¿¡ Ç¥½Ã // ¾Æ·¡ µî°ú °°ÀÌ ÀÎÀÚÀÇ °ªÀÌ º¯°æµÇ´Â °æ¿ì¿¡µµ Video Stop ¾øÀÌ È£ÃâÀÌ °¡´ÉÇϸç // À̶§ ºñµð¿À ²÷±èÀÌ ¾ø¾î¾ß ÇÔ // 1. Ç®¼¼±×¿¡¼­ ¿ø¼¼±×·Î º¯°æµÇ´Â °æ¿ìÀÇ È£Ãâ // DHL_VID_DualStart(10, 11, DHL_VIDEO_MPEG2, 20,21, DHL_VIDEO_MPEG4, true); // DHL_VID_DualStart(10, 11, DHL_VIDEO_MPEG2, 20,21, DHL_VIDEO_MPEG4, false); // 2. °°Àº RF³»¿¡¼­ Ç®¼¼±×¸¸ ´Ù¸¥ ä³Î·Î º¯°æµÈ °æ¿ì // DHL_VID_DualStart(10, 11, DHL_VIDEO_MPEG2, 20,21, DHL_VIDEO_MPEG4, true); // DHL_VID_DualStart(12, 11, DHL_VIDEO_MPEG2, 20,21, DHL_VIDEO_MPEG4, true); // 3. ¿ø¼¼±× ä³ÎÀÌ ¾ø´Ù°¡ ³ªÅ¸³­ °æ¿ì // DHL_VID_DualStart(10, 11, DHL_VIDEO_MPEG2, 0, 0, DHL_VIDEO_NONE, true); // DHL_VID_DualStart(12, 11, DHL_VIDEO_MPEG2, 20, 21, DHL_VIDEO_MPEG4, true); DHL_ERROR DHL_VID_DualStart( DS_U16 FullSegVideoPID, DS_U16 FullSegPcrPID, DHL_VIDEO_TYPE typeFullSeg, DS_U16 OneSegVideoPID, DS_U16 OneSegPcrPID, DHL_VIDEO_TYPE typeOneSeg, bool bDisplayFullSeg); // Video Á¾·á DHL_ERROR DHL_VID_Stop(); // Video Mute ºñµð¿À È­¸éÀ» °ËÀº»öÀ¸·Î º¸ÀÌÁö ¾Êµµ·Ï ÇÔ. CVBS¿¡¼­µµ µ¿ÀÏ // bMute = false --> Video Unmute // bMute = true --> Video Mute DHL_ERROR DHL_VID_Mute(bool bMute); // Video Alive µðÄÚµùµÈ ºñµð¿À°¡ ÀÖ´ÂÁö ¿©ºÎ¸¦ ¾Ë·ÁÁÖ´Â ÇÔ¼ö bool DHL_VID_Alive(); // Video Aspect ¼³Á¤ // ÀÔ·Â ASPECT(4:3 16:9) ¿¡µû¶ó °¢°¢ ³× °¡Áö ¸ðµå°¡ ÀÖÀ½ //DHL_ERROR DHL_VID_Aspect(DHL_ASPECT_RATIO); DHL_ERROR DHL_VID_Aspect(DHL_ASPECT_RATIO ar, DS_U16 w, DS_U16 h); #if 0 ____Audio___() #endif // Audio ½ÃÀÛ // PcrPID == 0 Àΰæ¿ì Audio Only ä³Î DHL_ERROR DHL_AUD_Start(DS_U16 AudioPid, DS_U16 PcrPID, DHL_AUDIO_TYPE); // Audio Á¾·á DHL_ERROR DHL_AUD_Stop(); // Audio Volume 0 is mute DHL_ERROR DHL_AUD_Volume(DS_U8 nVal); // Audio Alive µðÄÚµùµÈ ¿Àµð¿À°¡ ÀÖ´ÂÁö ¿©ºÎ¸¦ ¾Ë·ÁÁÖ´Â ÇÔ¼ö bool DHL_AUD_Alive(); DHL_AUDIO_MODE DHL_AUD_GetMode(); #if 0 ____SI___() #endif // PAT Monitoring // PAT¸¦ ¸ð´ÏÅ͸µ ÇÑ´Ù. // CRC º¯°æ½Ã ¸¶´Ù Äݹé // PID = 0x00 DHL_HANDLE DHL_SI_MonitorPAT(DS_U32 RF, DS_U32 nRequestID); // PMT Monitoring // PMT¸¦ ¸ð´ÏÅ͸µ ÇÑ´Ù. // RF´ç ÃÖ´ë 16°³±îÁö ¸ð´ÏÅ͸µ ÇÑ´Ù. // CRC º¯°æ½Ã ¸¶´Ù Äݹé // PID = depend on PAT // DHL_HANDLE DHL_SI_MonitorPMT(DS_U32 RF, DS_U32 nRequestID, DS_U16 Pid, DS_U16 source_id); // SDT Monitoring // SDT¸¦ ¸ð´ÏÅ͸µÇÑ´Ù. // CRC º¯°æ½Ã ¸¶´Ù Äݹé // PID = 0x11 DHL_HANDLE DHL_SI_MonitorSDT(DS_U32 RF, DS_U32 nRequestID); // NIT Monitoring // NIT¸¦ ¸ð´ÏÅ͸µÇÑ´Ù. // CRC º¯°æ½Ã ¸¶´Ù Äݹé // PID = 0x10 DHL_HANDLE DHL_SI_MonitorNIT(DS_U32 RF, DS_U32 nRequestID); // CDT Monitoring // CDT¸¦ ¸ð´ÏÅ͸µÇÑ´Ù. // ¹æ¼Û±¹ ·Î°í¸¦ ¹Þ´Â ±â´ÉÀ¸·Î ¸ÖƼ¼½¼Ç¿¡ ´ëÇÑ Áö¿ø ÇÊ¿ä // CRC º¯°æ½Ã ¸¶´Ù Äݹé // PID = 0x29 DHL_HANDLE DHL_SI_MonitorCDT(DS_U32 RF, DS_U32 nRequestID); // ECM Monitoring // CRC º¯°æ½Ã ¸¶´Ù Äݹé // PID = depend on PMT DHL_HANDLE DHL_SI_MonitorECM(DS_U32 RF, DS_U32 nRequestID, DS_U16 Pid); // BIT Monitoring // CRC º¯°æ½Ã ¸¶´Ù Äݹé // PID = 0x24 DHL_HANDLE DHL_SI_MonitorBIT(DS_U32 RF, DS_U32 nRequestID); // TOT Monitoring // CRC º¯°æ½Ã ¸¶´Ù Äݹé // PID = 0x14 TableID = 0x73 DHL_HANDLE DHL_SI_MonitorTOT(DS_U32 RF, DS_U32 nRequestID); // TOT Monitoring // CRC º¯°æ½Ã ¸¶´Ù Äݹé // PID = 0x14 TableID = 0x70 DHL_HANDLE DHL_SI_MonitorTDT(DS_U32 RF, DS_U32 nRequestID); // EIT Monitoring // HEIT = 0x12 TableID = 0x4E~0x5F SourceID = depend on PMT // MEIT = 0x26 // LEIT - 0x27 DHL_HANDLE DHL_SI_MonitorEIT(DS_U32 RF, DS_U32 nRequestID, DS_U16 pid, DS_U16 source_id); DHL_HANDLE DHL_SI_MonitorETT(DS_U32 RF, DS_U32 nRequestID, DS_U16 pid, DS_U16 source_id); DHL_HANDLE DHL_SI_MonitorTVCT(DS_U32 RF, DS_U32 nRequestID); DHL_HANDLE DHL_SI_MonitorCVCT(DS_U32 RF, DS_U32 nRequestID); DHL_HANDLE DHL_SI_MonitorMGT(DS_U32 RF, DS_U32 nRequestID); DHL_HANDLE DHL_SI_MonitorSTT(DS_U32 RF, DS_U32 nRequestID); DHL_HANDLE DHL_SI_MonitorRFUpdate(DS_U32 RF, DS_U32 nRequestID); DHL_HANDLE DHL_SI_MonitorSCTE_CVT(DS_U32 RF, DS_U32 nRequestID); DHL_HANDLE DHL_SI_MonitorSCTE_DII(DS_U32 RF, DS_U32 nRequestID, DS_U16 pid); DHL_HANDLE DHL_SI_MonitorSCTE_DDB(DS_U32 RF, DS_U32 nRequestID, DS_U16 pid); // Monitoring Stop DHL_ERROR DHL_SI_MonitorStop(DHL_HANDLE* handle); #if 0 ____Tuner___() #endif typedef enum // A65 Table 6.5 Modulation Modes { DHL_MODULATION_NULL, DHL_MODULATION_64QAM = 2, DHL_MODULATION_256QAM = 3, DHL_MODULATION_8VSB = 4, DHL_MODULATION_16VSB =5 } DHL_MODULATION_MODE; // Æ©³Ê ½ÃÀÛ // DHL_ERROR DHL_TUN_Start(int rf, DHL_MODULATION_MODE nMode = DHL_MODULATION_8VSB); DHL_ERROR DHL_TUN_Start(int rf, DHL_MODULATION_MODE nMode); // Æ©³Ê Á¾·á DHL_ERROR DHL_TUN_Stop(); // ½ÅÈ£Á¤º¸ // °¢ °ªÀÇ ¹üÀ§´Â 0-10000 // SignalStrength ½ÅÈ£¼¼±â // BERA ¿ø¼¼±×ÀÇ Bit Error Rate // BERB Ç®¼¼±×ÀÇ Bir Error Rate DHL_ERROR DHL_TUNE_Info(DS_U8 RF, int *SignalStrength, bool *bLock, int *power, int *nSNR); #if 0 ____CAS___() #endif // Ä«½º Åë½Å DHL_ERROR DHL_CAS_Transaction(DS_U8 Cmd[188], DS_U8 nCmdLen, DS_U8 Ret[188]); // Multi2 PID ¼³Á¤ // Video Audio CC PID¸¦ ¼³Á¤ÇÑ´Ù. DHL_ERROR DHL_CAS_SetPid(DS_U16 Pid); // Multi2 PID ÃʱâÈ­ // DHL_CAS_SetPid·Î ¼³Á¤ÇÑ ¸ðµç °ªÀ» Áö¿ì°í ÃʱâÈ­ÇÑ´Ù. DHL_ERROR DHL_CAS_ResetPid(); void DHL_GFX_Open(); void DHL_GFX_Draw(OSD_PIXEL_T *src, int x, int y, int w, int h); #if 0 ____IR___() #endif // ŰÆÐµåÀÇ °ªÀ» °¡Á®¿Â´Ù. // 1 : POWER 2:UP 3:DN DS_U8 DHL_GetKeyPadGPIO(); void DHL_SetLED(bool bRed, bool bGreen); void DHL_SetCh34(DS_U8 nVal); #if 0 ____OS___() #endif DS_U32 DST_OS_GetTickCount(); void DST_OS_Delay(DS_U32 Ticks); DS_U32 DST_OS_GetTicksPerSecond(); void DST_OS_GetRunTime(DS_U32 *hour, DS_U32 *min, DS_U32 *sec); DS_U32 DST_OS_SpawnTask (void (*func)(void* ), char *name, DS_U16 prio, DS_U16 stacksize, DS_U32 arg); void DST_OS_SelfDeleteTask(); DS_U32 DST_OS_CreateMessageQueue (const char *name, DS_U32 option, DS_U32 maxMessage, DS_U32 messageLength); DS_U32 DST_OS_DeleteMessageQueue(DS_U32 qId); DS_U32 DST_OS_ReceiveMessage_Wait(DS_U32 qId, DS_U32 *msgBuf, DS_U32 maxLen, DS_U32 *retLen, DS_U32 timeOut); DS_U32 DST_OS_ReceiveMessage_NoWait(DS_U32 qId, DS_U32 *msgBuf, DS_U32 maxLen, DS_U32 *retLen); DS_U32 DST_OS_SendMessage (DS_U32 qId, DS_U32 *pBuffer, DS_U32 nBytes); DS_U32 DST_OS_CreateLock(char *name); void DST_OS_Lock(DS_U32 id); void DST_OS_Unlock(DS_U32 id); void *_DST_OS_Malloc(unsigned int size, const char* func, int nLine); void *_DST_OS_Calloc(unsigned int count, unsigned int size, const char* func, int nLine); void _DST_OS_Free(void *where, const char* func, int nLine); void DST_OS_PrintMemUnit(void); #define DST_OS_Malloc(a) _DST_OS_Malloc(a, __func__, __LINE__) #define DST_OS_Calloc(a, b) _DST_OS_Calloc(a, b, __func__, __LINE__) #define DST_OS_Free(block) { \ _DST_OS_Free(*(void **)block, __func__, __LINE__); \ *(void **)block =NULL; \ } ///*extern "C" */void *DST_OS_MallocDirect(int size); // malloc ///*extern "C" */void *DST_OS_CallocDirect(int num, int size); // calloc ///*extern "C" */void *DST_OS_ReallocDirect(void *ptr, int size); // realloc ///*extern "C" */void DST_OS_FreeDirect( void *ptr); // free ///*extern "C" */int DST_OS_MemSize(void *ptr); #if 0 ____POWER___() #endif void DHL_SYS_Off(); void DHL_SYS_Reboot(); void DHL_POWER_Display(bool bOn); // Return °ªÀÌ 0À̸é Bank0 1À̸é Bank1 bool DHL_INFO_GetBankNumber(); void DHL_INFO_SetBankNumber(DS_U8 data); bool DHL_INFO_GetLastPowerState(); void DHL_INFO_SetLastPowerState(bool bOn); #if 0 ____Flash_Memory___() #endif extern DS_U32 FLASH_TOTAL_SIZE; //#define FLASH_TOTAL_SIZE (8*1024*1024) #define FLASH_BOOT_POS (0) #define FLASH_BOOT_SIZE (192 * 1024) #define FLASH_BANK0_POS (0x0030000) extern DS_U32 FLASH_BANK1_POS; //#define FLASH_BANK1_POS (0x400000) #define FLASH_BANK_SIZE (3768*1024) #define FLASH_BANK_SELECT_POS (0x3DE000) #define FLASH_BANK_SELECT_SIZE (4*1024) #define FLASH_LAST_POWER_POS (0x3DF000) #define FLASH_LAST_POWER_SIZE (4*1024) #define FLASH_CH_MAP_POS (0x3E0000) #define FLASH_CH_MAP_SIZE (128*1024) void DHL_Flash_Write(DS_U32 address, DS_U32 nSize, DS_U8 *data); // È£ÃâÇÑ ÂÊ¿¡¼­ ¸Þ¸ð¸® ÇØÁ¦ ÇÊ¿ä DS_U8* DHL_Flash_Read(DS_U32 address, DS_U32 nSize); // ministd¿¡¼­ Áö¿øÇÏÁö ¾Ê´Â stdc ÇÔ¼ö int dst_atoi(char *st); #endif // __DST_EROUM_INTERFACE_H__