⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 option.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
          (void)panel_set(item2, PANEL_VALUE, 0, 0);          (void)panel_set(item3, PANEL_VALUE, 0, 0);          (void)panel_set(item4, PANEL_VALUE, 0, 0);        } else        {          (int)tests[test_id]->data = 0;        /* enable all three tests */        }        break;    case ZEBRA1:	if (!tty_mode)	{          (void)panel_set(item1, PANEL_VALUE, 0, 0);	/* access_choice */          (void)panel_set(item2, PANEL_VALUE, 0, 0);    /* mode_choice */							/*Fast mode as default*/	} else	{	  (int)tests[test_id]->data = 0<<2;	/* mode=0 for Fast */ 	}	break;    case ZEBRA2:	if (!tty_mode)	{          (void)panel_set(item1, PANEL_VALUE, 0, 0);	/* access_choice */          (void)panel_set(item2, PANEL_VALUE, 0, 0);    /* mode_choice */          (void)panel_set(item3, PANEL_VALUE, 0, 0);	/* image_choice */          (void)panel_set(item4, PANEL_VALUE, 0, 0);    /* resolution_choice*/	} else	{	  (int)tests[test_id]->data = 0<<2;    /* mode=0 for Fast */	}	break;    case SPIF:	/* defaults to internal port */	if (!tty_mode)	{	  (void)panel_set(item1, PANEL_VALUE, 1, 0);   /* internal port */	  (void)panel_set(item2, PANEL_VALUE, 0, 0);   /* printer port */	  (void)panel_set(item3, PANEL_VALUE, 0, 0);   /* 96-pin loopback */	  (void)panel_set(item4, PANEL_VALUE, 0, 0);   /* 25-pin loopback */	  (void)panel_set(item5, PANEL_VALUE, 0, 0);   /* echo tty */	  (void)panel_set(item6, PANEL_VALUE, 6, 0);   /* port baud rate */	  (void)panel_set(item7, PANEL_VALUE, 3, 0);   /* character size */	  (void)panel_set(item8, PANEL_VALUE, 0, 0);   /* stop bit */	  (void)panel_set(item9, PANEL_VALUE, 0, 0);   /* parity port */	  (void)panel_set(item10, PANEL_VALUE, 1, 0);  /* flow control type */	  (void)panel_set(item11, PANEL_VALUE, 0, 0);  /* serial port */	  (void)panel_set(item12, PANEL_VALUE, 0, 0);  /* test data type */	}	else	{	  tests[test_id]->data = (caddr_t)0x103601;	}	break;    default:	return;				/* does nothing */  }}/****************************************************************************** * option_destroy_proc, sets up the arguments for the test according to       * * user's option selection before destroying the option popup without	      * * confirmer.								      * * Input: object handle(could also be the frame handle of the popup).	      * ******************************************************************************/option_destroy_proc(item)Panel_item item;{  int	test_id, tmp, i, num, b;  test_id = (int)panel_get(item, PANEL_CLIENT_DATA);  switch (tests[test_id]->id)		/* depend on which test it is */  {    case PMEM:	break;				/* does nothing */    case VMEM:	tests[test_id]->data = (caddr_t)panel_get_value(item1);	(int)tests[test_id]->special = atoi((char *)panel_get_value(item2));	break;    case AUDIO:        if (tests[option_id]->conf->uval.devinfo.status == 0) {		tmp = atoi((char *)panel_get_value(item2));		if (tmp > 255) tmp = 255;		else if (tmp < 0) tmp = 0;		(int)tests[test_id]->special = tmp;		tests[test_id]->data = (caddr_t)panel_get_value(item1);        }        else {                sprintf(audbri_ref_file, "%s", panel_get_value(item7));                tests[test_id]->special = audbri_ref_file;                tests[test_id]->data = (caddr_t)(                  ((int)panel_get_value(item6)<<6) |                  ((int)panel_get_value(item5)<<5) |                  ((int)panel_get_value(item4)<<4) |                  ((int)panel_get_value(item3)<<3) |                  ((int)panel_get_value(item2)<<2) |                  (int)panel_get_value(item1));        }        break;    case CPU_SP:    case CPU_SP1:	tests[test_id]->data = (caddr_t)panel_get_value(item1);	break;    case ENET0:    case ENET1:    case ENET2:    case OMNI_NET:    case FDDI:    case TRNET:	(int)tests[test_id]->data =	  (int)panel_get_value(item1) | ((int)panel_get_value(item3)<<1);	tmp = (atoi)((char *)panel_get_value(item2));	if (tmp < 0) tmp = 0;	(int)tests[test_id]->special = tmp;	break;    case CDROM:	tmp = atoi((char *)panel_get_value(item7));	if (tmp > 100) tmp = 100;	else if (tmp < 0) tmp = 0;	(int)tests[test_id]->data = tmp << 8;	(int)tests[test_id]->data |= (int)panel_get_value(item1) |	  ((int)panel_get_value(item2)<<3) | ((int)panel_get_value(item3)<<4) |	  ((int)panel_get_value(item5)<<5) | ((int)panel_get_value(item6)<<6);	tmp = atoi((char *)panel_get_value(item4));	if (tmp > 255) tmp = 255;	else if (tmp < 0) tmp = 0;	(int)tests[test_id]->special = tmp;	break;	    case SCSIDISK1:    case XYDISK1:    case XDDISK1:    case IPIDISK1:    case IDDISK1:    case SFDISK1:    case OBFDISK1:	tests[test_id]->enable = (int)panel_get_value(item1);	tests[test_id+1]->enable = (int)panel_get_value(item2);        (int)tests[test_id]->data = (int)panel_get_value(item3) << 3 |                                    (int)panel_get_value(item4) |				    (int)panel_get_value(item5) << 4;	if (!tests[test_id]->dev_enable) break;	/* the device was not enabled for testing */	select_test(test_id, tests[test_id]->enable);	select_test(test_id+1, tests[test_id+1]->enable);	select_test(test_id, tests[test_id]->data);	print_status();	break;    case MAGTAPE1:    case MAGTAPE2:    case SCSITAPE:	(int)tests[test_id]->data =	  ((int)panel_get_value(item2)<<8) | ((int)panel_get_value(item3)<<3) |	  ((int)panel_get_value(item5)<<5) | ((int)panel_get_value(item6)<<6) |	  ((int)panel_get_value(item9)<<10)|	  (atoi((char *)panel_get_value(item10))<<16);	if (!qic150 && !exabyte_8200)	/* format */	  (int)tests[test_id]->data |= (int)panel_get_value(item1);	if (ctlr_type == 3)		/* take care of recon test option too */	  (int)tests[test_id]->data |= ((int)panel_get_value(item7) << 7);	if (cart_tape || qic150)	  (int)tests[test_id]->data |= ((int)panel_get_value(item8) << 9);	(unsigned)tests[test_id]->special =			(unsigned)atoi((char *)panel_get_value(item4));	break;    case TV1:	(int)tests[test_id]->data = (int)panel_get_value(item1) | 				    ((int)panel_get_value(item2) << 1) |				    ((int)panel_get_value(item3) << 2) |				    ((int)panel_get_value(item4) << 3);	break;    case IPC:	(int)tests[test_id]->data = (int)panel_get_value(item1) | 				    ((int)panel_get_value(item2) << 1);	break;    case SCSISP1:    case SCSISP2:    case MCP:    case MTI:        (void)strcpy(((struct loopback *)(tests[test_id]->data))->from,				(char *)panel_get_value(item1));        (void)strcpy(((struct loopback *)(tests[test_id]->data))->to,				(char *)panel_get_value(item2));	if (tests[test_id]->id == MCP)	{	  tests[test_id]->enable = (int)panel_get_value(item3);	  tests[test_id+1]->enable = (int)panel_get_value(item4);	  /* test_id+1 is the printer test */	  if (!tests[test_id]->dev_enable) break;	  /* the device was not enabled for testing */	  select_test(test_id, tests[test_id]->enable);	  select_test(test_id+1, tests[test_id+1]->enable);	  print_status();	}	break;    case SCP:    case SCP2:        (void)strcpy(((struct loopback *)(tests[test_id]->data))->from,				(char *)panel_get_value(item1));        (void)strcpy(((struct loopback *)(tests[test_id]->data))->to,				(char *)panel_get_value(item2));	break;    case SBUS_HSI:   /* refer to above sketch for data field arrangement */        (int)tests[test_id]->data = (int)panel_get_value(item3) << 4 |                                    (int)panel_get_value(item2) << 1 |                                    (int)panel_get_value(item1);        break;    case HSI:	(int)tests[test_id]->data = (int)panel_get_value(item1) << 4 | 				    (int)panel_get_value(item2) << 2 |				    (int)panel_get_value(item3);	break;    case GP:	(int)tests[test_id]->data = (int)panel_get_value(item1);	break;    case PRESTO:        (int)tests[test_id]->data = (int)panel_get_value(item1);        break;    case VFC:	break;			/* does nothing */    case CG12:        tmp = atoi((char *)panel_get_value(item13));        (int)tests[test_id]->data = tmp << 12;        (int)tests[test_id]->data |= (int)panel_get_value(item1) |          ((int)panel_get_value(item2)<<1) | ((int)panel_get_value(item3)<<2) |          ((int)panel_get_value(item4)<<3) | ((int)panel_get_value(item5)<<4) |	  ((int)panel_get_value(item6)<<5) | ((int)panel_get_value(item7)<<6) |	  ((int)panel_get_value(item8)<<7) | ((int)panel_get_value(item9)<<8) |	  ((int)panel_get_value(item10)<<9)| ((int)panel_get_value(item11)<<10);        tmp = atoi((char *)panel_get_value(item14));        (int)tests[test_id]->special = tmp;        break;    case GT:        tmp = atoi((char *)panel_get_value(item22));        (int)tests[test_id]->data = tmp << 21;        (int)tests[test_id]->data |= (int)panel_get_value(item1) |        ((int)panel_get_value(item2)<<1)   | ((int)panel_get_value(item3)<<2) |        ((int)panel_get_value(item4)<<3)   | ((int)panel_get_value(item5)<<4) |        ((int)panel_get_value(item6)<<5)   | ((int)panel_get_value(item7)<<6) |        ((int)panel_get_value(item8)<<7)   | ((int)panel_get_value(item9)<<8) |        ((int)panel_get_value(item10)<<9)  | ((int)panel_get_value(item11)<<10)|        ((int)panel_get_value(item12)<<11) | ((int)panel_get_value(item13)<<12)|        ((int)panel_get_value(item14)<<13) | ((int)panel_get_value(item15)<<14)|        ((int)panel_get_value(item16)<<15) | ((int)panel_get_value(item17)<<16)|        ((int)panel_get_value(item18)<<17) | ((int)panel_get_value(item19)<<18)|        ((int)panel_get_value(item20)<<19) | ((int)panel_get_value(item21)<<20);        tmp = atoi((char *)panel_get_value(item23));        (int)tests[test_id]->special = tmp;        break;    case MP4:        (int)tests[test_id]->data = (int)panel_get_value(item1) |                                    (int)panel_get_value(item2)<<1 |                                     (int)panel_get_value(item3)<<2 |                                    (int)panel_get_value(item4)<<3;        for (b = 1, i = 0, num = 0; num < number_processors; b <<= 1, i++)	{	    if (processors_mask & b)	    {		(int)tests[test_id]->data |=                    ( ((int)panel_get_value(processor_item[i])) << (4+i) );		num++;	    }	}        break;    case ZEBRA1:	(int)tests[test_id]->data = (int)panel_get_value(item1) |			(int)panel_get_value(item2)<<2;	break;    case ZEBRA2:	(int)tests[test_id]->data = (int)panel_get_value(item1) |	((int)panel_get_value(item2)<<2) | ((int)panel_get_value(item3)<<4) |	((int)panel_get_value(item4)<<6);	break;    case SPIF:	tests[test_id]->data = (caddr_t)(	   (int)panel_get_value(item1)| 	  ((int)panel_get_value(item2)<<1) | 	  ((int)panel_get_value(item3)<<2) |	  ((int)panel_get_value(item4)<<3) |	  ((int)panel_get_value(item5)<<4) | 	  ((int)panel_get_value(item8)<<5) | 	  ((int)panel_get_value(item6)<<8) | 	  ((int)panel_get_value(item7)<<12) | 	  ((int)panel_get_value(item9)<<16) |	  ((int)panel_get_value(item10)<<20) |	  ((int)panel_get_value(item11)<<24) |	  ((int)panel_get_value(item12)<<28) );	break;    default:	break;  }  (void)window_set(option_frame, FRAME_NO_CONFIRM, TRUE, 0);  (void)window_destroy(option_frame);  option_frame = NULL;}/****************************************************************************** * panel_label(), sets the label of the option popup.			      * * Input: label, the string to be the label of the popup.		      * ******************************************************************************/panel_label(label)char	*label;			/* the option label */{  if (!tty_mode)    (void)window_set(option_frame, FRAME_LABEL, label, 0);  else    (void)mvwprintw(tty_option, 0, (58-strlen(label))/2,			"<< Test Options - %s >>", label);	/* centerized */}/****************************************************************************** * panel_printf() prints one line of message on the panel subwindow.	      * * Input: panel_handle, the panel to display the message on.		      * *	  msg, the message to be displayed.				      * *	  x, y, the starting character position of the message.		      * ******************************************************************************/#define	TTY_COL_OFFSET	23	/* column offset from the SunView version */#define	TTY_ROW_OFFSET	3	/* row offset from the SunView version */panel_printf(panel_handle, msg, col, row)Panel_item	panel_handle;	/* the panel to display the message on */char		*msg;		/* message to be printed */int		col, row;	/* starting character position of the message */{  if (!tty_mode)    (void)panel_create_item(panel_handle, PANEL_MESSAGE,		PANEL_LABEL_STRING,	msg,		PANEL_ITEM_X,		ATTR_COL(col),		PANEL_ITEM_Y,		ATTR_ROW(row),		0);  else    (void)mvwaddstr(tty_option, row+TTY_ROW_OFFSET, col+TTY_COL_OFFSET, msg);}/****************************************************************************** * option_item(), initialize the CYCLE item on option popup and prints its    * * value on the option window in TTY mode.				      * ******************************************************************************/static	Panel_item	option_item(panel_handle, choice, value, col, row)Panel	panel_handle;struct	option_choice	*choice;int	value;				/* index to choice->choice */int	col, row;{  Panel_item	item;  char	buf[82];  if (tty_mode)  {    if (value >= choice->num) value = 0;    (void)sprintf(buf, "[%c]%s%c  %s", choice->com-0x20, choice->label,		choice->type==TOGGLE_ITEM?':':' ', choice->choice[value]);    (void)mvwaddstr(tty_option, row+TTY_ROW_OFFSET, col+TTY_COL_OFFSET, buf);    wclrtoeol(tty_option);    return((Panel_item)0);  }  else  {    switch (choice->type)    {      case CYCLE_ITEM:	item = panel_create_item(panel_handle,	PANEL_CYCLE,		PANEL_LABEL_STRING,     choice->label,		PANEL_ITEM_X,		ATTR_COL(col),		PANEL_ITEM_Y,		ATTR_ROW(row),		0);	if (choice->num <= 4)	  (void)panel_set(item, PANEL_CHOICE_STRINGS,		choice->choice[0], choice->choice[1],		choice->choice[2], choice->choice[3], 0, 0);	else if (choice->num <= 8)	  (void)panel_set(item, PANEL_CHOICE_STRINGS,		choice->choice[0], choice->choice[1],		choice->choice[2], choice->choice[3],		choice->choice[4], choice->choice[5],		choice->choice[6], choice->choice[7], 0, 0);	else	  (void)panel_set(item, PANEL_CHOICE_STRINGS,		choice->choice[0], choice->choice[1],		choice->choice[2], choice->choice[3],		choice->choice[4], choice->choice[5],		choice->choice[6], choice->choice[7],		choice->choice[8], choice->choice[9],		choice->choice[10], choice->choice[11],		choice->choice[12], choice->choice[13],		choice->choice[14], choice->choice[15], 0, 0);	(void)panel_set(item, PANEL_VALUE, value, 0);	break;      case TOGGLE_ITEM:

⌨️ 快捷键说明

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