diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c index 541b636348fb0b4751a709ad6ea2b4a009c8e00e..a53cd882e07a8aabf6db9397f5e813db22b35ccd 100644 --- a/src/syncterm/bbslist.c +++ b/src/syncterm/bbslist.c @@ -662,7 +662,18 @@ void change_settings(void) break; case 4: uifc.helpbuf= "`Modem Init String`\n\n" - "Your modem init string goes here."; + "Your modem init string goes here.\n"; + "For reference, here are the expected settings and USR inits\n\n" + "State USR Init" + "------------------------------------" + "Echo on E1" + "Verbal result codes Q0V1" + "Include connection speed &X4" + "Normal CD Handling C1" + "Locked speed &B1" + "Normal DTR &D2" + "CTS/RTS Flow Control &H1&R2" + "Disable Software Flow &I0"; uifc.input(WIN_MID|WIN_SAV,0,0,"Modem Init String",settings.mdm.init_string,LIST_NAME_MAX,K_EDIT); iniSetString(&inicontents,"SyncTERM","ModemInit",settings.mdm.init_string,&ini_style); break; diff --git a/src/syncterm/modem.c b/src/syncterm/modem.c index d0350bbdc13174a0b80073ccb1b1811cbf4b505b..516aa73ec8cde4e09a569894298ec3dec40bda99 100644 --- a/src/syncterm/modem.c +++ b/src/syncterm/modem.c @@ -136,29 +136,20 @@ int modem_connect(struct bbslist *bbs) comWriteString(com, "\r"); /* Wait for "OK" */ - if(modem_response(respbuf, sizeof(respbuf), 5)) { - modem_close(); - uifc.pop(NULL); - uifcmsg("Modem Not Responding", "`Modem Not Responding`\n\n" - "The modem did not respond to the initializtion string\n" - "Check your init string and phone number.\n"); - conn_api.terminate=-1; - return(-1); - } -uifc.pop(NULL); -uifc.pop(respbuf); - if(strstr(respbuf, settings.mdm.init_string)) - if(modem_response(respbuf, sizeof(respbuf), 5)) { - modem_close(); - uifc.pop(NULL); - uifcmsg("Modem Not Responding", "`Modem Not Responding`\n\n" - "The modem did not respond to the initializtion string\n" - "Check your init string and phone number.\n"); - conn_api.terminate=-1; - return(-1); + while(1) { + if(modem_response(respbuf, sizeof(respbuf), 5)) { + modem_close(); + uifc.pop(NULL); + uifcmsg("Modem Not Responding", "`Modem Not Responding`\n\n" + "The modem did not respond to the initializtion string\n" + "Check your init string and phone number.\n"); + conn_api.terminate=-1; + return(-1); + } + if(strstr(respbuf, settings.mdm.init_string)) /* Echo is on */ + continue; + break; } -uifc.pop(NULL); -uifc.pop(respbuf); if(!strstr(respbuf, "OK")) { modem_close(); @@ -174,28 +165,22 @@ uifc.pop(respbuf); comWriteString(com, "ATDT"); comWriteString(com, bbs->addr); comWriteString(com, "\r"); - + /* Wait for "CONNECT" */ - if(modem_response(respbuf, sizeof(respbuf), 30)) { - modem_close(); - uifc.pop(NULL); - uifcmsg("No Answer", "`No Answer`\n\n" - "The modem did not connect withing 30 seconds.\n"); - conn_api.terminate=-1; - return(-1); - } -uifc.pop(NULL); -uifc.pop(respbuf); - if(modem_response(respbuf, sizeof(respbuf), 30)) { - modem_close(); - uifc.pop(NULL); - uifcmsg("No Answer", "`No Answer`\n\n" - "The modem did not connect withing 30 seconds.\n"); - conn_api.terminate=-1; - return(-1); + while(1) { + if(modem_response(respbuf, sizeof(respbuf), 30)) { + modem_close(); + uifc.pop(NULL); + uifcmsg("No Answer", "`No Answer`\n\n" + "The modem did not connect withing 30 seconds.\n"); + conn_api.terminate=-1; + return(-1); + } + if(strstr(respbuf, "ATA")) /* Dial command echoed */ + continue; + break; } -uifc.pop(NULL); -uifc.pop(respbuf); + if(!strstr(respbuf, "CONNECT")) { modem_close(); uifc.pop(NULL);