| 1 | /*************************************************************** |
|---|
| 2 | ** |
|---|
| 3 | ** Broadcom Corp. Confidential |
|---|
| 4 | ** Copyright 2003-2008 Broadcom Corp. All Rights Reserved. |
|---|
| 5 | ** |
|---|
| 6 | ** THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED |
|---|
| 7 | ** SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM. |
|---|
| 8 | ** YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT |
|---|
| 9 | ** SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. |
|---|
| 10 | ** |
|---|
| 11 | ** File: si_nit_mms.c |
|---|
| 12 | ** Description: function that parses the MMS subtable of the NIT |
|---|
| 13 | ** table section. |
|---|
| 14 | ** |
|---|
| 15 | ** Created: 03/08/2001 |
|---|
| 16 | ** |
|---|
| 17 | ** REVISION: |
|---|
| 18 | ** |
|---|
| 19 | ** $Log: $ |
|---|
| 20 | ** |
|---|
| 21 | ** |
|---|
| 22 | ****************************************************************/ |
|---|
| 23 | |
|---|
| 24 | #include "si.h" |
|---|
| 25 | #include "si_os.h" |
|---|
| 26 | #include "si_dbg.h" |
|---|
| 27 | #include "si_util.h" |
|---|
| 28 | #include "si_nit_mms.h" |
|---|
| 29 | |
|---|
| 30 | NIT_MMS_RECORD NIT_MMS_Table[NIT_MMS_MAX_TABLE_SIZE]; |
|---|
| 31 | unsigned long Total_NIT_MMS_entries =0; |
|---|
| 32 | static SI_MMS_Callback_t *s_SI_MMS_Callback = NULL; |
|---|
| 33 | |
|---|
| 34 | void SI_NIT_MMS_Init (SI_MMS_Callback_t *p_cb) |
|---|
| 35 | { |
|---|
| 36 | SI_memset(NIT_MMS_Table, 0, sizeof(NIT_MMS_Table)); |
|---|
| 37 | Total_NIT_MMS_entries =0; |
|---|
| 38 | s_SI_MMS_Callback = p_cb; |
|---|
| 39 | } |
|---|
| 40 | |
|---|
| 41 | /*********************************************************************/ |
|---|
| 42 | /* Function : SI_NIT_MMS_parse */ |
|---|
| 43 | /* Description : Function to parse the MMS subtable and populate the */ |
|---|
| 44 | /* carrier freq table. */ |
|---|
| 45 | /* Input : mms_record, point to the current ith MMS subtable */ |
|---|
| 46 | /* defined in NIT table section. There may be up to */ |
|---|
| 47 | /* number_of_record MMS subtables defined in NIT table */ |
|---|
| 48 | /* section. See table 5.1 of ANSI/SCTE65 2002 (DVS234). */ |
|---|
| 49 | /* idx, point to the location where this MMS will be */ |
|---|
| 50 | /* located in the overall MMS table. */ |
|---|
| 51 | /* Output : none */ |
|---|
| 52 | /*********************************************************************/ |
|---|
| 53 | void SI_NIT_MMS_parse (unsigned char * mms_record, unsigned char idx) |
|---|
| 54 | { |
|---|
| 55 | |
|---|
| 56 | SI_DBG_PRINT(E_SI_DBG_MSG,("NIT MMS Table received.\n")); |
|---|
| 57 | |
|---|
| 58 | NIT_MMS_Table[idx].transmission_system = SI_Construct_Data(mms_record, |
|---|
| 59 | NIT_MMS_TRANSMISSION_SYSTEM_BYTE_INDX, |
|---|
| 60 | NIT_MMS_TRANSMISSION_SYSTEM_BYTE_NUM, |
|---|
| 61 | NIT_MMS_TRANSMISSION_SYSTEM_SHIFT, |
|---|
| 62 | NIT_MMS_TRANSMISSION_SYSTEM_MASK); |
|---|
| 63 | |
|---|
| 64 | NIT_MMS_Table[idx].inner_coding_mode = SI_Construct_Data(mms_record, |
|---|
| 65 | NIT_MMS_INNER_CODING_MODE_BYTE_INDX, |
|---|
| 66 | NIT_MMS_INNER_CODING_MODE_BYTE_NUM, |
|---|
| 67 | NIT_MMS_INNER_CODING_MODE_SHIFT, |
|---|
| 68 | NIT_MMS_INNER_CODING_MODE_MASK); |
|---|
| 69 | |
|---|
| 70 | NIT_MMS_Table[idx].split_bitstream_mode = SI_Construct_Data(mms_record, |
|---|
| 71 | NIT_MMS_SPLIT_BITSTREAM_MODE_BYTE_INDX, |
|---|
| 72 | NIT_MMS_SPLIT_BITSTREAM_MODE_BYTE_NUM, |
|---|
| 73 | NIT_MMS_SPLIT_BITSTREAM_MODE_SHIFT, |
|---|
| 74 | NIT_MMS_SPLIT_BITSTREAM_MODE_MASK); |
|---|
| 75 | |
|---|
| 76 | NIT_MMS_Table[idx].modulation_format = SI_Construct_Data(mms_record, |
|---|
| 77 | NIT_MMS_MODULATION_FORMAT_BYTE_INDX, |
|---|
| 78 | NIT_MMS_MODULATION_FORMAT_BYTE_NUM, |
|---|
| 79 | NIT_MMS_MODULATION_FORMAT_SHIFT, |
|---|
| 80 | NIT_MMS_MODULATION_FORMAT_MASK); |
|---|
| 81 | |
|---|
| 82 | NIT_MMS_Table[idx].symbol_rate = SI_Construct_Data(mms_record, |
|---|
| 83 | NIT_MMS_SYMBOL_RATE_BYTE_INDX, |
|---|
| 84 | NIT_MMS_SYMBOL_RATE_BYTE_NUM, |
|---|
| 85 | NIT_MMS_SYMBOL_RATE_SHIFT, |
|---|
| 86 | NIT_MMS_SYMBOL_RATE_MASK); |
|---|
| 87 | |
|---|
| 88 | NIT_MMS_Table[idx].idx = idx; |
|---|
| 89 | Total_NIT_MMS_entries++; |
|---|
| 90 | if (s_SI_MMS_Callback) |
|---|
| 91 | { |
|---|
| 92 | s_SI_MMS_Callback->cb(&NIT_MMS_Table[idx],s_SI_MMS_Callback->data); |
|---|
| 93 | } |
|---|
| 94 | SI_DBG_PRINT(E_SI_DBG_MSG,("NIT MMS Entry: index %x, xmit sys %x, inner code %x, mod %x, symb rate %x symb/s\n", idx,NIT_MMS_Table[idx].transmission_system,NIT_MMS_Table[idx].inner_coding_mode,NIT_MMS_Table[idx].modulation_format,NIT_MMS_Table[idx].symbol_rate)); |
|---|
| 95 | } |
|---|