Example #1
0
static INT32 f_TC90512_write(UINT8 dev_add, UINT8 reg_add, UINT8 *data, UINT8 len)
{
	UINT8  i, buffer[8];
	INT32 err;

	osal_semaphore_capture(f_IIC_Sema_ID,TMO_FEVR);
	//osal_interrupt_disable();
	if (len > 7)
	{
		osal_semaphore_release(f_IIC_Sema_ID);
		//osal_interrupt_enable();
		return ERR_FAILUE;
	}
	buffer[0] = reg_add;
	for (i = 0; i < len; i++)
	{
	    buffer[i + 1] = data[i];
	}

	err=i2c_gpio_write(0, dev_add, buffer, len + 1);
	if(err!=0)
	{	
		NIM_TC90512_PRINTF("nim_TC90512_write: err = %d !\n", err);
		;
	}
	osal_semaphore_release(f_IIC_Sema_ID);
	//osal_interrupt_enable();
	return  err;
}
Example #2
0
INT32 sim_get_pmt(UINT32 monitor_id,struct prog_info* info)
{
	UINT16 dmx_idx;
	UINT16 prog_number;
	UINT8 tbl_idx;
	
	if(info==NULL)
		return ERR_FAILUE;

	if( !monitor_id_valid(monitor_id) )
		return ERR_FAILUE;

	if( monitor_exist[monitor_id] != 1)
		return ERR_FAILUE;

	//dmx_idx = (monitor_id&DMX_INDEX_MASK)>>24;
	//pmt_pid = (monitor_id&SEC_PID_MASK);
	dmx_idx = simcb_array[monitor_id].dmx_idx;
	prog_number = simcb_array[monitor_id].param;
	tbl_idx = get_table_index(dmx_idx, MONITE_TB_PMT, prog_number);
	
	if(tbl_idx==0xFF)
		return ERR_FAILUE;

	osal_semaphore_capture(sm_semaphore, OSAL_WAIT_FOREVER_TIME);
	
	MEMCPY(info, &(dmx_psi_info[dmx_idx].pmt[tbl_idx]), sizeof(struct prog_info));

	osal_semaphore_release(sm_semaphore);
	return SUCCESS;
}
Example #3
0
static void win_search_release_semaphore(void)
{
#if 0
    if(srch_cb_sem != OSAL_INVALID_ID)
        osal_semaphore_release(srch_cb_sem);
#endif
}
Example #4
0
INT32 sim_get_video_pid(UINT32 monitor_id, UINT16 *video_pid)
{
	INT16 dmx_idx;
	UINT16 prog_number;
	UINT8 tbl_idx;

	if( !monitor_id_valid(monitor_id) )
		return ERR_FAILUE;

	if( monitor_exist[monitor_id] != 1)
		return ERR_FAILUE;

	//dmx_idx = (monitor_id&DMX_INDEX_MASK)>>24;
	//pmt_pid = (monitor_id&SEC_PID_MASK);
	dmx_idx = simcb_array[monitor_id].dmx_idx;
	prog_number = simcb_array[monitor_id].param;

	tbl_idx = get_table_index(dmx_idx, MONITE_TB_PMT, prog_number);
	if(tbl_idx==0xFF)
		return ERR_FAILUE;
	
	osal_semaphore_capture(sm_semaphore, OSAL_WAIT_FOREVER_TIME);
	
	*video_pid = dmx_psi_info[dmx_idx].pmt[tbl_idx].video_pid;

	osal_semaphore_release(sm_semaphore);
	
	return SUCCESS;
}
Example #5
0
INT32 sim_get_scte_subt_pid(UINT32 monitor_id, UINT8 *pid_count, UINT16 *subt_pid, UINT8 *pid_lan_count, UINT32 lan[][6])
{
	INT16 dmx_idx;
	UINT16 prog_number;
	UINT8 tbl_idx;

	if(pid_count==NULL || subt_pid == NULL || pid_lan_count == NULL || lan == NULL)
		return ERR_FAILURE;

	if( !monitor_id_valid(monitor_id) )
		return ERR_FAILUE;

	if( monitor_exist[monitor_id] != 1)
		return ERR_FAILUE;

	dmx_idx = simcb_array[monitor_id].dmx_idx;
	prog_number = simcb_array[monitor_id].param;

	tbl_idx = get_table_index(dmx_idx, MONITE_TB_PMT, prog_number);
	if(tbl_idx==0xFF)
		return ERR_FAILUE;

	osal_semaphore_capture(sm_semaphore, OSAL_WAIT_FOREVER_TIME);

	*pid_count = dmx_psi_info[dmx_idx].pmt[tbl_idx].scte_subt_count;
	MEMCPY(subt_pid, dmx_psi_info[dmx_idx].pmt[tbl_idx].scte_subt_pid, *pid_count*sizeof(UINT16));
	MEMCPY(pid_lan_count, dmx_psi_info[dmx_idx].pmt[tbl_idx].scte_subt_lan_cnt, *pid_count*sizeof(UINT8));
	MEMCPY(lan, dmx_psi_info[dmx_idx].pmt[tbl_idx].scte_subt_lan, *pid_count*6*sizeof(UINT32));

	osal_semaphore_release(sm_semaphore);

	return SUCCESS;
}
Example #6
0
INT32 sim_get_emm_pid(UINT32 monitor_id, UINT16 *pid_buffer_ptr, UINT8 *max_emm_count)
{
	UINT8 i = 0;
	INT32 dmx_idx = -1;

	if( !monitor_id_valid(monitor_id) )
		return ERR_FAILUE;

	if( monitor_exist[monitor_id] != 1)
		return ERR_FAILUE;

	//dmx_idx = (monitor_id&DMX_INDEX_MASK)>>24;
	dmx_idx = simcb_array[monitor_id].dmx_idx;

	osal_semaphore_capture(sm_semaphore, OSAL_WAIT_FOREVER_TIME);
	if(pid_buffer_ptr!=NULL && *max_emm_count>0)
	{
		for(i=0; i<dmx_psi_info[dmx_idx].cat.emm_count && i<*max_emm_count; i++)
		{
			pid_buffer_ptr[i] = dmx_psi_info[dmx_idx].cat.emm_pid_array[i];
		}
		*max_emm_count = i;
	}
	else
	{
		*max_emm_count  = dmx_psi_info[dmx_idx].cat.emm_count;
	}

	osal_semaphore_release(sm_semaphore);
	
	return SUCCESS;
}
Example #7
0
static INT32 f_null_channel_change(struct nim_device *dev, UINT32 freq, UINT32 bandwidth, 
									   UINT8 guard_interval, UINT8 fft_mode, UINT8 modulation, UINT8 fec, UINT8 usage_type, UINT8 inverse, UINT8 priority)
{
	osal_semaphore_capture(l_nim_null_sema_id, TMO_FEVR);

	NIM_PRINTF(" freq=%d, bandwidth=%d, guard_interval=%d, fft_mode=%d, modulation=%d, fec=%d, usage_type=%d, inverse=%d\n\n",  freq, bandwidth, guard_interval, fft_mode, modulation, fec, usage_type, inverse);

	null_CurChannelInfo->Frequency = freq;
	null_CurChannelInfo->ChannelBW = bandwidth;

	osal_semaphore_release(l_nim_null_sema_id);

	return SUCCESS;
}
Example #8
0
INT32 sim_get_audio_info(UINT32 monitor_id, UINT16 *audio_pid, UINT8 audio_lang[][3], UINT8 *max_audio_count)
{
	INT16 dmx_idx;
	UINT16 prog_number;
	UINT8 tbl_idx;
	int i;

	if( !monitor_id_valid(monitor_id) )
		return ERR_FAILUE;

	if( monitor_exist[monitor_id] != 1)
		return ERR_FAILUE;
		
	//dmx_idx = (monitor_id&DMX_INDEX_MASK)>>24;
	//pmt_pid = (monitor_id&SEC_PID_MASK);
	dmx_idx = simcb_array[monitor_id].dmx_idx;
	prog_number = simcb_array[monitor_id].param;
	tbl_idx = get_table_index(dmx_idx, MONITE_TB_PMT, prog_number);
	if(tbl_idx==0xFF)
		return ERR_FAILUE;

	osal_semaphore_capture(sm_semaphore, OSAL_WAIT_FOREVER_TIME);
	if(audio_pid != NULL || audio_lang != NULL)
	{
		for(i=0; i<*max_audio_count&&i<dmx_psi_info[dmx_idx].pmt[tbl_idx].audio_count; i++)
		{
			if(audio_pid != NULL)
				audio_pid[i] = dmx_psi_info[dmx_idx].pmt[tbl_idx].audio_pid[i];
			if(audio_lang != NULL)
				MEMCPY(audio_lang[i], dmx_psi_info[dmx_idx].pmt[tbl_idx].audio_lang[i],3);
		}
		*max_audio_count = i;
	}
	else
	{
		*max_audio_count = dmx_psi_info[dmx_idx].pmt[tbl_idx].audio_count;
	}
	
	osal_semaphore_release(sm_semaphore);

	return SUCCESS;
}
Example #9
0
static INT32 f_TC90512_read(UINT8 dev_add, UINT8 reg_add, UINT8 *data, UINT8 len)
{
	INT32 err;
	
	osal_semaphore_capture(f_IIC_Sema_ID,TMO_FEVR);
	//osal_interrupt_disable();
	
	data[0] = reg_add;
	err = i2c_gpio_write_read(0, dev_add, data, 1, len);
	if(err!=0)
	{	
		NIM_TC90512_PRINTF("nim_TC90512_read: err = %d ,reg_add=%x!\n", err,reg_add);
		;
	}
//		osal_delay(1000);

	osal_semaphore_release(f_IIC_Sema_ID);
	//osal_interrupt_enable();
	return err;

}
Example #10
0
INT32 sim_get_ca_info(UINT32 monitor_id, CA_INFO *ca_ptr, UINT8 *max_ca_count)
{
	INT16 dmx_idx;
	UINT16 prog_number;
	UINT8 tbl_idx = 0xFF;

	if( !monitor_id_valid(monitor_id) )
		return ERR_FAILUE;

	if( monitor_exist[monitor_id] != 1)
		return ERR_FAILUE;

	dmx_idx = simcb_array[monitor_id].dmx_idx;
	prog_number = simcb_array[monitor_id].param;
	
	tbl_idx = get_table_index(dmx_idx, MONITE_TB_PMT, prog_number);
	if(tbl_idx==0xFF)
		return ERR_FAILUE;

	osal_semaphore_capture(sm_semaphore, OSAL_WAIT_FOREVER_TIME);

	if(ca_ptr!=NULL && *max_ca_count>0)
	{
		if(*max_ca_count > dmx_psi_info[dmx_idx].pmt[tbl_idx].CA_count)
		{
			*max_ca_count = dmx_psi_info[dmx_idx].pmt[tbl_idx].CA_count;
		}

		MEMCPY(ca_ptr, dmx_psi_info[dmx_idx].pmt[tbl_idx].CA_info,(*max_ca_count)*sizeof(CA_INFO));
	}
	else
	{
		*max_ca_count = dmx_psi_info[dmx_idx].pmt[tbl_idx].CA_count;
	}

	osal_semaphore_release(sm_semaphore);


	return SUCCESS;
}
Example #11
0
INT32 sim_get_ecm_pid(UINT32 monitor_id, UINT16 *pid_buffer_ptr, UINT8 *max_ecm_count)
{
	INT16 dmx_idx;
	UINT16 prog_number;
	UINT8 tbl_idx = 0xFF;
	int i = 0;

	if( !monitor_id_valid(monitor_id) )
		return ERR_FAILUE;

	if( monitor_exist[monitor_id] != 1)
		return ERR_FAILUE;

	dmx_idx = simcb_array[monitor_id].dmx_idx;
	prog_number = simcb_array[monitor_id].param;
	
	tbl_idx = get_table_index(dmx_idx, MONITE_TB_PMT, prog_number);
	if(tbl_idx==0xFF)
		return ERR_FAILUE;

	osal_semaphore_capture(sm_semaphore, OSAL_WAIT_FOREVER_TIME);
	
	if(pid_buffer_ptr!=NULL && *max_ecm_count>0)
	{
		for(i=0; i<dmx_psi_info[dmx_idx].pmt[tbl_idx].CA_count && i<*max_ecm_count; i++)
		{
			pid_buffer_ptr[i] = dmx_psi_info[dmx_idx].pmt[tbl_idx].CA_info[i].CA_pid;
		}
		*max_ecm_count = i;
	}
	else
	{
		*max_ecm_count = dmx_psi_info[dmx_idx].pmt[tbl_idx].CA_count;
	}

	osal_semaphore_release(sm_semaphore);
	
	return SUCCESS;
}