/*************************************************************************** * Copyright (c) 2011, Broadcom Corporation * All Rights Reserved * Confidential Property of Broadcom Corporation * * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE * AGREEMENT BETWEEN THE USER AND BROADCOM. YOU HAVE NO RIGHT TO USE OR * EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. * * $brcm_Workfile: $ * $brcm_Revision: $ * $brcm_Date: $ * * Module Description: * * Revision History: * * $brcm_Log: $ * ****************************************************************************/ #include "bstd.h" #include "bkni.h" #include "ts_priv.h" #include "ts_psi.h" #include "ministd.h" #include "dvb_parser.h" #include "si.h" #include "si_util.h" static nit_map_t nit_map; static dvb_nit_cb_t *nit_cb = NULL; static uint8_t nit_version_num; static uint8_t nit_last_section; static uint32_t nit_section_mask[8]; BDBG_MODULE(dvb_nit); void dvb_nit_init(dvb_nit_cb_t *cb) { int i; nit_cb = cb; BKNI_Memset(&nit_map, 0, sizeof(nit_map)); nit_version_num = 32; nit_last_section = 0; for (i=0; i<8; i++) { nit_section_mask[i] = 0; } } uint32_t dvb_find_frequency_for_stream_id(uint16_t stream_id) { int i; for (i=0; i%d", nit_version_num, version_num)); nit_map.num_nit = 0; /* new version arrived, refresh nit_map */ nit_version_num = version_num; get_bits(4, &bs); desc_len = get_bits(12, &bs); dvb_parse_descriptors((uint8_t *)&nit_buf[bs.bindex/8], desc_len, DVB_TID_NIT_ACT, NULL); bs.bindex = bs.bindex + desc_len*8; get_bits(4, &bs); stream_loop_len = get_bits(12, &bs); parsed = 0; while (parsedstream_id = stream_id; if (p_nit->frequency) { nit_map.num_nit++; if (nit_cb && nit_cb->cb) { nit_cb->cb(p_nit, nit_cb->data); } } else { BDBG_WRN(("nit entry doesn't contain frequency")); } parsed += desc_len; } return 1; } bool dvb_nit_complete(void) { return (SI_Chk_Section_complete((unsigned long *)nit_section_mask, nit_last_section) == SI_SUCCESS); }