DVBCore  20.3.0
DVBCore Documentation
stbsitab.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org)
3  * Copyright © 2004 Ocean Blue Software Ltd
4  *
5  * This file is part of a DTVKit Software Component
6  * You are permitted to copy, modify or distribute this file subject to the terms
7  * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org
8  *
9  * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
10  * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
11  * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
12  *
13  * If you or your organisation is not a member of DTVKit then you have access
14  * to this source code outside of the terms of the licence agreement
15  * and you are expected to delete this and any associated files immediately.
16  * Further information on DTVKit, membership and terms can be found at www.dtvkit.org
17  *******************************************************************************/
25 // pre-processor mechanism so multiple inclusions don't cause compilation error
26 
27 #ifndef _STBSITAB_H
28 #define _STBSITAB_H
29 
30 #include "techtype.h"
31 #include "stbsiflt.h"
32 #include "stbdpc.h"
33 
34 //---Constant and macro definitions for public use-----------------------------
35 
36 /* CRID related defines */
37 #define CRID_LOCATION_MASK 0x03
38 #define CRID_TYPE_MASK 0xfc
39 #define CRID_TYPE_SHIFT 2
40 
41 #define CRID_LOCATION_0 0x00
42 #define CRID_LOCATION_1 0x01
43 
44 #define DVB_INVALID_ID 0x1fff
45 #define DVB_INVALID_CAROUSEL_ID 0xffffffff
46 
47 
48 //---Enumerations for public use-----------------------------------------------
49 
50 typedef enum
51 {
52  USER_DEF_DESCRIP_NOT_USED = 0,
53  USER_DEF_DESCRIP_LOGICAL_CHAN_NUM = 1,
54  USER_DEF_DESCRIP_PREF_NAME_LIST = 2,
55  USER_DEF_DESCRIP_PREF_NAME_ID = 3
56 } STB_SI_USER_DEF_DESCRIP_FUNCTION;
57 
58 typedef enum
59 {
60  EIT_NOW_NEXT_ACT = 0,
61  EIT_NOW_NEXT_OTHER = 1,
62  EIT_NOW_NEXT_ALL = 2,
63  EIT_PF_PLUS = 3
64 } E_SI_EIT_TABLE_REQ;
65 
66 typedef enum
67 {
68  EIT_SCHED_ACT = 0,
69  EIT_SCHED_OTHER = 1,
70  EIT_SCHED_ACT_4DAY = 2,
71  EIT_SCHED_OTHER_4DAY = 3,
72  EIT_SCHED_ALL_4DAY = 4,
73  EIT_SCHED_ALL_8DAY = 5,
74  EIT_SCHED_ALL = 6
75 } E_SI_SCHED_TABLE_REQ;
76 
77 typedef enum
78 {
79  CTYPE_DVB_SUBTITLE = 0x310,
80  CTYPE_DVB_SUBTITLE_4_3 = 0x311,
81  CTYPE_DVB_SUBTITLE_16_9 = 0x312,
82  CTYPE_DVB_SUBTITLE_221_1 = 0x313,
83  CTYPE_DVB_SUBTITLE_HD = 0x314,
84 
85  CTYPE_DVB_SUBTITLE_HH = 0x320,
86  CTYPE_DVB_SUBTITLE_HH_4_3 = 0x321,
87  CTYPE_DVB_SUBTITLE_HH_16_9 = 0x322,
88  CTYPE_DVB_SUBTITLE_HH_221_1 = 0x323,
89  CTYPE_DVB_SUBTITLE_HH_HD = 0x324,
90 } E_SI_COMPONENT_TYPE_SUBTITLE;
91 
92 typedef enum /* see ETSI 300468 */
93 {
94  /* MPEG1 Audio Description types */
95  CTYPE_MPEG1_AD_VISUAL = 0x240,
96  CTYPE_MPEG1_AD_HEARING = 0x241,
97  CTYPE_MPEG1_AD_RCVR_MIX = 0x247,
98  CTYPE_MPEG1_AD_BCAST_MIX = 0x248,
99 
100  /* AC3, Full Service Audio description types */
101  CTYPE_AC3_FS_VISUAL = 0x450, /* to 0x457 */
102  CTYPE_AC3_FS_HEARING = 0x458, /* to 0x45f */
103  CTYPE_AC3_FS_DIALOGUE = 0x420, /* to 0x427 */
104  CTYPE_AC3_FS_COMMENTARY = 0x468,
105  CTYPE_AC3_FS_EMERGENCY = 0x470,
106 
107  /* E-AC3, Full Service Audio description types */
108  CTYPE_EAC3_FS_VISUAL = 0x4d0, /* to 0x4d7 */
109  CTYPE_EAC3_FS_HEARING = 0x4d8, /* to 0x4df */
110  CTYPE_EAC3_FS_DIALOGUE = 0x4a0, /* to 0x4a7 */
111  CTYPE_EAC3_FS_COMMENTARY = 0x4e8,
112  CTYPE_EAC3_FS_EMERGENCY = 0x4f0,
113 
114  /* HE-AAC Audio Description types */
115  CTYPE_HEAAC_AD_VISUAL = 0x640,
116  CTYPE_HEAAC_AD_HEARING = 0x641,
117  CTYPE_HEAAC_AD_RCVR_MIX = 0x647,
118  CTYPE_HEAAC_AD_BCAST_MIX = 0x648,
119 
120  /* HE-AAC v2 Audio Description types */
121  CTYPE_HEAACV2_AD_VISUAL = 0x644,
122  CTYPE_HEAACV2_AD_HEARING = 0x645,
123  CTYPE_HEAACV2_AD_RCVR_MIX = 0x649,
124  CTYPE_HEAACV2_AD_BCAST_MIX = 0x64a,
125 
126  /* Supplementary Audio */
127  CTYPE_MPEG1_SA_RCVR_MIX = 0x242,
128  CTYPE_HEAAC_SA_RCVR_MIX = 0x642,
129  CTYPE_HEAACV2_SA_RCVR_MIX = 0x646
130 } E_SI_COMPONENT_TYPE_AUDIO_DESC;
131 
132 //---Global type defs for public use-------------------------------------------
133 
134 // common structures used in following tables
135 typedef struct si_string
136 {
137  U8BIT nbytes;
138  U8BIT *str_ptr;
140 
141 typedef struct si_linkage_desc
142 {
143  struct si_linkage_desc *next;
144  U32BIT private_data_code;
145  U16BIT orig_net_id;
146  U16BIT tran_id;
147  U16BIT serv_id;
148  U8BIT link_type;
149  U8BIT data_length;
150  U8BIT data;
152 
153 typedef struct si_guidance_desc
154 {
155  U8BIT guidance_type;
156  BOOLEAN guidance_mode;
157  U8BIT num_langs;
158  U32BIT *lang_codes;
159  SI_STRING_DESC **strings;
161 
162 typedef struct si_fta_content_desc
163 {
164  BOOLEAN do_not_scramble;
165  U8BIT access_over_internet;
166  BOOLEAN do_not_apply_revocation;
168 
169 typedef struct si_target_region
170 {
171  struct si_target_region *next;
172  U8BIT region_depth;
173  U8BIT primary_region_code;
174  U8BIT secondary_region_code;
175  U8BIT tertiary_region_code;
177 
178 typedef struct si_target_region_desc
179 {
180  struct si_target_region_desc *next;
181  U32BIT country_code;
182  SI_TARGET_REGION *region_list;
184 
185 typedef struct si_serv_avail_desc
186 {
187  struct si_serv_avail_desc *next;
188  U16BIT num_of_cell_ids;
189  U16BIT *cell_ids;
190  BOOLEAN availability_flag;
192 
193 typedef enum
194 {
195  ICON_TRANS_LOCAL = 0x0,
196  ICON_TRANS_URL = 0x1,
197  ICON_TRANS_RES1 = 0x2,
198  ICON_TRANS_RES2 = 0x3
199 } E_ICON_TRANSPORT_MODE;
200 
201 typedef enum
202 {
203  ICON_COORDS_576 = 0x0,
204  ICON_COORDS_720 = 0x1,
205  ICON_COORDS_1080 = 0x2
206 } E_ICON_COORD_SYSTEM;
207 
208 typedef struct si_image_icon_desc
209 {
210  U8BIT desc_num;
211  U8BIT last_desc_num;
212  U8BIT icon_id;
213  E_ICON_TRANSPORT_MODE transport_mode;
214  BOOLEAN position_defined;
215  E_ICON_COORD_SYSTEM coord_system;
216  U16BIT x_pos;
217  U16BIT y_pos;
218  U8BIT *icon_type;
219  U32BIT data_len;
220  U8BIT *icon_data;
222 
223 typedef struct si_uri_linkage_desc
224 {
225  U32BIT private_data_code;
226  U8BIT uri_linkage_type;
227  SI_STRING_DESC *uri;
228  U16BIT min_polling_interval;
229  U8BIT private_data_length;
230  U8BIT *private_data;
231  struct si_uri_linkage_desc *next;
233 
234 
235 //--------------------------------------------------
236 // PAT table structures
237 typedef struct si_pat_service_entry
238 {
239  struct si_pat_service_entry *next;
240  U16BIT serv_id;
241  U16BIT pmt_pid;
243 
244 typedef struct si_pat_table
245 {
246  U8BIT version;
247  U16BIT tran_id;
248  U16BIT num_services;
249  SI_PAT_SERVICE_ENTRY *service_list;
250  SI_PAT_SERVICE_ENTRY *last_service_entry;
251 } SI_PAT_TABLE;
252 
253 //--------------------------------------------------
254 // PMT table structures
255 typedef struct si_dvb_subt_desc
256 {
257  U32BIT lang_code;
258  U8BIT type;
259  U16BIT composition_page;
260  U16BIT ancillary_page;
262 
263 typedef struct si_teletext_desc
264 {
265  U32BIT lang_code;
266  U8BIT type;
267  U8BIT magazine;
268  U8BIT page;
270 
271 typedef struct si_ca_desc
272 {
273  U16BIT ca_id;
274  U16BIT ca_pid;
275 } SI_CA_DESC;
276 
277 typedef struct si_iso_lang_desc
278 {
279  U32BIT lang_code;
280  U8BIT audio_type;
282 
283 /* Structure used when parsing AC-3 and E-AC3 descriptors */
284 typedef struct si_ac3_desc
285 {
286  U8BIT dtag;
287  BOOLEAN component_type_flag;
288  U8BIT component_type;
289  BOOLEAN bsid_flag;
290  U8BIT bsid;
291  BOOLEAN mainid_flag;
292  U8BIT mainid;
293  BOOLEAN asvc_flag;
294  U8BIT asvc;
295  BOOLEAN mixinfoexists;
296  BOOLEAN substream1_flag;
297  U8BIT substream1;
298  BOOLEAN substream2_flag;
299  U8BIT substream2;
300  BOOLEAN substream3_flag;
301  U8BIT substream3;
302 } SI_AC3_DESC;
303 
304 typedef struct si_ad_desc
305 {
306  U32BIT lang_code;
307  BOOLEAN mix_type;
308  U8BIT edit_class;
309 } SI_AD_DESC;
310 
311 typedef struct si_aac_desc
312 {
313  U8BIT profile_level;
314  BOOLEAN type_present;
315  U8BIT aac_type;
316 } SI_AAC_DESC;
317 
318 typedef struct si_service_move_desc
319 {
320  U16BIT onet_id;
321  U16BIT ts_id;
322  U16BIT service_id;
324 
325 typedef struct si_app_sig_desc
326 {
327  U16BIT app_type;
328  U8BIT ait_version;
330 
331 typedef enum
332 {
333  SI_STREAM_TYPE_VIDEO1 = 0x01,
334  SI_STREAM_TYPE_VIDEO2 = 0x02,
335  SI_STREAM_TYPE_AUDIO1 = 0x03,
336  SI_STREAM_TYPE_AUDIO2 = 0x04,
337  SI_STREAM_TYPE_PRIVATE = 0x05,
338  SI_STREAM_TYPE_PES_PKT = 0x06,
339  SI_STREAM_TYPE_MHEG = 0x07,
340  SI_STREAM_TYPE_DATA_A = 0x0a,
341  SI_STREAM_TYPE_DATA_B = 0x0b,
342  SI_STREAM_TYPE_DATA_C = 0x0c,
343  SI_STREAM_TYPE_DATA_D = 0x0d,
344  SI_STREAM_TYPE_AUX = 0x0e,
345  SI_STREAM_TYPE_AAC = 0x0f,
346  SI_STREAM_TYPE_HEAAC = 0x11,
347  SI_STREAM_TYPE_H264 = 0x1b,
348  SI_STREAM_TYPE_H265 = 0x24,
349  SI_STREAM_TYPE_AC3 = 0x81
350 } SI_STREAM_TYPE;
351 
353 {
354  U8BIT data_type;
355  U8BIT component_tag;
357 
358 typedef struct si_pmt_stream_entry
359 {
360  struct si_pmt_stream_entry *next;
361  SI_STREAM_TYPE type;
362  U16BIT pid;
363  U8BIT *tag_array_ptr;
364  U8BIT num_tag_entries;
365  U16BIT num_iso_lang_entries;
366  SI_ISO_LANG_DESC *iso_lang_desc_array;
367  U16BIT num_ca_entries;
368  SI_CA_DESC *ca_desc_array;
369  U16BIT num_subtitle_entries;
370  SI_SUBTITLE_DESC *subtitle_desc_array;
371  U16BIT num_teletext_entries;
372  SI_TELETEXT_DESC *teletext_desc_array;
373  SI_SERVICE_MOVE_DESC *service_move;
374  U16BIT num_app_sig_entries;
375  SI_APP_SIG_DESC *app_sig_desc_array;
376  BOOLEAN has_ait;
377  BOOLEAN has_rct;
378  U8BIT num_tunnelled_entries;
379  SI_FREESAT_TUNNELLED_DATA_DESC *tunnelled_desc_array;
380  U32BIT carousel_id;
381 
382  SI_AC3_DESC *ac3_descriptor;
383  SI_AD_DESC *audio_desc;
384  SI_AAC_DESC *aac_descriptor;
386 
387 typedef struct si_pmt_table
388 {
389  U8BIT version;
390  U16BIT serv_id;
391  U16BIT pcr_pid;
392  U16BIT num_ca_entries;
393  SI_CA_DESC *ca_desc_array;
394  U8BIT num_tunnelled_entries;
395  SI_FREESAT_TUNNELLED_DATA_DESC *tunnelled_desc_array;
396  U8BIT content_protection_level;
397  U16BIT num_streams;
398  SI_PMT_STREAM_ENTRY *stream_list;
399  SI_PMT_STREAM_ENTRY *last_stream_entry;
400 } SI_PMT_TABLE;
401 
402 //--------------------------------------------------
403 // NIT table structures
405 {
406  U32BIT lang_code;
407  SI_STRING_DESC *name_str;
409 
410 typedef struct si_serv_list_desc
411 {
412  U16BIT serv_id;
413  U8BIT serv_type;
415 
416 typedef struct uk_dtt_lcn_desc
417 {
418  U16BIT serv_id;
419  U16BIT serv_lcn;
420  BOOLEAN visible;
421 } SI_LCN_DESC;
422 
423 typedef struct
424 {
425  U16BIT serv_id;
426  U16BIT serv_lcn;
427  BOOLEAN visible;
429 
430 typedef struct
431 {
432  U8BIT chan_list_id;
433  SI_STRING_DESC *chan_list_name;
434  U32BIT country_code;
435  U8BIT num_services;
436  SI_NORDIG_SERV_LCN *serv_array;
438 
439 typedef struct si_terr_del_sys_desc
440 {
441  U32BIT freq_hz;
442  E_STB_DP_TBWIDTH bwidth;
443  E_STB_DP_TMODE mode;
445 
446 typedef struct si_t2_del_sys_cell
447 {
448  U16BIT cell_id;
449  U8BIT num_freqs;
450  U32BIT freq_hz[6];
452 
453 typedef struct si_t2_del_sys_desc
454 {
455  U8BIT plp_id;
456  U16BIT t2_system_id;
457  E_STB_DP_TBWIDTH bwidth;
458  E_STB_DP_TMODE mode;
459  U8BIT num_cells;
460  SI_T2_DEL_SYS_CELL *cell;
462 
463 typedef struct
464 {
465  BOOLEAN is_t2;
466  union
467  {
470  } u;
472 
473 typedef struct si_cable_del_sys_desc
474 {
475  U32BIT freq_hz;
476  U8BIT fec_outer;
477  U8BIT fec_inner;
478  U8BIT modulation;
479  U32BIT symbol_rate;
481 
482 typedef struct si_sat_del_sys_desc
483 {
484  U32BIT freq_hz;
485  U16BIT position;
486  U16BIT sym_rate;
487  E_STB_DP_POLARITY polarity;
488  BOOLEAN east_west;
489  E_STB_DP_FEC fec_code;
490  BOOLEAN dvb_s2;
491  E_STB_DP_MODULATION modulation;
493 
494 typedef enum si_delivery_sys_desc_type
495 {
496  SI_DEL_SYS_DESC_TYPE_TERR,
497  SI_DEL_SYS_DESC_TYPE_SAT,
498  SI_DEL_SYS_DESC_TYPE_CABLE
499 } SI_DELIVERY_SYS_DESC_TYPE;
500 
501 typedef union si_delivery_sys_desc
502 {
504  SI_CABLE_DEL_SYS_DESC cable;
505  SI_TERR_DEL_SYS terr;
507 
509 {
510  U16BIT serv_id;
511  BOOLEAN service_selectable;
512  BOOLEAN service_visible;
514 
515 typedef struct si_nit_region_name
516 {
517  U8BIT region_depth;
518  SI_STRING_DESC *region_name;
519  U8BIT primary_region_code;
520  U8BIT secondary_region_code;
521  U16BIT tertiary_region_code;
523 
525 {
526  struct si_nit_target_region_name_desc *next;
527  U32BIT country_code;
528  U32BIT lang_code;
529  U8BIT num_names;
530  SI_NIT_REGION_NAME *name_array;
532 
533 typedef struct si_ciplus_service
534 {
535  struct si_ciplus_service *next;
536  U16BIT id;
537  U8BIT type;
538  BOOLEAN visible;
539  BOOLEAN selectable;
540  U16BIT lcn;
541  SI_STRING_DESC *provider_str;
542  SI_STRING_DESC *name_str;
544 
545 typedef enum
546 {
547  FREQ_LIST_CODING_TYPE_SATELLITE = 1,
548  FREQ_LIST_CODING_TYPE_CABLE = 2,
549  FREQ_LIST_CODING_TYPE_TERRESTRIAL = 3
550 } SI_FREQ_LIST_CODING_TYPE;
551 
553 {
554  struct si_nit_frequency_list_desc *next;
555  U8BIT coding_type;
556  U8BIT num_frequencies;
557  U32BIT *frequency_array;
559 
561 {
562  struct si_nit_transport_entry *next;
563  U16BIT tran_id;
564  U16BIT orig_net_id;
565  SI_DELIVERY_SYS_DESC_TYPE del_sys_desc_type;
566  SI_DELIVERY_SYS_DESC *del_sys_desc;
567  SI_NIT_FREQUENCY_LIST_DESC *freq_list;
568  U16BIT num_serv_list_entries;
569  SI_SERV_LIST_DESC *serv_list_desc_array;
570  U16BIT num_lcn_entries;
571  SI_LCN_DESC *lcn_desc_array;
572  SI_STRING_DESC *def_authority;
573  U16BIT num_serv_attr_entries;
574  SI_SERV_ATTRIBUTE_DESC *serv_attr_array;
575  U16BIT num_nordig_lcn_entries;
576  SI_NORDIG_LCN_DESC *nordig_lcn_desc_array;
577  U16BIT num_hd_lcn_entries;
578  SI_LCN_DESC *hd_lcn_desc_array;
579  SI_FTA_CONTENT_DESC *fta_content_desc;
580  SI_TARGET_REGION_DESC *target_region_list;
581  U16BIT num_ciplus_services;
582  SI_CIPLUS_SERVICE *ciplus_service_list;
583  SI_CIPLUS_SERVICE *last_ciplus_service;
585 
586 typedef enum
587 {
588  CATEGORY_ALL_RECEIVERS = 0,
589  CATEGORY_T2_RECEIVERS = 1
590 } SI_NIT_RECEIVER_CATEGORY;
591 
592 typedef enum
593 {
594  NET_CHANGE_MESSAGE_ONLY = 0x0,
595  NET_CHANGE_MINOR_DEFAULT = 0x1,
596  NET_CHANGE_MULTIPLEX_REMOVE = 0x2,
597  NET_CHANGE_SERVICE_CHANGE = 0x3,
598  NET_CHANGE_MINOR_RESERVED_1 = 0x4,
599  NET_CHANGE_MINOR_RESERVED_2 = 0x5,
600  NET_CHANGE_MINOR_RESERVED_3 = 0x6,
601  NET_CHANGE_MINOR_RESERVED_4 = 0x7,
602  NET_CHANGE_MAJOR_DEFAULT = 0x8,
603  NET_CHANGE_MULTIPLEX_FREQ_CHANGE = 0x9,
604  NET_CHANGE_MULTIPLEX_COVERAGE_CHANGE = 0xA,
605  NET_CHANGE_MULTIPLEX_ADDED = 0xB,
606  NET_CHANGE_MAJOR_RESERVED_1 = 0xC,
607  NET_CHANGE_MAJOR_RESERVED_2 = 0xD,
608  NET_CHANGE_MAJOR_RESERVED_3 = 0xE,
609  NET_CHANGE_MAJOR_RESERVED_4 = 0xF
610 } SI_NIT_NETWORK_CHANGE_TYPE;
611 
612 typedef struct si_nit_change_entry
613 {
614  U8BIT change_id;
615  U8BIT version;
616  U16BIT start_date;
617  U8BIT start_hours;
618  U8BIT start_mins;
619  U8BIT start_secs;
620  U8BIT dur_hours;
621  U8BIT dur_mins;
622  U8BIT dur_secs;
623  SI_NIT_RECEIVER_CATEGORY receiver_category;
624  SI_NIT_NETWORK_CHANGE_TYPE change_type;
625  U8BIT message_id;
626  BOOLEAN invariant_ts_present;
627  U16BIT invariant_ts_tsid;
628  U16BIT invariant_ts_onid;
630 
632 {
633  U16BIT cell_id;
634  U8BIT num_changes;
635  SI_NIT_CHANGE_ENTRY *change_array;
637 
638 typedef struct si_nit_message_entry
639 {
640  U8BIT message_id;
641  U32BIT lang_code;
642  SI_STRING_DESC *message;
644 
646 {
647  U16BIT onet_id;
648  U16BIT trans_id;
649  U16BIT serv_id;
650  U8BIT num_data_types;
651  U8BIT *data_types;
652  struct si_freesat_linkage_desc *next;
654 
656 {
657  U8BIT prefix_index;
658  SI_STRING_DESC *uri_prefix;
659  struct si_freesat_prefix_desc *next;
661 
663 {
664  U16BIT lcn;
665  U8BIT event_info_len;
666  U8BIT app_domain_len;
667  SI_STRING_DESC *provider_str;
668  SI_STRING_DESC *name_str;
669  U8BIT *event_info;
670  U8BIT *app_domain_id;
672 
673 typedef struct si_nit_table
674 {
675  U8BIT version;
676  U16BIT net_id;
677  SI_STRING_DESC *name_str;
678  U16BIT num_multiling_net_names;
679  SI_MULTILING_NET_NAME_DESC *multiling_net_name_desc_array;
680  U16BIT num_linkage_entries;
681  SI_LINKAGE_DESC_ENTRY *linkage_desc_list;
682  SI_LINKAGE_DESC_ENTRY *last_linkage_entry;
683  SI_STRING_DESC *def_authority;
684  U16BIT num_transports;
685  SI_NIT_TRANSPORT_ENTRY *transport_list;
686  SI_NIT_TRANSPORT_ENTRY *last_transport_entry;
687  U16BIT num_change_notifies;
688  SI_NIT_CHANGE_NOTIFY_DESC *change_notify_array;
689  U16BIT num_messages;
690  SI_NIT_MESSAGE_ENTRY *message_array;
691  SI_FTA_CONTENT_DESC *fta_content_desc;
692  SI_NIT_TARGET_REGION_NAME_DESC *target_region_name_list;
693  SI_TARGET_REGION_DESC *target_region_list;
694  SI_FREESAT_LINKAGE_DESC *freesat_linkage_desc;
695  SI_FREESAT_PREFIX_DESC *freesat_prefix_list;
696  SI_URI_LINKAGE_DESC *uri_linkage_list;
697  SI_CIPLUS_VIRTUAL_CHANNEL *ciplus_virtual_channel;
698 } SI_NIT_TABLE;
699 
700 //--------------------------------------------------
701 // SDT table structures
703 {
704  U32BIT lang_code;
705  SI_STRING_DESC *name_str;
706  SI_STRING_DESC *provider_str;
708 
709 typedef struct
710 {
711  U32BIT lang_code;
712  SI_STRING_DESC *name_str;
714 
716 {
717  U32BIT lang_code;
718  U8BIT name_id;
719  SI_STRING_DESC *name_str;
721 
722 typedef enum
723 {
724  RUN_STATE_UNDEFINED = 0,
725  RUN_STATE_NOT_RUNNING,
726  RUN_STATE_STARTS_SOON,
727  RUN_STATE_PAUSING,
728  RUN_STATE_RUNNING,
729  RUN_STATE_OFF_AIR
730 } E_RUNNING_STATE;
731 
732 typedef struct si_sdt_service_entry
733 {
734  struct si_sdt_service_entry *next;
735  U16BIT serv_id;
736  BOOLEAN eit_sched_avail;
737  BOOLEAN eit_now_next_avail;
738  U8BIT running_status;
739  BOOLEAN all_streams_free;
740  U8BIT serv_type;
741  SI_STRING_DESC *name_str;
742  SI_STRING_DESC *provider_str;
743  U8BIT num_ca_id_entries;
744  U16BIT *ca_id_desc_array;
745  U16BIT num_multiling_names;
746  SI_MULTILING_SERV_NAME_DESC *multiling_name_desc_array;
747  U16BIT num_preferred_names;
748  SI_PREFERRED_NAME_DESC *preferred_name_desc_array;
749  U16BIT num_linkage_entries;
750  SI_LINKAGE_DESC_ENTRY *linkage_desc_list;
751  SI_LINKAGE_DESC_ENTRY *last_linkage_entry;
752  SI_STRING_DESC *def_authority;
753  SI_STRING_DESC *short_name_str;
754  U16BIT num_multiling_short_names;
755  SI_MULTILING_SHORT_NAME_DESC *multiling_short_name_array;
756  SI_GUIDANCE_DESC *guidance;
757  SI_FTA_CONTENT_DESC *fta_content_desc;
758  SI_TARGET_REGION_DESC *target_region_list;
759  SI_SERV_AVAIL_DESC *serv_avail_desc_list;
760  U8BIT *ci_protection_desc;
761  SI_FREESAT_PREFIX_DESC *freesat_prefix_list;
762  SI_URI_LINKAGE_DESC *uri_linkage_list;
764 
765 typedef struct si_sdt_table
766 {
767  U8BIT version;
768  U16BIT tran_id;
769  U16BIT orig_net_id;
770  U16BIT num_services;
771  SI_SDT_SERVICE_ENTRY *service_list;
772  SI_SDT_SERVICE_ENTRY *last_service_entry;
773 } SI_SDT_TABLE;
774 
775 
776 //--------------------------------------------------
777 // BAT table structures
778 
779 typedef struct si_freesat_lcn
780 {
781  BOOLEAN numeric_selection;
782  BOOLEAN visible_flag;
783  BOOLEAN user_cust;
784  U16BIT lcn;
785  U16BIT region_id;
786  struct si_freesat_lcn *next;
788 
790 {
791  U16BIT tran_id;
792  U16BIT orig_net_id;
793  U16BIT service_id;
794  U16BIT freesat_id;
795  struct si_bat_freesat_region_lcn_entry *next;
796  SI_FREESAT_LCN *freesat_lcn_list;
798 
800 {
801  struct si_bat_transport_entry *next;
802  U16BIT tran_id;
803  U16BIT orig_net_id;
804  SI_SERV_LIST_DESC *serv_list_desc_array;
805  U16BIT num_serv_list_entries;
806  U16BIT num_lcn_entries;
807  SI_LCN_DESC *lcn_desc_array;
808  SI_BAT_FREESAT_REGION_LCN_ENTRY *lcn_region_list;
809  SI_STRING_DESC *def_authority;
810  SI_FTA_CONTENT_DESC *fta_content_desc;
811  U16BIT *int_rest_serv_array; /* Interactive restrictive services */
812  U8BIT num_int_rest_serv;
814 
816 {
817  U32BIT lang_code;
818  SI_STRING_DESC *name_str;
820 
822 {
823  U8BIT group_type;
824  U16BIT group_id;
825  SI_MULTILANG_GROUP_NAME_DESC *string_array;
826  U8BIT num_group_names;
827  struct si_bat_freesat_group_name_entry *next_group;
829 
831 {
832  U16BIT group_id;
833  BOOLEAN non_destructive_flag;
834  BOOLEAN return_channel_access_flag;
835  BOOLEAN g2_extension_flag;
836  U8BIT g2_flags;
837  U8BIT num_services;
838  U16BIT *freesat_id;
839  struct si_bat_freesat_serv_group_entry *next_group;
841 
843 {
844  U8BIT *data;
845  U8BIT length;
846  struct si_bat_freesat_iactive_storage_desc *next_desc;
848 
849 typedef struct si_bat_freesat_region
850 {
851  U16BIT region_id;
852  U32BIT lang_code;
853  SI_STRING_DESC *region_name;
854  struct si_bat_freesat_region *next;
856 
858 {
859  U16BIT orig_net_id;
860  U16BIT transport_id;
861  U16BIT service_id;
862  struct si_freesat_info_location *next;
864 
865 typedef struct si_bat_table
866 {
867  U8BIT version;
868  U16BIT bouquet_id;
869  SI_STRING_DESC *bouquet_name;
870  SI_STRING_DESC *def_authority;
871  SI_BAT_FREESAT_REGION *region_list;
872  U16BIT num_linkage_entries;
873  SI_LINKAGE_DESC_ENTRY *linkage_desc_list;
874  SI_LINKAGE_DESC_ENTRY *last_linkage_entry;
875  U16BIT num_transports;
876  SI_BAT_TRANSPORT_ENTRY *transport_list;
877  SI_BAT_TRANSPORT_ENTRY *last_transport_entry;
878  SI_BAT_FREESAT_GROUP_NAME_ENTRY *group_name_list;
879  U16BIT num_serv_groups;
880  SI_BAT_FREESAT_SERV_GROUP_ENTRY *serv_group_array;
881  SI_FTA_CONTENT_DESC *fta_content_desc;
882  SI_BAT_FREESAT_IACTIVE_STORAGE_DESC *iactive_storage_desc_list;
883  SI_BAT_FREESAT_INFO_LOCATION *info_location_list;
884  SI_FREESAT_PREFIX_DESC *freesat_prefix_list;
885  SI_URI_LINKAGE_DESC *uri_linkage_list;
886 } SI_BAT_TABLE;
887 
888 
889 //--------------------------------------------------
890 // EIT table structures
891 
892 typedef struct si_component_desc
893 {
894  U8BIT tag;
895  U8BIT content;
896  U8BIT type;
897  U32BIT lang_code;
898  SI_STRING_DESC *desc_str;
900 
902 {
903  U8BIT tag;
904  U32BIT lang_code;
905  SI_STRING_DESC *desc_str;
907 
908 typedef struct si_content_desc
909 {
910  U8BIT level_1;
911  U8BIT level_2;
912  U8BIT user_1;
913  U8BIT user_2;
915 
917 {
918  U32BIT country_code;
919  U8BIT rating;
921 
922 typedef struct si_short_event_desc
923 {
924  U32BIT lang_code;
925  SI_STRING_DESC *name_str;
926  SI_STRING_DESC *desc_str;
928 
930 {
931  U8BIT desc_number;
932  U8BIT last_desc_number;
933  U32BIT lang_code;
934  U8BIT num_items;
935  SI_STRING_DESC **item_desc_array;
936  SI_STRING_DESC **item_text_array;
937  SI_STRING_DESC *text_str;
939 
940 typedef struct si_crid_desc
941 {
942  struct si_crid_desc *next;
943  U8BIT type;
944  SI_STRING_DESC *crid_str;
945 } SI_CRID_DESC;
946 
947 typedef struct si_eit_event_entry
948 {
949  struct si_eit_event_entry *next;
950  U8BIT sect_num;
951  U16BIT event_id;
952  U16BIT start_date; // mjd format
953  U8BIT start_hrs;
954  U8BIT start_mins;
955  U8BIT start_secs;
956  U8BIT duration_hrs;
957  U8BIT duration_mins;
958  U8BIT duration_secs;
959  U8BIT running_status;
960  BOOLEAN all_streams_free;
961  U8BIT preferred_name_id;
962  U8BIT num_ca_id_entries;
963  U16BIT *ca_id_desc_array;
964  U8BIT num_component_entries;
965  SI_COMPONENT_DESC *component_desc_array;
966  U8BIT num_content_entries;
967  SI_CONTENT_DESC *content_desc_array;
968  U8BIT num_multiling_component_entries;
969  SI_MULTILING_COMPONENT_DESC *multiling_component_desc_array;
970  U8BIT num_parental_rating_entries;
971  SI_PARENTAL_RATING_DESC *parental_rating_desc_array;
972  U8BIT num_short_event_entries;
973  SI_SHORT_EVENT_DESC *short_event_desc_array;
974  U8BIT num_extended_event_entries;
975  SI_EXTENDED_EVENT_DESC *extended_event_desc_array;
976  U8BIT num_crids;
977  SI_CRID_DESC *crid_list;
978  SI_CRID_DESC *last_crid_entry;
979  SI_GUIDANCE_DESC *guidance;
980  SI_FTA_CONTENT_DESC *fta_content_desc;
982 
983 typedef struct si_eit_table
984 {
985  U8BIT version;
986  U8BIT table_id;
987  U16BIT serv_id;
988  U16BIT tran_id;
989  U16BIT orig_net_id;
990  U8BIT last_table_id;
991  U16BIT num_events;
992  SI_EIT_EVENT_ENTRY *event_list;
993  SI_EIT_EVENT_ENTRY *last_event_entry;
994 } SI_EIT_TABLE;
995 
996 
997 //--------------------------------------------------
998 // Time and date table structures
999 typedef struct si_lto_desc
1000 {
1001  U32BIT country_code;
1002  U8BIT region;
1003  BOOLEAN offset_negative;
1004  U8BIT offset_hrs;
1005  U8BIT offset_mins;
1006  U16BIT change_date; // mjd format
1007  U8BIT change_hrs;
1008  U8BIT change_mins;
1009  U8BIT change_secs;
1010  U8BIT next_offset_hrs;
1011  U8BIT next_offset_mins;
1012 } SI_LTO_DESC;
1013 
1014 typedef struct si_time_table
1015 {
1016  U16BIT date; // mjd format
1017  U8BIT hrs;
1018  U8BIT mins;
1019  U8BIT secs;
1020  U16BIT num_lto_entries;
1021  SI_LTO_DESC *lto_desc_array;
1022 } SI_TIME_TABLE;
1023 
1024 
1025 //--------------------------------------------------
1026 // Related content table (RCT) structures
1027 typedef enum
1028 {
1029  RCT_LINK_TYPE_URI = 0x0,
1030  RCT_LINK_TYPE_BINARY = 0x1,
1031  RCT_LINK_TYPE_URI_BINARY = 0x2,
1032  RCT_LINK_TYPE_DESCRIPTOR = 0x3
1033 } E_RCT_LINK_TYPE;
1034 
1035 typedef enum
1036 {
1037  RCT_HOW_RELATED_TVA_2004 = 0x00,
1038  RCT_HOW_RELATED_TVA_2005 = 0x01,
1039  RCT_HOW_RELATED_TVA_2007 = 0x02
1040 } E_RCT_HOW_RELATED;
1041 
1042 typedef enum
1043 {
1044  RCT_TERMID_IS_TRAILER_OF = 0x0002,
1045  RCT_TERMID_IS_GROUP_TRAILER_OF = 0x0005
1046 } E_RCT_TERM_ID;
1047 
1048 typedef struct si_rct_promo_text
1049 {
1050  U32BIT lang_code;
1051  SI_STRING_DESC *string;
1053 
1054 typedef struct si_rct_link_info
1055 {
1056  E_RCT_LINK_TYPE link_type;
1057  E_RCT_HOW_RELATED how_related;
1058  U16BIT term_id;
1059  U8BIT group_id;
1060  U8BIT precedence;
1061  U8BIT *uri_string;
1062  U8BIT num_items;
1063  SI_RCT_PROMO_TEXT *promo_text_array;
1064  BOOLEAN can_use_default_icon;
1065  U8BIT icon_id;
1066  SI_SHORT_EVENT_DESC *event_desc;
1067  U8BIT num_icons;
1068  SI_IMAGE_ICON_DESC *icon_array;
1070 
1071 typedef struct si_rct_subtable_data
1072 {
1073  U16BIT year_offset;
1074  U8BIT link_count;
1075  SI_RCT_LINK_INFO *link_array;
1076  U8BIT num_icons;
1077  SI_IMAGE_ICON_DESC *icon_array;
1078  struct si_rct_subtable_data *next;
1080 
1081 typedef struct si_rct_subtable
1082 {
1083  U8BIT version;
1084  U16BIT service_id;
1085  SI_RCT_SUBTABLE_DATA *data;
1086  struct si_rct_subtable *next;
1087 } SI_RCT_SUBTABLE;
1088 
1089 typedef struct si_rct_table
1090 {
1091  SI_RCT_SUBTABLE *subtables;
1092 } SI_RCT_TABLE;
1093 
1094 
1095 //---Global Function prototypes for public use---------------------------------
1096 
1102 void STB_SISetCountryPrivateDataSpecifier(U32BIT code);
1103 
1108 void STB_SISetFreesatPrivateDataSpecifierMode(BOOLEAN mode);
1109 
1114 void STB_SISetCiplusPrivateDataSpecifierMode(BOOLEAN mode);
1115 
1120 void STB_SISetEacemPrivateDataSpecifierMode(BOOLEAN mode);
1121 
1126 void STB_SISetNZSatPrivateDataSpecifierMode(BOOLEAN mode);
1127 
1132 void STB_SISetNordigPrivateDataSpecifierMode(BOOLEAN mode);
1133 
1134 void STB_SISetUserDefinedDescriptorFunction(U8BIT dtag, STB_SI_USER_DEF_DESCRIP_FUNCTION func);
1136 
1137 void *STB_SIRequestPat(U8BIT path, E_SI_REQUEST_TYPE req_type,
1138  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1139 
1140 void *STB_SIRequestPmt(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT pmt_pid,
1141  U16BIT sid_match, U16BIT sid_mask, U16BIT table_count,
1142  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1143 void STB_SIModifyPmtRequest(void *fhandle, U16BIT sid_match, U16BIT sid_mask, U16BIT table_count);
1144 
1145 void *STB_SIRequestNit(U8BIT path, E_SI_REQUEST_TYPE req_type,
1146  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1147 
1158 void *STB_SIRequestNitFromPid(U8BIT path, U16BIT pid, BOOLEAN actual, E_SI_REQUEST_TYPE req_type,
1159  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1160 
1170 void* STB_SIRequestNitWithId(U8BIT path, U16BIT network_id, E_SI_REQUEST_TYPE req_type,
1171  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1172 
1173 void *STB_SIRequestSdt(U8BIT path, E_SI_REQUEST_TYPE req_type,
1174  BOOLEAN inc_sdt_actual, BOOLEAN inc_sdt_other,
1175  U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count,
1176  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1177 
1178 void *STB_SIRequestSdtFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type,
1179  BOOLEAN inc_sdt_actual, BOOLEAN inc_sdt_other,
1180  U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count,
1181  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1182 
1183 void STB_SIModifySdtRequest(void *fhandle, BOOLEAN inc_sdt_actual, BOOLEAN inc_sdt_other,
1184  U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count);
1185 
1186 void *STB_SIRequestBat(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT bouquet_id_match,
1187  U16BIT bouquet_id_mask, U16BIT table_count, void (*callback)(void *, U32BIT, SI_TABLE_RECORD *),
1188  U32BIT ret_param);
1189 
1190 void *STB_SIRequestBatFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type,
1191  U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count,
1192  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1193 
1194 void *STB_SIRequestEit(U8BIT path, E_SI_REQUEST_TYPE req_type, E_SI_EIT_TABLE_REQ reqd_eit_tables,
1195  U16BIT sid_match, U16BIT sid_mask, U16BIT table_count,
1196  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1197 
1198 void *STB_SIRequestEitFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, E_SI_EIT_TABLE_REQ reqd_eit_tables,
1199  U16BIT sid_match, U16BIT sid_mask, U16BIT table_count,
1200  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1201 
1202 void STB_SIModifyEitRequest(void *fhandle, E_SI_EIT_TABLE_REQ reqd_eit_tables,
1203  U16BIT sid_match, U16BIT sid_mask, U16BIT table_count);
1204 
1205 void *STB_SIRequestSched(U8BIT path, E_SI_REQUEST_TYPE req_type, E_SI_SCHED_TABLE_REQ reqd_eit_tables,
1206  U16BIT sid_match, U16BIT sid_mask, U16BIT table_count,
1207  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1208 
1209 void *STB_SIRequestSchedFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, E_SI_SCHED_TABLE_REQ reqd_eit_tables,
1210  U16BIT sid_match, U16BIT sid_mask, U16BIT table_count,
1211  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1212 
1213 void *STB_SIRequestTdt(U8BIT path, E_SI_REQUEST_TYPE req_type,
1214  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1215 
1216 void *STB_SIRequestTdtFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type,
1217  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1218 
1219 void *STB_SIRequestTot(U8BIT path, E_SI_REQUEST_TYPE req_type,
1220  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1221 
1222 void *STB_SIRequestTotFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type,
1223  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1224 
1225 void *STB_SIRequestCat(U8BIT path, E_SI_REQUEST_TYPE req_type,
1226  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1227 
1228 void *STB_SIRequestRct(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT rct_pid,
1229  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1230 
1239 
1240 U8BIT* STB_SIReadString(U8BIT nbytes, U8BIT *dptr, SI_STRING_DESC **str_ptr);
1241 
1242 BOOLEAN STB_SIParseDelSysDesc(U8BIT *data, SI_DELIVERY_SYS_DESC_TYPE *type, SI_DELIVERY_SYS_DESC **desc);
1243 BOOLEAN STB_SIParseServiceDescriptor(U8BIT *data, U8BIT *type, SI_STRING_DESC **provider,
1244  SI_STRING_DESC **name);
1245 BOOLEAN STB_SIParseShortEventDescriptor(U8BIT *data, SI_SHORT_EVENT_DESC **event_desc);
1246 
1247 /*!**************************************************************************
1248  * @brief Parses the given PMT to produce an array of the CA system IDs required
1249  * by the service or streams on the service. The array of IDs will be
1250  * allocated by this function and should be freed using STB_SIReleaseCaIdDescArray.
1251  * @param pmt_data - raw PMT section data
1252  * @param pmt_ca_ids - pointer to an array that will be allocated containing
1253  * the CA IDs found in the PMT
1254  * @return Number of CA IDs found in the PMT and returned in the array,
1255  * 0 if none are found.
1256  ****************************************************************************/
1257 U16BIT STB_SIGetPmtCaIdDescArray(U8BIT *pmt_data, U16BIT **pmt_ca_ids);
1258 
1268 void *STB_SIRequestAit(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT ait_pid,
1269  void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param);
1270 
1271 void STB_SIReleasePatTable(SI_PAT_TABLE *pat_table);
1272 void STB_SIReleasePmtTable(SI_PMT_TABLE *pmt_table);
1273 void STB_SIReleaseNitTable(SI_NIT_TABLE *nit_table);
1274 void STB_SIReleaseSdtTable(SI_SDT_TABLE *sdt_table);
1275 void STB_SIReleaseEitTable(SI_EIT_TABLE *eit_table);
1276 void STB_SIReleaseTimeTable(SI_TIME_TABLE *time_table);
1277 void STB_SIReleaseRctTable(SI_RCT_TABLE *rct_table);
1278 void STB_SIReleaseBatTable(SI_BAT_TABLE *bat_table);
1279 
1280 // the following functions can be used to release individual table entry structures from the parsed
1281 // tables. They are mainly intended for releasing entries which have been transferred
1282 // out of the parsed tables by the application SI handler and are therefore not released when the
1283 // table is released.
1291 
1292 /* TODO These can probably become local functions */
1295 // the following functions can be used to release individual descriptor array elements from the
1296 // parsed tables. They are mainly intended for releasing descriptors which have been transferred
1297 // out of the parsed tables by the application SI handler (by setting the table element pointing to
1298 // the descriptor array to NULL), and are therefore not released when the table is released.
1299 void STB_SIReleaseDelSysDesc(SI_DELIVERY_SYS_DESC *desc, SI_DELIVERY_SYS_DESC_TYPE type);
1301 void STB_SIReleaseCaDescArray(SI_CA_DESC *desc_array, U16BIT num_entries);
1302 void STB_SIReleaseCaIdDescArray(U16BIT *desc_array, U8BIT num_entries);
1303 void STB_SIReleaseComponentDescArray(SI_COMPONENT_DESC *desc_array, U8BIT num_entries);
1304 void STB_SIReleaseContentDescArray(SI_CONTENT_DESC *desc_array, U8BIT num_entries);
1307 void STB_SIReleaseImageIconDescArray(SI_IMAGE_ICON_DESC *icon_array, U8BIT num_icons);
1308 void STB_SIReleaseIsoLangDescArray(SI_ISO_LANG_DESC *desc_array, U16BIT num_entries);
1309 void STB_SIReleaseLinkageDescList(SI_LINKAGE_DESC_ENTRY *desc_list, U16BIT num_entries);
1310 void STB_SIReleaseLtoDescArray(SI_LTO_DESC *desc_array, U16BIT num_entries);
1311 void STB_SIReleaseMultilingComponentDescArray(SI_MULTILING_COMPONENT_DESC *desc_array, U8BIT num_entries);
1312 void STB_SIReleaseMultilingNetNameDescArray(SI_MULTILING_NET_NAME_DESC *desc_array, U16BIT num_entries);
1313 void STB_SIReleaseMultilingServNameDescArray(SI_MULTILING_SERV_NAME_DESC *desc_array, U16BIT num_entries);
1314 void STB_SIReleaseMultilingShortNameArray(SI_MULTILING_SHORT_NAME_DESC *desc_array, U16BIT num_entries);
1315 void STB_SIReleaseParentalRatingDescArray(SI_PARENTAL_RATING_DESC *desc_array, U8BIT num_entries);
1316 void STB_SIReleaseServListDescArray(SI_SERV_LIST_DESC *desc_array, U16BIT num_entries);
1317 void STB_SIReleaseShortEventDescArray(SI_SHORT_EVENT_DESC *desc_array, U8BIT num_entries);
1318 void STB_SIReleaseExtendedEventDescArray(SI_EXTENDED_EVENT_DESC *desc_array, U8BIT num_entries);
1319 void STB_SIReleaseSubtitleDescArray(SI_SUBTITLE_DESC *desc_array, U16BIT num_entries);
1320 void STB_SIReleaseTeletextDescArray(SI_TELETEXT_DESC *desc_array, U16BIT num_entries);
1321 void STB_SIReleaseLcnDescArray(SI_LCN_DESC *desc_array, U16BIT num_entries);
1322 void STB_SIReleaseNordigLcn2DescArray(SI_NORDIG_LCN_DESC *desc_array, U16BIT num_entries);
1323 void STB_SIReleasePrefNameDescArray(SI_PREFERRED_NAME_DESC *desc_array, U16BIT num_entries);
1324 void STB_SIReleaseCRIDList(SI_CRID_DESC *crid_list);
1333 
1334 #endif // _STBSITAB_H
1335 
1336 //*****************************************************************************
1337 // End of file
1338 //*****************************************************************************
1339 
void STB_SIReleaseAvailabilityDescriptorList(SI_SERV_AVAIL_DESC *desc_list)
Frees the memory used by the descriptor list specified.
Definition: stbsitab.c:12706
void STB_SIReleaseURILinkageList(SI_URI_LINKAGE_DESC *list)
Frees a list of URI linkage descriptors.
Definition: stbsitab.c:13000
void * STB_SIRequestNitWithId(U8BIT path, U16BIT network_id, E_SI_REQUEST_TYPE req_type, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for NITactual and NITother for the given network ID.
Definition: stbsitab.c:7938
void * STB_SIRequestAit(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT ait_pid, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for AIT on given PID.
Definition: stbsitab.c:13158
void STB_SIReleaseParentalRatingDescArray(SI_PARENTAL_RATING_DESC *desc_array, U8BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12475
void STB_SIReleaseMultilingNetNameDescArray(SI_MULTILING_NET_NAME_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12387
void STB_SIReleaseBatTable(SI_BAT_TABLE *bat_table)
Frees the memory used by the bat table.
Definition: stbsitab.c:11427
void * STB_SIRequestEitFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, E_SI_EIT_TABLE_REQ reqd_eit_tables, U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for EIT.
Definition: stbsitab.c:8256
void * STB_SIRequestTotFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for TOT.
Definition: stbsitab.c:8508
Definition: stbsitab.h:789
Definition: stbsitab.h:830
void STB_SIReleaseRctTable(SI_RCT_TABLE *rct_table)
Frees memory used by an RCT table.
Definition: stbsitab.c:11596
SI_NIT_TABLE * STB_SIParseNitTable(SI_TABLE_RECORD *table_rec)
Parses the Nit table supplied in TABLE_RECORD format to create a NIT_TABLE structure. Returns a pointer to the table. Application must call STB_SIReleaseNitTable to free the data.
Definition: stbsitab.c:9155
void STB_SIReleaseCRIDList(SI_CRID_DESC *crid_list)
Frees the memory used by the descriptor list specified.
Definition: stbsitab.c:12856
Header file - macros and function prototypes for public use.
void * STB_SIRequestNitFromPid(U8BIT path, U16BIT pid, BOOLEAN actual, E_SI_REQUEST_TYPE req_type, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Create an SI filter for an NIT table.
Definition: stbsitab.c:7899
SI_SDT_TABLE * STB_SIParseSdtTable(SI_TABLE_RECORD *table_rec)
Parses the Sdt table supplied in TABLE_RECORD format to create a SDT_TABLE structure. Returns a pointer to the table. Application must call STB_SIReleaseSdtTable to free the data.
Definition: stbsitab.c:9623
void STB_SIReleaseLinkageDescList(SI_LINKAGE_DESC_ENTRY *desc_list, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12298
void STB_SIReleaseTargetRegionList(SI_TARGET_REGION_DESC *desc_list)
Frees the memory used by the descriptor list specified.
Definition: stbsitab.c:12669
void STB_SIModifyEitRequest(void *fhandle, E_SI_EIT_TABLE_REQ reqd_eit_tables, U16BIT sid_match, U16BIT sid_mask, U16BIT table_count)
Modifies request for SDT to look for different transport on SAME PID.
Definition: stbsitab.c:8294
void STB_SIReleasePmtTable(SI_PMT_TABLE *pmt_table)
Frees the memory used by the pmt table.
Definition: stbsitab.c:11258
void STB_SISetCountryPrivateDataSpecifier(U32BIT code)
Sets the country specific private data specifier code that will be used when parsing SI tables...
Definition: stbsitab.c:7630
void STB_SIReleaseFreqListDescArray(SI_NIT_FREQUENCY_LIST_DESC *freq_list)
Frees the memory used by the frequency list descriptor.
Definition: stbsitab.c:12163
void STB_SIReleaseTimeTable(SI_TIME_TABLE *time_table)
Frees the memory used by the time table (tdt or tot)
Definition: stbsitab.c:11576
Definition: stbsitab.h:732
void * STB_SIRequestCat(U8BIT path, E_SI_REQUEST_TYPE req_type, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for CAT.
Definition: stbsitab.c:8541
void STB_SIClearUserDefinedDescriptorFunctions(void)
Clear all entries in the user defined SI descriptor table.
Definition: stbsitab.c:7745
void STB_SIReleaseStringDesc(SI_STRING_DESC *desc)
Frees the memory used by the descriptor specified.
Definition: stbsitab.c:12040
SI_PAT_TABLE * STB_SIParsePatTable(SI_TABLE_RECORD *table_rec)
Parses the Pat table supplied in TABLE_RECORD format to create a PAT_TABLE structure. Returns a pointer to the table. Application must call STB_SIReleasePatTable to free the data.
Definition: stbsitab.c:8611
void STB_SIReleaseDelSysDesc(SI_DELIVERY_SYS_DESC *desc, SI_DELIVERY_SYS_DESC_TYPE type)
Frees the memory used by the descriptor specified.
Definition: stbsitab.c:11989
Definition: stbsitab.h:560
void STB_SIReleaseLcnDescArray(SI_LCN_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12766
SI_TIME_TABLE * STB_SIParseTimeTable(SI_TABLE_RECORD *table_rec)
Parses the tdt or tot table supplied in TABLE_RECORD format to create a TIME_TABLE structure...
Definition: stbsitab.c:10631
void STB_SIReleaseFreesatLinkageDesc(SI_FREESAT_LINKAGE_DESC *desc)
Frees memory used by an SI_FREESAT_LINKAGE_DESC structure.
Definition: stbsitab.c:12915
void STB_SIReleaseNordigLcn2DescArray(SI_NORDIG_LCN_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12791
SI_BAT_TABLE * STB_SIParseBatTable(SI_TABLE_RECORD *table_rec)
Parses the BAT table supplied in TABLE_RECORD format to create a SI_BAT_TABLE structure. Returns a pointer to the table. Application must call STB_SIReleaseBatTable to free the data.
Definition: stbsitab.c:9969
void * STB_SIRequestPat(U8BIT path, E_SI_REQUEST_TYPE req_type, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for PAT.
Definition: stbsitab.c:7773
void STB_SIReleaseEitTable(SI_EIT_TABLE *eit_table)
Frees the memory used by the eit table.
Definition: stbsitab.c:11539
void * STB_SIRequestSdtFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, BOOLEAN inc_sdt_actual, BOOLEAN inc_sdt_other, U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for SDT.
Definition: stbsitab.c:8033
void * STB_SIRequestTdt(U8BIT path, E_SI_REQUEST_TYPE req_type, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for TDT.
Definition: stbsitab.c:8408
void STB_SISetUserDefinedDescriptorFunction(U8BIT dtag, STB_SI_USER_DEF_DESCRIP_FUNCTION func)
Sets the function allocated to the user defined descriptor.
Definition: stbsitab.c:7717
void STB_SIReleaseComponentDescArray(SI_COMPONENT_DESC *desc_array, U8BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12116
void STB_SIReleaseCaDescArray(SI_CA_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12064
void STB_SIReleaseMultilingComponentDescArray(SI_MULTILING_COMPONENT_DESC *desc_array, U8BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12354
void STB_SIReleaseTeletextDescArray(SI_TELETEXT_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12741
void STB_SIReleaseMultilingServNameDescArray(SI_MULTILING_SERV_NAME_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12420
BOOLEAN STB_SIParseShortEventDescriptor(U8BIT *data, SI_SHORT_EVENT_DESC **event_desc)
Parses a short event descriptor, tag 0x4d, that must be released by calling STB_SIReleaseShortEventDe...
Definition: stbsitab.c:11180
Definition: stbsitab.h:612
void * STB_SIRequestBatFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for Bat.
Definition: stbsitab.c:8172
void * STB_SIRequestPmt(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT pmt_pid, U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for PMT.
Definition: stbsitab.c:7810
BOOLEAN STB_SIParseDelSysDesc(U8BIT *data, SI_DELIVERY_SYS_DESC_TYPE *type, SI_DELIVERY_SYS_DESC **desc)
Parses and allocates a system delivery descriptor which should be freed by calling STB_SIReleaseDelSy...
Definition: stbsitab.c:11071
void STB_SIReleaseIsoLangDescArray(SI_ISO_LANG_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12273
BOOLEAN STB_SIParseServiceDescriptor(U8BIT *data, U8BIT *type, SI_STRING_DESC **provider, SI_STRING_DESC **name)
Parses a service descriptor, tag 0x48, allocating SI strings that must be freed using STB_SIReleaseSt...
Definition: stbsitab.c:11148
Definition: stbsitab.h:947
void STB_SIReleaseGuidanceDesc(SI_GUIDANCE_DESC *desc_ptr)
Frees the memory used by the descriptor specified.
Definition: stbsitab.c:12197
SI_PMT_TABLE * STB_SIParsePmtTable(SI_TABLE_RECORD *table_rec)
Parses the Pmt table supplied in TABLE_RECORD format to create a PMT_TABLE structure. Returns a pointer to the table. Application must call STB_SIReleasePmtTable to free the data.
Definition: stbsitab.c:8738
U8BIT * STB_SIReadString(U8BIT nbytes, U8BIT *dptr, SI_STRING_DESC **str_ptr)
Copies a string from a descriptor for the specified length. Converts the number of bytes specified in...
Definition: stbsitab.c:10947
void STB_SIReleaseSdtTable(SI_SDT_TABLE *sdt_table)
Frees the memory used by the sdt table.
Definition: stbsitab.c:11391
void STB_SIReleaseCIPlusServiceList(SI_CIPLUS_SERVICE *service_list)
Frees a CI+ service list.
Definition: stbsitab.c:12969
void STB_SIReleaseEitEventEntry(SI_EIT_EVENT_ENTRY *entry_ptr)
Frees the memory used by the table entry specified.
Definition: stbsitab.c:11882
void * STB_SIRequestBat(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT bouquet_id_match, U16BIT bouquet_id_mask, U16BIT table_count, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for Bat.
Definition: stbsitab.c:8133
void STB_SIReleaseSdtServiceEntry(SI_SDT_SERVICE_ENTRY *entry_ptr)
Frees the memory used by the table entry specified.
Definition: stbsitab.c:11833
void STB_SIReleaseShortEventDescArray(SI_SHORT_EVENT_DESC *desc_array, U8BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12525
void * STB_SIRequestTdtFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for TDT.
Definition: stbsitab.c:8442
void STB_SISetEacemPrivateDataSpecifierMode(BOOLEAN mode)
Enables or disables use of the EACEM private data specifier when parsing SI tables.
Definition: stbsitab.c:7670
void STB_SISetCiplusPrivateDataSpecifierMode(BOOLEAN mode)
Enables or disables use of the CI+ private data specifier when parsing SI tables. ...
Definition: stbsitab.c:7657
SI_RCT_TABLE * STB_SIParseRctTable(SI_TABLE_RECORD *table_rec)
Parses the related content table (RCT) to create an SI_RCT_TABLE structure.
Definition: stbsitab.c:10720
Definition: stbsitab.h:358
System Wide Global Technical Data Type Definitions.
Definition: stbsitab.h:821
void * STB_SIRequestSched(U8BIT path, E_SI_REQUEST_TYPE req_type, E_SI_SCHED_TABLE_REQ reqd_eit_tables, U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for EIT schedule table.
Definition: stbsitab.c:8329
void STB_SIReleaseFreesatPrefixList(SI_FREESAT_PREFIX_DESC *list)
Frees memory used by an SI_FREESAT_PREFIX_DESC structure.
Definition: stbsitab.c:12942
void * STB_SIRequestRct(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT rct_pid, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for RCT on given PID.
Definition: stbsitab.c:8575
void STB_SIReleaseRctLinkInfo(SI_RCT_LINK_INFO *link_info)
Frees memory used by an SI_RCT_LINK_INFO structure.
Definition: stbsitab.c:12877
void * STB_SIRequestSchedFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, E_SI_SCHED_TABLE_REQ reqd_eit_tables, U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for EIT schedule table.
Definition: stbsitab.c:8371
void STB_SISetNordigPrivateDataSpecifierMode(BOOLEAN mode)
Enables or disables use of the Nordig private data specifier when parsing SI tables.
Definition: stbsitab.c:7696
void STB_SIReleaseBatLcnEntry(SI_BAT_FREESAT_REGION_LCN_ENTRY *entry_ptr)
Frees the memory used by the table entry specified.
Definition: stbsitab.c:11802
void STB_SIReleasePrefNameDescArray(SI_PREFERRED_NAME_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12826
void * STB_SIRequestNit(U8BIT path, E_SI_REQUEST_TYPE req_type, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for NIT(actual)
Definition: stbsitab.c:7870
Definition: stbsitab.h:237
void STB_SIModifySdtRequest(void *fhandle, BOOLEAN inc_sdt_actual, BOOLEAN inc_sdt_other, U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count)
Modifies request for SDT to look for different transport on SAME PID.
Definition: stbsitab.c:8086
void * STB_SIRequestEit(U8BIT path, E_SI_REQUEST_TYPE req_type, E_SI_EIT_TABLE_REQ reqd_eit_tables, U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for EIT.
Definition: stbsitab.c:8214
U16BIT STB_SIGetPmtCaIdDescArray(U8BIT *pmt_data, U16BIT **pmt_ca_ids)
Parses the given PMT to produce an array of the CA system IDs required by the service or streams on t...
Definition: stbsitab.c:13038
void STB_SIReleaseRctSubtable(SI_RCT_SUBTABLE *sub_ptr)
Frees memory used by an RCT subtable.
Definition: stbsitab.c:11916
void STB_SIReleaseContentDescArray(SI_CONTENT_DESC *desc_array, U8BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12146
void STB_SIReleaseExtendedEventDescArray(SI_EXTENDED_EVENT_DESC *desc_array, U8BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12558
void STB_SISetNZSatPrivateDataSpecifierMode(BOOLEAN mode)
Enables or disables use of the New Zealand satellite private data specifier when parsing SI tables...
Definition: stbsitab.c:7683
void STB_SIModifyPmtRequest(void *fhandle, U16BIT sid_match, U16BIT sid_mask, U16BIT table_count)
Modifies request for PMT to look for different service on SAME PID.
Definition: stbsitab.c:7844
void STB_SIReleasePmtStreamEntry(SI_PMT_STREAM_ENTRY *entry_ptr)
Frees the memory used by the table entry specified.
Definition: stbsitab.c:11660
void STB_SIReleasePatTable(SI_PAT_TABLE *pat_table)
Frees the memory used by the pat table.
Definition: stbsitab.c:11222
Definition: stbsitab.h:638
void STB_SIReleaseCaIdDescArray(U16BIT *desc_array, U8BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12090
void STB_SIReleaseImageIconDescArray(SI_IMAGE_ICON_DESC *icon_array, U8BIT num_icons)
Frees an array of image icons, including the memory used by each one.
Definition: stbsitab.c:12234
void STB_SIReleaseNitTransportEntry(SI_NIT_TRANSPORT_ENTRY *entry_ptr)
Frees the memory used by the table entry specified.
Definition: stbsitab.c:11725
void * STB_SIRequestSdt(U8BIT path, E_SI_REQUEST_TYPE req_type, BOOLEAN inc_sdt_actual, BOOLEAN inc_sdt_other, U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for SDT.
Definition: stbsitab.c:7976
void STB_SIReleaseServListDescArray(SI_SERV_LIST_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12500
SI_EIT_TABLE * STB_SIParseEitTable(SI_TABLE_RECORD *table_rec)
Parses the Eit table supplied in TABLE_RECORD format to create a EIT_TABLE structure. Returns a pointer to the table. Application must call STB_SIReleaseEitTable to free the data.
Definition: stbsitab.c:10355
void STB_SIReleaseRctSubtableData(SI_RCT_SUBTABLE_DATA *data_ptr)
Frees memory used by an SI_RCT_SUBTABLE_DATA structure.
Definition: stbsitab.c:11943
Definition: stbds.h:126
Definition: stbsitab.h:799
void STB_SIReleaseBatTransportEntry(SI_BAT_TRANSPORT_ENTRY *entry_ptr)
Frees the memory used by the table entry specified.
Definition: stbsitab.c:11767
void STB_SIReleaseNitTable(SI_NIT_TABLE *nit_table)
Frees the memory used by the nit table.
Definition: stbsitab.c:11299
void STB_SIReleaseSubtitleDescArray(SI_SUBTITLE_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12606
void * STB_SIRequestTot(U8BIT path, E_SI_REQUEST_TYPE req_type, void(*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param)
Generates request for TOT.
Definition: stbsitab.c:8475
void STB_SIReleasePatStreamEntry(SI_PAT_SERVICE_ENTRY *entry_ptr)
Frees the memory used by the table entry specified.
Definition: stbsitab.c:11640
void STB_SIReleaseLtoDescArray(SI_LTO_DESC *desc_array, U16BIT num_entries)
Frees the memory used by the descriptor array specified.
Definition: stbsitab.c:12329
Header file - macros and function prototypes for public use.
void STB_SISetFreesatPrivateDataSpecifierMode(BOOLEAN mode)
Enables or disables use of the Freesat private data specifier when parsing SI tables.
Definition: stbsitab.c:7644
void STB_SIReleaseTargetRegionNameList(SI_NIT_TARGET_REGION_NAME_DESC *desc_list)
Frees the memory used by the descriptor list specified.
Definition: stbsitab.c:12630