📄 option.c
字号:
(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 + -