📄 ecusetup.c
字号:
setup_display_tty(); setup_display_single_char(); setup_display_baud(); wrefresh(setw);} /* end of setup_display_screen *//*+------------------------------------------------------------------------- setup_line_open()--------------------------------------------------------------------------*/intsetup_line_open(){ register itmp; register retries = 8; char *linst_err_text(); char *cptr; char msg[80]; long wait_msec; int displayed_single_char_exit = 0; while(itmp = lopen()) { if(retries) { if( (itmp != LINST_ENABLED_IN_USE) && (itmp != LINST_DIALOUT_IN_USE) && (itmp < 0)) { goto FAIL; } sprintf(msg,"%s - waiting %d sec",linst_err_text(itmp),retries); cptr = msg; if(!displayed_single_char_exit) { setw_bot_msg("Press any key to skip retries"); displayed_single_char_exit = 1; } } else {FAIL: retries = 0; cptr = linst_err_text(itmp); ring_bell(); } setw_err_msg(cptr); if(!retries--) break; wait_msec = 1000L; while(wait_msec > 0) { if(ttyrdchk()) { (void)ttygetc(1); goto FAIL; } wait_msec -= Nap(100L); } setw_err_msg(""); } setup_display_tty(); return(itmp);} /* end of setup_line_open *//*+------------------------------------------------------------------------- setw_get_single(nondelim_list)assumes cursor is already positioned--------------------------------------------------------------------------*/intsetw_get_single(nondelim_list)register char *nondelim_list;{ register uint itmp; static uchar setw_nondelim_list[] = { CRET,NL,CTL_B,CTL_D,TAB,ESC,CTL_L,CTL_R,XFend,XFcurup,XFcurdn }; itmp = winget_single(setw,nondelim_list,setw_nondelim_list); if((itmp & 0xFF) == CRET) itmp = NL | 0x1000; return(itmp);} /* end of setw_get_single *//*+------------------------------------------------------------------------- setup_screen(argv_logical)--------------------------------------------------------------------------*/voidsetup_screen(argv_logical)char *argv_logical;{ register itmp; register input_state = 0; char s80[80]; char *cptr; char logical[NAME_LEN + 1]; int done = 0; uint baud; uchar delim; /* important to be unsigned to avoid sign extension */ PDE *tpde; WINDOW *window_create(); static uchar use_input_delim[] = {TAB,NL,XFcurdn,XFcurup,XFend,CTL_D,(uchar)0}; windows_start(); sprintf(s80,"ecu %s",revstr); setw = window_create(s80,-3,SETW_TLY,SETW_TLX,SETW_LINES,SETW_COLS); shm->Llogical[0] = 0; logical[0] = 0; setup_display_screen(1);REENTER_INPUT_LOOP: while(!done) { wrefresh(setw); switch(input_state) { case 0: if(argv_logical) { itmp = 0; /* 'ecu -' means dont dial */ if(strcmp(argv_logical,"-")) /* if not "-" */ { strncpy(s80,argv_logical,NAME_LEN + 1); s80[NAME_LEN + 1] = 0; itmp = strlen(s80); } argv_logical = (char *)0; delim = XFend; } else { if(logical[0]) strcpy(s80,logical); setw_bot_msg( "logical phone directory entry, phone number or empty"); itmp = wingets(setw,NAME_Y,NAME_X,s80,NAME_LEN + 1,&delim, (logical[0] != 0),(int *)0); setw_err_msg(""); } if(strchr((char *)use_input_delim,(char)delim)) { strcpy(logical,s80); if((tpde = logical_telno_to_pde(logical)) && !copy_pde_to_Lvariables(tpde,1)) { strcpy(logical,tpde->logical); setup_display_screen(0); break; } else { setw_err_msg(errmsg); setup_display_screen(0); ring_bell(); argv_logical = (char *)0; continue; } } setup_display_name(); break; case 1: cptr = strrchr(DEFAULT_TTY,'/'); /* there will be a /, right? */ cptr++; sprintf(s80,"comm line: i.e., %s",cptr); setw_bot_msg(s80); setup_display_tty(); strcpy(s80,"/dev/"); strcpy(s80,&shm->Lline[5]); itmp = wingets(setw,TTY_Y,TTY_X,s80,TTY_LEN + 1,&delim, 1,(int *)0); setw_err_msg(""); if(strchr((char *)use_input_delim,(char)delim)) { strcpy(shm->Lline,"/dev/"); strcpy(&shm->Lline[5],s80); } setup_display_tty(); break; case 2: setw_bot_msg("duplex F:full H:half"); wmove(setw,DPX_Y,DPX_X); wrefresh(setw); delim = NL; switch(itmp = setw_get_single("fh")) { case 0: case 1: shm->Lfull_duplex = itmp; break; default: delim = itmp & 0xFF; break; } break; case 3: /* baud */ setw_bot_msg( "rates: 110,300,600,1200,2400,4800,9600,19200,38400");CASE_3: sprintf(s80,"%u",shm->Lbaud); itmp = wingets(setw,BAUD_Y,BAUD_X,s80,BAUD_LEN + 1,&delim, 1,(int *)0); if(strchr((char *)use_input_delim,(char)delim)) { if(valid_baud_rate(baud = atoi(s80)) < 0) { setup_display_baud(); ring_bell(); goto CASE_3; } shm->Lbaud = baud; } setup_display_baud(); break; case 4: setw_bot_msg("parity: N:none E:even O:odd"); wmove(setw,PAR_Y,PAR_X); wrefresh(setw); delim = NL; switch(itmp = setw_get_single("neo")) { case 0: shm->Lparity = 0; break; case 1: shm->Lparity = 'e'; break; case 2: shm->Lparity = 'o'; break; default: delim = itmp & 0xFF; break; } wmove(setw,DB_Y,DB_X); waddch(setw,(shm->Lparity) ? '7' : '8'); break; case 5: setw_bot_msg(""); wmove(setw,XADDNL_Y,XADDNL_X); wrefresh(setw); delim = NL; switch(itmp = setw_get_single("ny")) { case 0: case 1: shm->Ladd_nl_outgoing = itmp; break; default: delim = itmp & 0xFF; } break; case 6: setw_bot_msg(""); wmove(setw,RADDNL_Y,RADDNL_X); wrefresh(setw); delim = NL; switch(itmp = setw_get_single("ny")) { case 0: case 1: shm->Ladd_nl_incoming = itmp; break; default: delim = itmp & 0xFF; break; } break; } if(argv_logical) break; switch(delim) { case XFcurup: case CTL_B: if(input_state) input_state--; else input_state = 6; break; case XFcurdn: case TAB: case NL: input_state++; input_state %= 7; break; case ESC: if(shm->Liofd >= 0) lclose(); setw_bot_msg(""); setup_display_tty(); termecu(0); break; case CTL_L: case CTL_R: tcap_clear_screen(); touchwin(stdscr); wrefresh(stdscr); setup_display_screen(1); touchwin(setw); wrefresh(setw); break; case XFend: case CTL_D: done = 1; break; } } if(shm->Liofd < 0) { wmove(setw,TTY_Y,TTY_X); wrefresh(setw); if(setup_line_open()) { done = 0; input_state = 1; argv_logical = (char *)0; goto REENTER_INPUT_LOOP; } } wmove(setw,SETW_LINES - 2,1); wstandout(setw); waddstr(setw, /* kludge -- must change if setw width does */ "------- Press HOME then 'help' for further assistance --------"); wstandend(setw); setw_bot_msg(""); wrefresh(setw); delwin(setw); windows_end(0); ttymode(1); tcap_cursor(SETW_TLY + SETW_LINES + 2,0); rcvr_pid = -2; if(delim == CTL_D) phdir_manager(); else if(logical[0]) { tpde = logical_telno_to_pde(logical); /* error return not likely now */ pde_dial(tpde); } else start_rcvr_process(1);} /* end of setup_screen *//* vi: set tabstop=4 shiftwidth=4: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -