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

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

?? task.c

?? 話帶數據中傳真解調程序
?? C
字號:
/*
 * Task related routines.
 *
 * Copyright(?) 1999 R.J.M. Close, distribute under GPL
 */

#include "task.h"

// Initiates the relavent type of task with the supplied args.
void x_send_mail (unsigned int arg1, unsigned int arg2, unsigned char* arg3, unsigned int arg4)
{ 
  switch (arg2) {
  case 1: 
	dp_task (arg1, arg3, arg4);
	return;

  case 2:
	at_task (arg1, arg3, arg4);
	return;

  case 3:
	io_task (arg1, arg3, arg4);
	return;

  default:
	printf("x_send_mail: error task type %d not valid!\n", arg2);
	return;
  }
}

void dp_task(unsigned int arg1, unsigned char* arg2, unsigned int arg3)
{

  // Major function, needs filling in!
  //printf("dp_task: (%x, %p, %x);\n", arg1, arg2, arg3);
  if (arg1 > 0x1b) goto loc_290B3;
  if (arg1 >= 0x1a) goto loc_2906D;
  if (arg1 > 0x13) return;

  switch(arg1) {
	//loc_28D38
  case 0:
	 // This is how it is called in  UART_init().
     dp_init_variables();
     if (arg2 == NULL) {
        printf("dp_task: error: arg2 is NULL.\n");
        break;
        }
     if (dp_init_modem() != 1) {

	   *arg2 = 0;
	   x_modem_state = 1;
	   break;
	 }
	 else {
	   *arg2 = 1;
	   x_init_modem_options();
	   // ll_load_modem_options(); Loads options from registry in NT.
	   x_output(0);
	   dp_update_modem_options();
	   x_modem_state = 1;
	   break;
	 }

  case 1:
	if(dp_sleep == 0)
	  dp_onhook_cmd();

	dp_deinit_modem();
	x_modem_mode = 0;
	x_fax_state = 0;
	dp_state = 20;
	break;

  case 2:
	dp_periodic_task();
	break;

  case 3:
	*arg2 = 0;
	break;

  case 0x78:
	dp_hdlc_mode();
	break;


  default:
	printf("dp_task: error: case %d not implemented.\n", arg1);
	break;
  }

  return;

 loc_2906D:

 loc_290B3:
  // Fill in!
  dp_test_cmd (arg3, arg2);

}

void at_task(unsigned int arg1, unsigned char* arg2, unsigned int arg3)
{

  switch (arg1) {
  case 0:
	at_init_variables();
	return;
  case 0x15: case 0x17: case 0x18: case 0x19: case 0x1a: case 0x1b:
	return;
  case 0x16:
	//atparse_cmd();
	return;
  case 0x1d:

	if (x_dial_residual == 0)
	  at_result_code = 0;
	else if (x_dial_residual == 2)
	  at_result_code = 6;
	else if (x_dial_residual == 1)
	  at_result_code = 7;
	else if (x_dial_residual == 3)
	  at_result_code = 8;
	else if (x_dial_residual == 11)
	  at_result_code = 30;
	else if (x_dial_residual == 12)
	  at_result_code = 31;
	else if (x_dial_residual == 13) 
	  at_result_code = 32;
	else
	  at_result_code = 3;

	  //at_output_msg (0, 0);
	  return;
  
  default:
	// Needs filling in (low priority!).
	printf("at_task(%d, %s, %d): not implemented.\n", arg1, arg2, arg3);
	return;
  }
}

// WARNING!! The states for version 568 differ slightly.
// It looks like a state has been taken out for 568.
// For example state 66 in the 535 version is the same
// as state 65 in the 568 version.
void dp_periodic_task (void)
{
  unsigned int eax;
  unsigned int ecx;

  printf ("dp_periodic_task: IN dp_state = %d, ", dp_state);

  eax = x_elapsed_time_long(x_minute_timer_long);
  ecx = eax;
  if (ecx >= 60000) {
    // Update minute Timer variables.
	/*
    4f04:	b8 73 b2 e7 45 	movl   $0x45e7b273,%eax
    4f09:	f7 e1          	mull   %ecx,%eax
    4f0b:	c1 ea 0e       	shrl   $0xe,%edx
    4f0e:	66 89 54 24 08 	movw   %dx,0x8(%esp,1)
    4f13:	66 01 15 00 00 	addw   %dx,x_minute_count
    4f18:	00 00 
    4f1a:	0f b7 44 24 08 	movzwl 0x8(%esp,1),%eax
    4f1f:	89 44 24 04    	movl   %eax,0x4(%esp,1)
    4f23:	89 c2          	movl   %eax,%edx
    4f25:	c1 e2 05       	shll   $0x5,%edx
    4f28:	29 c2          	subl   %eax,%edx
    4f2a:	8d 14 90       	leal   (%eax,%edx,4),%edx
    4f2d:	89 54 24 04    	movl   %edx,0x4(%esp,1)
    4f31:	c1 64 24 04 04 	shll   $0x4,0x4(%esp,1)
    4f36:	29 54 24 04    	subl   %edx,0x4(%esp,1)
    4f3a:	c1 64 24 04 05 	shll   $0x5,0x4(%esp,1)
    4f3f:	89 cb          	movl   %ecx,%ebx
    4f41:	2b 5c 24 04    	subl   0x4(%esp,1),%ebx
    4f45:	e8 fc ff ff ff 	call   x_current_time_long
    4f4a:	89 c2          	movl   %eax,%edx
    4f4c:	0f b7 c3       	movzwl %bx,%eax
    4f4f:	29 c2          	subl   %eax,%edx
    4f51:	89 15 00 00 00 	movl   %edx,x_minute_timer_long
    4f56:	00 
    4f57:	e8 fc ff ff ff 	call   x_current_time
    4f5c:	89 c2          	movl   %eax,%edx
    4f5e:	29 da          	subl   %ebx,%edx
    4f60:	66 89 15 00 00 	movw   %dx,x_minute_timer
    4f65:	00 00 
	*/
	}
  //edx = dp_state -1;
  if (dp_state > 71) return;
  switch (dp_state) {

  case 13:  // 5850: Same as 568.
	if (dp_dial_connect_success() == 1) {
	  dp_state = 15;
	  x_modem_state = 6;
	  dp_timer = x_current_time();
	  dp_timer1 = x_current_time();
	  x_send_mail(0x17, 3, 0, 0);

	  if (H_blacklist_or_delay_flag)
		dp_update_blacklist(dp_dial_string, 0);
	  printf("Connected OK!\n");
	}
	// loc_28368:
	else
	  // Connect failed?
	  // S_connect_completion_timeout is byte_59E67
	  if (x_elapsed_long_time(&dp_long_timer) >=
		  (unsigned int)(S_connect_completion_timeout * 10)) {
		x_status[0x28] = 3;
		dp_state = 33;
		x_dial_residual = 9;
	  }
	dp_detect_over_current(1);	
	break;

  case 15: 
	// dp_state = 15 in Jamies is 2d0c8:	
	// and is 5a90 in 568 version. This section is based on the 568 version.
	if (x_elapsed_time(dp_timer) < 500) goto loc_5b6e;
	dp_modem_rate();

	if (dp_retrain() != 1) goto loc_5b01;
	dp_disable_workaround();
    *(unsigned short*)(x_status + 0x26) = *(unsigned short*)(x_status + 0x26) + 1;
	dp_bV34WkState = 0;
	dp_count = 1;
	dp_state = 50;  // 535 version has state set to 49.
	dp_timer1 = x_current_time();
	x_send_mail(0x81, 3, 0, 0);
	//568 version has this:
	dp_lapm_error_check_init();
	goto loc_5b6e;

  loc_5b01:
    if (dp_carrier_loss() != 1) goto loc_5b55;
	if (x_elapsed_time(dp_timer)
        < (S_auto_disconnect_delay * 100)) goto loc_5b6e;
	// Auto disconnect.
	dp_state = 33;
	x_status[0x3c] = 0x3c;
	x_dial_residual = 9;
	x_status[0x28] = 1;
    goto loc_5b6e;

loc_5b55:
	if (S(0x2a) == 1) 
	  dp_auto_rate();
	dp_timer = x_current_time();

loc_5b6e:
	if (S(0x2a) == 1)
	  dp_lapm_auto_rate();
    break;

  case 33:  //5b85:
	// Go onhook.
	dp_onhook_cmd();
	dp_state = 34;
	dp_timer = x_current_time();
	break;

  case 34:  //5ba0:
	if ((dp_line_connect() == false) ||
		(x_elapsed_time(dp_timer) > 1000)) {
	  // If not connected or nothing has happened for a second
	  // then go onhook.
	  x_modem_state = 1;
	  dp_onhook_cmd();
	  dp_state = 1;
	  x_send_mail(0x18, 3, 0, 0);
	  dp_56k_idle();
	  dp_vpcm_idle();
	}
	break;
 
  case 60:
	if (!dp_v8bis_ans_background())
	  dp_answer_cmd();
	break;

  case 64:
	// Do the 56K (flex?) stuff.
	dp_56k_background();
	break;

  case 65:
	// Perform VPCM stuff.
	dp_vpcm_background();
	break; 

  default:
	printf ("!!dp_periodic_task: error, clause for dp_state = %d not implemented!!\n",
			dp_state);
  }
  printf (" OUT dp_state = %d!\n", dp_state);

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区**美女毛片| 国产精品乱人伦| 色婷婷香蕉在线一区二区| 麻豆精品一区二区av白丝在线| 亚洲天堂久久久久久久| www一区二区| 日韩一区二区在线观看| 成人av第一页| 国产成人免费av在线| 久久se精品一区二区| 日韩电影在线观看网站| 亚洲成a人片在线不卡一二三区| 中文字幕的久久| 亚洲欧美在线观看| 精品国免费一区二区三区| 日韩精品中午字幕| 91精品国模一区二区三区| 欧美日韩国产精品自在自线| 欧美视频在线一区二区三区| 91美女在线视频| 欧美特级限制片免费在线观看| 91久久国产最好的精华液| 欧美天堂一区二区三区| 日韩视频免费观看高清完整版在线观看 | 国产精品天天摸av网| 欧美国产一区二区在线观看| 国产精品麻豆久久久| 亚洲精品国产第一综合99久久| 一区二区三区在线观看视频| 日本亚洲三级在线| 国产高清久久久久| 91热门视频在线观看| 欧美日韩中文国产| 精品日本一线二线三线不卡| 三级精品在线观看| 亚洲一级二级三级| 日韩精品亚洲一区二区三区免费| 精品一区二区三区在线播放 | 日韩va欧美va亚洲va久久| 91蜜桃婷婷狠狠久久综合9色| 国产精品区一区二区三区| 国产成人在线视频免费播放| 97久久精品人人爽人人爽蜜臀| 精品久久久久一区二区国产| 五月天欧美精品| 欧美男女性生活在线直播观看 | 日韩精品一二三四| 在线不卡一区二区| 91免费视频观看| 国产精品久久久久三级| 成人av高清在线| 国产精品久久网站| 99r国产精品| 亚洲一二三区视频在线观看| 欧美综合欧美视频| 亚洲午夜久久久久久久久电影网| 91丨porny丨首页| 一区二区三区资源| 欧美日韩一二三| 亚洲午夜羞羞片| 日韩一级二级三级| 国产高清不卡一区二区| 亚洲天堂中文字幕| 91精品国产高清一区二区三区蜜臀| 一区二区三区在线看| 91精品国产91久久久久久一区二区| 热久久久久久久| 一色桃子久久精品亚洲| 欧美艳星brazzers| 国产一区欧美一区| 亚洲卡通动漫在线| 久久亚洲二区三区| 99国产精品久久久久| 爽好久久久欧美精品| 欧美α欧美αv大片| 91香蕉视频在线| 亚洲电影一级黄| 久久九九99视频| 欧美裸体bbwbbwbbw| 国产夫妻精品视频| 亚洲va欧美va人人爽| 中文字幕一区三区| 欧美tickle裸体挠脚心vk| 色婷婷国产精品久久包臀| 国产在线一区二区| 亚洲精品国产无套在线观| 国产午夜一区二区三区| 欧美肥妇free| 欧美色老头old∨ideo| 波多野结衣中文字幕一区二区三区| 香蕉av福利精品导航| 一区二区三区四区亚洲| 久久久久久日产精品| 精品国产免费一区二区三区香蕉| 在线观看精品一区| 在线看日本不卡| 91免费在线播放| 色综合天天在线| 91麻豆精品秘密| 91在线小视频| 一道本成人在线| 91丨porny丨国产| 色婷婷av一区二区| 91久久精品国产91性色tv| 91猫先生在线| 91蝌蚪porny| 在线亚洲一区二区| 欧美老肥妇做.爰bbww视频| 7777精品伊人久久久大香线蕉经典版下载 | 日韩成人一区二区三区在线观看| 丝袜a∨在线一区二区三区不卡| 日韩av中文字幕一区二区三区| 久草在线在线精品观看| 韩国v欧美v日本v亚洲v| 精品一区二区三区免费播放| 国产一区二区女| 99视频精品在线| 欧美日韩国产电影| 精品动漫一区二区三区在线观看| 欧美一区二区在线免费播放| 久久久国产午夜精品| 中文字幕日本乱码精品影院| 亚洲一区中文日韩| 精品在线一区二区三区| 精品在线播放午夜| 一本一道综合狠狠老| 国产精品嫩草影院com| 亚洲欧洲精品成人久久奇米网| 午夜在线电影亚洲一区| 国产成人av电影在线观看| 欧美日韩国产综合久久 | 国产三级三级三级精品8ⅰ区| 亚洲美女精品一区| 免费欧美高清视频| 国产毛片精品国产一区二区三区| 色婷婷av一区二区三区软件| 精品女同一区二区| 亚洲成人高清在线| 成人免费av在线| 精品国产免费一区二区三区四区| 亚洲综合无码一区二区| 成人在线综合网站| 精品美女一区二区三区| 99久久国产综合精品麻豆 | 色8久久人人97超碰香蕉987| 久久久久国产成人精品亚洲午夜| 日韩一区精品视频| 欧美色图12p| 一区二区三区四区高清精品免费观看 | 国产一区二区福利视频| 欧美一区二区三区免费| 丝袜美腿亚洲一区二区图片| 高清不卡一区二区在线| 精品精品欲导航| 精品亚洲免费视频| 久久综合九色综合97婷婷| 男人的j进女人的j一区| 欧美偷拍一区二区| 亚洲成年人影院| 亚洲午夜精品网| 91精品国产91热久久久做人人| 免费视频一区二区| 久久久久久亚洲综合| 成人中文字幕合集| 亚洲欧美日韩国产另类专区| 成人免费视频网站在线观看| 国产精品高潮呻吟| 色94色欧美sute亚洲13| 亚洲欧美色一区| 91蜜桃在线观看| 久久99精品国产.久久久久| 欧美一区永久视频免费观看| 韩国av一区二区三区| 国产人久久人人人人爽| av电影天堂一区二区在线观看| 亚洲欧美一区二区久久 | 欧美日韩视频在线第一区| 美女一区二区三区| 中文字幕欧美激情一区| 久久精品欧美日韩精品| 在线免费观看日本欧美| 国产精品88888| 日韩av一区二区三区| 国产精品久久久久久久久久久免费看 | 亚洲激情一二三区| 国产亚洲欧美色| 911国产精品| 欧美日韩国产一级| 在线观看视频91| 91亚洲永久精品| 成人av影院在线| 懂色av一区二区三区蜜臀| 国产综合色在线| 国产一区二区三区久久悠悠色av| 亚洲观看高清完整版在线观看| 国产精品久久免费看| 国产精品美女一区二区| 精品久久一二三区| 9191成人精品久久| 欧美嫩在线观看|