463 lines
8.9 KiB
Plaintext
463 lines
8.9 KiB
Plaintext
int dterate;
|
|
int dcerate;
|
|
int protocol;
|
|
int compression;
|
|
|
|
parseResult(int result)
|
|
{
|
|
int retcode = 0;
|
|
|
|
printf("TellyScript: parseResult -- %d", result);
|
|
|
|
if (result == 0)
|
|
{
|
|
retcode = 0;
|
|
}
|
|
else if (result == 1)
|
|
{
|
|
dterate = 300;
|
|
}
|
|
else if (result == 3)
|
|
{
|
|
printf("TellyScript: Got NO CARRIER");
|
|
retcode = 8;
|
|
}
|
|
else if (result == 5)
|
|
{
|
|
dterate = 0x4b0;
|
|
}
|
|
else if (result == 6)
|
|
{
|
|
printf("TellyScript: Got NO DIALTONE");
|
|
retcode = 5;
|
|
}
|
|
else if (result == 7)
|
|
{
|
|
printf("TellyScript: Got BUSY");
|
|
retcode = 7;
|
|
}
|
|
else if (result == 8)
|
|
{
|
|
retcode = 7;
|
|
}
|
|
else if (result == 9)
|
|
{
|
|
dterate = 0x258;
|
|
}
|
|
else if (result == 10)
|
|
{
|
|
dterate = 0x960;
|
|
}
|
|
else if (result == 11)
|
|
{
|
|
dterate = 0x12c0;
|
|
}
|
|
else if (result == 12)
|
|
{
|
|
dterate = 0x2580;
|
|
}
|
|
else if (result == 13)
|
|
{
|
|
dterate = 0x1c20;
|
|
}
|
|
else if (result == 14)
|
|
{
|
|
dterate = 0x2ee0;
|
|
}
|
|
else if (result == 15)
|
|
{
|
|
dterate = 0x3840;
|
|
}
|
|
else if (result == 16)
|
|
{
|
|
dterate = 0x4b00;
|
|
}
|
|
else if (result == 17)
|
|
{
|
|
dterate = 0x9600;
|
|
}
|
|
else if (result == 18)
|
|
{
|
|
dterate = 0xe100;
|
|
}
|
|
else if (result == 19)
|
|
{
|
|
dterate = 0x1c200;
|
|
}
|
|
else if (result == 22)
|
|
{
|
|
printf("TellyScript: Got a CONNECT 75TX/1200RX and I don't know why");
|
|
dterate = 75;
|
|
}
|
|
else if (result == 23)
|
|
{
|
|
printf("TellyScript: Got a CONNECT 75TX/1200RX and I don't know why");
|
|
dterate = 0x4b0
|
|
}
|
|
else if (result == 40)
|
|
{
|
|
dcerate = 300;
|
|
}
|
|
else if (result == 44)
|
|
{
|
|
printf("TellyScript: Got a CONNECT 75TX/1200RX and I don't know why");
|
|
dcerate = 0x4b0;
|
|
}
|
|
else if (result == 45)
|
|
{
|
|
printf("TellyScript: Got a CONNECT 75TX/1200RX and I don't know why");
|
|
dcerate = 0x4b0;
|
|
}
|
|
else if (result == 46)
|
|
{
|
|
dcerate = 0x4b0;
|
|
}
|
|
else if (result == 47)
|
|
{
|
|
dcerate = 0x960;
|
|
}
|
|
else if (result == 48)
|
|
{
|
|
dcerate = 0x12c0;
|
|
}
|
|
else if (result == 49)
|
|
{
|
|
dcerate = 0x1c20;
|
|
}
|
|
else if (result == 50)
|
|
{
|
|
dcerate = 0x2580;
|
|
}
|
|
else if (result == 51)
|
|
{
|
|
dcerate = 0x2ee0;
|
|
}
|
|
else if (result == 52)
|
|
{
|
|
dcerate = 0x3840;
|
|
}
|
|
else if (result == 53)
|
|
{
|
|
dcerate = 0x41a0;
|
|
}
|
|
else if (result == 54)
|
|
{
|
|
dcerate = 0x4b00;
|
|
}
|
|
else if (result == 55)
|
|
{
|
|
dcerate = 0x5460;
|
|
}
|
|
else if (result == 56)
|
|
{
|
|
dcerate = 0x5dc0;
|
|
}
|
|
else if (result == 57)
|
|
{
|
|
dcerate = 0x6720;
|
|
}
|
|
else if (result == 58)
|
|
{
|
|
dcerate = 0x7080;
|
|
}
|
|
else if (result == 59)
|
|
{
|
|
dcerate = 0x41a0;
|
|
}
|
|
else if (result == 61)
|
|
{
|
|
dcerate = 0x5460;
|
|
}
|
|
else if (result == 62)
|
|
{
|
|
dcerate = 0x5dc0;
|
|
}
|
|
else if (result == 63)
|
|
{
|
|
dcerate = 0x6720;
|
|
}
|
|
else if (result == 64)
|
|
{
|
|
dcerate = 0x7080;
|
|
}
|
|
else if (result == 66)
|
|
{
|
|
compression = 1;
|
|
}
|
|
else if (result == 67)
|
|
{
|
|
compression = 2;
|
|
}
|
|
else if (result == 69)
|
|
{
|
|
compression = 0;
|
|
}
|
|
else if (result == 76)
|
|
{
|
|
protocol = 0;
|
|
}
|
|
else if (result == 77)
|
|
{
|
|
protocol = 1;
|
|
}
|
|
else if (result == 78)
|
|
{
|
|
dcerate = 0x79e0;
|
|
}
|
|
else if (result == 79)
|
|
{
|
|
dcerate = 0x8340;
|
|
}
|
|
else if (result == 80)
|
|
{
|
|
protocol = 2;
|
|
}
|
|
else if (result == 81)
|
|
{
|
|
protocol = 3;
|
|
}
|
|
else if (result == 84)
|
|
{
|
|
dcerate = 0x8340;
|
|
}
|
|
else if (result == 91)
|
|
{
|
|
dcerate = 0x79e0;
|
|
}
|
|
else
|
|
{
|
|
printf("TellyScript: Unknown result code %d", result);
|
|
retcode = 9;
|
|
}
|
|
|
|
return retcode;
|
|
}
|
|
|
|
winkdtr()
|
|
{
|
|
setdtr(0);
|
|
delay(30);
|
|
setdtr(1);
|
|
delay(30);
|
|
}
|
|
|
|
main()
|
|
{
|
|
int count, i, retries, result;
|
|
int start = ticks();
|
|
int end;
|
|
char *number;
|
|
char buffer[32];
|
|
char *settings = getphonesettings();
|
|
char *accessNumber = &settings[64];
|
|
char *dialOutsidePrefix = &settings[32];
|
|
char *callWaitingPrefix = &settings[0];
|
|
char usePulseDialing = settings[96];
|
|
char audibleDialing = settings[97];
|
|
char disableCallWaiting = settings[98];
|
|
char dialOutsideLine = settings[99];
|
|
char changedCity = settings[100];
|
|
char waitForTone = settings[101];
|
|
char hasCallWaiting = settings[102];
|
|
char useCallWaitingHack = settings[103];
|
|
char dialSpeed = settings[104];
|
|
char numberToDial[32];
|
|
char dialCommand[80];
|
|
char *configurationCommand = "ATS38=0S30=180S95=36S11=60&D2V1E0L2&Q5&K3\r";
|
|
char *defaultNumber = "%DialinNumber%";
|
|
char *nvOverRide = getpreregnumber();
|
|
char *secret = getsecret();
|
|
char *serial_number = getserialnumber();
|
|
char username[32];
|
|
char password[32];
|
|
|
|
printf("TellyScript: 800 Registration Script 3.1-zefie");
|
|
|
|
|
|
|
|
|
|
if (nvOverRide != 0)
|
|
{
|
|
defaultNumber = nvOverRide;
|
|
printf("TellyScript: Over-riding default preregistration number with %s from NVRAM", nvOverRide);
|
|
}
|
|
|
|
|
|
|
|
if (accessNumber[0])
|
|
strcpy(numberToDial, accessNumber);
|
|
else
|
|
strcpy(numberToDial, defaultNumber);
|
|
|
|
|
|
|
|
strcpy(dialCommand, "ATV0");
|
|
|
|
|
|
|
|
if (audibleDialing)
|
|
strcat(dialCommand, "M1");
|
|
else
|
|
strcat(dialCommand, "M0");
|
|
|
|
|
|
|
|
if (waitForTone)
|
|
strcat(dialCommand, "S6=10X4");
|
|
else
|
|
strcat(dialCommand, "S6=4X3");
|
|
|
|
|
|
|
|
strcat(dialCommand, "S10=14");
|
|
|
|
|
|
|
|
if (dialSpeed == 0)
|
|
strcat(dialCommand, "S11=200");
|
|
else if (dialSpeed == 1)
|
|
strcat(dialCommand, "S11=110");
|
|
else if (dialSpeed == 2)
|
|
strcat(dialCommand, "S11=60");
|
|
else if (dialSpeed == 3)
|
|
strcat(dialCommand, "S11=1");
|
|
|
|
|
|
|
|
if (usePulseDialing)
|
|
strcat(dialCommand, "DP");
|
|
else
|
|
strcat(dialCommand, "DT");
|
|
|
|
|
|
|
|
if (disableCallWaiting)
|
|
{
|
|
strcat(dialCommand, callWaitingPrefix);
|
|
}
|
|
|
|
|
|
|
|
if (dialOutsideLine)
|
|
{
|
|
strcat(dialCommand, dialOutsidePrefix);
|
|
strcat(dialCommand, ",");
|
|
}
|
|
|
|
|
|
|
|
setwindowsize(3);
|
|
printf("TellyScript: TCP Window Size set to 3 (USR).");
|
|
|
|
enablemodem();
|
|
|
|
winkdtr();
|
|
setflowcontrol(3);
|
|
setbaud(0xe100);
|
|
|
|
setstatus(6);
|
|
retries = 0;
|
|
while (retries++ <= 2)
|
|
{
|
|
flush();
|
|
|
|
sendstr(configurationCommand);
|
|
if (waitfor("OK", 2, 120))
|
|
{
|
|
printf("TellyScript: Configured modem.");
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
printf("TellyScript: TIMEOUT waiting for OK");
|
|
winkdtr();
|
|
}
|
|
}
|
|
|
|
if (retries > 3)
|
|
{
|
|
printf("TellyScript: Couldn't get OK from modem");
|
|
setdtr(0);
|
|
return 3;
|
|
}
|
|
|
|
setstatus(3);
|
|
|
|
printf("TellyScript: Overriding exclusion circuit...");
|
|
setforcehook(1);
|
|
|
|
printf("TellyScript: Dialing %s...", numberToDial);
|
|
if ((numberToDial[0] != 65) && (numberToDial[0] != 97))
|
|
sendstr(dialCommand);
|
|
sendstr(numberToDial);
|
|
|
|
sendstr(";\r");
|
|
|
|
flush();
|
|
|
|
i = 0;
|
|
while (i++ < 4)
|
|
{
|
|
count = getline(buffer, 31, 0xe10);
|
|
|
|
if (count == 0)
|
|
{
|
|
printf("TellyScript: TIMEOUT waiting for dial result.");
|
|
setdtr(0);
|
|
return 4;
|
|
}
|
|
|
|
result = parseResult(atoi(buffer));
|
|
if ((result == 0) && (i == 1))
|
|
{
|
|
setstatus(7);
|
|
sendstr("ATD\r");
|
|
}
|
|
|
|
if (result != 0)
|
|
{
|
|
setdtr(0);
|
|
return result;
|
|
}
|
|
}
|
|
|
|
printf("TellyScript: Setting NameServers: %DNSIP1%, %DNSIP2%");
|
|
setnameservice(%DNS1%, %DNS2%);
|
|
|
|
printf("TellyScript: dterate = %d, dcerate = %d, protocol = %d, compression = %d",
|
|
dterate, dcerate, protocol, compression);
|
|
setconnectionstats(dterate, dcerate, protocol, compression);
|
|
setstatus(2);
|
|
|
|
sprintf(username, "wtv_%s", serial_number);
|
|
sprintf(password, "%d", computefcs(serial_number));
|
|
|
|
printf("TellyScript: Using '%s' for username", username);
|
|
printf("TellyScript: Using '%s' for password", password);
|
|
|
|
setusername(username);
|
|
setpassword(password);
|
|
setpapmode(1);
|
|
setstatus(5);
|
|
|
|
if (!startppp())
|
|
{
|
|
setdtr(0);
|
|
if (getpppresult() == 3)
|
|
{
|
|
printf("TellyScript: PAP authentification failure");
|
|
return 10;
|
|
}
|
|
|
|
printf("TellyScript: PPP negotiation failed");
|
|
return 8;
|
|
}
|
|
|
|
printf("TellyScript: Link connected.");
|
|
setstatus(1);
|
|
|
|
printf("TellyScript: total time = %d (seconds)", (ticks() - start) / 60);
|
|
|
|
return 2;
|
|
}
|