亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ltmodem.c

?? 話帶數據中傳真解調程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
		fprintf(stderr, "+ answered OK\n" );
	  else
		fprintf(stderr, "- no answer tone, bummer!\n" );
#endif

    } else if (!strncmp(buf, "duplex", 6)) {
      voice_transmit(3);

    } else if (!strncmp(buf, "quit", 4) || !strncmp(buf, "exit", 4)) {
      fprintf(stderr, "+ exiting\n" );
      exit(0);

    } else if (!strncmp(buf, "speaker on", 10)) {
	  // Turn speaker on, and set volume to max.
      setSpeaker(true, 3);
      fprintf(stderr, "+ OK\n" );

    } else if (!strncmp(buf, "speaker off", 11)) {
	  // Turn speaker of, and set volume to min.
      setSpeaker(false, 0);
      fprintf(stderr, "+ OK\n" );

    } else if ((!strncmp(buf, "reset", 5)) ||
			   (!strncmp(buf, "hangup", 6))) {
	  // Hang up and reset the modem.
      hangup();
      fprintf(stderr, "+ OK\n" );

    } else
      fprintf(stderr, "- unknown command %s\n", buf );
  }

  PRINTF( "# Exiting command mode\n" );
  exit(1);
}


void setup_irq(void)
{
  // Setup IRQ variable used by other stuff.
  if (isapnp_modem)
    modem_irq = get_isamodem_irq();
  else
    modem_irq = get_pcimodem_irq();
}

void show_modem(void)
{
  if (isapnp_modem)
    show_isamodem();
  else
    show_pcimodem();
}

// Modem monitoring functions.
void
monitor_modem(void)
{
  // Value input by user.
  char input = 'z';

  // Monitoring activity type:
  // registers = 1, I/O = 2.
  int monitor_type = 1;

  // Monitoring period in milliseconds, defaults to one second.
  int monitoring_interval = 1000;

  while (input != 'Q') {
	// Ignore the newline char.
	if (input != '\n') {
	  printf ("***************************************************\n");
      printf ("monitoring menu (Monitor monitorIo monitorRegs monitorBoth iNterval Quit): ");

	}
	// Get user input in uppercase.
	input = toupper (getchar());
    switch (input) {
	case 'M':
	  continous_monitoring(monitor_type, monitoring_interval);
	  break;
	case 'I':
      printf( "Will monitor I/O ports.\n" );
      monitor_type = 2;
      break;
    case 'R':
      printf( "Will monitor PCI registers.\n" );
      monitor_type = 1;
      break;
    case 'B':
      printf( "Will monitor I/O ports and PCI registers.\n" );
      monitor_type = 3;
      break;
    case 'N':
      monitoring_interval = set_monitoring_interval();
      break;
	case '\n':
      break;
	case 'Q':
	  break;
	default:
	  printf ("Illegal option: %c\n", input);
	}    
  }
}

int set_monitoring_interval(void){

  // Value input by user.
  int input = 0;
  char trash; 

  // Allow user to set interval.
  printf ("Set monitoring interval (in miliseconds): ");
  scanf ("%d%c", &input, &trash);

  if (input > 0) {
	// Return the user's value.
	printf ("Interval set to %d milliseconds.\n", input); 
	return input;
  }
  else {
	// Default to one second.
	printf ("Illegal interval, using 1 second default.\n"); 
	return 1000;
  }
}

/* Modem writing functions. */
void
set_modem(void)
{
  /* value input by user. */
  char input = ' ';

  /* start by just doing a hex dump. */
  if (isapnp_modem)
    show_isahex_dump();
  else
    show_pcihex_dump(modem_dev);

  /* Offer the user a choice of what to set. */
  while (input != 'Q') {

	// Ignore newline character.
	if (input != '\n') {
       printf ("modem write (Controlreg Io Quit): ");
	}
	input = toupper (getchar ());
    switch (input) {
	case 'C':
	  if (!isapnp_modem)
		printf ("Option not valid for ISA modems.");
	  else {
	    set_modem_cont_reg();

	    redisplay_modem_regs();

	  }
	  break;
	case 'I':
	  set_modem_io();
	  break;
	case '\n':
      break;
	case 'Q':
	  break;
	default:
	  printf ("Illegal option: %c\n", input);
	}   
  }
}
/* Main command menu. */

