diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c index ba6c5683ff9d8e51535a8054c586a136a0aaa562..b4fad6145487e1f2c28b130596d4347abb3a1196 100644 --- a/src/syncterm/bbslist.c +++ b/src/syncterm/bbslist.c @@ -248,6 +248,7 @@ static char *conn_type_help= "`Connection Type`\n\n" "`SSH`..............: Connect using the Secure Shell (SSH-2) protocol\n" "`Modem`............: Connect using a dial-up modem\n" "`Serial`...........: Connect directly to a serial communications port\n" + "`3-wire (no RTS)`..: As with Serial, but lower RTS\n" "`Shell`............: Connect to a local PTY (*nix only)\n" "`MBBS GHost`.......: Communicate using the Major BBS 'GHost' protocol\n"; ; @@ -980,7 +981,7 @@ int edit_list(struct bbslist **list, struct bbslist *item,char *listpath,int isd sprintf(opt[i++], "Name %s",itemname); if(item->conn_type==CONN_TYPE_MODEM) sprintf(opt[i++], "Phone Number %s",item->addr); - else if(item->conn_type==CONN_TYPE_SERIAL) + else if (item->conn_type == CONN_TYPE_SERIAL || item->conn_type == CONN_TYPE_SERIAL_NORTS) sprintf(opt[i++], "Device Name %s",item->addr); else if(item->conn_type==CONN_TYPE_SHELL) sprintf(opt[i++], "Command %s",item->addr); @@ -1166,6 +1167,7 @@ int edit_list(struct bbslist **list, struct bbslist *item,char *listpath,int isd uifc.input(WIN_MID|WIN_SAV,0,0 ,item->conn_type==CONN_TYPE_MODEM ? "Phone Number" :item->conn_type==CONN_TYPE_SERIAL ? "Device Name" + :item->conn_type==CONN_TYPE_SERIAL_NORTS ? "Device Name" :item->conn_type==CONN_TYPE_SHELL ? "Command" : "Address" ,item->addr,LIST_ADDR_MAX,K_EDIT); @@ -1173,7 +1175,7 @@ int edit_list(struct bbslist **list, struct bbslist *item,char *listpath,int isd iniSetString(&inifile,itemname,"Address",item->addr,&ini_style); break; case 3: - if (item->conn_type == CONN_TYPE_MODEM || item->conn_type == CONN_TYPE_SERIAL) { + if (item->conn_type == CONN_TYPE_MODEM || item->conn_type == CONN_TYPE_SERIAL || item->conn_type == CONN_TYPE_SERIAL_NORTS) { uifc.helpbuf = "`Flow Control`\n\n" "Select the desired flow control type.\n" "This should usually be left as \"RTS/CTS\".\n"; @@ -1281,7 +1283,7 @@ int edit_list(struct bbslist **list, struct bbslist *item,char *listpath,int isd item->user[0] = 0; } - if(item->conn_type!=CONN_TYPE_MODEM && item->conn_type!=CONN_TYPE_SERIAL + if(item->conn_type!=CONN_TYPE_MODEM && item->conn_type!=CONN_TYPE_SERIAL && item->conn_type != CONN_TYPE_SERIAL_NORTS && item->conn_type!=CONN_TYPE_SHELL ) { /* Set the port too */ @@ -2413,6 +2415,7 @@ struct bbslist *show_bbslist(char *current, int connected) list[listcount-1]->conn_type++; if(list[listcount-1]->conn_type!=CONN_TYPE_MODEM && list[listcount-1]->conn_type!=CONN_TYPE_SERIAL + && list[listcount-1]->conn_type!=CONN_TYPE_SERIAL_NORTS && list[listcount-1]->conn_type!=CONN_TYPE_SHELL ) { /* Set the port too */ @@ -2434,6 +2437,7 @@ struct bbslist *show_bbslist(char *current, int connected) uifc.input(WIN_MID|WIN_SAV,0,0 ,list[listcount-1]->conn_type==CONN_TYPE_MODEM ? "Phone Number" :list[listcount-1]->conn_type==CONN_TYPE_SERIAL ? "Device Name" + :list[listcount-1]->conn_type==CONN_TYPE_SERIAL_NORTS ? "Device Name" :list[listcount-1]->conn_type==CONN_TYPE_SHELL ? "Command" :"Address" ,list[listcount-1]->addr,LIST_ADDR_MAX,K_EDIT); diff --git a/src/syncterm/conn.c b/src/syncterm/conn.c index 169ed8541fcb87f26828512334d6a7f4519a2f64..4aa890a1bfc1ae653eecdcf00d159da45d3b8cb5 100644 --- a/src/syncterm/conn.c +++ b/src/syncterm/conn.c @@ -47,8 +47,8 @@ #include "conn_telnet.h" struct conn_api conn_api; -char *conn_types_enum[]={"Unknown","RLogin","RLoginReversed","Telnet","Raw","SSH","SSHNA","Modem","Serial","Shell","MBBSGhost","TelnetS", NULL}; -char *conn_types[]={"Unknown","RLogin","RLogin Reversed","Telnet","Raw","SSH","SSH (no auth)","Modem","Serial","Shell","MBBS GHost","TelnetS",NULL}; +char *conn_types_enum[]={"Unknown","RLogin","RLoginReversed","Telnet","Raw","SSH","SSHNA","Modem","Serial","NoRTS","Shell","MBBSGhost","TelnetS", NULL}; +char *conn_types[]={"Unknown","RLogin","RLogin Reversed","Telnet","Raw","SSH","SSH (no auth)","Modem","Serial","3-wire (No RTS)","Shell","MBBS GHost","TelnetS",NULL}; short unsigned int conn_ports[]={0,513,513,23,0,22,22,0,0,0,65535,992,0}; struct conn_buffer conn_inbuf; @@ -377,6 +377,7 @@ int conn_connect(struct bbslist *bbs) #endif #ifndef __HAIKU__ case CONN_TYPE_SERIAL: + case CONN_TYPE_SERIAL_NORTS: conn_api.connect=modem_connect; conn_api.close=serial_close; break; diff --git a/src/syncterm/conn.h b/src/syncterm/conn.h index 2178e3708f376d9b1edc1770e073e64a45e2ad1f..12a5be3cca47160f37491b11df7b91c7e3974737 100644 --- a/src/syncterm/conn.h +++ b/src/syncterm/conn.h @@ -24,6 +24,7 @@ enum { ,CONN_TYPE_SSHNA ,CONN_TYPE_MODEM ,CONN_TYPE_SERIAL + ,CONN_TYPE_SERIAL_NORTS ,CONN_TYPE_SHELL ,CONN_TYPE_MBBS_GHOST ,CONN_TYPE_TELNETS diff --git a/src/syncterm/menu.c b/src/syncterm/menu.c index 50d9f5e68239b2579548bd04bc64f3e918021107..5a3942bf6eb6e4c611520415cd2aa995d7e2ce74 100644 --- a/src/syncterm/menu.c +++ b/src/syncterm/menu.c @@ -224,7 +224,7 @@ int syncmenu(struct bbslist *bbs, int *speed) } break; case 5: /* Output rate */ - if(bbs->conn_type==CONN_TYPE_MODEM || bbs->conn_type==CONN_TYPE_SERIAL) { + if(bbs->conn_type==CONN_TYPE_MODEM || bbs->conn_type==CONN_TYPE_SERIAL || bbs->conn_type == CONN_TYPE_SERIAL_NORTS) { uifcmsg("Not supported for this connection type" ,"Cannot change the display rate for Modem/Serial connections."); } diff --git a/src/syncterm/modem.c b/src/syncterm/modem.c index 5f8cf66261198b4c0d5e7c9d433346b62d206fda..617b2ac5ff86d5951e293f3d6cf4afe6de1a2ba9 100644 --- a/src/syncterm/modem.c +++ b/src/syncterm/modem.c @@ -142,7 +142,7 @@ int modem_connect(struct bbslist *bbs) if (!bbs->hidepopups) init_uifc(TRUE, TRUE); - if(bbs->conn_type == CONN_TYPE_SERIAL) { + if(bbs->conn_type == CONN_TYPE_SERIAL || bbs->conn_type == CONN_TYPE_SERIAL_NORTS) { if((com=comOpen(bbs->addr)) == COM_HANDLE_INVALID) { if (!bbs->hidepopups) uifcmsg("Cannot Open Port", "`Cannot Open Port`\n\n" @@ -160,6 +160,9 @@ int modem_connect(struct bbslist *bbs) return(-1); } } + if (bbs->conn_type == CONN_TYPE_SERIAL_NORTS) { + comLowerRTS(com); + } if(!comRaiseDTR(com)) { if (!bbs->hidepopups) uifcmsg("Cannot Raise DTR", "`Cannot Raise DTR`\n\n" diff --git a/src/syncterm/term.c b/src/syncterm/term.c index 091012c397b79ce52cc3c0fca1daecd45bea25bf..c66110ec97d77d6bd04faaabeaa93128a50874fd 100644 --- a/src/syncterm/term.c +++ b/src/syncterm/term.c @@ -2505,7 +2505,7 @@ BOOL doterm(struct bbslist *bbs) int speedwatch = 0; gettextinfo(&txtinfo); - if(bbs->conn_type == CONN_TYPE_SERIAL) + if(bbs->conn_type == CONN_TYPE_SERIAL || bbs->conn_type == CONN_TYPE_SERIAL_NORTS) speed = 0; else speed = bbs->bpsrate; @@ -2549,7 +2549,7 @@ BOOL doterm(struct bbslist *bbs) hold_update=TRUE; sleep=TRUE; if(!term.nostatus) - update_status(bbs, (bbs->conn_type == CONN_TYPE_SERIAL)?bbs->bpsrate:speed, ooii_mode); + update_status(bbs, (bbs->conn_type == CONN_TYPE_SERIAL || bbs->conn_type == CONN_TYPE_SERIAL_NORTS)?bbs->bpsrate:speed, ooii_mode); for(remain=count_data_waiting() /* Hack for connection check */ + (!is_connected(NULL)); remain; remain--) { if(speed) thischar=xp_timer(); @@ -3001,7 +3001,7 @@ BOOL doterm(struct bbslist *bbs) key = 0; break; case 0x9800: /* ALT-Up */ - if(bbs->conn_type != CONN_TYPE_SERIAL) { + if(bbs->conn_type != CONN_TYPE_SERIAL && bbs->conn_type != CONN_TYPE_SERIAL_NORTS) { if(speed) speed=rates[get_rate_num(speed)+1]; else @@ -3010,7 +3010,7 @@ BOOL doterm(struct bbslist *bbs) } break; case 0xa000: /* ALT-Down */ - if(bbs->conn_type != CONN_TYPE_SERIAL) { + if(bbs->conn_type != CONN_TYPE_SERIAL && bbs->conn_type != CONN_TYPE_SERIAL_NORTS) { i=get_rate_num(speed); if(i==0) speed=0;