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; }
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; }
static void win_search_release_semaphore(void) { #if 0 if(srch_cb_sem != OSAL_INVALID_ID) osal_semaphore_release(srch_cb_sem); #endif }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }