📄 lid.cxx
字号:
{ "GI", 350, OpalLineInterfaceDevice::Gibraltar, "Gibraltar" },
{ "GR", 30, OpalLineInterfaceDevice::Greece, "Greece" },
{ "GD", 1473, OpalLineInterfaceDevice::Grenada, "Grenada" },
{ "GU", 1671, OpalLineInterfaceDevice::Guam, "Guam" },
{ "GT", 502, OpalLineInterfaceDevice::Guatemala, "Guatemala" },
{ "GY", 592, OpalLineInterfaceDevice::Guayana, "Guayana" },
{ "GG", 441, OpalLineInterfaceDevice::Guernsey, "Guernsey" },
{ "GN", 224, OpalLineInterfaceDevice::Guinea, "Guinea" },
{ "GW", 245, OpalLineInterfaceDevice::GuineaBissau, "Guinea Bissau" },
{ "HT", 509, OpalLineInterfaceDevice::Haiti, "Haiti" },
{ "HN", 504, OpalLineInterfaceDevice::Honduras, "Honduras" },
{ "HK", 852, OpalLineInterfaceDevice::Hongkong, "Hong Kong" },
{ "HU", 36, OpalLineInterfaceDevice::Hungary, "Hungary" },
{ "IS", 354, OpalLineInterfaceDevice::Iceland, "Iceland" },
{ "IN", 91, OpalLineInterfaceDevice::India, "India" },
{ "ID", 62, OpalLineInterfaceDevice::Indonesia, "Indonesia" },
{ "IR", 98, OpalLineInterfaceDevice::Iran, "Iran" },
{ "IQ", 964, OpalLineInterfaceDevice::Iraq, "Iraq" },
{ "IE", 353, OpalLineInterfaceDevice::Ireland, "Ireland" },
{ "IL", 972, OpalLineInterfaceDevice::Israel, "Israel" },
{ "IT", 39, OpalLineInterfaceDevice::Italy, "Italy" },
{ "JM", 1876, OpalLineInterfaceDevice::Jamaica, "Jamaica" },
{ "JP", 81, OpalLineInterfaceDevice::Japan, "Japan" },
{ "JE", 442, OpalLineInterfaceDevice::Jersey, "Jersey" },
{ "JO", 962, OpalLineInterfaceDevice::Jordan, "Jordan" },
{ "KE", 254, OpalLineInterfaceDevice::Kenya, "Kenya" },
{ "KI", 686, OpalLineInterfaceDevice::Kiribati, "Kiribati" },
{ "KR", 82, OpalLineInterfaceDevice::KoreaRepublic, "Korea, Republic of" },
{ "KP", 850, OpalLineInterfaceDevice::DemocraticPeoplesRepublicOfKorea, "Korea, Democratic Peoples Republic of" },
{ "KW", 965, OpalLineInterfaceDevice::Kuwait, "Kuwait" },
{ "LA", 856, OpalLineInterfaceDevice::Lao, "Lao" },
{ "LB", 961, OpalLineInterfaceDevice::Lebanon, "Lebanon" },
{ "LS", 266, OpalLineInterfaceDevice::Lesotho, "Lesotho" },
{ "LR", 231, OpalLineInterfaceDevice::Liberia, "Liberia" },
{ "LY", 218, OpalLineInterfaceDevice::Libya, "Libya" },
{ "LI", 423, OpalLineInterfaceDevice::Liechtenstein, "Liechtenstein" },
{ "LU", 352, OpalLineInterfaceDevice::Luxemborg, "Luxemborg" },
{ "MO", 853, OpalLineInterfaceDevice::Macao, "Macao" },
{ "MG", 261, OpalLineInterfaceDevice::Madagascar, "Madagascar" },
{ "MY", 60, OpalLineInterfaceDevice::Malaysia, "Malaysia" },
{ "MW", 265, OpalLineInterfaceDevice::Malawi, "Malawi" },
{ "MV", 960, OpalLineInterfaceDevice::Maldives, "Maldives" },
{ "ML", 223, OpalLineInterfaceDevice::Mali, "Mali" },
{ "MT", 356, OpalLineInterfaceDevice::Malta, "Malta" },
{ "MR", 222, OpalLineInterfaceDevice::Mauritania, "Mauritania" },
{ "MU", 230, OpalLineInterfaceDevice::Mauritius, "Mauritius" },
{ "MX", 52, OpalLineInterfaceDevice::Mexico, "Mexico" },
{ "MC", 377, OpalLineInterfaceDevice::Monaco, "Monaco" },
{ "MN", 976, OpalLineInterfaceDevice::Mongolia, "Mongolia" },
{ "MS", 1664, OpalLineInterfaceDevice::Montserrat, "Montserrat" },
{ "MA", 212, OpalLineInterfaceDevice::Morocco, "Morocco" },
{ "MZ", 258, OpalLineInterfaceDevice::Mozambique, "Mozambique" },
{ "MM", 95, OpalLineInterfaceDevice::Myanmar, "Myanmar" },
{ "NR", 674, OpalLineInterfaceDevice::Nauru, "Nauru" },
{ "NP", 977, OpalLineInterfaceDevice::Nepal, "Nepal" },
{ "NL", 31, OpalLineInterfaceDevice::Netherlands, "Netherlands", "425:0.1", "425:1.0-4.0", "425:0.5-0.5" },
{ "AN", 599, OpalLineInterfaceDevice::NetherlandsAntilles, "Netherlands Antilles" },
{ "NC", 687, OpalLineInterfaceDevice::NewCaledonia, "New Caledonia" },
{ "NZ", 64, OpalLineInterfaceDevice::NewZealand, "New Zealand" },
{ "NI", 505, OpalLineInterfaceDevice::Nicaragua, "Nicaragua" },
{ "NE", 227, OpalLineInterfaceDevice::Niger, "Niger" },
{ "NG", 234, OpalLineInterfaceDevice::Nigeria, "Nigeria" },
{ "NO", 47, OpalLineInterfaceDevice::Norway, "Norway" },
{ "OM", 968, OpalLineInterfaceDevice::Oman, "Oman" },
{ "PK", 92, OpalLineInterfaceDevice::Pakistan, "Pakistan" },
{ "PA", 507, OpalLineInterfaceDevice::Panama, "Panama" },
{ "PG", 675, OpalLineInterfaceDevice::PapuaNewGuinea, "Papua New Guinea" },
{ "PY", 595, OpalLineInterfaceDevice::Paraguay, "Paraguay" },
{ "PE", 51, OpalLineInterfaceDevice::Peru, "Peru" },
{ "PH", 63, OpalLineInterfaceDevice::Philippines, "Philippines" },
{ "PL", 48, OpalLineInterfaceDevice::Poland, "Poland" },
{ "PT", 351, OpalLineInterfaceDevice::Portugal, "Portugal" },
{ "PR", 1787, OpalLineInterfaceDevice::PuertoRico, "Puerto Rico" },
{ "QA", 974, OpalLineInterfaceDevice::Qatar, "Qatar" },
{ "RO", 40, OpalLineInterfaceDevice::Romania, "Romania" },
{ "RU", 7, OpalLineInterfaceDevice::USSR, "Russia" },
{ "RW", 250, OpalLineInterfaceDevice::Rwanda, "Rwanda" },
{ "xx", 0, OpalLineInterfaceDevice::SaintCroix, "Saint Croix" },
{ "SH", 290, OpalLineInterfaceDevice::SaintHelenaAndAscension, "Saint Helena and Ascension" },
{ "KN", 1869, OpalLineInterfaceDevice::SaintKittsAndNevis, "Saint Kitts and Nevis" },
{ "LC", 1758, OpalLineInterfaceDevice::SaintLucia, "Saint Lucia" },
{ "xx", 0, OpalLineInterfaceDevice::SaintThomas, "Saint Thomas" },
{ "VC", 1784, OpalLineInterfaceDevice::SaintVicentAndTheGrenadines, "Saint Vicent and the Grenadines" },
{ "SM", 378, OpalLineInterfaceDevice::SanMarino, "San Marino" },
{ "ST", 239, OpalLineInterfaceDevice::SaoTomeAndPrincipe, "Sao Tome and Principe" },
{ "SA", 966, OpalLineInterfaceDevice::SaudiArabia, "Saudi Arabia" },
{ "SN", 221, OpalLineInterfaceDevice::Senegal, "Senegal" },
{ "SC", 248, OpalLineInterfaceDevice::Seychelles, "Seychelles" },
{ "SL", 232, OpalLineInterfaceDevice::SierraLeone, "Sierra Leone" },
{ "SG", 65, OpalLineInterfaceDevice::Singapore, "Singapore", "425:0.1", "425:0.4-0.2-0.4-2", "425:0.75-0.75"},
{ "SB", 677, OpalLineInterfaceDevice::SolomonIslands, "Solomon Islands" },
{ "SO", 252, OpalLineInterfaceDevice::Somalia, "Somalia" },
{ "ZA", 27, OpalLineInterfaceDevice::SouthAfrica, "South Africa" },
{ "ES", 34, OpalLineInterfaceDevice::Spain, "Spain" },
{ "LK", 94, OpalLineInterfaceDevice::SriLanka, "Sri Lanka" },
{ "SD", 249, OpalLineInterfaceDevice::Sudan, "Sudan" },
{ "SR", 597, OpalLineInterfaceDevice::Suriname, "Suriname" },
{ "SZ", 268, OpalLineInterfaceDevice::Swaziland, "Swaziland" },
{ "SE", 46, OpalLineInterfaceDevice::Sweden, "Sweden" },
{ "CH", 41, OpalLineInterfaceDevice::Switzerland, "Switzerland" },
{ "SY", 963, OpalLineInterfaceDevice::Syria, "Syria" },
{ "TZ", 255, OpalLineInterfaceDevice::Tanzania, "Tanzania" },
{ "TH", 66, OpalLineInterfaceDevice::Thailand, "Thailand" },
{ "TG", 228, OpalLineInterfaceDevice::Togo, "Togo" },
{ "TO", 676, OpalLineInterfaceDevice::Tonga, "Tonga" },
{ "TT", 1868, OpalLineInterfaceDevice::TrinidadAndTobago, "Trinidad and Tobago" },
{ "TN", 216, OpalLineInterfaceDevice::Tunisia, "Tunisia" },
{ "TR", 90, OpalLineInterfaceDevice::Turkey, "Turkey" },
{ "TC", 1649, OpalLineInterfaceDevice::TurksAndCaicosIslands, "Turks and Caicos Islands" },
{ "TV", 688, OpalLineInterfaceDevice::Tuvalu, "Tuvalu" },
{ "UG", 256, OpalLineInterfaceDevice::Uganda, "Uganda" },
{ "UA", 380, OpalLineInterfaceDevice::Ukraine, "Ukraine" },
{ "AE", 971, OpalLineInterfaceDevice::UnitedArabEmirates, "United Arab Emirates" },
{ "GB", 44, OpalLineInterfaceDevice::UnitedKingdom, "United Kingdom", "350-440:0.1", "400-450:0.4-0.2-0.4-2", "400:0.375-0.375" },
{ "US", 1, OpalLineInterfaceDevice::UnitedStates, "United States", "350-440:0.1", "440-480:2.0-4.0", "480-620:0.5-0.5" },
{ "UY", 598, OpalLineInterfaceDevice::Uruguay, "Uruguay" },
{ "VU", 678, OpalLineInterfaceDevice::Vanuatu, "Vanuatu" },
{ "VA", 379, OpalLineInterfaceDevice::VaticanCityState, "Vatican City State" },
{ "VE", 58, OpalLineInterfaceDevice::Venezuela, "Venezuela" },
{ "VN", 84, OpalLineInterfaceDevice::VietNam, "Viet Nam" },
{ "WF", 681, OpalLineInterfaceDevice::WallisAndFutuna, "Wallis and Futuna" },
{ "WS", 685, OpalLineInterfaceDevice::WesternSamoa, "Western Samoa" },
{ "YE", 967, OpalLineInterfaceDevice::Yemen, "Yemen" },
{ "YU", 381, OpalLineInterfaceDevice::Yugoslavia, "Yugoslavia" },
{ "xx", 0, OpalLineInterfaceDevice::Zaire, "Zaire" },
{ "ZM", 260, OpalLineInterfaceDevice::Zambia, "Zambia" },
{ "ZW", 263, OpalLineInterfaceDevice::Zimbabwe, "Zimbabwe" }
};
OpalLineInterfaceDevice::T35CountryCodes OpalLineInterfaceDevice::GetCountryCode(const PString & str)
{
for (PINDEX i = 0; i < PARRAYSIZE(CountryInfo); i++)
if (str *= CountryInfo[i].fullName)
return CountryInfo[i].t35Code;
return OpalLineInterfaceDevice::UnknownCountry;
}
PString OpalLineInterfaceDevice::GetCountryCodeName(T35CountryCodes c)
{
for (PINDEX i = 0; i < PARRAYSIZE(CountryInfo); i++)
if (CountryInfo[i].t35Code == c)
return CountryInfo[i].fullName;
return "<Unknown>";
}
PString OpalLineInterfaceDevice::GetCountryCodeName() const
{
return GetCountryCodeName(countryCode);
}
BOOL OpalLineInterfaceDevice::SetCountryCode(T35CountryCodes country)
{
countryCode = country;
unsigned line;
for (line = 0; line < GetLineCount(); line++)
SetToneFilter(line, CNGTone, "1100:0.25");
for (PINDEX i = 0; i < PARRAYSIZE(CountryInfo); i++) {
if (CountryInfo[i].t35Code == country) {
PTRACE(2, "LID\tCountry set to " << CountryInfo[i].fullName);
for (line = 0; line < GetLineCount(); line++) {
if (CountryInfo[i].dialTone != NULL)
SetToneFilter(line, DialTone, CountryInfo[i].dialTone);
if (CountryInfo[i].ringTone != NULL)
SetToneFilter(line, RingTone, CountryInfo[i].ringTone);
if (CountryInfo[i].busyTone != NULL)
SetToneFilter(line, BusyTone, CountryInfo[i].busyTone);
}
return TRUE;
}
}
PTRACE(2, "LID\tCountry set to " << GetCountryCodeName());
return TRUE;
}
PStringList OpalLineInterfaceDevice::GetCountryCodeNameList() const
{
PStringList list;
list.AppendString("United States");
return list;
}
static PCaselessString DeSpaced(const PString & orig)
{
PString str = orig.Trim();
PINDEX space = 0;
while ((space = str.Find(' ')) != P_MAX_INDEX)
str.Delete(space, 1);
return str;
}
BOOL OpalLineInterfaceDevice::SetCountryCodeName(const PString & countryName)
{
PTRACE(4, "IXJ\tSetting country code name to " << countryName);
PCaselessString spacelessAndCaseless = DeSpaced(countryName);
if (spacelessAndCaseless.IsEmpty())
return FALSE;
if (isdigit(spacelessAndCaseless[0]))
return SetCountryCode((T35CountryCodes)spacelessAndCaseless.AsUnsigned());
PINDEX i;
if (spacelessAndCaseless[0] == '+') {
unsigned code = spacelessAndCaseless.AsUnsigned();
for (i = 0; i < PARRAYSIZE(CountryInfo); i++)
if (code == CountryInfo[i].dialCode)
return SetCountryCode(CountryInfo[i].t35Code);
}
else if (spacelessAndCaseless.GetLength() == 2) {
for (i = 0; i < PARRAYSIZE(CountryInfo); i++)
if (spacelessAndCaseless == CountryInfo[i].isoName)
return SetCountryCode(CountryInfo[i].t35Code);
}
else {
for (i = 0; i < PARRAYSIZE(CountryInfo); i++)
if (spacelessAndCaseless == DeSpaced(CountryInfo[i].fullName))
return SetCountryCode(CountryInfo[i].t35Code);
}
SetCountryCode(UnknownCountry);
return FALSE;
}
PString OpalLineInterfaceDevice::GetErrorText() const
{
return PChannel::GetErrorText(PChannel::Miscellaneous, osError);
}
void OpalLineInterfaceDevice::PrintOn(ostream & strm) const
{
strm << GetDescription();
}
OpalLineInterfaceDevice * OpalLineInterfaceDevice::Create(const PString & newType,
void * parameters)
{
OpalLIDRegistration * type = RegisteredLIDsListHead;
while (type != NULL) {
if (*type == newType)
return type->Create(parameters);
type = type->link;
}
return NULL;
}
PStringList OpalLineInterfaceDevice::GetAllTypes()
{
PStringList types;
OpalLIDRegistration * type = RegisteredLIDsListHead;
while (type != NULL) {
types.AppendString(*type);
type = type->link;
}
return types;
}
PStringList OpalLineInterfaceDevice::GetAllDevices()
{
PStringList devices;
OpalLIDRegistration * type = RegisteredLIDsListHead;
while (type != NULL) {
OpalLineInterfaceDevice * device = type->Create(NULL);
PStringArray names = device->GetAllNames();
for (PINDEX i = 0; i < names.GetSize(); i++)
devices.AppendString(*type + ": " + names[i]);
delete device;
type = type->link;
}
return devices;
}
/////////////////////////////////////////////////////////////////////////////
OpalLine::OpalLine(OpalLineInterfaceDevice & dev, unsigned num, const char * descript)
: device(dev),
lineNumber(num),
token(device.GetDeviceType() + ": " + device.GetDeviceName()),
ringStoppedTime(0, 10), // 10 seconds
ringInterCadenceTime(0, 4) // 4 seconds
{
token.sprintf("/%u", lineNumber);
if (descript == NULL)
description = token;
else
description = descript;
ringCount = 0;
}
void OpalLine::PrintOn(ostream & strm) const
{
strm << description;
}
unsigned OpalLine::GetRingCount(DWORD * cadence)
{
PTimeInterval tick = PTimer::Tick();
PTimeInterval delta = ringTick - tick;
if (IsRinging(cadence)) {
ringTick = tick;
if (ringCount == 0)
ringCount = 1;
}
else {
if (delta > ringStoppedTime) {
ringCount = 0;
ringTick = tick;
}
else if (delta > ringInterCadenceTime)
ringCount++;
}
return ringCount;
}
/////////////////////////////////////////////////////////////////////////////
OpalLIDRegistration::OpalLIDRegistration(const char * name)
: PCaselessString(name)
{
OpalLIDRegistration * test = RegisteredLIDsListHead;
while (test != NULL) {
if (*test == *this)
return;
test = test->link;
}
link = RegisteredLIDsListHead;
RegisteredLIDsListHead = this;
}
/////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -