| 1 | /* |
|---|
| 2 | DMW_PsiAPI.h |
|---|
| 3 | |
|---|
| 4 | DST TV MW PSI Scan Module |
|---|
| 5 | |
|---|
| 6 | PSI Scan API implementation |
|---|
| 7 | |
|---|
| 8 | Copyright 2006~2010 Digital STREAM Technology, Inc. |
|---|
| 9 | All Rights Reserved |
|---|
| 10 | |
|---|
| 11 | */ |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | #ifndef __DMW_PSI_API_H__ |
|---|
| 15 | #define __DMW_PSI_API_H__ |
|---|
| 16 | |
|---|
| 17 | |
|---|
| 18 | #include "DHL_PSI.h" |
|---|
| 19 | |
|---|
| 20 | //#include "DMW_PsiTypes.h" |
|---|
| 21 | #include "DMW_PsiConfig.h" |
|---|
| 22 | |
|---|
| 23 | #include "DLIB_PSI.h" |
|---|
| 24 | #include "DLIB_PSIP.h" |
|---|
| 25 | |
|---|
| 26 | |
|---|
| 27 | |
|---|
| 28 | |
|---|
| 29 | #if DMW_PSI_SUPPORT_ELAPSED_TIMER |
|---|
| 30 | #include "DMW_Timer.h" |
|---|
| 31 | #endif |
|---|
| 32 | |
|---|
| 33 | |
|---|
| 34 | #ifdef __cplusplus |
|---|
| 35 | extern "C" { |
|---|
| 36 | #endif |
|---|
| 37 | |
|---|
| 38 | |
|---|
| 39 | #if COMMENT |
|---|
| 40 | ____Overview____(){} |
|---|
| 41 | #endif |
|---|
| 42 | |
|---|
| 43 | /* |
|---|
| 44 | =========================================================== |
|---|
| 45 | DST TV Middleware: PSI Scan Module, Operation Overview |
|---|
| 46 | =========================================================== |
|---|
| 47 | |
|---|
| 48 | ÀÌ PSI scan ¸ðµâÀº TV Viewing, TV recording ÀÛ¾÷¿¡ ÇÊ¿äÇÑ ¸ðµç Å×À̺íÀ» |
|---|
| 49 | ´Ù¿î·Îµå ÇÏ¿© »ç¿ëÀÌ ¿ëÀÌÇÑ ÇüÅ·ΠÁ¦°øÇÏ´Â ±â´ÉÀ» ´ã´çÇÑ´Ù. |
|---|
| 50 | |
|---|
| 51 | ´Ù¿î·Îµå ´ë»óÀÌ µÇ´Â Å×À̺í Á¾·ù: |
|---|
| 52 | PSI |
|---|
| 53 | PAT, PMT |
|---|
| 54 | PSIP |
|---|
| 55 | MGT, VCT, STT, RRT, EIT, ETT |
|---|
| 56 | ±âŸ |
|---|
| 57 | EAS (emergency alert system) section |
|---|
| 58 | |
|---|
| 59 | °¢ Å×À̺íµéÀº ¼·Î dependency °ü°è°¡ Á¸ÀçÇÑ´Ù. |
|---|
| 60 | ¿¹¸¦ µé¾î PMT¸¦ ¼ö½ÅÇϱâ À§Çؼ´Â PAT¸¦ ¸ÕÀú ¼ö½ÅÇÑ ÈÄ¿¡ PMT pid¸¦ ¾Ë¾Æ³½ ÈÄ¿¡¾ß |
|---|
| 61 | PMT ¼ö½ÅÀÌ °¡´ÉÇÏ´Ù. |
|---|
| 62 | |
|---|
| 63 | PAT -> pid of PMT -> PMT ¼ö½Å |
|---|
| 64 | |
|---|
| 65 | VCT -> source_id ÃßÃâ -> EIT, ETT ¼ö½Å |
|---|
| 66 | |
|---|
| 67 | |
|---|
| 68 | ¾î¶² Å×À̺íµéÀº ÇϳªÀÇ ÀνºÅϽº°¡ ¾Æ´Ï¶ó ¿©·¯°³ÀÇ ÀνºÅϽº°¡ Á¸ÀçÇÑ´Ù. |
|---|
| 69 | |
|---|
| 70 | PMTs: ÇÁ·Î±×·¥ °¹¼ö ¸¸Å Á¸ÀçÇÑ´Ù. |
|---|
| 71 | |
|---|
| 72 | EITs: ½Ã°£´ë º°·Î EIT[0]~EIT[127] ÀÌ Á¸ÀçÇϸç, ¶ÇÇÑ ÇÁ·Î±×·¥ (¼ºêä³Î)º°·Î |
|---|
| 73 | Çϳª ÀÌ»óÀÇ EIT[N] ÀÌ Á¸ÀçÇÑ´Ù. |
|---|
| 74 | |
|---|
| 75 | ETTs: ÇÁ·Î±×·¥ À̺¥Æ® Çϳª´ç Çϳª¾¿ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. |
|---|
| 76 | |
|---|
| 77 | |
|---|
| 78 | ¾î¶² Å×À̺íÀº ´Ù·ç±â ÆíÇÑ ÇüÅ·Πº¯ÇüµÈ ÈÄ¿¡ ¼ö½ÅµÈ´Ù. |
|---|
| 79 | |
|---|
| 80 | TVCT & CVCT -> µÎ Å×À̺íÀ» ÇϳªÀÇ Å¸ÀÔÀ¸·Î ´Ù·ç±â À§ÇØ ÅëÇÕ. -> xVCT ¶Ç´Â ±×³É VCT |
|---|
| 81 | |
|---|
| 82 | RRT -> Å×ÀÌºí ³»ºÎ¿¡ user optionÀ» ÀúÀå ÇÒ ¼ö ÀÖ´Â °ø°£ÀÌ È®º¸µÈ ÇüÅ·ΠȮÀåµÊ. |
|---|
| 83 | |
|---|
| 84 | |
|---|
| 85 | ------------------------------------ |
|---|
| 86 | Ç÷οì Â÷Æ® |
|---|
| 87 | ------------------------------------ |
|---|
| 88 | |
|---|
| 89 | 1. DMW_PSI_Init: ½Ã½ºÅÛ ÃʱâÈ ½Ã¿¡ Çѹø È£Ãâ. |
|---|
| 90 | º¸ÅëÀº Application init ´Ü°è¿¡¼ callÇÏ´Â °ÍÀ¸·Î ¿Ï·áµÈ´Ù. |
|---|
| 91 | |
|---|
| 92 | 2. DMW_PSI_StartUpdate |
|---|
| 93 | ä³Î Æ©´×, ·¹ÄÚµù, autoscan ÇÒ ¶§¿¡ È£Ãâ. |
|---|
| 94 | ä³Î Æ©´×, autoscan ÇÒ ¶§¿¡´Â channel control moduleÀÌ caller°¡ µÇ¸ç, |
|---|
| 95 | ·¹ÄÚµùÀÇ °æ¿ì¿¡´Â record scheduler¿Í meta data collector°¡ caller°¡ µÈ´Ù. |
|---|
| 96 | |
|---|
| 97 | 3. DMW_PSI_CancelUpdate |
|---|
| 98 | µ¿ÀÛ ÁßÀÎ scan ÀÛ¾÷À» ÁßÁö. ä³Î º¯È¯ Á÷Àü, Air/Cable Àüȯ ½Ã¿¡ »ç¿ëµÈ´Ù. |
|---|
| 99 | |
|---|
| 100 | 4. DMW_PSI_LockDB, DMW_PSI_GetChInfo, DMW_PSI_GetSubChInfo |
|---|
| 101 | ½ÇÁ¦·Î DB¿¡ access Çϱâ À§ÇÑ API¸¦ »ç¿ë. |
|---|
| 102 | |
|---|
| 103 | 5. DMW_PSI_DeleteTables |
|---|
| 104 | DB¸¦ »èÁ¦ÇÒ °æ¿ì´Â º¸Åë Air/Cable º¯È¯À» ÇÏ´Â °æ¿ì »ÓÀÌ´Ù. |
|---|
| 105 | |
|---|
| 106 | |
|---|
| 107 | ------------------------------------ |
|---|
| 108 | Autoscan °Ë»ö ¿¹Á¦ (ÀÛ¼º Áß) |
|---|
| 109 | ------------------------------------ |
|---|
| 110 | |
|---|
| 111 | 1. DMW_PSI_StartUpdate |
|---|
| 112 | |
|---|
| 113 | 2. ePSIM_EVENT_AllPmtsReceived |
|---|
| 114 | .. |
|---|
| 115 | |
|---|
| 116 | ------------------------------------ |
|---|
| 117 | ±âÁ¸ old EPG MW (1.5) ´ëºñ Ư¡ |
|---|
| 118 | ------------------------------------ |
|---|
| 119 | |
|---|
| 120 | 1. µ¿ÀÛ ¹æ½Ä |
|---|
| 121 | |
|---|
| 122 | ±âÁ¸ EPG MW´Â ±âº»ÀûÀ¸·Î synchronous ¹æ½ÄÀ¸·Î µ¿ÀÛÇÑ´Ù. |
|---|
| 123 | ¹Ý¸é »õ PSI scan MW´Â 100% asynchronous ¹æ½ÄÀ¸·Î µ¿ÀÛÇÑ´Ù. |
|---|
| 124 | |
|---|
| 125 | synchronous |
|---|
| 126 | download ÇÏ¸é¼ cancel check Çϰí, µ¿½Ã¿¡ multiple tableÀ» ¼ö½ÅÇÏ´Â |
|---|
| 127 | º°µµÀÇ ¸ðµâ ÇÊ¿ä (ChannelDemux) |
|---|
| 128 | Multi-tuner (TS input) Áö¿øÀÌ ºÒ°¡. |
|---|
| 129 | |
|---|
| 130 | asynchronous |
|---|
| 131 | DHL PSI API ¸¸À¸·Î ¸ðµç µ¿ÀÛ ¼öÇà. |
|---|
| 132 | Multi-tuner Áö¿øÀÌ ÀÚ¿¬½º·´°Ô µÊ. |
|---|
| 133 | |
|---|
| 134 | 2. Áö¿ø ¹üÀ§ |
|---|
| 135 | |
|---|
| 136 | ±âÁ¸ EPG MW´Â PSIP ¸¸À» ´ë»óÀ¸·Î ÇÑ´Ù. |
|---|
| 137 | »õ PSI scan MW´Â PSIP ´Â ¹°·Ð PSI (PAT, PMT)µµ ´ë»óÀ¸·Î ÇÑ´Ù. |
|---|
| 138 | |
|---|
| 139 | ±âÁ¸ EPG MW´Â ä³Î °Ë»ö (autoscan) ¿ëµµ·Î´Â »ç¿ëÇÒ ¼ö ¾ø´Ù. |
|---|
| 140 | ¿ÀÁ÷ TV viewing ½Ã¿¡¸¸ »ç¿ëµÈ´Ù. |
|---|
| 141 | »õ PSI scan MW´Â ä³Î °Ë»öÀ» À§ÇÑ ¸ðµå, TV viewingÀ» À§ÇÑ ¸ðµå, |
|---|
| 142 | TV recordingÀ» À§ÇÑ ¸ðµå µîÀÇ ´Ù¾çÇÑ ¸ðµå¸¦ Áö¿øÇÑ´Ù. |
|---|
| 143 | |
|---|
| 144 | ÀÚ¼¼ÇÑ ¼³¸íÀº PSI_FLAGS_MODE ÀÇ ÁÖ¼®À» Âü°íÇÑ´Ù. |
|---|
| 145 | |
|---|
| 146 | 3. ³»ºÎ ±¸Á¶ |
|---|
| 147 | |
|---|
| 148 | ±âÁ¸ EPG MW´Â »ç½Ç»ó EpgBase core Çϳª°¡ ¸ðµç °ÍÀ» ´ã´çÇÑ´Ù. |
|---|
| 149 | ¹Ý¸é PSI scan MW´Â API, Database, Task, Engine µî ¿ªÇÒ¿¡ µû¶ó ¼¼ºÐÈ µÇ¾î ÀÖ´Ù. |
|---|
| 150 | |
|---|
| 151 | ±âÁ¸ EPG MW´Â ÀϺΠasynchronous µ¿ÀÛÀ» À§ÇÏ¿© µÎ°³ÀÇ task°¡ »ç¿ëµÈ´Ù. |
|---|
| 152 | »õ PSI scan MW´Â ´Ü ÇϳªÀÇ task ¸¸À¸·Î ¸ðµç µ¿ÀÛÀ» Áö¿øÇÑ´Ù. |
|---|
| 153 | |
|---|
| 154 | 4. ¼º´É |
|---|
| 155 | |
|---|
| 156 | ±âÁ¸ EPG MW´Â EIT Çϳª¿¡ ¹Ýµå½Ã hardware section filter Çϳª°¡ ÇÊ¿äÇÏ¿´´Ù. |
|---|
| 157 | ¹Ý¸é »õ PSI scan MW´Â ƯÁ¤ ¸ðµå¿¡¼´Â ÇϳªÀÇ hardware filter·Î ¿¬°üµÈ |
|---|
| 158 | ¸ðµç EIT¸¦ ¼ö½ÅÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. (ÇÏÁö¸¸ »ç¿ë °¡´ÉÇÑ »óȲÀº Á¦ÇÑÀûÀÓ) |
|---|
| 159 | |
|---|
| 160 | |
|---|
| 161 | ------------------------------------ |
|---|
| 162 | ±âÁ¸ old EPG MW (1.5)¿ÍÀÇ API ȣȯ¼º |
|---|
| 163 | ------------------------------------ |
|---|
| 164 | |
|---|
| 165 | ÀÌ PSI scan MW API´Â ±âÁ¸ EPG MW API¿Í ÀüÇô ȣȯµÇÁö ¾Ê´Â´Ù. |
|---|
| 166 | ´Ù¸¸ µ¿ÀÛ ¹æ½Ä µîÀº ºñ½ÁÇϸç, |
|---|
| 167 | Scan ¿Ï·á µÈ TableµéÀ» Query ÇÏ´Â ¹æ½Ä ¶ÇÇÑ ºñ½ÁÇÏ´Ù. |
|---|
| 168 | |
|---|
| 169 | EPG DBÀÇ ±¸Á¶µµ Å©°Ô ´Ù¸£Áö ¾Ê´Ù. |
|---|
| 170 | |
|---|
| 171 | old EPG MW new PSI scan MW |
|---|
| 172 | --------------- ----------------- |
|---|
| 173 | DmcChannelInfo -> S_PSIM_CHINFO |
|---|
| 174 | DmcSubChannelInfo -> S_PSIM_SUBCHINFO |
|---|
| 175 | |
|---|
| 176 | Dmc_EpgUpdateStart DMW_PSI_StartUpdate |
|---|
| 177 | Dmc_EpgUpdateCancel DMW_PSI_CancelUpdate |
|---|
| 178 | |
|---|
| 179 | Dmc_EpgDelete DMW_PSI_DeleteTables |
|---|
| 180 | Dmc_EpgPrintAllTables PSIDB_PrintAllTables (no public API yet) |
|---|
| 181 | |
|---|
| 182 | Dmc_EpgLockCoreDB DMW_PSI_LockDB |
|---|
| 183 | |
|---|
| 184 | |
|---|
| 185 | |
|---|
| 186 | ------------------------------------ |
|---|
| 187 | *** naming rule *** |
|---|
| 188 | ------------------------------------ |
|---|
| 189 | api prefix: DMW_PSI_ |
|---|
| 190 | struct type: S_PSIM_STRUCTTYPE |
|---|
| 191 | enum type: E_PSIM_ENUMTYPE |
|---|
| 192 | enum constant: eENUMTYPE_ConstantName |
|---|
| 193 | |
|---|
| 194 | */ |
|---|
| 195 | |
|---|
| 196 | |
|---|
| 197 | |
|---|
| 198 | |
|---|
| 199 | #if COMMENT |
|---|
| 200 | ____PSI_Flags____(){} |
|---|
| 201 | #endif |
|---|
| 202 | |
|---|
| 203 | /* |
|---|
| 204 | DMW_PSI_StartUpdate ¿¡¼ »ç¿ëµÇ´Â flag. |
|---|
| 205 | |
|---|
| 206 | PSI_FLAGS_MODE.. |
|---|
| 207 | |
|---|
| 208 | PSI_FLAGS_NORMAL |
|---|
| 209 | °¡Àå ÀϹÝÀûÀÎ »ç¿ë ¸ðµå. TV Viewing ¿¡¼ »ç¿ë. |
|---|
| 210 | ¼ö½ÅÇÏ´Â Å×ÀÌºí ¹üÀ§: |
|---|
| 211 | pat, pmt (ÁöÁ¤ÇÑ program number) |
|---|
| 212 | mgt, vct, stt, rrt, eas |
|---|
| 213 | ÇöÀç subchannelÀÇ ¸ðµç eits, ¸ðµç etts |
|---|
| 214 | |
|---|
| 215 | PSI_FLAGS_SIMPLE |
|---|
| 216 | ³ìÈ ¸ðµå¿¡¼ »ç¿ë. |
|---|
| 217 | ¼ö½ÅÇÏ´Â Å×ÀÌºí ¹üÀ§: |
|---|
| 218 | pat, pmt (ÁöÁ¤ÇÑ program number) |
|---|
| 219 | mgt, vct, stt, rrt |
|---|
| 220 | ÇöÀç subchannelÀÇ eit[0] |
|---|
| 221 | |
|---|
| 222 | PSI_FLAGS_AUTOSCAN |
|---|
| 223 | ä³Î °Ë»ö ½Ã »ç¿ëÇÏ´Â ¸ðµå. |
|---|
| 224 | pat, ¸ðµç pmt, |
|---|
| 225 | mgt, vct, stt |
|---|
| 226 | ÇöÀçÀÇ RF³»ÀÇ ¸ðµç subchannelÀÇ eit[0] |
|---|
| 227 | |
|---|
| 228 | pmt, mgt, vct, sttÀÇ °æ¿ì one shot ¸ðµå·Î ¼ö½Å. Áï Çϳª¸¸ ¹Þ°í ¹Ù·Î closeÇÑ´Ù. |
|---|
| 229 | ÀÌ´Â pmt multi¼ö½ÅÀÇ ¼º´ÉÀ» ³ôÀ̱â À§ÇÑ trickÀÓ. |
|---|
| 230 | |
|---|
| 231 | eit[0]ÀÇ °æ¿ì coninuous ¸ðµå·Î ¸ðµç subchÀÇ eit[0]¸¦ ´Ù ¹Þ´Â´Ù. |
|---|
| 232 | */ |
|---|
| 233 | |
|---|
| 234 | #define PSI_FLAGS_MODE_MASK 0x3 |
|---|
| 235 | #define PSI_FLAGS_NORMAL 0x0 |
|---|
| 236 | #define PSI_FLAGS_SIMPLE 0x1 |
|---|
| 237 | #define PSI_FLAGS_AUTOSCAN 0x2 |
|---|
| 238 | |
|---|
| 239 | #define PSI_FLAGS_MODE(flag) ((flag) & PSI_FLAGS_MODE_MASK) |
|---|
| 240 | |
|---|
| 241 | |
|---|
| 242 | |
|---|
| 243 | |
|---|
| 244 | |
|---|
| 245 | #if COMMENT |
|---|
| 246 | ____Events____(){} |
|---|
| 247 | #endif |
|---|
| 248 | |
|---|
| 249 | |
|---|
| 250 | |
|---|
| 251 | // |
|---|
| 252 | // Callback ÇÔ¼öÀÇ ÀÎÀÚ·Î Àü´ÞµÉ À̺¥Æ® ŸÀÔ°ú µ¿¹ÝµÇ´Â parameter Á¤ÀÇ. |
|---|
| 253 | // |
|---|
| 254 | // |
|---|
| 255 | typedef enum //E_PSIM_EVENT_t |
|---|
| 256 | { |
|---|
| 257 | ePSIM_EVENT_Unknown, |
|---|
| 258 | |
|---|
| 259 | ePSIM_EVENT_PatReceived, |
|---|
| 260 | // PAT°¡ »õ·Ó°Ô ¼ö½Å (º¯°æ) |
|---|
| 261 | // param: MPEG_PAT *pat |
|---|
| 262 | |
|---|
| 263 | ePSIM_EVENT_PmtReceived, |
|---|
| 264 | // ÇöÀç ÇÁ·Î±×·¥ÀÇ pmt°¡ ¼ö½Å (º¯°æ) |
|---|
| 265 | // param: MPEG_PMT *pmt |
|---|
| 266 | |
|---|
| 267 | ePSIM_EVENT_AllPmtsReceived, |
|---|
| 268 | // ¸ðµç pmt°¡ ¼ö½Å ¿Ï·á. |
|---|
| 269 | // autoscan ¸ðµå¿¡¼ »ç¿ëµÊ. |
|---|
| 270 | // param: none |
|---|
| 271 | |
|---|
| 272 | ePSIM_EVENT_VctReceived, |
|---|
| 273 | // vct°¡ »õ·Ó°Ô ¼ö½Å (º¯°æ) |
|---|
| 274 | // param: xvctPtr_t vct |
|---|
| 275 | |
|---|
| 276 | ePSIM_EVENT_BasePsipReceived, |
|---|
| 277 | // mgt, vct ¼ö½Å ¿Ï·á. |
|---|
| 278 | // param: none |
|---|
| 279 | |
|---|
| 280 | |
|---|
| 281 | ePSIM_EVENT_SttReceived, |
|---|
| 282 | // »õ·Î¿î STT°¡ µµÂø, ¶Ç´Â STT °ªÀÇ Jump µî. |
|---|
| 283 | // stt°¡ ¿Ã ¶§ ¸¶´Ù notify µÇÁö´Â ¾Ê°í, scan ÈÄ ÃÖÃÊ 1ȸ, |
|---|
| 284 | // ±×¸®°í stt jump°¡ »ý±â¸é ¾Ë·ÁÁØ´Ù. |
|---|
| 285 | // |
|---|
| 286 | // param: sttSection_t pointer (flat stt) |
|---|
| 287 | |
|---|
| 288 | ePSIM_EVENT_ProgramChanged, |
|---|
| 289 | // ÇöÀç Program Event°¡ º¯°æµÇ¾úÀ½À» ¾Ë¸². |
|---|
| 290 | // |
|---|
| 291 | // param: S_PSIM_PROGRAM_CHANGED_CB_PARAM * |
|---|
| 292 | |
|---|
| 293 | |
|---|
| 294 | ePSIM_EVENT_RrtUpdated, |
|---|
| 295 | // rrt°¡ update µÇ¾úÀ½À» ¾Ë¸². |
|---|
| 296 | // |
|---|
| 297 | // param: rrtSectionPtr_t rrt |
|---|
| 298 | |
|---|
| 299 | ePSIM_EVENT_EitReceived, |
|---|
| 300 | // param: (S_PSIM_SCAN_STATUS_CB_PARAM *) current Epg scan status of this channel |
|---|
| 301 | |
|---|
| 302 | ePSIM_EVENT_EttReceived, |
|---|
| 303 | // param: (S_PSIM_SCAN_STATUS_CB_PARAM *) current Epg scan status of this channel |
|---|
| 304 | |
|---|
| 305 | |
|---|
| 306 | //------------------------------- |
|---|
| 307 | // °¢Á¾ start notifications |
|---|
| 308 | |
|---|
| 309 | ePSIM_EVENT_ChannelStarted, |
|---|
| 310 | // ÇØ´ç ä³ÎÀÇ Epg °Ë»öÀÌ ½ÃÀ۵ǾúÀ½À» ¾Ë¸°´Ù. |
|---|
| 311 | // |
|---|
| 312 | // param : S_PSIM_CH_START_CB_PARAM * |
|---|
| 313 | |
|---|
| 314 | ePSIM_EVENT_SubChannelStarted, |
|---|
| 315 | // ÇØ´ç subchannelÀÇ epg °Ë»öÀÌ ½ÃÀ۵ǾúÀ½À» ¾Ë¸°´Ù. |
|---|
| 316 | // |
|---|
| 317 | // param : S_PSIM_SUBCH_START_CB_PARAM * |
|---|
| 318 | |
|---|
| 319 | |
|---|
| 320 | |
|---|
| 321 | //------------------------------- |
|---|
| 322 | // °¢Á¾ complete notifications |
|---|
| 323 | |
|---|
| 324 | ePSIM_EVENT_EitsCompleted, |
|---|
| 325 | // ÇØ´ç subchannelÀÇ ¸ðµç eit°¡ ¼ö½Å ¿Ï·á µÇ¾úÀ½. |
|---|
| 326 | // |
|---|
| 327 | // param : S_PSIM_COMPLETE_CB_PARAM * |
|---|
| 328 | // id, source_id |
|---|
| 329 | |
|---|
| 330 | ePSIM_EVENT_SubChannelCompleted, |
|---|
| 331 | // ÇØ´ç subchannelÀÇ ¸ðµç tableÀÌ ¼ö½Å ¿Ï·á µÇ¾úÀ½. |
|---|
| 332 | // |
|---|
| 333 | // param : S_PSIM_COMPLETE_CB_PARAM * |
|---|
| 334 | // id, source_id |
|---|
| 335 | |
|---|
| 336 | ePSIM_EVENT_ChannelCompleted, |
|---|
| 337 | // ÇØ´ç channelÀÇ ¸ðµç tableÀÌ ¼ö½Å ¿Ï·á µÇ¾úÀ½. |
|---|
| 338 | // |
|---|
| 339 | // param : S_PSIM_COMPLETE_CB_PARAM * |
|---|
| 340 | // only 'id' is valid. |
|---|
| 341 | |
|---|
| 342 | |
|---|
| 343 | //---------------- |
|---|
| 344 | // belows are not ported yet. do not use! |
|---|
| 345 | |
|---|
| 346 | |
|---|
| 347 | |
|---|
| 348 | epgEventStarted = 101, |
|---|
| 349 | // param 1 : reason: EpgUpdateStartxxxx °ª Áß Çϳª |
|---|
| 350 | // param 2 : none |
|---|
| 351 | |
|---|
| 352 | epgEventStopped, |
|---|
| 353 | // param : none |
|---|
| 354 | |
|---|
| 355 | #if 0 |
|---|
| 356 | |
|---|
| 357 | |
|---|
| 358 | //epgEventCancelled, <-- ÀÌ·± event´Â ´õÀÌ»ó Á¦°øÇÏÁö ¾ÊÀ½.. |
|---|
| 359 | // param 1 : id |
|---|
| 360 | // param 2 |
|---|
| 361 | |
|---|
| 362 | |
|---|
| 363 | epgEventUpdateChannelEtt, // cafrii 050203 add |
|---|
| 364 | // |
|---|
| 365 | // ¾î¶² ä³ÎÀÇ ett-v °¡ ¼ö½ÅµÇ¾úÀ½. |
|---|
| 366 | // epgEventEttReceived ¿Í´Â º°µµ·Î µû·Î ºÒ¸°´Ù. |
|---|
| 367 | // ÀÌ¹Ì ¼ö½ÅµÈ ett-v ¿¡ ´ëÇØ¼µµ ¶Ç ´Ù½Ã ºÒ¸± ¼öµµ ÀÖ´Ù. (Áߺ¹ üũ ¾ÈÇÔ) |
|---|
| 368 | // µû¶ó¼ application ¿¡¼ Áߺ¹ üũ¸¦ ÇØ¾ß ÇÒ °ÍÀÌ´Ù. |
|---|
| 369 | // Application ¿¡¼´Â ä³Î °ü·Ã Á¤º¸¸¦ UCM CSD¿¡ update ÇÒ ¼ö ÀÖ´Ù. |
|---|
| 370 | // |
|---|
| 371 | // param 1 : DmcEpgChannelEttCbParam * |
|---|
| 372 | // param 2 : none |
|---|
| 373 | |
|---|
| 374 | epgEventChannelEttUpdated, // cafrii 041129 add |
|---|
| 375 | // |
|---|
| 376 | // ¾î¶² ä³ÎÀÇ ett-v °¡ update µÇ¾úÀ¸¸ç ÀÌ Á¤º¸°¡ UCM CSD¿¡ update µÇ¾úÀ½À» ¾Ë¸°´Ù. |
|---|
| 377 | // Application ¿¡¼´Â ÇÊ¿äÇϸé UCMÀ» NvRam ¿¡ ÀúÀåÇØ¾ß ÇÑ´Ù. |
|---|
| 378 | // ÀÌ event´Â AutoCsdUpdate flag°¡ 1ÀÎ »óÅ·Πcompile ÇØ¾ß¸¸ »ç¿ëµÈ´Ù. |
|---|
| 379 | // |
|---|
| 380 | // param 1 : none |
|---|
| 381 | // param 2 : none |
|---|
| 382 | |
|---|
| 383 | |
|---|
| 384 | #endif |
|---|
| 385 | |
|---|
| 386 | } E_PSIM_EVENT; |
|---|
| 387 | |
|---|
| 388 | |
|---|
| 389 | #ifdef __DEFINE_PSIM_STRING__ |
|---|
| 390 | #define PSIM_EVENT_STRING(e) ( \ |
|---|
| 391 | (e) == ePSIM_EVENT_PatReceived ? "pat" : \ |
|---|
| 392 | (e) == ePSIM_EVENT_PmtReceived ? "pmt" : \ |
|---|
| 393 | (e) == ePSIM_EVENT_AllPmtsReceived ? "allpmts" : \ |
|---|
| 394 | (e) == ePSIM_EVENT_VctReceived ? "vct" : \ |
|---|
| 395 | (e) == ePSIM_EVENT_BasePsipReceived ? "basepsip" : \ |
|---|
| 396 | (e) == ePSIM_EVENT_SttReceived ? "stt" : \ |
|---|
| 397 | (e) == ePSIM_EVENT_ProgramChanged ? "pgm_change" : \ |
|---|
| 398 | (e) == ePSIM_EVENT_RrtUpdated ? "rrt" : \ |
|---|
| 399 | (e) == ePSIM_EVENT_ChannelStarted ? "ch_start" : \ |
|---|
| 400 | (e) == ePSIM_EVENT_SubChannelStarted ? "subch_start" : \ |
|---|
| 401 | (e) == ePSIM_EVENT_EitsCompleted ? "eits_end" : \ |
|---|
| 402 | (e) == ePSIM_EVENT_SubChannelCompleted ? "subch_end" : \ |
|---|
| 403 | (e) == ePSIM_EVENT_ChannelCompleted ? "ch_end" : \ |
|---|
| 404 | (e) == epgEventStarted ? "psi_start" : \ |
|---|
| 405 | (e) == epgEventStopped ? "psi_stop" : \ |
|---|
| 406 | "??" ) |
|---|
| 407 | #else |
|---|
| 408 | const char *DMW_PSI_EventString(E_PSIM_EVENT e); |
|---|
| 409 | #endif // __DEFINE_PSIM_EVENT_STRING__ |
|---|
| 410 | |
|---|
| 411 | |
|---|
| 412 | |
|---|
| 413 | /* |
|---|
| 414 | PSI module ³»¿¡¼ °¢Á¾ »óÅ º¯°æ½Ã È£ÃâµÇ´Â Äݹé ÇÔ¼ö ŸÀÔ. |
|---|
| 415 | |
|---|
| 416 | »ç¿ëÀÚ´Â StartUpdate api¸¦ È£ÃâÇÏ¸é¼ ÀÌ callback procÀ» ÁöÁ¤ÇØ¾ß ÇÑ´Ù. |
|---|
| 417 | */ |
|---|
| 418 | typedef void (*F_PSIM_EVENT_PROC) (tDHL_TSD tsd, E_PSIM_EVENT evt, UINT32 param); |
|---|
| 419 | |
|---|
| 420 | |
|---|
| 421 | |
|---|
| 422 | |
|---|
| 423 | |
|---|
| 424 | #if COMMENT |
|---|
| 425 | ____Input____(){} |
|---|
| 426 | #endif |
|---|
| 427 | |
|---|
| 428 | |
|---|
| 429 | /* |
|---|
| 430 | »ç¿ëÀÚ ÀÔ·Â Á¤º¸. |
|---|
| 431 | S_PSIM_USER_PARAM ¿Í ºñ½ÁÇÏÁö¸¸, ±× ¿ëµµ°¡ ´Ù¸§. |
|---|
| 432 | ÀÌ ±¸Á¶Ã¼´Â API¿¡¼´Â »ç¿ëµÇÁö ¾Ê°í ³»ºÎ ¿ëÀ¸·Î¸¸ »ç¿ëÇÑ´Ù. |
|---|
| 433 | |
|---|
| 434 | API¿¡¼´Â º°µµ·Î S_PSIM_USER_PARAM À̶ó´Â ±¸Á¶Ã¼°¡ »ç¿ëµÈ´Ù. |
|---|
| 435 | */ |
|---|
| 436 | |
|---|
| 437 | typedef struct |
|---|
| 438 | { |
|---|
| 439 | int rf; |
|---|
| 440 | int program_number; |
|---|
| 441 | int source_id; |
|---|
| 442 | |
|---|
| 443 | UINT32 flags; |
|---|
| 444 | |
|---|
| 445 | F_PSIM_EVENT_PROC userproc; |
|---|
| 446 | UINT32 userparam; |
|---|
| 447 | |
|---|
| 448 | } S_PSIM_USER_INPUT; |
|---|
| 449 | |
|---|
| 450 | |
|---|
| 451 | |
|---|
| 452 | #if COMMENT |
|---|
| 453 | ____Status____(){} |
|---|
| 454 | #endif |
|---|
| 455 | |
|---|
| 456 | |
|---|
| 457 | /* Epg Status Enum |
|---|
| 458 | |
|---|
| 459 | ÇöÀç EpgDBÀÇ scan »óŸ¦ ³ªÅ¸³»´Â °ªµé.. |
|---|
| 460 | Dmc_EpgCheckScanStatus ÇÔ¼öÀÇ °á°ú·Î »ç¿ëµÈ´Ù. |
|---|
| 461 | */ |
|---|
| 462 | typedef enum //E_PSIM_SCAN_STATUS_t |
|---|
| 463 | { |
|---|
| 464 | ePSIM_SCAN_STATUS_NOT_FOUND = 1, // ÁöÁ¤ÇÑ sub ä³Î Á¤º¸°¡ ¾øÀ½.. |
|---|
| 465 | ePSIM_SCAN_STATUS_INCOMPLETE = 2, // ÇöÀç ÁøÇàÁßÀÓ.. |
|---|
| 466 | ePSIM_SCAN_STATUS_EIT_COMPLETE = 3, // Eit ¸¸ ¿Ï·áµÇ¾úÀ½.. |
|---|
| 467 | ePSIM_SCAN_STATUS_SUBCH_COMPLETE = 4, // subchannleÀÌ ´Ù ¿Ï·áµÇ¾úÀ½.. |
|---|
| 468 | ePSIM_SCAN_STATUS_CH_COMPLETE = 5, // ÁöÁ¤ÇÑ sub ä³ÎÀ» Æ÷ÇÔÇÏ´Â PTC ä³ÎÀÌ ¸ðµÎ ¿Ï·áµÇ¾úÀ½.. |
|---|
| 469 | //ePSIM_SCANSTATUS_SUBCH_SKIPPED = 6, |
|---|
| 470 | |
|---|
| 471 | } E_PSIM_SCAN_STATUS; |
|---|
| 472 | |
|---|
| 473 | |
|---|
| 474 | #ifdef __DEFINE_PSIM_STRING__ |
|---|
| 475 | #define PSIM_SCAN_STATUS_STRING(e) \ |
|---|
| 476 | (e) == ePSIM_SCAN_STATUS_NOT_FOUND ? "NotFound" : \ |
|---|
| 477 | (e) == ePSIM_SCAN_STATUS_INCOMPLETE ? "Incomplete" : \ |
|---|
| 478 | (e) == ePSIM_SCAN_STATUS_EIT_COMPLETE ? "EitOnlyComplete" : \ |
|---|
| 479 | (e) == ePSIM_SCAN_STATUS_SUBCH_COMPLETE ? "SubchannelComplete" : \ |
|---|
| 480 | (e) == ePSIM_SCAN_STATUS_CH_COMPLETE ? "ChannelComplete" : \ |
|---|
| 481 | "??" |
|---|
| 482 | #else |
|---|
| 483 | const char *DMW_PSI_ScanStatusString(E_PSIM_SCAN_STATUS e); |
|---|
| 484 | #endif |
|---|
| 485 | |
|---|
| 486 | |
|---|
| 487 | /* |
|---|
| 488 | |
|---|
| 489 | */ |
|---|
| 490 | |
|---|
| 491 | typedef struct |
|---|
| 492 | { |
|---|
| 493 | tDHL_TSD tsd; |
|---|
| 494 | |
|---|
| 495 | S_PSIM_USER_INPUT input; // »ç¿ëÀÚ°¡ StartUpdate¸¦ È£Ãâ ÇÒ ¶§ ÁöÁ¤ÇÑ ÀÎÀÚµé. |
|---|
| 496 | |
|---|
| 497 | } S_PSIM_STATUS; |
|---|
| 498 | |
|---|
| 499 | |
|---|
| 500 | |
|---|
| 501 | #if COMMENT |
|---|
| 502 | ____CallbackParams____(){} |
|---|
| 503 | #endif |
|---|
| 504 | |
|---|
| 505 | |
|---|
| 506 | |
|---|
| 507 | /* |
|---|
| 508 | ePSIM_EVENT_ProgramChanged ÀÇ ÆÄ¶ó¹ÌÅÍ ±¸Á¶Ã¼ |
|---|
| 509 | */ |
|---|
| 510 | typedef struct //S_PSIM_PROGRAM_CHANGED_CB_PARAM_t |
|---|
| 511 | { |
|---|
| 512 | int channel_id; |
|---|
| 513 | int source_id; |
|---|
| 514 | |
|---|
| 515 | int event_id; // new event_id |
|---|
| 516 | |
|---|
| 517 | int eit_index; // ÀÌ event°¡ ¹ß°ßµÈ ù Eit index.. probably 0.. |
|---|
| 518 | |
|---|
| 519 | UINT32 system_time; // ÇöÀç STT GPS time |
|---|
| 520 | |
|---|
| 521 | UINT32 start_time; |
|---|
| 522 | UINT32 length_in_seconds; |
|---|
| 523 | |
|---|
| 524 | int descriptor_length; |
|---|
| 525 | UINT8* descriptors; |
|---|
| 526 | // ÁÖÀÇ!! |
|---|
| 527 | // ÀÌ unparsed descriptor´Â Eit¿¡ ÀÖ´Â descriptor¸¦ ±×´ë·Î pointingÇÑ´Ù. |
|---|
| 528 | // ÀÌ callbackÀÌ Á¾·áµÇ¸é ¾ðÁ¦ free µÉÁö ¸ð¸£¹Ç·Î |
|---|
| 529 | // ÇÊ¿äÇÑ Á¤º¸°¡ ÀÖ´Ù¸é º°µµ·Î º¹»çÇÏ¿© ÀúÀåÀ» ÇØ µÑ Çʿ䰡 ÀÖ´Ù. |
|---|
| 530 | |
|---|
| 531 | } S_PSIM_PROGRAM_CHANGED_CB_PARAM; |
|---|
| 532 | |
|---|
| 533 | |
|---|
| 534 | /* |
|---|
| 535 | ePSIM_EVENT_ChannelStarted À̺¥Æ®ÀÇ ÆÄ¶ó¹ÌÅÍ ±¸Á¶Ã¼ |
|---|
| 536 | */ |
|---|
| 537 | typedef struct //S_PSIM_CH_START_CB_PARAM_t |
|---|
| 538 | { |
|---|
| 539 | int id; // id of this PTC.. º¸Åë rf ¹øÈ£¸¦ »ç¿ëÇÑ´Ù. |
|---|
| 540 | tDHL_TSD *tsd; // stream source |
|---|
| 541 | |
|---|
| 542 | mgtSectionPtr_t mgt; |
|---|
| 543 | xvctPtr_t vct; |
|---|
| 544 | |
|---|
| 545 | int n_subchannel; |
|---|
| 546 | |
|---|
| 547 | } S_PSIM_CH_START_CB_PARAM; |
|---|
| 548 | |
|---|
| 549 | /* |
|---|
| 550 | ePSIM_EVENT_SubChannelStarted À̺¥Æ®ÀÇ ÆÄ¶ó¹ÌÅÍ ±¸Á¶Ã¼ |
|---|
| 551 | */ |
|---|
| 552 | typedef struct //S_PSIM_SUBCH_START_CB_PARAM_t |
|---|
| 553 | { |
|---|
| 554 | int index; // subchannel index.. 0 ~ n_subchannel-1 |
|---|
| 555 | UINT16 source_id; |
|---|
| 556 | |
|---|
| 557 | UINT32 flags; // ¾î¶² ¸ðµå·Î ½ÃÀ۵Ǿú´ÂÁö ¾Ë·ÁÁÜ. |
|---|
| 558 | // StartUpdate APIÀÇ flags ÀÎÀÚ·Î ÁöÁ¤µÈ °ªÀÌ´Ù. |
|---|
| 559 | |
|---|
| 560 | struct { |
|---|
| 561 | UINT16 short_name[7]; |
|---|
| 562 | UINT16 major_channel_number; |
|---|
| 563 | UINT16 minor_channel_number; |
|---|
| 564 | UINT16 program_number; |
|---|
| 565 | } vct_info; // ¹Ýµå½Ã subchannel infoÀÇ vct_info ¿Í µ¿ÀÏÇØ¾ß ÇÑ´Ù. |
|---|
| 566 | |
|---|
| 567 | } S_PSIM_SUBCH_START_CB_PARAM; |
|---|
| 568 | |
|---|
| 569 | /* |
|---|
| 570 | ePSIM_EVENT_XxxxxCompleted À̺¥Æ®ÀÇ ÆÄ¶ó¹ÌÅÍ ±¸Á¶Ã¼ |
|---|
| 571 | */ |
|---|
| 572 | typedef struct //S_PSIM_COMPLETE_CB_PARAM_t |
|---|
| 573 | { |
|---|
| 574 | // channel id |
|---|
| 575 | int id; |
|---|
| 576 | |
|---|
| 577 | // subchannel id |
|---|
| 578 | int index; // subchannel index. (0 ~ num_subchannel-1) |
|---|
| 579 | UINT16 source_id; |
|---|
| 580 | |
|---|
| 581 | // ChannelCompleted ÀÎ °æ¿ì¿¡ subchannel id Á¤º¸´Â ¹«ÀǹÌÇÏ´Ù. |
|---|
| 582 | |
|---|
| 583 | } S_PSIM_COMPLETE_CB_PARAM; |
|---|
| 584 | |
|---|
| 585 | |
|---|
| 586 | |
|---|
| 587 | |
|---|
| 588 | typedef struct //S_PSIM_SCAN_STATUS_CB_PARAM_t |
|---|
| 589 | { |
|---|
| 590 | int id; |
|---|
| 591 | int source_id; |
|---|
| 592 | |
|---|
| 593 | E_PSIM_SCAN_STATUS cStatus; // EPG_STATUS_XXX °ª ÁßÀÇ Çϳª.. |
|---|
| 594 | |
|---|
| 595 | int nElapsedSec; // ÀÌ subchannelÀ» scanÇϴµ¥ »ç¿ëµÈ ÃÑ ´©Àû °Ë»ö ½Ã°£. |
|---|
| 596 | // compile option¿¡ µû¶ó¼ Áö¿øµÇÁö ¾ÊÀ» ¼öµµ ÀÖÀ½. |
|---|
| 597 | |
|---|
| 598 | int nEitReceived; |
|---|
| 599 | int nEitTotal; // ¹Þ¾Æ¾ß ÇÒ Àüü Eit table |
|---|
| 600 | |
|---|
| 601 | int nEttReceived; |
|---|
| 602 | int nEttTotal; // ¹Þ¾Æ¾ß ÇÒ Àüü Ett table (ÇöÀç±îÁö ¹àÇôÁø °Í±îÁö¸¸.. Eit¸¦ ¹ÞÀ¸¸é¼ °è¼Ó ´Ã¾î³¯°ÍÀÓ) |
|---|
| 603 | |
|---|
| 604 | } S_PSIM_SCAN_STATUS_CB_PARAM; |
|---|
| 605 | |
|---|
| 606 | |
|---|
| 607 | |
|---|
| 608 | |
|---|
| 609 | #if COMMENT |
|---|
| 610 | ____Structures____(){} |
|---|
| 611 | #endif |
|---|
| 612 | |
|---|
| 613 | /* |
|---|
| 614 | mgt ÀÇ ¿ä¾à Á¤º¸. |
|---|
| 615 | ¸ðµç pidÀÇ ÃʱⰪÀº 0 À̰í, ¸ðµç versionÀÇ ÃʱⰪÀº 0xff ÀÌ´Ù. |
|---|
| 616 | mgt¿¡ ±â¼úµÇÁö ¾ÊÀº Å×À̺í Á¤º¸´Â ¸ðµÎ ÃʱⰪÀ» °¡Áö°í ÀÖ°Ô µÈ´Ù. |
|---|
| 617 | */ |
|---|
| 618 | typedef struct //S_PSIM_MGT_DIGEST_t |
|---|
| 619 | { |
|---|
| 620 | UINT16 eit_pids[128]; // if this eit not exist, it will be 0. |
|---|
| 621 | UINT8 eit_ver[128]; // if this eit not exist, it will be 0xFF |
|---|
| 622 | |
|---|
| 623 | UINT16 ett_pids[128]; // event_ett |
|---|
| 624 | UINT8 ett_ver[128]; |
|---|
| 625 | |
|---|
| 626 | UINT16 channel_ett_pid; |
|---|
| 627 | UINT8 channel_ett_ver; |
|---|
| 628 | |
|---|
| 629 | BOOLEAN tvct_exist_in_mgt, cvct_exist_in_mgt; |
|---|
| 630 | |
|---|
| 631 | UINT8 tvct_ver; |
|---|
| 632 | UINT8 cvct_ver; |
|---|
| 633 | |
|---|
| 634 | } S_PSIM_MGT_DIGEST; |
|---|
| 635 | |
|---|
| 636 | |
|---|
| 637 | struct S_PSIM_CHINFO_t; // forward declaration |
|---|
| 638 | |
|---|
| 639 | //----------------------------------------------------------------------- |
|---|
| 640 | // S_PSIM_SUBCHINFO |
|---|
| 641 | // |
|---|
| 642 | // Sub channel ÀÇ ¸ðµç PSIP Á¤º¸¸¦ ÀúÀåÇÏ´Â ±¸Á¶Ã¼ |
|---|
| 643 | // |
|---|
| 644 | typedef struct //S_PSIM_SUBCHINFO_t |
|---|
| 645 | { |
|---|
| 646 | struct S_PSIM_CHINFO_t *parent; // back pointer to parent chInfo |
|---|
| 647 | int index; // subchannel index.. 0 ~ chInfo->n_subchannel-1 |
|---|
| 648 | BOOL active; // TRUE if this structure field data is valid |
|---|
| 649 | |
|---|
| 650 | UINT16 source_id; // ÀÌ ¿ª½Ã vct¿¡ ³ª¿Í ÀÖÁö¸¸ ¿©±â¿¡ copy¸¦ µÐ´Ù. |
|---|
| 651 | |
|---|
| 652 | // ´õ ½±°Ô Á¢±ÙÇϱâ ÁÁ°Ô À̰÷¿¡ vctInfo »çº»À» µÐ´Ù. |
|---|
| 653 | struct { |
|---|
| 654 | UINT16 short_name[7]; |
|---|
| 655 | UINT16 major_channel_number; |
|---|
| 656 | UINT16 minor_channel_number; |
|---|
| 657 | UINT16 program_number; |
|---|
| 658 | |
|---|
| 659 | BOOL analog; |
|---|
| 660 | ETM_location_k etm_location; |
|---|
| 661 | } vct_info; |
|---|
| 662 | |
|---|
| 663 | eitPtr_t eits[128]; |
|---|
| 664 | |
|---|
| 665 | BOOL eit_complete; // ¸ðµç eit°¡ ´Ù ¼ö½ÅµÇ¸é TRUE |
|---|
| 666 | |
|---|
| 667 | int n_ett[128]; // ettÀÇ °¹¼ö°¡ ¾Æ´Ï¶ó ¾Æ·¡ etts[k]ÀÇ element °¹¼ö (arrayÅ©±â) |
|---|
| 668 | ettSectionPtr_t *etts[128]; // ÇØ´ç eit-k¿¡ ¿¬°áµÇ¾î ÀÖ´Â ettµéÀÇ array pointerµé. |
|---|
| 669 | |
|---|
| 670 | BOOL ett_complete; // ¸ðµç ett°¡ ´Ù ¼ö½ÅµÇ¸é TRUE |
|---|
| 671 | |
|---|
| 672 | // todo.. |
|---|
| 673 | // ÇØ´ç ett°¡ Á¸ÀçÇÏ´ÂÁö ¾ÈÇÏ´ÂÁö¸¦ »¡¸® ¾Ë¾Æº¼¼ö ÀÖ´Â ¹æ¹ýÀ» ã¾Æº¸ÀÚ. |
|---|
| 674 | // ÇöÀç ±¸Á¶·Î´Â chInfo->ett_pid°¡ ÀÖ´ÂÁö È®ÀÎÇØº¸°í, |
|---|
| 675 | // subchInfo->eits[]¿¡¼ °¢ eventº°·Î ETM_locationÀ» È®ÀÎÇØºÁ¾ß ÇÑ´Ù. |
|---|
| 676 | |
|---|
| 677 | ettSectionPtr_t channel_ett; |
|---|
| 678 | //BOOL channel_ett_exist; // channel ett°¡ ¼ö½ÅµÇ¾îÁ®¾ß ÇÏ´Â °æ¿ì¿¡´Â TRUE |
|---|
| 679 | // ÀÌ Á¤º¸´Â ÇÊ¿äÇÒ ¶§ ¸¶´Ù Á÷Á¢ vct Á¤º¸¸¦ ã¾Æº¸´Â °ÍÀ¸·Î ÇÏ¿´À½. |
|---|
| 680 | // µû¶ó¼ º°µµ·Î Ç÷¡±× ÀúÀåÀº ºÒÇÊ¿äÇÔ. |
|---|
| 681 | |
|---|
| 682 | // °¢ complete event message°¡ ºÒ·È´ÂÁö ¾Æ´ÑÁö¸¦ ÀúÀåÇÏ´Â flag. |
|---|
| 683 | // caller°¡ óÀ½ API¸¦ ºÎ¸£¸é ¸®¼ÂµÇ¾ú´Ù°¡ notifyµÇ¸é °¢°¢ setµÈ´Ù. |
|---|
| 684 | // µ¿ÀÏ event procÀÌ ¿©·¯¹ø ºÒ¸®´Â °ÍÀ» ¸·±â À§ÇؼÀÓ. |
|---|
| 685 | // |
|---|
| 686 | BOOL eit_complete_notified; |
|---|
| 687 | BOOL subchannel_complete_notified; |
|---|
| 688 | |
|---|
| 689 | BOOL subchannel_start_notified; |
|---|
| 690 | |
|---|
| 691 | #if DMW_PSI_SUPPORT_ELAPSED_TIMER |
|---|
| 692 | // cafrii 060814 add |
|---|
| 693 | DMW_Counter counter; |
|---|
| 694 | |
|---|
| 695 | #endif |
|---|
| 696 | |
|---|
| 697 | } S_PSIM_SUBCHINFO; |
|---|
| 698 | |
|---|
| 699 | |
|---|
| 700 | // |
|---|
| 701 | // to access EIT: |
|---|
| 702 | // subchInfo->eits[eit_index] |
|---|
| 703 | // to access ETT: |
|---|
| 704 | // if (subchInfo->etts[eit_index]) |
|---|
| 705 | // subchInfo->etts[eit_index][event_index_in_eit] |
|---|
| 706 | |
|---|
| 707 | |
|---|
| 708 | #define CHANNEL_INFO_MAGIC 0x20040419 |
|---|
| 709 | |
|---|
| 710 | //----------------------------------------------------------------------- |
|---|
| 711 | // S_PSIM_CHINFO |
|---|
| 712 | // |
|---|
| 713 | // Physical Channel ÀÇ ¸ðµç PSIP Á¤º¸¸¦ ÀúÀåÇÏ´Â ±¸Á¶Ã¼ |
|---|
| 714 | // ³»ºÎ¿¡ Subchannel °¹¼ö ¸¸ÅÀÇ SubchInfo ¸¦ Æ÷ÇÔÇÑ´Ù. |
|---|
| 715 | // |
|---|
| 716 | typedef struct S_PSIM_CHINFO_t |
|---|
| 717 | { |
|---|
| 718 | UINT32 magic; // CHANNEL_INFO_MAGIC °ªÀ» °¡Á®¾ß ÇÔ. |
|---|
| 719 | |
|---|
| 720 | struct S_PSIM_CHINFO_t *prev, *next; |
|---|
| 721 | |
|---|
| 722 | int id; // id of this PTC.. º¸Åë rf ¹øÈ£¸¦ »ç¿ëÇÑ´Ù. |
|---|
| 723 | tDHL_TSD tsd; // stream source |
|---|
| 724 | |
|---|
| 725 | //----------------- |
|---|
| 726 | // table pointers |
|---|
| 727 | |
|---|
| 728 | // PAT |
|---|
| 729 | MPEG_PAT *pat; |
|---|
| 730 | |
|---|
| 731 | // PMT array. array size is pat->numPrograms. |
|---|
| 732 | MPEG_PMT **pmts; |
|---|
| 733 | |
|---|
| 734 | // MGT |
|---|
| 735 | // °¡Àå ¸¶Áö¸·À¸·Î ¼ö½ÅµÇ¾î ÇöÀç À¯È¿ÇÑ mgt¿Í |
|---|
| 736 | // ±× ¹Ù·Î Á÷ÀüÀÇ À¯È¿Çß´ø mgt (mgt_old) µÎ°³¸¦ ÀúÀåÇÑ´Ù. |
|---|
| 737 | mgtSectionPtr_t mgt, mgt_old; |
|---|
| 738 | |
|---|
| 739 | // VCT |
|---|
| 740 | xvctPtr_t vct; |
|---|
| 741 | |
|---|
| 742 | // STT |
|---|
| 743 | BOOL stt_valid; // cafrii 050721 add, flat_stt °ªÀÌ ÇѹøÀÌ¶óµµ set µÇ¸é TRUE |
|---|
| 744 | sttSection_t flat_stt; // cafrii 050330 change to flat_stt |
|---|
| 745 | // sttÀÇ descriptor´Â ÇöÀç·Î¼´Â »ç¿ëÇÒ ÀÏÀÌ ¾ø´Ù. |
|---|
| 746 | // µû¶ó¼ descriptor°¡ NULLÀÎ flat stt¸¦ ±â¾ïÇϵµ·Ï ÇÑ´Ù. |
|---|
| 747 | UINT32 tick_stt_get; // ÀÌ stt¸¦ ¼ö½ÅÇÏ¿´À» ¶§ÀÇ System Time Tick |
|---|
| 748 | |
|---|
| 749 | //----------------- |
|---|
| 750 | // from mgt, various pids info.. ¹Ì¸® ÃßÃâÇØ ³õ´Â°Ô ÆíÇÏ´Ù. |
|---|
| 751 | // version ÀÇ ÃʱⰪÀº -1 (all bit 1) À¸·Î Á¤ÀÇÇϵµ·Ï ÇÑ´Ù. |
|---|
| 752 | |
|---|
| 753 | S_PSIM_MGT_DIGEST smgt; // summarized mgt (mgt digest) |
|---|
| 754 | |
|---|
| 755 | //----------------- |
|---|
| 756 | |
|---|
| 757 | // ÁÖÀÇ!! PID Á¤º¸°¡ mgt¿¡ ÀÖ´Ù°í ÇØ¼ ±× tableÀÌ Á¸ÀçÇÏ´Â °ÍÀ» ÀǹÌÇÏÁö´Â ¾Ê´Â´Ù. |
|---|
| 758 | |
|---|
| 759 | // subchannelÀÇ °¹¼ö´Â vct¿¡ ³ª¿Í Àִµ¥, ¾î´À vct°¡ »ç¿ëµÉÁö ¾Ë ¼ö ¾øÀ¸¹Ç·Î |
|---|
| 760 | // |
|---|
| 761 | |
|---|
| 762 | // Rule: n_subchannel ÀÌ >0 À̸é subchannel ptrÀº ¹Ýµå½Ã non-NULLÀ̾î¾ß ÇÑ´Ù. |
|---|
| 763 | int n_subchannel; |
|---|
| 764 | S_PSIM_SUBCHINFO *subchannel; |
|---|
| 765 | |
|---|
| 766 | // cafrii 040726 add |
|---|
| 767 | BOOL channel_complete_notified; |
|---|
| 768 | |
|---|
| 769 | #if DMW_PSI_SUPPORT_ELAPSED_TIMER |
|---|
| 770 | // cafrii 060814 add |
|---|
| 771 | DMW_Counter counter; |
|---|
| 772 | |
|---|
| 773 | #endif |
|---|
| 774 | |
|---|
| 775 | } S_PSIM_CHINFO; |
|---|
| 776 | |
|---|
| 777 | |
|---|
| 778 | |
|---|
| 779 | |
|---|
| 780 | #if COMMENT |
|---|
| 781 | ____APIs____(){} |
|---|
| 782 | #endif |
|---|
| 783 | |
|---|
| 784 | /* |
|---|
| 785 | For detail description, refer comments of function definition. |
|---|
| 786 | */ |
|---|
| 787 | |
|---|
| 788 | |
|---|
| 789 | /* |
|---|
| 790 | Initializations |
|---|
| 791 | */ |
|---|
| 792 | STATUS DMW_PSI_Init(void); |
|---|
| 793 | |
|---|
| 794 | |
|---|
| 795 | /* |
|---|
| 796 | Start & Stop control |
|---|
| 797 | */ |
|---|
| 798 | |
|---|
| 799 | STATUS DMW_PSI_StartUpdate(tDHL_TSD tsd, int rf, int program_number, int source_id, |
|---|
| 800 | UINT32 flags, F_PSIM_EVENT_PROC userproc, UINT32 userparam); |
|---|
| 801 | |
|---|
| 802 | void DMW_PSI_CancelUpdate(tDHL_TSD tsd); |
|---|
| 803 | |
|---|
| 804 | |
|---|
| 805 | |
|---|
| 806 | /* |
|---|
| 807 | PSI Database control & query |
|---|
| 808 | */ |
|---|
| 809 | void DMW_PSI_DeleteTables(int rf); |
|---|
| 810 | |
|---|
| 811 | void DMW_PSI_LockDB(BOOL bLock); |
|---|
| 812 | |
|---|
| 813 | S_PSIM_CHINFO *DMW_PSI_GetChInfo(int rf); |
|---|
| 814 | S_PSIM_SUBCHINFO *DMW_PSI_GetSubChInfo(int rf, int source_id); |
|---|
| 815 | |
|---|
| 816 | |
|---|
| 817 | #ifdef __cplusplus |
|---|
| 818 | } /* extern "C" */ |
|---|
| 819 | #endif |
|---|
| 820 | |
|---|
| 821 | |
|---|
| 822 | #endif // __DMW_PSI_API_H__ |
|---|
| 823 | |
|---|
| 824 | |
|---|
| 825 | |
|---|
| 826 | |
|---|