void
main_menu(void)
{
  /* char input by user. */
  char input = 'z';

  while (input != 'Q') {
	// Ignore the newline char.
	if (input != '\n') {
      printf ("main menu (Monitor Write Quit): ");
	}
	// Get user input in uppercase.
	input = toupper (getchar());
    switch (input) {
	case 'M':
	  monitor_modem();
	  break;
	case 'W':
	  set_modem();
	  break;
	case '\n':
      break;
	case 'Q':
	  break;
	default:
	  printf ("Illegal option: %c\n", input);
	}    

  }
  /* Bye bye... */
  printf ("User stopped ltmodem.\n");
}

// Lucent modem specific stuff.  

void go_onhook(void)
{
  dp_onhook_cmd();
}

void io_init(void)
{

   // Set up the port IO.
   port_io_init(io_address[1], io_address[2]);

   // Set up EEPROM ?
   //SetUpEEPROM();

   // Set up the modem variables etc.
   MimicInit();

}

// Dial the number held in the argument string.
void dial(char *s)
{
  sleep(2);	/* We do no dial tone detection, so we'll just wait */
  while (*s) {

	//printf( "Dialing: `%c'.\n", *s );

    switch (*s) {
    case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
	  // Delay before each one.
	  usleep(400000);
      if (pulseDial) {
		usleep(50000 * (*s));
		dp_pulse_dial_cmd(*s-'0');
	  }
	  else 
		dp_DTMF_dial_cmd(*s-'0');
	  break;
	case '-': case '.': case '\n':
	  // Allow punctuation.
      break;
    default:
      printf( "Unknown character in dial sequence `%c' ignored.\n", *s );
      break;
    }
    s++;
  }
}

// Mess around with speaker.
void setSpeaker (bool Enabled, unsigned char Volume)
{

  // Set speaker globals.
  S_speaker_enable = (unsigned char)Enabled;
  S_speaker_volume = Volume; 

  dp_56k_speaker_cmd ();

}

// Wait for dial tone, timing out after 3 seconds.
bool waitForDialTone (void)
{

  int timeout = 3000;
  short local_timer;

  local_timer = x_current_time();

  // Set up tone detection.
  dp_detect_tones_cmd();

  // Wait until dial tone detected or 3 seconds has expired.
  while (!dp_dial_tone_detected()) {
	if (x_elapsed_time(local_timer) > timeout)
	  return false;
	usleep(1000);
  }
  return true;
}

// Wait for answer tone, timing out after 10 seconds.
bool waitForAnswerTone (void)
{

  int timeout = 10000;
  unsigned short local_timer;

  dp_answer_state = 0;

  local_timer = x_current_time();

  // Set up tone detection.
  dp_detect_tones_cmd();

  // Wait until answer tone detected or 10 seconds has expired.
  while (!dp_answer_tone_detected()) {
	if (x_elapsed_time(local_timer) > timeout)
	  return false;
  }
  return true;
}

// Wait for busy tone, timing out after 4 seconds.
bool waitForBusyTone (void)
{
  unsigned short local_timer;

  dp_busy_state = 0;

  local_timer = x_current_time();

  // Set up tone detection.
  dp_detect_tones_cmd();

  // Busy tone detection will not work if this is set!
  S_data_calling_tone = false;

  // Wait until busy tone detected or 4 seconds has expired.
  while (!dp_busy_tone_detected()) {
	if (x_elapsed_time(local_timer) > 4000)
	  return false;
  }
  return true;
}


void hangup (void)
{
  // This is on a clause in dp_period_task and other stuff.
  S(0x74) = 0;
  dp_onhook_cmd();
  dp_state = 1;
  x_modem_state = 1;
  dp_timer = x_current_time();

  x_send_mail(0x18, 3, 0, 0);

  // This is what Pavel had put at the end of dp_onhook_cmd.
  printf( "This should really hangup: " );
  modem_reset(); 
  printf( "\n" );
}

