sipsi.h
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:11k
源码类别:

DVD

开发平台:

C/C++

  1. #if !defined(SIPSI_H)
  2. #define SIPSI_H
  3. #include <time.h>
  4. #include "osp.h"
  5. enum 
  6. {
  7.        KB_SI_MSG_PAT_DONE, 
  8. KB_SI_MSG_PAT_TIMEOUT, 
  9. KB_SI_MSG_PAT_CHANGE,
  10. KB_SI_MSG_NIT_DONE,
  11. KB_SI_MSG_NIT_TIMEOUT,
  12. KB_SI_MSG_NIT_CHANGE,
  13. KB_SI_MSG_PMT_DONE,
  14. KB_SI_MSG_PMT_TIMEOUT,
  15. KB_SI_MSG_PMT_CHANGE,
  16. KB_SI_MSG_SDT_DONE,
  17. KB_SI_MSG_SDT_TIMEOUT,
  18. KB_SI_MSG_SDT_CHANGE,
  19. KB_SI_MSG_EIT_PF_DONE, 
  20. KB_SI_MSG_EIT_PF_TIMEOUT,
  21. KB_SI_MSG_EIT_PF_CHANGE, 
  22. KB_SI_MSG_EIT_SCHEDULE_DONE,
  23. KB_SI_MSG_EIT_SCHEDULE_EVENT_DONE,
  24. KB_SI_MSG_EIT_SCHEDULE_SUNDAY_DONE,
  25. KB_SI_MSG_EIT_SCHEDULE_MONDAY_DONE, 
  26. KB_SI_MSG_EIT_SCHEDULE_TUESDAY_DONE,
  27. KB_SI_MSG_EIT_SCHEDULE_WEDNESDAY_DONE,
  28. KB_SI_MSG_EIT_SCHEDULE_THURSDAY_DONE,
  29. KB_SI_MSG_EIT_SCHEDULE_FRIDAY_DONE,
  30. KB_SI_MSG_EIT_SCHEDULE_SATURDAY_DONE, 
  31. KB_SI_MSG_EIT_SCHEDULE_TIMEOUT,
  32. KB_SI_MSG_TDT_DONE, 
  33. KB_SI_MSG_TDT_TIMEOUT, 
  34. KB_SI_MSG_CAT_DONE, 
  35. KB_SI_MSG_CAT_TIMEOUT, 
  36. KB_SI_MSG_CAT_CHANGE,
  37. KB_SI_MSG_RST_DONE, 
  38. KB_SI_MSG_BAT_DONE, 
  39. KB_SI_MSG_BAT_TIMEOUT,
  40. KB_SI_MSG_BAT_CHANGE, 
  41. KB_SI_MSG_TOT_DONE,
  42. KB_SI_MSG_TOT_TIMEOUT,
  43. KB_SI_MSG_SYS_START_STOCK,
  44. KB_SI_MSG_SYS_START_BROWSER,
  45. KB_SI_MSG_SYS_START_LOGO_UPDATE
  46. }KB_SIMsgTable;
  47. #define KB_SI_MAX_EIT_SERVICE_NUM  15 
  48. #define KB_SI_MAX_NVOD_EVENT_NUM 100
  49. #define KB_SI_MAX_TIMESHIFTED_NUM  42
  50. #define KB_SI_MAX_PAT_PROGRAM_NUM 253 
  51. #define KB_SI_MAX_PMT_STREAM_NUM 9
  52. #define KB_SI_MAX_NIT_CHANNEL_NUM 100 
  53. #define KB_SI_MAX_CHANNEL_SERVIC_NUM 10 
  54. #define KB_SI_MAX_NETWORK_NAME_LEN 50 
  55. #define KB_SI_MAX_SERVICE_PROVIDER_NAME_LEN 50 
  56. #define KB_SI_MAX_SERVICE_NAME_LEN 50 
  57. #define KB_SI_MAX_BOUQUET_NAME_LEN 50 
  58. #define KB_SI_MAX_BAT_SERVICE_NUM_PER_TS 20 
  59. #define KB_SI_MAX_EVENT_NUM_PER_DAY 100 
  60. #define KB_SI_MAX_EVENT_NAME_LEN 20 
  61. #define KB_SI_MAX_EVENT_TEXT_LEN 200 
  62. #define KB_SI_MAX_CA_BUFFER_LEN 100 
  63. #define KB_SI_RECEIVE_ONCE 0x0001 
  64. #define KB_SI_RECEIVE_CHANGE 0x0002 
  65. #define KB_SI_RECEIVE_DTV 0x0010 
  66. #define KB_SI_ERR_UNDEFINED_TYPE -101 
  67. #define KB_SI_ERR_INVALID_VERSION_NUMBER -102 
  68. #define KB_SI_ERR_NULL_POINTER -103 
  69. #define KB_SI_ERR_NOT_INITIALIZED -104 
  70. #define KB_SI_ERR_SEND_MESSAGE -105 
  71. #define KB_SI_ERR_INVALID_PROGRAM_NUMBER -110 
  72. #define KB_SI_ERR_INVALID_SERVICE_ID -111 
  73. #define KB_SI_ERR_INVALID_NIT_PID -112 
  74. #define KB_SI_ERR_INVALID_PMT_PID -113 
  75. #define KB_SI_ERR_TOO_MANY_PROGRAMS -114 
  76. #define KB_SI_ERR_INVALID_BOUQUET_ID -115 
  77. #define KB_SI_ERR_INVALID_SERVICE_NUM -121 
  78. #define KB_SI_ERR_INVALID_EVENT_STATUS_NUM -122
  79. #define KB_SI_ERR_INVALID_DSI_PID -131 
  80. #define KB_SI_ERR_INVALID_DII_PID -132 
  81. #define KB_SI_ERR_INVALID_DII_TRANSACTION_ID -133 
  82. #define KB_SI_ERR_INVALID_DDB_PID -134 
  83. #define KB_SI_ERR_INVALID_DDB_MODULE_ID -135
  84. #define KB_SI_ERR_INVALID_DDB_BLOCK_SIZE -136 
  85. #define KB_SI_MAX_TEXT_CHAR_LEN           250   
  86. #define KB_SI_MAX_EXTENDED_EVENT_NUMBERS  1     
  87. #define KB_SI_EIT_SCHEDULE_SERVICE_COUNT 10
  88. #define KB_SI_EIT_SCHEDULE_SOFT_FILTER_COUNT KB_SI_EIT_SCHEDULE_SERVICE_COUNT * 2
  89. #define KB_SI_EITSCH_TIMESHIFT 30
  90. #define KB_SI_EIT_SCHEDULE_TIME_SHIFT_SOFT_FILTER_COUNT KB_SI_EITSCH_TIMESHIFT
  91. #define KB_SI_STOP_ALL -1
  92. #define KB_SI_MAX_EVENT_NUM_PER_SERVICE 200//500
  93. #define KB_SI_MAX_SHIFT_EVENT_NUM_PER_SERVICE 400
  94. #define KB_SI_EIT_PF_MAX_NVOD_EVENT_NUMBER 6
  95. typedef enum
  96. {
  97.     KB_SI_EIT_CURRENT_TS,
  98.     KB_SI_EIT_CURRENT_TS_FOR_0x51_table,   //增加一个枚举,便于EIT时间表存在0x51的处理
  99.     KB_SI_EIT_OTHER_TS,
  100.     KB_SI_EIT_OTHER_TS_FOR_0x61_table   //增加一个枚举,便于EIT时间表存在0x61的处理
  101. }KB_SIEitTs;
  102. typedef struct _KB_SIPatStruct
  103. {
  104. UINT16 transport_stream_id;
  105. UINT8 version_number;
  106. UINT16 num;
  107. struct
  108. {
  109. UINT16 program_number;
  110. UINT16 program_map_PID; 
  111. }program[KB_SI_MAX_PAT_PROGRAM_NUM];
  112. UINT32 CRC_32;
  113. }KB_SIPatStruct;
  114. typedef struct _KB_SINitStruct
  115. {
  116. UINT16 network_id;
  117. UINT8 version_number;
  118. UINT8 network_name[KB_SI_MAX_NETWORK_NAME_LEN + 1];
  119. UINT8 loader_flag; 
  120. struct
  121. {
  122. UINT16 transport_stream_id; 
  123. UINT16 original_network_id;
  124. UINT16 service_id;
  125. UINT8 stbVersion;
  126. }loader;
  127. UINT16 num; 
  128. struct
  129. {
  130. UINT16 transport_stream_id; 
  131. UINT16 original_network_id; 
  132. UINT32 frequency; 
  133. UINT8 FEC_outer; 
  134. UINT8 modulation; 
  135. UINT32 symbol_rate; 
  136. UINT8 FEC_inner; 
  137. UINT8 service_num;
  138. struct
  139. {
  140.             UINT16 service_id;
  141.             UINT8 service_type;
  142.          }service_list[KB_SI_MAX_CHANNEL_SERVIC_NUM];
  143. }network[KB_SI_MAX_NIT_CHANNEL_NUM];
  144. UINT32 CRC_32;
  145. }KB_SINitStruct;
  146. typedef struct _KB_SIPmtStruct
  147. {
  148. UINT16 program_number; 
  149. UINT8 version_number; 
  150. UINT16 PCR_PID; 
  151. UINT16 CA_descriptor_buffer_len; 
  152. UINT8 CA_descriptor[KB_SI_MAX_CA_BUFFER_LEN]; 
  153. UINT16 num; 
  154. UINT8* pcSectionData;
  155. struct
  156. {
  157. UINT8 stream_type; 
  158. UINT16 elementary_PID; 
  159. UINT8 component_tag; 
  160. UINT16 CA_descriptor_buffer_len;
  161. UINT8 CA_descriptor[KB_SI_MAX_CA_BUFFER_LEN]; 
  162. }stream[KB_SI_MAX_PMT_STREAM_NUM];
  163. }KB_SIPmtStruct;
  164. typedef struct _KB_SIService
  165. {
  166. UINT8 service_provider_name[KB_SI_MAX_SERVICE_PROVIDER_NAME_LEN + 1]; 
  167. UINT8 service_name[KB_SI_MAX_SERVICE_NAME_LEN + 1]; 
  168. }KB_SIService;
  169. typedef struct _KB_SINVODRefDes
  170. {
  171. UINT16 TS_ID;
  172. UINT16 OrgnetID;
  173. UINT16 ServiceID;
  174. }KB_SINVODRefDes;
  175. typedef struct _KB_SISdtStruct
  176. {
  177. UINT16 OrgNetID;
  178. UINT16 TSID;
  179. UINT16 service_id; 
  180. UINT8 version_number; 
  181. UINT8 EIT_schedule_flag; 
  182. UINT8 EIT_present_following_flag; 
  183. UINT8 running_status; 
  184. UINT8 free_CA_mode; 
  185. UINT8 service_type; 
  186. UINT8 component_tag; 
  187. KB_SIService chinese; 
  188. KB_SIService english; 
  189. UINT16 reference_service_id;
  190. UINT8 TimeShiftedNum;
  191. KB_SINVODRefDes  TimeShift[KB_SI_MAX_TIMESHIFTED_NUM];
  192. }KB_SISdtStruct;
  193. typedef struct _KB_SIBatStruct
  194. {
  195. UINT16 bouquet_id; 
  196. UINT8 version_number; 
  197. UINT8 bouquet_name[KB_SI_MAX_BOUQUET_NAME_LEN + 1]; 
  198. UINT8 english_bouquet_name[KB_SI_MAX_BOUQUET_NAME_LEN + 1]; 
  199. UINT16 num; 
  200. struct
  201. {
  202. UINT16 transport_stream_id; 
  203. UINT16 original_network_id; 
  204. UINT16 num; 
  205. struct
  206. {
  207. UINT16 service_id; 
  208. UINT8 service_type; 
  209. }service[KB_SI_MAX_BAT_SERVICE_NUM_PER_TS];
  210. }transport_stream[KB_SI_MAX_NIT_CHANNEL_NUM];
  211. }KB_SIBatStruct;
  212. typedef struct _KB_SIPFShortEvent
  213. {
  214. UINT8 event_name[KB_SI_MAX_EVENT_NAME_LEN + 1]; 
  215. UINT8 text[KB_SI_MAX_EVENT_TEXT_LEN + 1]; 
  216. }KB_SIPFShortEvent;
  217. typedef struct _KB_SISchShortEvent
  218. {
  219. UINT8 event_name[KB_SI_MAX_EVENT_NAME_LEN + 1]; 
  220. UINT8 *text; 
  221. }KB_SISchShortEvent;
  222. typedef struct _KB_SINVODEitPF
  223. {
  224. UINT16 service_id; 
  225. UINT8 version_number; 
  226. UINT16 event_id; 
  227. time_t start_time; 
  228. UINT32 duration; 
  229. UINT8 running_status; 
  230. UINT8 free_CA_mode; 
  231. KB_SIPFShortEvent chinese;
  232. }KB_SINVODEitPF;
  233. typedef struct _KB_SIEitExtendEvent
  234. {
  235.     UINT8 text_char[KB_SI_MAX_TEXT_CHAR_LEN + 1];
  236. }KB_SIEitExtendEvent;
  237. typedef struct _KB_SIEitPF
  238. {
  239. UINT16 service_id; 
  240. UINT8 version_number; 
  241. UINT16 event_id; 
  242. time_t start_time; 
  243. UINT32 duration; 
  244. UINT8 running_status; 
  245. UINT8 free_CA_mode; 
  246. KB_SIPFShortEvent chinese;
  247. KB_SIEitExtendEvent extended_event;
  248. #ifndef UNUSED_SHORT_EVENT
  249. KB_SIPFShortEvent english;
  250. #endif
  251. UINT8  NVODEventNum;
  252. KB_SINVODEitPF  * NVODEvent;
  253. UINT16 timer;
  254. }KB_SIEitPF;
  255. typedef struct _KB_SIEitSchEvent
  256. {
  257. UINT16 event_id;   // 2
  258. time_t start_time; // 8
  259. UINT32 duration;   // 12
  260. UINT8 running_status; // 13
  261. UINT8 free_CA_mode;   // 14
  262. KB_SISchShortEvent chinese; // 40
  263. //KB_SISchShortEvent english;
  264. //added by whale 07/03/01
  265. UINT8 content_level1;//节目内容标识符的第一级 41
  266. UINT16 reference_service_id; //48
  267. UINT16 reference_event_id;   //52
  268. }KB_SIEitSchEvent;
  269. typedef struct _KB_SIEitSch
  270. {
  271. UINT16 service_id; 
  272. UINT16 num; 
  273.     KB_SIEitSchEvent *ptEvent;
  274. }KB_SIEitSch;
  275. typedef struct _KB_SIMultiEitScheduleEvent
  276. {
  277. UINT16 event_id; 
  278. time_t start_time; 
  279. UINT32 duration; 
  280. UINT16 reference_service_id;
  281. UINT16 reference_event_id;
  282. }KB_SIMultiEitScheduleEvent;
  283. typedef struct _KB_SIMultiEitSchedule
  284. {
  285. UINT16 service_id; 
  286. struct
  287. {
  288. UINT16 num; 
  289. UINT8  isnvod;
  290. KB_SIMultiEitScheduleEvent event[KB_SI_MAX_EVENT_NUM_PER_DAY - 20];
  291. }day[4]; 
  292. }KB_SIMultiEitSchedule;
  293. typedef struct _KB_SIProgram
  294. {
  295. UINT16 transport_stream_id; 
  296. UINT16 original_network_id; 
  297. KB_SIPmtStruct pmt;
  298. KB_SISdtStruct sdt;
  299. KB_SIEitPF eitPresent;
  300. KB_SIEitPF eitFollow;
  301. }KB_SIProgram;
  302. typedef struct _KB_SIEitSchTimeShiftNode
  303. {
  304.     UINT16 event_id; 
  305. time_t start_time; 
  306. UINT16 reference_service_id;
  307. UINT16 reference_event_id;
  308. }KB_SIEitSchTimeShiftNode;
  309. typedef struct _KB_SIEitSchTimeShift
  310. {
  311.     UINT16 service_id; 
  312. UINT16 num; 
  313. KB_SIEitSchTimeShiftNode *ptTimeShift; 
  314. }KB_SIEitSchTimeShift;
  315. typedef struct _KB_SICatStruct
  316. {
  317. UINT8 version_number; 
  318. UINT16 CA_descriptor_buffer_len; 
  319. UINT8 CA_descriptor[KB_SI_MAX_CA_BUFFER_LEN]; 
  320. }KB_SICatStruct;
  321. typedef struct _KB_SIRstStruct
  322. {
  323. UINT16 transport_stream_id; 
  324. UINT16 original_network_id; 
  325. UINT16 service_id; 
  326. UINT16 event_id; 
  327. UINT8 running_status; 
  328. }KB_SIRstStruct;
  329. //modified by whale 07/07/16
  330. //#define KB_SI_MAX_REF_SVC_NUMS     20 
  331. #define KB_SI_MAX_REF_SVC_NUMS     30 
  332. #define KB_SI_MAX_SHIFT_SVC_NUMS   42 
  333. typedef struct _KB_SIRefSvcCell
  334. {
  335. UINT16 refScvId;  
  336. UINT16 freq, symb, qam;   
  337. UINT16 shiftSvcNum; 
  338. UINT16 TsID;
  339.     UINT8  refScvName[20];
  340. struct
  341. {
  342. UINT16 tsId; 
  343. UINT16 netId; 
  344. UINT16 svcId; 
  345. }shiftSvc[KB_SI_MAX_SHIFT_SVC_NUMS]; 
  346. }KB_SIRefSvcCell; 
  347. #define KB_SI_MAX_TOT_SECTION 10
  348. typedef struct _KB_SITot
  349. {
  350. UINT8 country_code[3];
  351. UINT8 country_region_id;
  352. UINT8 polarity;
  353. UINT16 local_time_offset;
  354. } KB_SITot;
  355. typedef void (*KB_SICallbackFunc)(KB_OSPMsgNode *pInMsg);
  356. KB_SICallbackFunc KB_SICallback(KB_SICallbackFunc callback);
  357. KB_SICallbackFunc KB_SIRegisterEitCallBack(KB_SICallbackFunc callback);
  358. INT32 KB_SIInit(void);
  359. INT32 KB_SIDestroy(void);
  360. INT32 KB_SIStopAllSection(void);
  361. INT32 KB_SIGetPat(const KB_SIPatStruct* i_pstPat, INT32 nType, INT32 i_nVersionNumber);
  362. INT32 KB_SIStopPat(void);
  363. INT32 KB_SIGetNit(UINT32 i_nNitPid, const KB_SINitStruct* i_pstNit, INT32 nType, INT32 i_nVersionNumber);
  364. INT32 KB_SIStopNit(void);
  365. INT32 KB_SIGetPmt(INT32 i_nProgramMapPid, INT32 nSvcID, const KB_SIPmtStruct* i_pstPmt, INT32 nType, INT32 i_nVersionNumber);
  366. INT32 KB_SIStopPmt(INT32 nSvcID);
  367. INT32 KB_SIGetSdt(INT32 nSvcID, INT32 i_nMaxServiceNum, const KB_SISdtStruct* i_pstSdt, INT32 nType, INT32 i_nVersionNumber);
  368. INT32 KB_SIStopSdt(void);
  369. INT32 KB_SIGetBat(INT32 nbatID, const KB_SIBatStruct* i_pstBat, INT32 nType, INT32 i_nVersionNumber);
  370. INT32 KB_SIStopBat(void);
  371. INT32 KB_SIGetEitPF(INT32 nSvcID, KB_SIEitTs eTs, const KB_SIEitPF* i_pstEitPresent, const KB_SIEitPF* i_pstEitFollow, INT32 nType, INT32 i_nVersionNumber);
  372. INT32 KB_SIStopEitPF(INT32 nSvcID, KB_SIEitTs eTs);
  373. INT32 KB_SIGetEitSCH(INT32 nSvcID, const KB_SIEitSch* i_pstEinSchInfo);
  374. INT32 KB_SIStopEitSCH(INT32 nSvcID);
  375. INT32 KB_SIGetTime(time_t* pTimeNode);
  376. INT32 KB_SIStopTDT(void);
  377. INT32 KB_SIGetCat(const KB_SICatStruct* pCatNode, INT32 nType, INT32 i_nVersionNumber);
  378. INT32 KB_SIStopCat(void);
  379. INT32 KB_SIGetRst(INT32 nMaxEvent, const KB_SIRstStruct* i_pstRst);
  380. INT32 KB_SIStopRst(void);
  381. INT32 KB_SIGetTOT(KB_SITot* pTot);
  382. INT32 KB_SIStopTOT(void);
  383. INT32 KB_SIGetEITSCHShift(INT32 nSvcID,KB_SIEitTs eTs,KB_SIEitSchTimeShift *ptSchShift);
  384. INT32 KB_SIStopEitSCHShift(INT32 nSvcID, KB_SIEitTs eTs);
  385. #endif