source: svn/newcon3bcm2_21bu/BSEAV/lib/si/a56/nim/si_nim_mmt.c

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 3.8 KB
Line 
1/***************************************************************
2**
3** Broadcom Corp. Confidential
4** Copyright 2003-2012 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_nim_mmt.c
12** Description: function that parses the MMT table of the NIM
13**              table section.
14**
15** Created: 03/08/2001
16**                      02/01/2012 modified for A56 support
17**
18** REVISION:
19**
20** $Log: $
21**
22**
23****************************************************************/
24
25#include "si.h"
26#include "si_os.h"
27#include "si_dbg.h"
28#include "si_util.h"
29#include "si_nim_mmt.h"
30
31NIM_MMT_RECORD NIM_MMT_Table[NIM_MMT_MAX_TABLE_SIZE]; 
32unsigned long Total_NIM_MMT_entries = 0;
33static SI_NIM_MMT_Callback_t *s_SI_MMT_Callback = NULL;
34
35void SI_NIM_MMT_Init (SI_NIM_MMT_Callback_t *p_cb)
36{
37        SI_memset(NIM_MMT_Table, 0, sizeof(NIM_MMT_Table));
38        Total_NIM_MMT_entries =0;
39        s_SI_MMT_Callback = p_cb;
40}
41
42/*********************************************************************/
43/* Function : SI_NIM_MMT_parse                                                                           */
44/* Description : Function to parse the MMT table and populate the        */
45/*               carrier freq table.                                                             */
46/* Input : mmt_record, point to the current ith MMT table                */
47/*            defined in NIM table section. There may be up to       */
48/*            number_of_record MMT table defined in NIM table            */
49/*            section. See table 5.1 of ANSI/A56                                         */
50/*         idx, point to the location where this MMT will be         */
51/*                        located in the overall MMT table.                                              */
52/* Output : none                                                                                                         */
53/*********************************************************************/
54void SI_NIM_MMT_parse (unsigned char * mmt_record, unsigned char idx)
55{
56        int tmp;
57
58        SI_DBG_PRINT(E_SI_DBG_MSG,("NIM MMT Table received.\n"));
59
60        tmp = SI_Construct_Data(mmt_record, 
61                NIM_MMT_TRANSMISSION_SYSTEM_BYTE_INDX,
62                NIM_MMT_TRANSMISSION_SYSTEM_BYTE_NUM,
63                NIM_MMT_TRANSMISSION_SYSTEM_SHIFT,
64                NIM_MMT_TRANSMISSION_SYSTEM_MASK);
65                                                               
66        /* little bit validation check */
67        if ((tmp < TS_ITU_T_ANNEX_A) || (tmp > TS_ITU_T_ANNEX_D)) {
68                SI_DBG_PRINT(E_SI_DBG_WRN,("Invalid transmission system\n"));
69                return;
70        }
71        NIM_MMT_Table[idx].transmission_system = (unsigned char)tmp;
72
73        NIM_MMT_Table[idx].inner_coding_mode = SI_Construct_Data(mmt_record, 
74                NIM_MMT_INNER_CODING_MODE_BYTE_INDX,
75                NIM_MMT_INNER_CODING_MODE_BYTE_NUM,
76                NIM_MMT_INNER_CODING_MODE_SHIFT,
77                NIM_MMT_INNER_CODING_MODE_MASK);
78                                               
79        NIM_MMT_Table[idx].split_bitstream_mode = SI_Construct_Data(mmt_record, 
80                NIM_MMT_SPLIT_BITSTREAM_MODE_BYTE_INDX,
81                NIM_MMT_SPLIT_BITSTREAM_MODE_BYTE_NUM,
82                NIM_MMT_SPLIT_BITSTREAM_MODE_SHIFT,
83                NIM_MMT_SPLIT_BITSTREAM_MODE_MASK);
84                                               
85        tmp = SI_Construct_Data(mmt_record, 
86                NIM_MMT_MODULATION_FORMAT_BYTE_INDX,
87                NIM_MMT_MODULATION_FORMAT_BYTE_NUM,
88                NIM_MMT_MODULATION_FORMAT_SHIFT,
89                NIM_MMT_MODULATION_FORMAT_MASK);
90        if ((tmp != MOD_QPSK) && (tmp != MOD_QAM64) && (tmp != MOD_QAM256)) {
91                SI_DBG_PRINT(E_SI_DBG_WRN,("Unsupported modulation format\n"));
92                return;
93        }
94                                               
95        NIM_MMT_Table[idx].modulation_format = (unsigned char)tmp;
96
97        NIM_MMT_Table[idx].symbol_rate = SI_Construct_Data(mmt_record, 
98                NIM_MMT_SYMBOL_RATE_BYTE_INDX,
99                NIM_MMT_SYMBOL_RATE_BYTE_NUM,
100                NIM_MMT_SYMBOL_RATE_SHIFT,
101                NIM_MMT_SYMBOL_RATE_MASK);
102       
103        NIM_MMT_Table[idx].idx = idx;
104        Total_NIM_MMT_entries++;
105        if (s_SI_MMT_Callback)
106        {
107                s_SI_MMT_Callback->cb(&NIM_MMT_Table[idx],s_SI_MMT_Callback->data);
108        }
109        SI_DBG_PRINT(E_SI_DBG_MSG,("NIM MMT Entry: index %x, xmit sys  %x, inner code %x, mod %x, symb rate %x symb/s\n", idx,NIM_MMT_Table[idx].transmission_system,NIM_MMT_Table[idx].inner_coding_mode,NIM_MMT_Table[idx].modulation_format,NIM_MMT_Table[idx].symbol_rate));
110}
Note: See TracBrowser for help on using the repository browser.