maintidi.c

来自「优龙2410linux2.6.8内核源代码」· C语言 代码 · 共 2,112 行 · 第 1/5 页

C
2,112
字号
  if (!pLib->general_fax_event) {		if ((ret = SuperTraceTraceOnRequest(pLib->hAdapter, "State\\FAX Event", pLib->buffer))) {      return (-1);    }    pLib->general_fax_event = 1;		pLib->req_busy = 1;		return (0);  }  if (!pLib->general_mdm_event) {		if ((ret = SuperTraceTraceOnRequest(pLib->hAdapter, "State\\Modem Event", pLib->buffer))) {      return (-1);    }    pLib->general_mdm_event = 1;		pLib->req_busy = 1;		return (0);  }	if (pLib->ChannelsTraceActive < pLib->Channels) {		pLib->ChannelsTraceActive++;		sprintf (name, "State\\B%d\\Line", pLib->ChannelsTraceActive);		if ((ret = SuperTraceTraceOnRequest(pLib->hAdapter, name, pLib->buffer))) {			pLib->ChannelsTraceActive--;			return (-1);		}		pLib->req_busy = 1;		return (0);	}	if (pLib->ModemTraceActive < pLib->Channels) {		pLib->ModemTraceActive++;		sprintf (name, "State\\B%d\\Modem\\Event", pLib->ModemTraceActive);		if ((ret = SuperTraceTraceOnRequest(pLib->hAdapter, name, pLib->buffer))) {			pLib->ModemTraceActive--;			return (-1);		}		pLib->req_busy = 1;		return (0);	}	if (pLib->FaxTraceActive < pLib->Channels) {		pLib->FaxTraceActive++;		sprintf (name, "State\\B%d\\FAX\\Event", pLib->FaxTraceActive);		if ((ret = SuperTraceTraceOnRequest(pLib->hAdapter, name, pLib->buffer))) {			pLib->FaxTraceActive--;			return (-1);		}		pLib->req_busy = 1;		return (0);	}	if (!pLib->trace_mask_init) {		word tmp = 0x0000;		if (SuperTraceWriteVar (pLib->hAdapter,														pLib->buffer,												 		"Trace\\Event Enable",												 		&tmp,												 		0x87, /* MI_BITFLD */												 		sizeof(tmp))) {			return (-1);		}		pLib->trace_mask_init = 1;		pLib->req_busy = 1;		return (0);	}	if (!pLib->audio_trace_init) {		dword tmp = 0x00000000;		if (SuperTraceWriteVar (pLib->hAdapter,														pLib->buffer,												 		"Trace\\AudioCh# Enable",												 		&tmp,												 		0x87, /* MI_BITFLD */												 		sizeof(tmp))) {			return (-1);		}		pLib->audio_trace_init = 2;		pLib->req_busy = 1;		return (0);	}	if (!pLib->bchannel_init) {		dword tmp = 0x00000000;		if (SuperTraceWriteVar (pLib->hAdapter,														pLib->buffer,												 		"Trace\\B-Ch# Enable",												 		&tmp,												 		0x87, /* MI_BITFLD */												 		sizeof(tmp))) {			return (-1);		}		pLib->bchannel_init = 1;		pLib->req_busy = 1;		return (0);	}	if (!pLib->trace_length_init) {		word tmp = 30;		if (SuperTraceWriteVar (pLib->hAdapter,														pLib->buffer,												 		"Trace\\Max Log Length",												 		&tmp,														0x82, /* MI_UINT */												 		sizeof(tmp))) {			return (-1);		}		pLib->trace_length_init = 1;		pLib->req_busy = 1;		return (0);	}	if (!pLib->trace_on) {		if (SuperTraceTraceOnRequest (pLib->hAdapter,																	"Trace\\Log Buffer",																	pLib->buffer)) {			return (-1);		}		pLib->trace_on = 1;		pLib->req_busy = 1;		return (0);	}	if (pLib->trace_event_mask != pLib->current_trace_event_mask) {		if (SuperTraceWriteVar (pLib->hAdapter,														pLib->buffer,												 		"Trace\\Event Enable",												 		&pLib->trace_event_mask,												 		0x87, /* MI_BITFLD */												 		sizeof(pLib->trace_event_mask))) {			return (-1);		}		pLib->current_trace_event_mask = pLib->trace_event_mask;		pLib->req_busy = 1;		return (0);	}	if ((pLib->audio_tap_pending >= 0) && (pLib->audio_tap_mask != pLib->current_audio_tap_mask)) {		if (SuperTraceWriteVar (pLib->hAdapter,														pLib->buffer,												 		"Trace\\AudioCh# Enable",												 		&pLib->audio_tap_mask,												 		0x87, /* MI_BITFLD */												 		sizeof(pLib->audio_tap_mask))) {			return (-1);		}		pLib->current_audio_tap_mask = pLib->audio_tap_mask;		pLib->audio_tap_pending = 1;		pLib->req_busy = 1;		return (0);	}	if ((pLib->eye_pattern_pending >= 0) && (pLib->audio_tap_mask != pLib->current_eye_pattern_mask)) {		if (SuperTraceWriteVar (pLib->hAdapter,														pLib->buffer,												 		"Trace\\EyeCh# Enable",												 		&pLib->audio_tap_mask,												 		0x87, /* MI_BITFLD */												 		sizeof(pLib->audio_tap_mask))) {			return (-1);		}		pLib->current_eye_pattern_mask = pLib->audio_tap_mask;		pLib->eye_pattern_pending = 1;		pLib->req_busy = 1;		return (0);	}	if (pLib->bchannel_trace_mask != pLib->current_bchannel_trace_mask) {		if (SuperTraceWriteVar (pLib->hAdapter,														pLib->buffer,												 		"Trace\\B-Ch# Enable",												 		&pLib->bchannel_trace_mask,												 		0x87, /* MI_BITFLD */												 		sizeof(pLib->bchannel_trace_mask))) {			return (-1);		}		pLib->current_bchannel_trace_mask = pLib->bchannel_trace_mask;		pLib->req_busy = 1;		return (0);	}	if (!pLib->trace_events_down) {		if (SuperTraceTraceOnRequest (pLib->hAdapter,																	"Events Down",																	pLib->buffer)) {			return (-1);		}		pLib->trace_events_down = 1;		pLib->req_busy = 1;		return (0);	}	if (!pLib->l1_trace) {		if (SuperTraceTraceOnRequest (pLib->hAdapter,																	"State\\Layer1",																	pLib->buffer)) {			return (-1);		}		pLib->l1_trace = 1;		pLib->req_busy = 1;		return (0);	}	if (!pLib->l2_trace) {		if (SuperTraceTraceOnRequest (pLib->hAdapter,																	"State\\Layer2 No1",																	pLib->buffer)) {			return (-1);		}		pLib->l2_trace = 1;		pLib->req_busy = 1;		return (0);	}	for (i = 0; i < 30; i++) {		if (pLib->pending_line_status & (1L << i)) {			sprintf (name, "State\\B%d", i+1);			if (SuperTraceReadRequest (pLib->hAdapter, name, pLib->buffer)) {				return (-1);			}			pLib->pending_line_status &= ~(1L << i);			pLib->req_busy = 1;			return (0);		}		if (pLib->pending_modem_status & (1L << i)) {			sprintf (name, "State\\B%d\\Modem", i+1);			if (SuperTraceReadRequest (pLib->hAdapter, name, pLib->buffer)) {				return (-1);			}			pLib->pending_modem_status &= ~(1L << i);			pLib->req_busy = 1;			return (0);		}		if (pLib->pending_fax_status & (1L << i)) {			sprintf (name, "State\\B%d\\FAX", i+1);			if (SuperTraceReadRequest (pLib->hAdapter, name, pLib->buffer)) {				return (-1);			}			pLib->pending_fax_status &= ~(1L << i);			pLib->req_busy = 1;			return (0);		}		if (pLib->clear_call_command & (1L << i)) {			sprintf (name, "State\\B%d\\Clear Call", i+1);			if (SuperTraceExecuteRequest (pLib->hAdapter, name, pLib->buffer)) {				return (-1);			}			pLib->clear_call_command &= ~(1L << i);			pLib->req_busy = 1;			return (0);		}	}	if (pLib->outgoing_ifc_stats) {		if (SuperTraceReadRequest (pLib->hAdapter,															 "Statistics\\Outgoing Calls",															 pLib->buffer)) {			return (-1);		}		pLib->outgoing_ifc_stats = 0;		pLib->req_busy = 1;		return (0);	}	if (pLib->incoming_ifc_stats) {		if (SuperTraceReadRequest (pLib->hAdapter,															 "Statistics\\Incoming Calls",															 pLib->buffer)) {			return (-1);		}		pLib->incoming_ifc_stats = 0;		pLib->req_busy = 1;		return (0);	}	if (pLib->modem_ifc_stats) {		if (SuperTraceReadRequest (pLib->hAdapter,															 "Statistics\\Modem",															 pLib->buffer)) {			return (-1);		}		pLib->modem_ifc_stats = 0;		pLib->req_busy = 1;		return (0);	}	if (pLib->fax_ifc_stats) {		if (SuperTraceReadRequest (pLib->hAdapter,															 "Statistics\\FAX",															 pLib->buffer)) {			return (-1);		}		pLib->fax_ifc_stats = 0;		pLib->req_busy = 1;		return (0);	}	if (pLib->b1_ifc_stats) {		if (SuperTraceReadRequest (pLib->hAdapter,															 "Statistics\\B-Layer1",															 pLib->buffer)) {			return (-1);		}		pLib->b1_ifc_stats = 0;		pLib->req_busy = 1;		return (0);	}	if (pLib->b2_ifc_stats) {		if (SuperTraceReadRequest (pLib->hAdapter,															 "Statistics\\B-Layer2",															 pLib->buffer)) {			return (-1);		}		pLib->b2_ifc_stats = 0;		pLib->req_busy = 1;		return (0);	}	if (pLib->d1_ifc_stats) {		if (SuperTraceReadRequest (pLib->hAdapter,															 "Statistics\\D-Layer1",															 pLib->buffer)) {			return (-1);		}		pLib->d1_ifc_stats = 0;		pLib->req_busy = 1;		return (0);	}	if (pLib->d2_ifc_stats) {		if (SuperTraceReadRequest (pLib->hAdapter,															 "Statistics\\D-Layer2",															 pLib->buffer)) {			return (-1);		}		pLib->d2_ifc_stats = 0;		pLib->req_busy = 1;		return (0);	}	if (!pLib->IncomingCallsCallsActive) {		pLib->IncomingCallsCallsActive = 1;		sprintf (name, "%s", "Statistics\\Incoming Calls\\Calls");		if ((ret = SuperTraceTraceOnRequest(pLib->hAdapter, name, pLib->buffer))) {			pLib->IncomingCallsCallsActive = 0;			return (-1);		}		pLib->req_busy = 1;		return (0);	}	if (!pLib->IncomingCallsConnectedActive) {		pLib->IncomingCallsConnectedActive = 1;		sprintf (name, "%s", "Statistics\\Incoming Calls\\Connected");		if ((ret = SuperTraceTraceOnRequest(pLib->hAdapter, name, pLib->buffer))) {			pLib->IncomingCallsConnectedActive = 0;			return (-1);		}		pLib->req_busy = 1;		return (0);	}	if (!pLib->OutgoingCallsCallsActive) {		pLib->OutgoingCallsCallsActive = 1;		sprintf (name, "%s", "Statistics\\Outgoing Calls\\Calls");		if ((ret = SuperTraceTraceOnRequest(pLib->hAdapter, name, pLib->buffer))) {			pLib->OutgoingCallsCallsActive = 0;			return (-1);		}		pLib->req_busy = 1;		return (0);	}	if (!pLib->OutgoingCallsConnectedActive) {		pLib->OutgoingCallsConnectedActive = 1;		sprintf (name, "%s", "Statistics\\Outgoing Calls\\Connected");		if ((ret = SuperTraceTraceOnRequest(pLib->hAdapter, name, pLib->buffer))) {			pLib->OutgoingCallsConnectedActive = 0;			return (-1);		}		pLib->req_busy = 1;		return (0);	}	return (0);}static int process_idi_event (diva_strace_context_t* pLib,															diva_man_var_header_t* pVar) {	const char* path = (char*)&pVar->path_length+1;	char name[64];	int i;	if (!strncmp("State\\B Event", path, pVar->path_length)) {    dword ch_id;    if (!diva_trace_read_variable (pVar, &ch_id)) {      if (!pLib->line_init_event && !pLib->pending_line_status) {        for (i = 1; i <= pLib->Channels; i++) {          diva_line_event(pLib, i);        }        return (0);      } else if (ch_id && ch_id <= pLib->Channels) {        return (diva_line_event(pLib, (int)ch_id));      }      return (0);    }    return (-1);  }	if (!strncmp("State\\FAX Event", path, pVar->path_length)) {    dword ch_id;    if (!diva_trace_read_variable (pVar, &ch_id)) {      if (!pLib->pending_fax_status && !pLib->fax_init_event) {        for (i = 1; i <= pLib->Channels; i++) {          diva_fax_event(pLib, i);        }        return (0);      } else if (ch_id && ch_id <= pLib->Channels) {        return (diva_fax_event(pLib, (int)ch_id));      }      return (0);    }    return (-1);  }	if (!strncmp("State\\Modem Event", path, pVar->path_length)) {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?