Int16 tdcli_send_request(td_session* sess, char *req) { INTERFACE_DEBUG_C(); INTERFACE_DEBUG("Submitting request: %s", req); Int32 result; sess->dbcarea->func = DBFIRQ; gettimeofday(&request_beginning, 0); sess->dbcarea->req_ptr = req; sess->dbcarea->req_len = strlen(req); DBCHCL(&result, sess->context, sess->dbcarea); if (result != EM_OK) { fprintf(stderr, "-!- Error in Initiating a request: %s\n", sess->dbcarea->msg_text); tdcli_end(sess); return -1; } sess->request = sess->dbcarea->o_req_id; sess->session = sess->dbcarea->o_sess_id; interrupt_tdcli_fetching = 0; INTERFACE_DEBUG_S("Submitting request successed"); return EM_OK; }
/*{{{ ComponentSetAttribute*/ int ComponentSetAttribute(player_component_handle_t Component, const char *Attribute, union attribute_descriptor_u *Value) { int Result = 0; INTERFACE_DEBUG("\n"); Result = PlayerInterface->Ops->component_set_attribute(Component, Attribute, Value); if (Result < 0) INTERFACE_ERROR("component_set_attribute failed\n"); return Result; }
Int16 tdcli_end(td_session* sess) { Int32 result; /* tdcli_clear_dbcareax(sess); */ sess->dbcarea->func = DBFDSC; DBCHCL(&result,sess->context, sess->dbcarea); DBCHCLN(&result,sess->context); INTERFACE_DEBUG("Exiting: %s", sess->dbcarea->msg_text); return 0; }
Int16 tdcli_connect(td_session* sess, char* logon) { INTERFACE_DEBUG_C(); INTERFACE_DEBUG("Logging on to: %s", logon); Int32 result; gettimeofday(&request_beginning, 0); sess->dbcarea->logon_ptr=logon; sess->dbcarea->logon_len=strlen(logon); sess->dbcarea->func=DBFCON; DBCHCL(&result, sess->context, sess->dbcarea); if (result != EM_OK) { fprintf(stdout, "-!- Error in Logon: %s\n", sess->dbcarea->msg_text); tdcli_end(sess); return -1; } sess->request = sess->dbcarea->o_req_id; sess->session = sess->dbcarea->o_sess_id; return EM_OK; }
int8_t tsi_add_pid_to_filter(int pid,int8_t type,int8_t buff_idx) { int32_t index; tsi_err_e err; if(inited==0) return -1; for(index=0;index<MAX_NUM_PIDS_SUPPORTED;index++) { /* check for the index to be free */ if(-1 == pid_val[index]) { INTERFACE_DEBUG("pid_val[%d]:%d\n",index,pid_val[index]); pid_val[index] = pid; break; } } if(MAX_NUM_PIDS_SUPPORTED == index) { INTERFACE_DEBUG("add pid - MAX pid's reached :%d\n",pid); for(index=0;index<MAX_NUM_PIDS_SUPPORTED;index++) INTERFACE_DEBUG("%d ",pid_val[index]); return -1; } // printf("tsi_add_pid_to_filter:%d\n",pid); /* add bit into fid bitmap */ fid_bitmap |= (1<<index); pid_val[index] = pid; pid_number++; cfg.buffer_index = buff_idx; if(PSI == type) { cfg.pkts_per_intr = TSI_CTRL_PKTSPERINTR; } else if(AUDIO == type) { cfg.pkts_per_intr = TSI_MEDIADATA_AUD_PKTSPERINTR; } else if(VIDEO == type) { cfg.pkts_per_intr = TSI_MEDIADATA_VID_PKTSPERINTR; } else if(SUB_TITLE == type) { cfg.pkts_per_intr = TSI_SUBTITLE_PKTSPERINTR; } else { /* should not enter here */ INTERFACE_DEBUG("invalid type inp params %d %d\n",buff_idx,pid); return -1; } INTERFACE_DEBUG("add pid to filter config %d %d %d %d %d %d %d\n",cfg.fid,cfg.pid,cfg.pkts_per_intr,cfg.buffer_index,fid_bitmap,pid_val[index],index); cfg.fid = index; cfg.pid = pid_val[index]; err = tsi_filter_cfg(test_cfg); if(err) { INTERFACE_DEBUG("add pid into filter config error %d\n",err); return err; } tsi_clear_buffer(buff_idx); enable_filter(fid_bitmap); //INTERFACE_DEBUG("cfg.fid:%d cfg.pid:%d interrupt:%d\n",cfg.fid,cfg.pid, packet_number_pre_interrupt[index]); //tsi_clear_buffer(buff_idx); err=tsi_filter_en(test_en); return err; }
int8_t tsi_remove_pid_from_filter(int pid) { int index; tsi_err_e err; if(inited==0) return -1; if(pid>=0) { if(pid_number<=0) { return -1; } for(index=0;index<MAX_NUM_PIDS_SUPPORTED;index++) { /* check for the index to be free */ if(pid == pid_val[index]) { INTERFACE_DEBUG("remove pid_val[%d]:%d\n",index,pid_val[index]); pid_val[index] = -1; break; } } if(MAX_NUM_PIDS_SUPPORTED == index) { INTERFACE_DEBUG("remove pid - MAX pid's reached :%d\n",pid); for(index=0;index<MAX_NUM_PIDS_SUPPORTED;index++) INTERFACE_DEBUG("%d ",pid_val[index]); return -1; } /* update the fid number */ fid_bitmap &= (~(1<<index)); pid_number--; INTERFACE_DEBUG("remove pid:remove tsi_exit %d \n",fid_bitmap); enable_filter(fid_bitmap); err=tsi_filter_en(test_en); } else { INTERFACE_DEBUG("remove pid:remove all pid\n"); pid_number = 0; memset((void*)pid_val,-1,sizeof(uint32_t)*PID_NUM); //memset(packet_number_pre_interrupt,0,sizeof(int)*PID_NUM); fid_bitmap = 0; INTERFACE_DEBUG("remove pid:remove tsi_exit %d \n",fid_bitmap); enable_filter(fid_bitmap); err=tsi_filter_en(test_en); INTERFACE_DEBUG("remove pid:tsi_clear %d \n",fid_bitmap); tsi_clear_buffer(TSI_CTRL_BUFFINDEX); tsi_clear_buffer(TSI_MEDIA_DATA_BUFFINDEX); tsi_clear_buffer(TSI_EPG_BUFFINDEX); tsi_clear_buffer(TSI_TIME_BUFFINDEX); } return err; }
Int16 tdcli_fetch_request(td_session *sess) { INTERFACE_DEBUG_C(); Int32 result; int response_type = 0, showflag = 0; int retval_resp_buf; int data_type; int i, status; char ctc[6400]; struct CliSuccessType *SuccPcl; struct CliFailureType *FailPcl; struct CliOkType *OKPcl; sess->dbcarea->i_sess_id = sess->session; sess->dbcarea->i_req_id = sess->request; sess->dbcarea->func = DBFFET; status = OK; while (status == OK && !interrupt_tdcli_fetching) { DBCHCL(&result,sess->context,sess->dbcarea); if (result == REQEXHAUST) status = STOP; else if (result != EM_OK) status = FAILED; else { INTERFACE_DEBUG("Flavor Type: %d", sess->dbcarea->fet_parcel_flavor); switch (sess->dbcarea->fet_parcel_flavor) { case PclSUCCESS: /* 8 */ SuccPcl = (struct CliSuccessType *) sess->dbcarea->fet_data_ptr; INTERFACE_DEBUG("Success parcel, length %d", (Int32)sess->dbcarea->fet_ret_data_len); INTERFACE_DEBUG("Activity Type : %d", SuccPcl->ActivityType); INTERFACE_DEBUG("Activity Count: %d", SuccPcl->ActivityCount); resp_count(SuccPcl->ActivityType, 0, 0); break; case PclFAILURE: /* 9 */ INTERFACE_DEBUG("Failure parcel, length %d", (Int32)sess->dbcarea->fet_ret_data_len); tdcli_write_error(sess->dbcarea->fet_data_ptr); break; case PclRECORD : /* 10 */ INTERFACE_DEBUG("Record parcel, length %d", (Int32)sess->dbcarea->fet_ret_data_len); break; case PclENDSTATEMENT: /* 11 */ INTERFACE_DEBUG_S("EndStatement parcel"); flush_resp_buffer(); reset_resp_buffer(0); break; case PclENDREQUEST: /* 12 */ INTERFACE_DEBUG_S("EndRequest parcel"); break; case PclOK: /* 17 */ OKPcl = (struct CliOkType *) sess->dbcarea->fet_data_ptr; INTERFACE_DEBUG_S("OK parcel"); INTERFACE_DEBUG("Activity Type : %d", OKPcl->ActivityType); INTERFACE_DEBUG("Activity Count: %d",OKPcl->ActivityCount); resp_count(OKPcl->ActivityType, OKPcl->ActivityCount, OKPcl->FieldCount); reset_resp_buffer(OKPcl->FieldCount); if (OKPcl->ActivityType == PclShowStmt) showflag = 1; else showflag = 0; break; case PclFIELD: /* 18 */ INTERFACE_DEBUG("Field parcel, length %d", (Int32)sess->dbcarea->fet_ret_data_len); if(DEBUG_ON & 0xF0) { printf("----------- %d -----------------\n", response_type); for (i = 0; i < sess->dbcarea->fet_ret_data_len; i++) printf("%c", sess->dbcarea->fet_data_ptr[i]); printf("\n"); } if (response_type == RESPONSE_TITLE || response_type == RESPONSE_FORMAT || response_type == RESPONSE_RECEND) data_type = 0; else if (response_type == RESPONSE_DATA) { if (showflag) data_type = RESPONSE_DATA_SHOWDML; else data_type = RESPONSE_DATA_REGULAR; } else { data_type = 0; } retval_resp_buf = add_resp_buffer(response_type, data_type, sess->dbcarea->fet_ret_data_len, sess->dbcarea->fet_data_ptr); if(retval_resp_buf < 0) interrupt_tdcli_fetching = 1; break; case PclNULLFIELD: /* 19 */ INTERFACE_DEBUG_S("NullField parcel"); add_resp_buffer(response_type, data_type, 0, 0); break; case PclTITLESTART: /* 20 */ INTERFACE_DEBUG_S("TitleStart parcel"); response_type = RESPONSE_TITLE; break; case PclTITLEEND: /* 21 */ INTERFACE_DEBUG_S("TitleEnd parcel"); response_type = 0; break; case PclFORMATSTART: /* 22 */ INTERFACE_DEBUG_S("FormatStart parcel"); response_type = RESPONSE_FORMAT; break; case PclFORMATEND: /* 23 */ INTERFACE_DEBUG_S("FormatEnd parcel"); response_type = 0; case PclSIZESTART: /* 24 */ INTERFACE_DEBUG_S("SizeStart parcel"); break; case PclSIZEEND: /* 25 */ INTERFACE_DEBUG_S("SizeEnd parcel"); break; case PclSIZE: /* 26 */ INTERFACE_DEBUG_S("Size parcel"); break; case PclRECSTART: /* 27 */ INTERFACE_DEBUG_S("RecordStart parcel"); response_type = RESPONSE_DATA; break; case PclRECEND: /* 28 */ INTERFACE_DEBUG_S("RecordEnd parcel"); add_resp_buffer(RESPONSE_RECEND, 0, 0, 0); response_type = 0; break; case PclNOP: /* 32 */ INTERFACE_DEBUG_S("Nop parcel"); break; case PclWITH: /* 33 */ INTERFACE_DEBUG_S("With parcel"); break; case PclPOSITION: /* 34 */ INTERFACE_DEBUG_S("Position parcel"); break; case PclENDWITH: /* 35 */ INTERFACE_DEBUG_S("EndWidth parcel"); break; case PclPOSSTART: /* 46 */ INTERFACE_DEBUG_S("PosStart parcel"); break; case PclPOSEND: /* 47 */ INTERFACE_DEBUG_S("PosEnd parcel"); break; case PclERROR: /* 49 */ INTERFACE_DEBUG_S("ERROR parcel"); status = STOP; tdcli_write_error(sess->dbcarea->fet_data_ptr); tdcli_end(sess); return -1; case PclDATAINFO: /* 71 */ INTERFACE_DEBUG_S("DataInfo parcel"); break; case PclPREPINFO: /* 86 */ INTERFACE_DEBUG_S("PrepInfo parcel"); break; case PclASSIGNRSP: /* 101 */ INTERFACE_DEBUG_S("AssignRsp parcel"); break; case PclCURSORDBC: /* 121 */ INTERFACE_DEBUG_S("CursorDBC parcel"); break; case PclFLAGGER: /* 122 */ INTERFACE_DEBUG_S("Flagger parcel"); break; case PclERRORINFO: /* 164 */ INTERFACE_DEBUG_S("ErrorInfo parcel"); break; case PclSTATEMENTINFO: /* 169 */ INTERFACE_DEBUG_S("StatementInfo parcel"); break; case PclSTATEMENTINFOEND: /* 170 */ INTERFACE_DEBUG_S("StatementInfoEnd parcel"); break; case PclRESULTSET: /* 172 */ INTERFACE_DEBUG_S("ResultSet parcel"); break; default: INTERFACE_DEBUG_S("Unprocessed parcel"); break; } /*end of switch*/ } /*end of else*/ } /*end of while*/ signal_resp_pager(SIG_IGN); close_resp_pager(); if(status == FAILED) { fprintf(stderr, "Fetch failed: %s\n",sess->dbcarea->msg_text); tdcli_end(sess); return -1; } return EM_OK; }