Compare commits
15 Commits
next
...
v2.4.1-rc1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
955a1d0df6 | ||
|
|
b79f28837a | ||
|
|
d551ed3cfc | ||
|
|
6189813aa8 | ||
|
|
c2395b44ec | ||
|
|
0e700f80c5 | ||
|
|
3940110c35 | ||
|
|
47111ff7a5 | ||
|
|
c7a957e14e | ||
|
|
842130f99d | ||
|
|
41143e105f | ||
|
|
44289a813d | ||
|
|
07d9024623 | ||
|
|
2b3b134c11 | ||
|
|
08605ea73b |
@@ -3,6 +3,12 @@
|
||||
/* Define if your system has the DAHDI headers. */
|
||||
#undef HAVE_DAHDI
|
||||
|
||||
/* Define if your system has the DAHDI23 headers. */
|
||||
#undef HAVE_DAHDI23
|
||||
|
||||
/* Define DAHDI23 headers version */
|
||||
#undef HAVE_DAHDI23_VERSION
|
||||
|
||||
/* Define DAHDI headers version */
|
||||
#undef HAVE_DAHDI_VERSION
|
||||
|
||||
@@ -21,6 +27,9 @@
|
||||
/* Define to indicate the ${NEWT_DESCRIP} library version */
|
||||
#undef HAVE_NEWT_VERSION
|
||||
|
||||
/* Define to 1 if you have the `semtimedop' function. */
|
||||
#undef HAVE_SEMTIMEDOP
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
@@ -63,6 +72,9 @@
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
|
||||
@@ -99,6 +99,8 @@ AST_C_DEFINE_CHECK([DAHDI23], [DAHDI_CONFIG_NTTE], [dahdi/user.h])
|
||||
AST_EXT_LIB_CHECK([NEWT], [newt], [newtBell], [newt.h])
|
||||
AST_EXT_LIB_CHECK([USB], [usb], [usb_init], [usb.h])
|
||||
|
||||
AC_CHECK_FUNCS([semtimedop])
|
||||
|
||||
PBX_HDLC=0
|
||||
AC_MSG_CHECKING([for GENERIC_HDLC_VERSION version 4 in linux/hdlc.h])
|
||||
AC_COMPILE_IFELSE(
|
||||
|
||||
40
dahdi_scan.c
40
dahdi_scan.c
@@ -95,11 +95,13 @@ int main(int argc, char *argv[])
|
||||
strcat(alarms, "YEL/");
|
||||
if (s.alarms & DAHDI_ALARM_RED) {
|
||||
strcat(alarms, "RED/");
|
||||
|
||||
/* Extended alarm feature test. Allows compilation with
|
||||
* versions of dahdi-linux prior to 2.4
|
||||
*/
|
||||
#ifdef DAHDI_ALARM_LFA
|
||||
if (s.alarms & DAHDI_ALARM_LFA)
|
||||
strcat(alarms, "LFA/");
|
||||
if (s.alarms & DAHDI_ALARM_LMFA)
|
||||
strcat(alarms, "LMFA/");
|
||||
#endif /* ifdef DAHDI_ALARM_LFA */
|
||||
}
|
||||
if (s.alarms & DAHDI_ALARM_LOOPBACK)
|
||||
@@ -115,10 +117,35 @@ int main(int argc, char *argv[])
|
||||
alarms[strlen(alarms)-1]='\0';
|
||||
}
|
||||
} else {
|
||||
if (s.numchans)
|
||||
strcpy(alarms, "OK");
|
||||
else
|
||||
if (s.numchans) {
|
||||
#ifdef DAHDI_ALARM_LFA
|
||||
/* If we continuously receive framing errors
|
||||
* but our span is still in service, and we
|
||||
* are configured for E1 & crc4. We've lost
|
||||
* crc4-multiframe alignment
|
||||
*/
|
||||
if ((s.linecompat & DAHDI_CONFIG_CRC4) &&
|
||||
(s.fecount > 0)) {
|
||||
struct dahdi_spaninfo t;
|
||||
memset(&t, 0, sizeof(t));
|
||||
t.spanno = x;
|
||||
sleep(1);
|
||||
if (ioctl(ctl, DAHDI_SPANSTAT, &t))
|
||||
continue;
|
||||
|
||||
/* Test fecount at two separate time
|
||||
* intervals, if they differ, throw LMFA
|
||||
*/
|
||||
if ((t.fecount > s.fecount) &&
|
||||
!t.alarms) {
|
||||
strcat(alarms, "LMFA/");
|
||||
}
|
||||
}
|
||||
#endif /* ifdef DAHDI_ALARM_LFA */
|
||||
strcat(alarms, "OK");
|
||||
} else {
|
||||
strcpy(alarms, "UNCONFIGURED");
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(stdout, "[%d]\n", x);
|
||||
@@ -169,7 +196,8 @@ int main(int argc, char *argv[])
|
||||
if (s.lineconfig & DAHDI_CONFIG_ESF) fprintf(stdout, "ESF");
|
||||
else if (s.lineconfig & DAHDI_CONFIG_D4) fprintf(stdout, "D4");
|
||||
else if (s.lineconfig & DAHDI_CONFIG_CCS) fprintf(stdout, "CCS");
|
||||
else if (s.lineconfig & DAHDI_CONFIG_CRC4) fprintf(stdout, "/CRC4");
|
||||
else fprintf(stdout, "CAS");
|
||||
if (s.lineconfig & DAHDI_CONFIG_CRC4) fprintf(stdout, "/CRC4");
|
||||
fprintf(stdout, "\n");
|
||||
} else {
|
||||
/* this is an analog span */
|
||||
|
||||
@@ -15,6 +15,10 @@ static int debug;
|
||||
static int verbose;
|
||||
static int timeout_seconds = 60;
|
||||
|
||||
/* If libc provides no timeout variant: try to do without it: */
|
||||
#ifndef HAVE_SEMTIMEDEOP
|
||||
#define semtimedop(sem, ops, n, timeout) semop(sem, ops, n)
|
||||
#endif
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
|
||||
@@ -229,7 +229,7 @@ sub battery($) {
|
||||
return undef unless defined $self->type && $self->type eq 'FXO';
|
||||
return $self->{BATTERY} if defined $self->{BATTERY};
|
||||
|
||||
my $xpd = $span->xpd;
|
||||
my $xpd = Dahdi::Xpp::xpd_of_span($span);
|
||||
my $index = $self->index;
|
||||
return undef if !$xpd;
|
||||
|
||||
@@ -251,7 +251,7 @@ sub blink($$) {
|
||||
my $on = shift;
|
||||
my $span = $self->span or die;
|
||||
|
||||
my $xpd = $span->xpd;
|
||||
my $xpd = Dahdi::Xpp::xpd_of_span($span);
|
||||
my $index = $self->index;
|
||||
return undef if !$xpd;
|
||||
|
||||
|
||||
@@ -77,7 +77,6 @@ sub gen_t1_cas($$) {
|
||||
my $idle_bits = $gconfig->{'r2_idle_bits'};
|
||||
$chan_range = Dahdi::Config::Gen::bchan_range($span);
|
||||
printf "cas=%s:$idle_bits\n", $chan_range;
|
||||
printf "dchan=%d\n", $span->dchan()->num();
|
||||
} elsif ($pri_connection_type eq 'CAS' ) {
|
||||
my $type = ($termtype eq 'TE') ? 'FXO' : 'FXS';
|
||||
my $sig = $gconfig->{'dahdi_signalling'}{$type};
|
||||
@@ -138,7 +137,7 @@ sub gen_digital($$$) {
|
||||
if ($span->is_bri()) {
|
||||
my $use_bristuff = 0;
|
||||
my $cfg_hardhdlc = $gconfig->{'bri_hardhdlc'};
|
||||
my $xpd = $span->xpd();
|
||||
my $xpd = Dahdi::Xpp::xpd_of_span($span);
|
||||
if(!defined($cfg_hardhdlc) || $cfg_hardhdlc =~ /AUTO/i) {
|
||||
# Autodetect
|
||||
if(defined($xpd)) {
|
||||
|
||||
@@ -119,6 +119,7 @@ my %pci_ids = (
|
||||
'1397:16b8/1397:e998' => { DRIVER => 'wcb4xxp', DESCRIPTION => 'OpenVox B800P' },
|
||||
'1397:08b4/1397:b566' => { DRIVER => 'wcb4xxp', DESCRIPTION => 'BeroNet BN2S0' },
|
||||
'1397:08b4/1397:b560' => { DRIVER => 'wcb4xxp', DESCRIPTION => 'BeroNet BN4S0' },
|
||||
'1397:08b4/1397:b762' => { DRIVER => 'wcb4xxp', DESCRIPTION => 'BeroNet BN4S0 PCI-E card' },
|
||||
'1397:16b8/1397:b562' => { DRIVER => 'wcb4xxp', DESCRIPTION => 'BeroNet BN8S0' },
|
||||
'1397:08b4' => { DRIVER => 'qozap', DESCRIPTION => 'Generic Cologne ISDN card' },
|
||||
'1397:16b8' => { DRIVER => 'qozap', DESCRIPTION => 'Generic OctoBRI ISDN card' },
|
||||
|
||||
@@ -140,8 +140,9 @@ sub scan_devices_sysfs($) {
|
||||
|
||||
# Older kernels, e.g. 2.6.9, don't have the attribute
|
||||
# busnum:
|
||||
m|/(\d+)-[\d.]+$|;
|
||||
my $busnum = $1 || next;
|
||||
m|/((\d+)-[\d.]+)$|;
|
||||
my $busnum = $2 || next;
|
||||
my $dev_sys_name = $1;
|
||||
my $vendor = _get_attr("$_/idVendor");
|
||||
my $product = _get_attr("$_/idProduct");
|
||||
my $model = $usb_ids{"$vendor:$product"};
|
||||
@@ -149,6 +150,12 @@ sub scan_devices_sysfs($) {
|
||||
my $devnum = _get_attr("$_/devnum");
|
||||
my $serial = _get_attr_optional("$_/serial", '');
|
||||
my $devname = sprintf("%03d/%03d", $busnum, $devnum);
|
||||
# Get driver for first interface of the device:
|
||||
my $iface = "$_/$dev_sys_name:1.0";
|
||||
my $loaded = readlink("$iface/driver");
|
||||
if (defined $loaded) {
|
||||
$loaded =~ s|.*/||;
|
||||
}
|
||||
my $d = Dahdi::Hardware::USB->new(
|
||||
IS_ASTRIBANK => ($model->{DRIVER} eq 'xpp_usb')?1:0,
|
||||
PRIV_DEVICE_NAME => $devname,
|
||||
@@ -157,6 +164,7 @@ sub scan_devices_sysfs($) {
|
||||
SERIAL => $serial,
|
||||
DESCRIPTION => $model->{DESCRIPTION},
|
||||
DRIVER => $model->{DRIVER},
|
||||
LOADED => $loaded,
|
||||
);
|
||||
push(@devices, $d);
|
||||
}
|
||||
|
||||
@@ -323,7 +323,7 @@ sub pri_set_fromconfig($$) {
|
||||
}
|
||||
push(@pri_specs , 'SPAN/* TE'); # Default
|
||||
my @patlist = ( "SPAN/" . $span->num );
|
||||
my $xpd = $span->{XPD};
|
||||
my $xpd = Dahdi::Xpp::xpd_of_span($span);
|
||||
if(defined $xpd) {
|
||||
my $xbus = $xpd->xbus;
|
||||
my $xbus_name = $xbus->name;
|
||||
|
||||
@@ -349,6 +349,9 @@ udev_delayed_load() {
|
||||
run_fxload -D "$DEVICE" -I "$FIRM_USB"
|
||||
;;
|
||||
e4e4/11[3456]1/*)
|
||||
# There are potentially two separate udev events, for
|
||||
# each of the two endpoints. Ignore the first interface:
|
||||
case "$DEVPATH" in *.0) exit 0;; esac
|
||||
if [ "$prod_id" = 1131 ]; then
|
||||
FIRM_FPGA="FPGA_FXS.hex" # Legacy
|
||||
else
|
||||
|
||||
23
zonedata.c
23
zonedata.c
@@ -979,5 +979,28 @@ struct tone_zone builtin_zones[] =
|
||||
.mfr1_level = -7,
|
||||
.mfr2_level = -8,
|
||||
},
|
||||
{
|
||||
.zone = 43,
|
||||
.country = "mo",
|
||||
.description = "Macao,China",
|
||||
.ringcadence = { 1000, 4000 },
|
||||
.tones = {
|
||||
/* References: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
|
||||
{ DAHDI_TONE_DIALTONE, "425" },
|
||||
{ DAHDI_TONE_BUSY, "425/500,0/500" },
|
||||
{ DAHDI_TONE_RINGTONE, "425/1000,0/4000" },
|
||||
{ DAHDI_TONE_CONGESTION, "425/250,0/250" },
|
||||
{ DAHDI_TONE_CALLWAIT, "425/200,0/600" },
|
||||
/* RECORD TONE - not specified */
|
||||
{ DAHDI_TONE_RECORDTONE, "1400/400,0/15000" },
|
||||
{ DAHDI_TONE_INFO, "950/333,1400/333,1800/333,0/1000" },
|
||||
/* STUTTER TONE - not specified */
|
||||
{ DAHDI_TONE_STUTTER, "!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425" },
|
||||
},
|
||||
.dtmf_high_level = -10,
|
||||
.dtmf_low_level = -10,
|
||||
.mfr1_level = -10,
|
||||
.mfr2_level = -8,
|
||||
},
|
||||
{ .zone = -1 }
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user