void  waitForCall(void)
{
   // Set up ring in stuff and tone detection.
   bodge_init_dial();
   dp_detect_tones_cmd();
   
   printf("Waiting for incoming call...\n");

   // Wait for call to come in.
   while (1) {
	 if (call_detected() == true) {
	   printf("Incoming call detected!\n");
	   break;
	 }
   }

   // Turn speaker on, and set volume to max.
   setSpeaker(true, 3);

   // Go offhook.
   dp_offhook_cmd();

   printf("\nCall connected.\n");
}


#if TRY_INTERRUPTS

void catch_interrupts(void *data, size_t len)
{

 unsigned char rChar;

 // use args to get rid of compiler warning!
 if (len) data++;

 while (interrupt_enabled) {
   // Waits for an interrupt.
   //printf("Waiting for interrupt!\n");
   rChar = getc(irq_dev);
   // Call the ISR, locking out other threads.
   bb_threads_lock(1);
   //printf("Interrupt! ");

   if (modem_enabled) {
	 // Grab access to all the IO ports.
	 if (iopl(3) < 0) {
	   perror("portIO: iopl(3) failed");
	   fprintf(stderr, "This program must be run as root.\n");
	 }
	 dp_dsp_isr();
   }
   bb_threads_unlock(1);
 }

 printf("Interrupt thread terminated!\n");
 
}
#endif


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久97三级| 欧美国产国产综合| 亚洲永久免费av| 日本女优在线视频一区二区| 精品在线你懂的| 欧美色成人综合| 国产精品国产三级国产专播品爱网| 午夜久久久久久久久| 色婷婷精品久久二区二区蜜臂av | 日韩一区二区三区四区五区六区| 国产欧美一二三区| 国产成人午夜片在线观看高清观看| 日韩一级二级三级| 蜜桃精品视频在线| 91精品国产色综合久久不卡蜜臀| 亚洲一区在线观看网站| 欧美自拍偷拍午夜视频| 亚洲国产精品嫩草影院| 在线免费不卡电影| 亚洲高清一区二区三区| 欧美日精品一区视频| 亚洲高清在线视频| 日韩一区二区在线看| 黄色资源网久久资源365| 久久久精品综合| 成人在线一区二区三区| 亚洲激情av在线| 欧美成人vr18sexvr| 国产成人在线电影| 一区二区三区小说| 亚洲欧美日韩国产另类专区| 亚洲一区二区美女| 在线精品视频免费播放| 免费的成人av| 国产亚洲成aⅴ人片在线观看| 波波电影院一区二区三区| 亚洲国产精品久久久久婷婷884| 欧美一级免费观看| 国产91精品一区二区| 亚洲自拍另类综合| 久久伊99综合婷婷久久伊| 色婷婷综合久久| 激情综合网天天干| 亚洲美女区一区| 日韩精品专区在线| 国产99久久久久| 丝袜诱惑制服诱惑色一区在线观看| 欧美男生操女生| bt欧美亚洲午夜电影天堂| 日本欧美一区二区在线观看| 日韩欧美久久久| 欧美性感一区二区三区| 国产精品99久久久久久有的能看| 亚洲国产精品一区二区久久恐怖片| 国产亚洲欧洲997久久综合| 欧美精品一二三| 在线观看91精品国产入口| 国产a精品视频| 精品一区二区在线看| 亚洲成人1区2区| 亚洲精品国产成人久久av盗摄| 久久久久免费观看| 精品久久人人做人人爰| 91精品国产综合久久香蕉的特点| 色综合久久久久久久| 91丨porny丨蝌蚪视频| 风间由美一区二区av101| 国产福利一区二区三区视频在线| 五月综合激情婷婷六月色窝| 久久精品视频免费观看| 国产精品国产自产拍高清av王其| 精品国产乱码久久久久久图片| 日韩欧美高清dvd碟片| 欧美一级午夜免费电影| 欧美一区二区三区免费| 欧美一区二区视频在线观看| 欧美吻胸吃奶大尺度电影 | 日韩视频一区在线观看| 欧美一区二区久久| 久久久综合激的五月天| 国产偷国产偷精品高清尤物| 精品国产区一区| 久久久精品免费免费| 欧美国产精品中文字幕| 自拍偷在线精品自拍偷无码专区 | 国产一区在线看| 风间由美一区二区三区在线观看| 99久久er热在这里只有精品15 | 欧美日韩一区二区三区在线看| 国产精品一区专区| 国产福利91精品一区| 91原创在线视频| 91精品黄色片免费大全| 日韩欧美国产麻豆| 亚洲欧洲在线观看av| 天天色图综合网| 成人av中文字幕| 91精品国产全国免费观看| 国产欧美日韩另类一区| 亚洲最新视频在线播放| 国产一二精品视频| 欧美伊人精品成人久久综合97| 精品电影一区二区| 一区二区三区蜜桃| 国产成人综合在线观看| 欧美日韩免费一区二区三区视频| 久久午夜国产精品| 色av成人天堂桃色av| 欧美精品一区二区在线观看| 亚洲特黄一级片| 国产一区二区三区日韩| 欧美一区二区三区播放老司机| 国产精品久99| 国产高清精品久久久久| 欧美一区二区三区四区高清| 亚洲伦理在线精品| 国产成人av一区二区三区在线观看| 3atv在线一区二区三区| 亚洲欧美日韩精品久久久久| 国产精品99久久久久久久vr| 欧美嫩在线观看| 亚洲愉拍自拍另类高清精品| 91香蕉视频mp4| 国产精品久久精品日日| 国产大陆精品国产| 久久精品夜色噜噜亚洲a∨| 另类小说一区二区三区| 日韩欧美综合一区| 国产成人精品综合在线观看 | 不卡在线观看av| 国产精品不卡一区二区三区| 国产成人自拍网| 欧美国产日本视频| 国产a精品视频| 亚洲私人黄色宅男| 色综合久久久久| 亚洲综合在线免费观看| 欧美日韩视频第一区| 日本成人中文字幕| 日韩免费成人网| 国产精品自在欧美一区| 国产精品美女久久久久aⅴ| 国产成人a级片| 一区二区三区中文免费| 欧美日韩精品免费观看视频| 奇米精品一区二区三区四区| 成人激情电影免费在线观看| 色婷婷一区二区三区四区| 亚洲影院理伦片| 欧美一区二区三区视频免费播放| 久久不见久久见免费视频1| 国产精品乱人伦中文| 日本韩国视频一区二区| 日韩av在线发布| www激情久久| 欧美亚洲另类激情小说| 日本91福利区| 成人免费一区二区三区视频 | 精品久久久久久久一区二区蜜臀| 国产乱码字幕精品高清av| 国产精品国产馆在线真实露脸| 欧美在线视频日韩| 国产91精品在线观看| 偷拍一区二区三区| 欧美伊人精品成人久久综合97| 久久久精品免费网站| 欧美日韩中文字幕一区| 秋霞午夜鲁丝一区二区老狼| 国产亚洲视频系列| 日韩一区二区三区精品视频| www.66久久| 激情六月婷婷久久| 亚洲成人中文在线| 亚洲免费在线看| 国产精品免费视频网站| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品夜夜嗨av一区二区三区| 有码一区二区三区| 亚洲精品视频免费看| 欧美激情在线一区二区| 国产午夜一区二区三区| 欧美大尺度电影在线| 日韩午夜激情电影| 欧美一级精品在线| 日韩美女一区二区三区四区| 欧美色视频一区| 天天色综合天天| 午夜视频在线观看一区| 亚洲超碰97人人做人人爱| 亚洲风情在线资源站| 亚洲国产另类精品专区| 亚洲成av人**亚洲成av**| 三级欧美在线一区| 极品尤物av久久免费看| 久久99国产精品久久99果冻传媒| 一区二区久久久| 久久久久高清精品| 日韩欧美国产三级| 国产丝袜美腿一区二区三区| 91精品欧美综合在线观看最新|