[aadk-commits] dbailey: uClinux/trunk r685 - in /uClinux/trunk/uClinux-dist: config/ lib/lib...

SVN commits to the AADK repository aadk-commits at lists.digium.com
Mon Dec 31 10:27:07 CST 2007


Author: dbailey
Date: Mon Dec 31 10:27:06 2007
New Revision: 685

URL: http://svn.digium.com/view/aadk?view=rev&rev=685
Log:
Update sx00i driver to prevent SPI bus collision
Zaptel now has the ability to aply twist to dtmf tones
Add ability to udhcpd to bind interface IP address upon receipt of dhcp request
Add signature check on update of FLASH memory
Add utility to update asterisk configurations depending upon version of AADK image
Add enhanced fxotune application to busybox
turn on sed and awk in busybox
Add patch to strftime function in uclibc
Add i2c led chip driver


Added:
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/i2c/chips/pca9635.c
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/linux-2.6.x/drivers/i2c/chips/pca9635.c
    uClinux/trunk/uClinux-dist/user/busybox/miscutils/astcfg_update.c
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/user/busybox/miscutils/astcfg_update.c
    uClinux/trunk/uClinux-dist/user/busybox/miscutils/fxstest.c
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/user/busybox/miscutils/fxstest.c
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/modprobe_default
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/vendors/Digium/S800I/modprobe_default
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/asterisk.watchdogholdoff
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/vendors/Digium/S800I/scripts/asterisk.watchdogholdoff
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/bootloaderupdate
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/vendors/Digium/S800I/scripts/bootloaderupdate
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/fxotune_from_gui
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/vendors/Digium/S800I/scripts/fxotune_from_gui
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/fxotune_sel
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/vendors/Digium/S800I/scripts/fxotune_sel
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/gen_rsakey
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/vendors/Digium/S800I/scripts/gen_rsakey
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/imageupload
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/vendors/Digium/S800I/scripts/imageupload
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/reconcile_config
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/vendors/Digium/S800I/scripts/reconcile_config
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/uimagesig
      - copied unchanged from r683, uClinux/private/sx00i/trunk/uClinux-dist/vendors/Digium/S800I/uimagesig
Removed:
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/tones.h
Modified:
    uClinux/trunk/uClinux-dist/config/.config
    uClinux/trunk/uClinux-dist/config/config.in
    uClinux/trunk/uClinux-dist/config/digium-config
    uClinux/trunk/uClinux-dist/lib/libtonezone/Makefile
    uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.c
    uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.h
    uClinux/trunk/uClinux-dist/lib/libtonezone/zonedata.c
    uClinux/trunk/uClinux-dist/linux-2.6.x/.config
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/i2c/chips/Kconfig
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/i2c/chips/Makefile
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/Makefile
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/arith.h
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/digits.h
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/sx00i.c
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/tonezone.c
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/tonezone.h
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/wcusb.c
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/zaptel.c
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/zaptel.h
    uClinux/trunk/uClinux-dist/linux-2.6.x/drivers/zaptel/zonedata.c
    uClinux/trunk/uClinux-dist/linux-2.6.x/include/zaptel/zaptel.h
    uClinux/trunk/uClinux-dist/uClibc/config-s800i
    uClinux/trunk/uClinux-dist/uClibc/include/zaptel/zaptel.h
    uClinux/trunk/uClinux-dist/uClibc/libc/misc/time/time.c
    uClinux/trunk/uClinux-dist/user/busybox/.config.mkconfig
    uClinux/trunk/uClinux-dist/user/busybox/Makefile
    uClinux/trunk/uClinux-dist/user/busybox/config-s800i
    uClinux/trunk/uClinux-dist/user/busybox/defconfig
    uClinux/trunk/uClinux-dist/user/busybox/digium-config
    uClinux/trunk/uClinux-dist/user/busybox/include/applets.h
    uClinux/trunk/uClinux-dist/user/busybox/include/fxotune.h
    uClinux/trunk/uClinux-dist/user/busybox/include/usage.h
    uClinux/trunk/uClinux-dist/user/busybox/miscutils/Config.in
    uClinux/trunk/uClinux-dist/user/busybox/miscutils/Makefile.in
    uClinux/trunk/uClinux-dist/user/busybox/miscutils/fxotune.c
    uClinux/trunk/uClinux-dist/user/busybox/miscutils/zapscan.c
    uClinux/trunk/uClinux-dist/user/busybox/miscutils/ztcfg.c
    uClinux/trunk/uClinux-dist/user/busybox/networking/udhcp/dhcpd.c
    uClinux/trunk/uClinux-dist/user/busybox/networking/udhcp/dhcpd.h
    uClinux/trunk/uClinux-dist/user/busybox/networking/udhcp/files.c
    uClinux/trunk/uClinux-dist/user/busybox/networking/udhcp/options.c
    uClinux/trunk/uClinux-dist/user/ntp/uCbuild/include/config.h
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/Makefile
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/config.linux-2.6.x
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/config.vendor-2.6.x
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/rc
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/flashupdate
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/fxotune_all
    uClinux/trunk/uClinux-dist/vendors/Digium/S800I/scripts/save_config

Modified: uClinux/trunk/uClinux-dist/config/.config
URL: http://svn.digium.com/view/aadk/uClinux/trunk/uClinux-dist/config/.config?view=diff&rev=685&r1=684&r2=685
==============================================================================
--- uClinux/trunk/uClinux-dist/config/.config (original)
+++ uClinux/trunk/uClinux-dist/config/.config Mon Dec 31 10:27:06 2007
@@ -119,7 +119,7 @@
 # CONFIG_USER_MOUNT_UMOUNT is not set
 # CONFIG_USER_FDISK_FDISK is not set
 # CONFIG_USER_FDISK_SFDISK is not set
-# CONFIG_USER_E2FSPROGS_E2FSCK_E2FSCK is not set
+CONFIG_USER_E2FSPROGS_E2FSCK_E2FSCK=y
 CONFIG_USER_E2FSPROGS_MISC_MKE2FS=y
 # CONFIG_USER_E2FSPROGS_MISC_BADBLOCKS is not set
 # CONFIG_USER_E2FSPROGS_MISC_CHATTR is not set
@@ -418,7 +418,9 @@
 # CONFIG_USER_BUSYBOX_ADJTIMEX is not set
 # CONFIG_USER_BUSYBOX_AR is not set
 # CONFIG_USER_BUSYBOX_ARPING is not set
-# CONFIG_USER_BUSYBOX_AWK is not set
+CONFIG_USER_BUSYBOX_ASTCFG_UPDATE=y
+CONFIG_USER_BUSYBOX_AWK=y
+# CONFIG_USER_BUSYBOX_AWK_MATH is not set
 CONFIG_USER_BUSYBOX_BASENAME=y
 # CONFIG_USER_BUSYBOX_BUNZIP2 is not set
 # CONFIG_USER_BUSYBOX_CAL is not set
@@ -477,7 +479,7 @@
 CONFIG_USER_BUSYBOX_FTPGET=y
 CONFIG_USER_BUSYBOX_FTPPUT=y
 CONFIG_USER_BUSYBOX_FXOTUNE=y
-# CONFIG_USER_BUSYBOX_FXSTEST is not set
+CONFIG_USER_BUSYBOX_FXSTEST=y
 CONFIG_USER_BUSYBOX_GETOPT=y
 CONFIG_USER_BUSYBOX_GETTY=y
 CONFIG_USER_BUSYBOX_GREP=y
@@ -595,7 +597,7 @@
 # CONFIG_USER_BUSYBOX_RPM2CPIO is not set
 # CONFIG_USER_BUSYBOX_RUN_PARTS is not set
 # CONFIG_USER_BUSYBOX_RX is not set
-# CONFIG_USER_BUSYBOX_SED is not set
+CONFIG_USER_BUSYBOX_SED=y
 CONFIG_USER_BUSYBOX_SEQ=y
 # CONFIG_USER_BUSYBOX_SETKEYCODES is not set
 CONFIG_USER_BUSYBOX_SHELL=y

Modified: uClinux/trunk/uClinux-dist/config/config.in
URL: http://svn.digium.com/view/aadk/uClinux/trunk/uClinux-dist/config/config.in?view=diff&rev=685&r1=684&r2=685
==============================================================================
--- uClinux/trunk/uClinux-dist/config/config.in (original)
+++ uClinux/trunk/uClinux-dist/config/config.in Mon Dec 31 10:27:06 2007
@@ -871,6 +871,7 @@
 		bool "ar: Enable support for long filenames (not needed for debs)" CONFIG_USER_BUSYBOX_AR_LONG_FILENAMES
 	fi
 	bool 'arping' CONFIG_USER_BUSYBOX_ARPING
+	bool 'astcfg_update' CONFIG_USER_BUSYBOX_ASTCFG_UPDATE
 	bool 'awk' CONFIG_USER_BUSYBOX_AWK
 	if [ "$CONFIG_USER_BUSYBOX_AWK" = "y" ]; then
 		bool 'awk: Enable math functions (requires libm)' CONFIG_USER_BUSYBOX_AWK_MATH

Modified: uClinux/trunk/uClinux-dist/config/digium-config
URL: http://svn.digium.com/view/aadk/uClinux/trunk/uClinux-dist/config/digium-config?view=diff&rev=685&r1=684&r2=685
==============================================================================
--- uClinux/trunk/uClinux-dist/config/digium-config (original)
+++ uClinux/trunk/uClinux-dist/config/digium-config Mon Dec 31 10:27:06 2007
@@ -700,6 +700,7 @@
 # CONFIG_USER_BUSYBOX_MINIX2 is not set
 # CONFIG_USER_BUSYBOX_SHADOWPASSWDS is not set
 # CONFIG_USER_BUSYBOX_U_W_TMP is not set
+# CONFIG_USER_BUSYBOX_ASTCFG_UPDATE is not set
 # CONFIG_USER_BUSYBOX_ZTCFG is not set
 # CONFIG_USER_BUSYBOX_ZTMONITOR is not set
 # CONFIG_USER_BUSYBOX_FXOTUNE is not set

Modified: uClinux/trunk/uClinux-dist/lib/libtonezone/Makefile
URL: http://svn.digium.com/view/aadk/uClinux/trunk/uClinux-dist/lib/libtonezone/Makefile?view=diff&rev=685&r1=684&r2=685
==============================================================================
--- uClinux/trunk/uClinux-dist/lib/libtonezone/Makefile (original)
+++ uClinux/trunk/uClinux-dist/lib/libtonezone/Makefile Mon Dec 31 10:27:06 2007
@@ -58,9 +58,6 @@
 ar-target: $(OBJS)
 	$(AR) $(ARFLAGS) $(LIBTONEZONE) $(OBJS)
 	$(RANLIB) $(LIBTONEZONE)
-	$(INSTALL) -d $(TOPDIR)lib
-	$(RM) $(TOPDIR)lib/$(LIBTONEZONE)
-	$(INSTALL) -m 644 $(LIBTONEZONE) $(TOPDIR)lib
 
 
 $(OBJS): %.o : %.c

Modified: uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.c
URL: http://svn.digium.com/view/aadk/uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.c?view=diff&rev=685&r1=684&r2=685
==============================================================================
--- uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.c (original)
+++ uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.c Mon Dec 31 10:27:06 2007
@@ -29,6 +29,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <errno.h>
+
 #include "tonezone.h"
 
 #define DEFAULT_ZT_DEV "/dev/zap/ctl"
@@ -63,15 +64,15 @@
 
 #define LEVEL -10
 
-static int build_tone(char *data, int size, struct tone_zone_sound *t, int *count)
+static int build_tone(void *data, int size, struct tone_zone_sound *t, int *count)
 {
 	char *dup, *s;
 	struct zt_tone_def *td=NULL;
 	int firstnobang = -1;
 	int freq1, freq2, time;
-	int used = 0;
 	int modulate = 0;
 	float gain;
+	int used = 0;
 	dup = strdup(t->data);
 	s = strtok(dup, ",");
 	while(s && strlen(s)) {
@@ -125,11 +126,11 @@
 #if 0
 		printf("Using %d samples for %d and %d\n", time * 8, freq1, freq2);
 #endif
-		if (size < sizeof(struct zt_tone_def)) {
-			fprintf(stderr, "Not enough space for samples\n");
+		if (size < sizeof(*td)) {
+			fprintf(stderr, "Not enough space for tones\n");
 			return -1;
 		}
-		td = (struct zt_tone_def *)data;
+		td = data;
 
 		/* Bring it down -8 dbm */
 		gain = pow(10.0, (LEVEL - 3.14) / 20.0) * 65536.0 / 2.0;
@@ -144,9 +145,9 @@
 
 		td->modulate = modulate;
 
-		data += (sizeof(struct zt_tone_def));
-		used += (sizeof(struct zt_tone_def));
-		size -= (sizeof(struct zt_tone_def));
+		data += sizeof(*td);
+		used += sizeof(*td);
+		size -= sizeof(*td);
 		td->tone = t->toneid;
 		if (time) {
 			/* We should move to the next tone */
@@ -157,7 +158,7 @@
 			td->next = *count;
 			td->samples = 8000;
 		}
-		(*count)++;
+		*count += 1;
 		s = strtok(NULL, ",");
 	}
 	if (td && time) {
@@ -203,85 +204,187 @@
 }
 
 #ifdef TONEZONE_DRIVER
-static void dump_tone_zone(void *data)
+static void dump_tone_zone(void *data, int size)
 {
 	struct zt_tone_def_header *z;
 	struct zt_tone_def *td;
 	int x;
-	int len=0;
+	int len = sizeof(*z);
+
 	z = data;
 	data += sizeof(*z);
 	printf("Header: %d tones, %d bytes of data, zone %d (%s)\n", 
-		z->count, z->size, z->zone, z->name);
-	for (x=0;x < z->count; x++) {
+		z->count, size, z->zone, z->name);
+	for (x = 0; x < z->count; x++) {
 		td = data;
-		printf("Tone Fragment %d: %d bytes, %s tone, next is %d, %d samples total\n",
-			x, td->size, tone_name(td->tone), td->next, td->samples);
+		printf("Tone Fragment %d: tone is %d, next is %d, %d samples\n",
+			x, td->tone, td->next, td->samples);
 		data += sizeof(*td);
-		data += td->size;
-		len += td->size;
+		len += sizeof(*td);
 	}
 	printf("Total measured bytes of data: %d\n", len);
 }
 #endif
+
+/* Tone frequency tables */
+struct mf_tone {
+	int	tone;
+	float   f1;     /* first freq */
+	float   f2;     /* second freq */
+};
+ 
+static struct mf_tone dtmf_dial[] = {
+	{ ZT_TONE_DTMF_0, 941.0, 1336.0 },
+	{ ZT_TONE_DTMF_1, 697.0, 1209.0 },
+	{ ZT_TONE_DTMF_2, 697.0, 1336.0 },
+	{ ZT_TONE_DTMF_3, 697.0, 1477.0 },
+	{ ZT_TONE_DTMF_4, 770.0, 1209.0 },
+	{ ZT_TONE_DTMF_5, 770.0, 1336.0 },
+	{ ZT_TONE_DTMF_6, 770.0, 1477.0 },
+	{ ZT_TONE_DTMF_7, 852.0, 1209.0 },
+	{ ZT_TONE_DTMF_8, 852.0, 1336.0 },
+	{ ZT_TONE_DTMF_9, 852.0, 1477.0 },
+	{ ZT_TONE_DTMF_s, 941.0, 1209.0 },
+	{ ZT_TONE_DTMF_p, 941.0, 1477.0 },
+	{ ZT_TONE_DTMF_A, 697.0, 1633.0 },
+	{ ZT_TONE_DTMF_B, 770.0, 1633.0 },
+	{ ZT_TONE_DTMF_C, 852.0, 1633.0 },
+	{ ZT_TONE_DTMF_D, 941.0, 1633.0 },
+	{ 0, 0, 0 }
+};
+ 
+static struct mf_tone mf_dial[] = {
+	{ ZT_TONE_MF_0, 1300.0, 1500.0 },
+	{ ZT_TONE_MF_1, 700.0, 900.0 },
+	{ ZT_TONE_MF_2, 700.0, 1100.0 },
+	{ ZT_TONE_MF_3, 900.0, 1100.0 },
+	{ ZT_TONE_MF_4, 700.0, 1300.0 },
+	{ ZT_TONE_MF_5, 900.0, 1300.0 },
+	{ ZT_TONE_MF_6, 1100.0, 1300.0 },
+	{ ZT_TONE_MF_7, 700.0, 1500.0 },
+	{ ZT_TONE_MF_8, 900.0, 1500.0 },
+	{ ZT_TONE_MF_9, 1100.0, 1500.0 },
+	{ ZT_TONE_MF_s, 1100.0, 1700.0 },	/* KP */
+	{ ZT_TONE_MF_p, 1500.0, 1700.0 },	/* ST */
+	{ ZT_TONE_MF_A, 900.0, 1700.0 },	/* ST' */
+	{ ZT_TONE_MF_B, 1300.0, 1700.0 },	/* ST'' */
+	{ ZT_TONE_MF_C, 700.0, 1700.0 },	/* ST''' */
+	{ 0, 0, 0 }
+};
+
+static int build_mf_tones(void *data, int size, int *count, struct mf_tone *tone, int low_tone_level, int high_tone_level)
+{
+	struct zt_tone_def *td;
+	float gain;
+	int used = 0;
+
+	while (tone->tone) {
+		if (size < sizeof(*td)) {
+			fprintf(stderr, "Not enough space for samples\n");
+			return -1;
+		}
+		td = data;
+		data += sizeof(*td);
+		used += sizeof(*td);
+		size -= sizeof(*td);
+		td->tone = tone->tone;
+		*count += 1;
+
+		/* Bring it down 6 dBm */
+		gain = pow(10.0, (low_tone_level - 3.14) / 20.0) * 65536.0 / 2.0;
+		td->fac1 = 2.0 * cos(2.0 * M_PI * (tone->f1 / 8000.0)) * 32768.0;
+		td->init_v2_1 = sin(-4.0 * M_PI * (tone->f1 / 8000.0)) * gain;
+		td->init_v3_1 = sin(-2.0 * M_PI * (tone->f1 / 8000.0)) * gain;
+		
+		gain = pow(10.0, (high_tone_level - 3.14) / 20.0) * 65536.0 / 2.0;
+		td->fac2 = 2.0 * cos(2.0 * M_PI * (tone->f2 / 8000.0)) * 32768.0;
+		td->init_v2_2 = sin(-4.0 * M_PI * (tone->f2 / 8000.0)) * gain;
+		td->init_v3_2 = sin(-2.0 * M_PI * (tone->f2 / 8000.0)) * gain;
+
+		tone++;
+	}
+
+	return used;
+}
 
 int tone_zone_register_zone(int fd, struct tone_zone *z)
 {
 	char buf[MAX_SIZE];
 	int res;
-	int count=0;
+	int count = 0;
 	int x;
-	int used = 0;
-	int iopenedit = 0;
 	int space = MAX_SIZE;
-	char *ptr = buf;
+	void *ptr = buf;
+	int iopenedit = 1;
 	struct zt_tone_def_header *h;
+
+	h = ptr;
+	ptr += sizeof(*h);
+	space -= sizeof(*h);
+	h->zone = z->zone;
+
+	strncpy(h->name, z->description, sizeof(h->name) - 1);
+
+	for (x = 0; x < ZT_MAX_CADENCE; x++) 
+		h->ringcadence[x] = z->ringcadence[x];
+
+	for (x = 0; x < ZT_TONE_MAX; x++) {
+		if (!strlen(z->tones[x].data))
+			continue;
+
+#if 0
+		printf("Tone: %d, string: %s\n", z->tones[x].toneid, z->tones[x].data);
+#endif			
+		if ((res = build_tone(ptr, space, &z->tones[x], &count)) < 0) {
+			fprintf(stderr, "Tone %d not built.\n", x);
+			return -1;
+		}
+		ptr += res;
+		space -= res;
+	}
+
+	if ((res = build_mf_tones(ptr, space, &count, dtmf_dial, z->dtmf_low_level, z->dtmf_high_level)) < 0) {
+		fprintf(stderr, "Could not build DTMF tones.\n");
+		return -1;
+	}
+	ptr += res;
+	space -= res;
+
+	if ((res = build_mf_tones(ptr, space, &count, mf_dial, z->mf_level, z->mf_level)) < 0) {
+		fprintf(stderr, "Could not build MF tones.\n");
+		return -1;
+	}
+	ptr += res;
+	space -= res;
+
+	h->count = count;
+
 	if (fd < 0) {
-		fd = open(DEFAULT_ZT_DEV, O_RDWR);
-		iopenedit=1;
-		if (fd < 0) {
+		if ((fd = open(DEFAULT_ZT_DEV, O_RDWR)) < 0) {
 			fprintf(stderr, "Unable to open %s and fd not provided\n", DEFAULT_ZT_DEV);
 			return -1;
 		}
-	}
-	h = (struct zt_tone_def_header *)ptr;
-	ptr += sizeof(struct zt_tone_def_header);
-	space -= sizeof(struct zt_tone_def_header);
-	used += sizeof(struct zt_tone_def_header);
-	/*
-	 * Fill in ring cadence 
-	 */
-	for (x=0;x<ZT_MAX_CADENCE;x++) 
-		h->ringcadence[x] = z->ringcadence[x];
-	/* Put in an appropriate method for a kernel ioctl */
-	for (x=0;x<ZT_TONE_MAX;x++) {
-		if (strlen(z->tones[x].data)) {
-			/* It's a real tone */
-#if 0
-			printf("Tone: %d, string: %s\n", z->tones[x].toneid, z->tones[x].data);
-#endif			
-			res = build_tone(ptr, space, &z->tones[x], &count);
-			if (res < 0) {
-				fprintf(stderr, "Tone not built.\n");
-				if (iopenedit)
-					close(fd);
-				return -1;
-			}
-			ptr += res;
-			used += res;
-			space -= res;
-		}
-	}
-	h->count = count;
-	h->zone = z->zone;
-	strncpy(h->name, z->description, sizeof(h->name));
+		iopenedit = 1;
+	}
+
 	x = z->zone;
-	ioctl(fd, ZT_FREEZONE, &x);
-	res = ioctl(fd, ZT_LOADZONE, h);
-	if (res) 
+	if ((res = ioctl(fd, ZT_FREEZONE, &x))) {
+		fprintf(stderr, "ioctl(ZT_FREEZONE) failed: %s\n", strerror(errno));
+		return res;
+	}
+
+#if defined(TONEZONE_DRIVER)
+	dump_tone_zone(h, MAX_SIZE - space);
+#endif
+
+	if ((res = ioctl(fd, ZT_LOADZONE, h))) {
 		fprintf(stderr, "ioctl(ZT_LOADZONE) failed: %s\n", strerror(errno));
+		return res;
+	}
+
 	if (iopenedit)
 		close(fd);
+
 	return res;
 }
 
@@ -328,7 +431,7 @@
 	int res = -1;
 	int zone;
 
-#if 0
+#if 1
 	fprintf(stderr, "Playing tone %d (%s) on %d\n", tone, tone_zone_tone_name(tone), fd);
 #endif
 	if (fd > -1) {

Modified: uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.h
URL: http://svn.digium.com/view/aadk/uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.h?view=diff&rev=685&r1=684&r2=685
==============================================================================
--- uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.h (original)
+++ uClinux/trunk/uClinux-dist/lib/libtonezone/tonezone.h Mon Dec 31 10:27:06 2007
@@ -41,11 +41,16 @@
 };
 
 struct tone_zone {
-	int zone;					/* Zone number */
+	int zone;				/* Zone number */
 	char country[10];			/* Country code */
-	char description[40];		/* Description */
+	char description[40];			/* Description */
 	int ringcadence[ZT_MAX_CADENCE];	/* Ring cadence */
 	struct tone_zone_sound tones[ZT_TONE_MAX];
+	int dtmf_high_level;			/* Power level of high frequency component
+						   of DTMF, expressed in dBm0. */
+	int dtmf_low_level;			/* Power level of low frequency component
+						   of DTMF, expressed in dBm0. */
+	int mf_level;				/* Power level of MF, expressed in dBm0. */
 };
 
 extern struct tone_zone builtin_zones[];

Modified: uClinux/trunk/uClinux-dist/lib/libtonezone/zonedata.c
URL: http://svn.digium.com/view/aadk/uClinux/trunk/uClinux-dist/lib/libtonezone/zonedata.c?view=diff&rev=685&r1=684&r2=685
==============================================================================
--- uClinux/trunk/uClinux-dist/lib/libtonezone/zonedata.c (original)
+++ uClinux/trunk/uClinux-dist/lib/libtonezone/zonedata.c Mon Dec 31 10:27:06 2007
@@ -25,527 +25,866 @@
  */
 #include "tonezone.h"
 
-struct tone_zone builtin_zones[]  =
+struct tone_zone builtin_zones[] =
 {
-	{ 0, "us", "United States / North America", { 2000, 4000 }, 
-	  {
-		  { ZT_TONE_DIALTONE, "350+440" },
-		  { ZT_TONE_BUSY, "480+620/500,0/500" },
-		  { ZT_TONE_RINGTONE, "440+480/2000,0/4000" },
-		  { ZT_TONE_CONGESTION, "480+620/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "440/300,0/10000" },
-		  { ZT_TONE_DIALRECALL, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,0" },
-		  { ZT_TONE_STUTTER, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-	  },
-	},
-	{ 1, "au", "Australia", {  400, 200, 400, 2000 },
-	  {
-		  { ZT_TONE_DIALTONE, "413+438" },		
-		  { ZT_TONE_BUSY, "425/375,0/375" },
-		  { ZT_TONE_RINGTONE, "413+438/400,0/200,413+438/400,0/2000" },
-		  /* XXX Congestion: Should reduce by 10 db every other cadence XXX */
-		  { ZT_TONE_CONGESTION, "425/375,0/375,420/375,8/375" }, 
-		  { ZT_TONE_CALLWAIT, "425/100,0/200,425/200,0/4400" },
-		  { ZT_TONE_DIALRECALL, "413+428" },
-		  { ZT_TONE_RECORDTONE, "!425/1000,!0/15000,425/360,0/15000" },
-		  { ZT_TONE_INFO, "425/2500,0/500" },
-		  { ZT_TONE_STUTTER, "413+438/100,0/40" },
-	  },
-	},
-	{ 2, "fr", "France", { 1500, 3500 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  /* Dialtone can also be 440+330 */
-		  { ZT_TONE_DIALTONE, "440" },
-		  { ZT_TONE_BUSY, "440/500,0/500" },
-		  { ZT_TONE_RINGTONE, "440/1500,0/3500" },
-		  /* CONGESTION - not specified */
-		  { ZT_TONE_CONGESTION, "440/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "440/300,0/10000" },
-		  /* DIALRECALL - not specified */
-		  { ZT_TONE_DIALRECALL, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,0" },
-		  { ZT_TONE_STUTTER, "!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,440" },
-	  },
-	},
-	{ 3, "nl", "Netherlands", { 1000, 4000 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  /* Most of these 425's can also be 450's */
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/500,0/500" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" },
-		  { ZT_TONE_CONGESTION, "425/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "425/500,0/9500" },
-		  /* DIALRECALL - not specified */
-		  { ZT_TONE_DIALRECALL, "!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "950/330,1400/330,1800/330,0/1000" },
-		  { ZT_TONE_STUTTER, "425/500,0/50" },
-	  },
-	},
-	{ 4, "uk", "United Kingdom", { 400, 200, 400, 2000 },
-	  {
-		  /* From British Telecom SIN350 v1.2 */
-		  { ZT_TONE_DIALTONE, "350+440" },
-		  { ZT_TONE_BUSY, "400/375,0/375" },
-		  { ZT_TONE_RINGTONE, "400+450/400,0/200,400+450/400,0/2000" },
-		  { ZT_TONE_CONGESTION, "400/400,0/350,400/225,0/525" },
-		  { ZT_TONE_CALLWAIT, "400/100,0/4000" },
-		  { ZT_TONE_DIALRECALL, "350+440" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/60000" },
-		  { ZT_TONE_INFO, "950/330,0/15,1400/330,0/15,1800/330,0/1000" },
-		  { ZT_TONE_STUTTER, "350+440/750,440/750" },
-	  },
-	},
-	{ 5, "fi", "Finland", { 1000, 4000 },
-	  {
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/300,0/300" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" },
-		  { ZT_TONE_CONGESTION, "425/200,0/200" },
-		  { ZT_TONE_CALLWAIT, "425/150,0/150,425/150,0/8000" },
-		  { ZT_TONE_DIALRECALL, "425/650,0/25" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "950/650,0/325,950/325,0/30,1400/1300,0/2600" },
-		  { ZT_TONE_STUTTER, "425/650,0/25" },
-	  },
-	},
-	{ 6,"es","Spain", { 1500, 3000},
-	  {
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/200,0/200" },
-		  { ZT_TONE_RINGTONE, "425/1500,0/3000" },
-		  { ZT_TONE_CONGESTION, "425/200,0/200,425/200,0/200,425/200,0/600" },
-		  { ZT_TONE_CALLWAIT, "425/175,0/175,425/175,0/3500" },
-		  { ZT_TONE_DIALRECALL, "!425/200,!0/200,!425/200,!0/200,!425/200,!0/200,425" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "950/330,0/1000" },
-		  { ZT_TONE_STUTTER, "425/500,0/50" },
-	  },
-	},
-	{ 7,"jp","Japan", { 1000, 2000 },
-	  {
-		  { ZT_TONE_DIALTONE, "400" },
-		  { ZT_TONE_BUSY, "400/500,0/500" },
-		  { ZT_TONE_RINGTONE, "400+15/1000,0/2000" },
-		  { ZT_TONE_CONGESTION, "400/500,0/500" },
-		  { ZT_TONE_CALLWAIT, "400+16/500,0/8000" },
-		  { ZT_TONE_DIALRECALL, "!400/200,!0/200,!400/200,!0/200,!400/200,!0/200,400" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,0" },
-		  { ZT_TONE_STUTTER, "!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400" },
-	  },
-	},
-	{ 8,"no","Norway", { 1000, 4000 },
-	  {
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/500,0/500" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" },
-		  { ZT_TONE_CONGESTION, "425/200,0/200" },
-		  { ZT_TONE_CALLWAIT, "425/200,0/600,425/200,0/10000" },
-		  { ZT_TONE_DIALRECALL, "470/400,425/400" },
-		  { ZT_TONE_RECORDTONE, "1400/400,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0" },
-		  { ZT_TONE_STUTTER, "470/400,425/400" },
-	  },
-	},
-	{ 9, "at", "Austria", { 1000, 5000 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  { ZT_TONE_DIALTONE, "420" },
-		  { ZT_TONE_BUSY, "420/400,0/400" },
-		  { ZT_TONE_RINGTONE, "420/1000,0/5000" },
-		  { ZT_TONE_CONGESTION, "420/200,0/200" },
-		  { ZT_TONE_CALLWAIT, "420/40,0/1960" },
-		  { ZT_TONE_DIALRECALL, "420" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/80,0/14920" },
-		  { ZT_TONE_INFO, "950/330,1450/330,1850/330,0/1000" },
-		  { ZT_TONE_STUTTER, "380+420" },
-	  },
-	},
-	{ 10, "nz", "New Zealand", { 400, 200, 400, 2000 },
-	  {
-		  { ZT_TONE_DIALTONE, "400" },
-		  { ZT_TONE_BUSY, "400/500,0/500" },
-		  { ZT_TONE_RINGTONE, "400+450/400,0/200,400+450/400,0/2000" },
-		  { ZT_TONE_CONGESTION, "400/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "400/250,0/250,400/250,0/3250" },
-		  { ZT_TONE_DIALRECALL, "!400/100!0/100,!400/100,!0/100,!400/100,!0/100,400" },
-		  { ZT_TONE_RECORDTONE, "1400/425,0/15000" },
-		  { ZT_TONE_INFO, "400/750,0/100,400/750,0/100,400/750,0/100,400/750,0/400" },
-		  { ZT_TONE_STUTTER, "!400/100!0/100,!400/100,!0/100,!400/100,!0/100,!400/100!0/100,!400/100,!0/100,!400/100,!0/100,400" },
-	  },
-	},
-	{ 11,"it","Italy", { 1000, 4000 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  { ZT_TONE_DIALTONE, "425/200,0/200,425/600,0/1000" },
-		  { ZT_TONE_BUSY, "425/500,0/500" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" },
-		  { ZT_TONE_CONGESTION, "425/200,0/200" },
-		  { ZT_TONE_CALLWAIT, "425/400,0/100,425/250,0/100,425/150,0/14000" },
-		  { ZT_TONE_DIALRECALL, "470/400,425/400" },
-		  { ZT_TONE_RECORDTONE, "1400/400,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0" },
-		  { ZT_TONE_STUTTER, "470/400,425/400" },
-	  },
-	},
-	{ 12, "us-old", "United States Circa 1950/ North America", { 2000, 4000 }, 
-	  {
-		  { ZT_TONE_DIALTONE, "600*120" },
-		  { ZT_TONE_BUSY, "500*100/500,0/500" },
-		  { ZT_TONE_RINGTONE, "420*40/2000,0/4000" },
-		  { ZT_TONE_CONGESTION, "500*100/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "440/300,0/10000" },
-		  { ZT_TONE_DIALRECALL, "!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,0" },
-		  { ZT_TONE_STUTTER, "!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120" },
-	  },
-	},
-	{ 13, "gr", "Greece", { 1000, 4000 },
-	  {
-		  { ZT_TONE_DIALTONE, "425/200,0/300,425/700,0/800" },
-		  { ZT_TONE_BUSY, "425/300,0/300" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" },
-		  { ZT_TONE_CONGESTION, "425/200,0/200" },
-		  { ZT_TONE_CALLWAIT, "425/150,0/150,425/150,0/8000" },
-		  { ZT_TONE_DIALRECALL, "425/650,0/25" },
-		  { ZT_TONE_RECORDTONE, "1400/400,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0" },
-		  { ZT_TONE_STUTTER, "425/650,0/25" },
-	  },
-	},
-	{ 14, "tw", "Taiwan", { 1000, 4000 },
-	  {
-		  { ZT_TONE_DIALTONE, "350+440" },
-		  { ZT_TONE_BUSY, "480+620/500,0/500" },
-		  { ZT_TONE_RINGTONE, "440+480/1000,0/2000" },
-		  { ZT_TONE_CONGESTION, "480+620/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "350+440/250,0/250,350+440/250,0/3250" },
-		  { ZT_TONE_DIALRECALL, "300/1500,0/500" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,0" },
-		  { ZT_TONE_STUTTER, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-	  },
-	},
-	{ 15, "cl", "Chile", { 1000, 3000 }, 
-	  {
-		  { ZT_TONE_DIALTONE, "400" },
-		  { ZT_TONE_BUSY, "400/500,0/500" },
-		  { ZT_TONE_RINGTONE, "400/1000,0/3000" },
-		  { ZT_TONE_CONGESTION, "400/200,0/200" },
-		  { ZT_TONE_CALLWAIT, "400/250,0/8750" },
-		  { ZT_TONE_DIALRECALL, "!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/333,!1400/333,!1800/333,0" },
-		  { ZT_TONE_STUTTER, "!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400" },
-	  },
-	},
-	{ 16, "se", "Sweden", { 1000, 5000 }, 
-	  {
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/250,0/250" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/5000" },
-		  { ZT_TONE_CONGESTION, "425/250,0/750" },
-		  { ZT_TONE_CALLWAIT, "425/200,0/500,425/200,0/9100" },
-		  { ZT_TONE_DIALRECALL, "!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,"
-		    "!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,"
-		    "!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,"
-		    "!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,"
-		    "!950/332,!0/24,!1400/332,!0/24,!1800/332,0" },
-		  /*{ ZT_TONE_STUTTER, "425/320,0/20" },              Real swedish standard, not used for now */
-		  { ZT_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" },
-	  },
-	},
-	{ 17, "be", "Belgium", { 1000, 3000 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/500,0/500" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/3000" },
-		  { ZT_TONE_CONGESTION, "425/167,0/167" },
-		  { ZT_TONE_CALLWAIT, "1400/175,0/175,1400/175,0/3500" },
-		  /* DIALRECALL - not specified */
-		  { ZT_TONE_DIALRECALL, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "900/330,1400/330,1800/330,0/1000" },
-		  { ZT_TONE_STUTTER, "425/1000,0/250" },
-	  },
-	},
-	{ 18, "sg", "Singapore", { 400, 200, 400, 2000 },
-	  {
-		  /* Reference: http://www.ida.gov.sg/idaweb/doc/download/I397/ida_ts_pstn1_i4r2.pdf */
-		  { ZT_TONE_DIALTONE,   "425" },
-		  { ZT_TONE_BUSY,       "425/750,0/750" },
-		  { ZT_TONE_RINGTONE,   "425*24/400,0/200,425*24/400,0/2000" },
-		  { ZT_TONE_CONGESTION, "425/250,0/250" },
-		  { ZT_TONE_CALLWAIT,   "425*24/300,0/200,425*24/300,0/3200" },
-		  /* DIALRECALL - not specified - use repeating Holding Tone A,B*/
-		  { ZT_TONE_DIALRECALL, "425*24/500,0/500,425/500,0/2500" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO,       "950/330,1400/330,1800/330,0/1000" },
-		  { ZT_TONE_STUTTER,    "!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,425" },
-	  },
-	},
-	{ 19, "il", "Israel", { 1000, 3000 },
-	  {
-		  { ZT_TONE_DIALTONE, "414" },
-		  { ZT_TONE_BUSY, "414/500,0/500" },
-		  { ZT_TONE_RINGTONE, "414/1000,0/3000" },
-		  { ZT_TONE_CONGESTION, "414/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "414/100,0/100,414/100,0/100,414/600,0/3000" },
-		  { ZT_TONE_DIALRECALL, "!414/100,!0/100,!414/100,!0/100,!414/100,!0/100,414" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "1000/330,1400/330,1800/330,0/1000" },
-		  { ZT_TONE_STUTTER, "!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,414" },
-	  },
-	},
-	{ 20, "br", "Brazil", { 1000, 4000 },
-	  {
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/250,0/250" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" },
-		  { ZT_TONE_CONGESTION, "425/250,0/250,425/750,0/250" },
-		  { ZT_TONE_CALLWAIT, "425/50,0/1000" },
-		  { ZT_TONE_DIALRECALL, "350+440" },
-		  { ZT_TONE_RECORDTONE, "425/250,0/250" },
-		  { ZT_TONE_INFO, "950/330,1400/330,1800/330" },
-		  { ZT_TONE_STUTTER, "350+440" } },
-	},
-	{ 21, "hu", "Hungary", { 1250, 3750 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/300,0/300" },
-		  { ZT_TONE_RINGTONE, "425/1250,0/3750" },
-		  { ZT_TONE_CONGESTION, "425/300,0/300" },
-		  { ZT_TONE_CALLWAIT, "425/40,0/1960" },
-		  { ZT_TONE_DIALRECALL, "425+450" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/400,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0" },
-		  { ZT_TONE_STUTTER, "350+375+400" },
-	  },
-	},
-	{ 22, "lt", "Lithuania", { 1000, 4000 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/350,0/350" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" },
-		  { ZT_TONE_CONGESTION, "425/200,0/200" },
-		  { ZT_TONE_CALLWAIT, "425/150,0/150,425/150,0/4000" },
-		  /* DIALRECALL - not specified */
-		  { ZT_TONE_DIALRECALL, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0" },
-		  /* STUTTER not specified */
-		  { ZT_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" },
-	  },
-	},
-	{ 23, "pl", "Poland", { 1000, 4000 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/500,0/500" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" },
-		  { ZT_TONE_CONGESTION, "425/500,0/500" },
-		  { ZT_TONE_CALLWAIT, "425/150,0/150,425/150,0/4000" },
-		  /* DIALRECALL - not specified */
-		  { ZT_TONE_DIALRECALL, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,0" },
-		  /* STUTTER not specified */
-		  { ZT_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" },
-	  },
-	},
-	{ 24, "za", "South Africa", { 400, 200, 400, 2000 },
-	  {
-		  { ZT_TONE_DIALTONE, "400*33" },
-		  { ZT_TONE_BUSY, "400/500,0/500" },
-		  { ZT_TONE_RINGTONE, "400*33/400,0/200,400*33/400,0/2000" },
-		  { ZT_TONE_CONGESTION, "400/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "400*33/250,0/250,400*33/250,0/250,400*33/250,0/250,400*33/250,0/250" },
-		  /* DIALRECALL - not specified */
-		  { ZT_TONE_DIALRECALL, "350+440" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0" },
-		  /* STUTTER not specified */
-		  { ZT_TONE_STUTTER, "!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,400*33" },
-	  },
-	},
-	{ 25, "pt", "Portugal", { 1000, 5000 },
-	  {
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/500,0/500" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/5000" },
-		  { ZT_TONE_CONGESTION, "425/200,0/200" },
-		  { ZT_TONE_CALLWAIT, "425/200,425/200,425/200,0/5000" },
-		  /* DIALRECALL - not specified */
-		  { ZT_TONE_DIALRECALL, "425/1000,0/200" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "950/330,1400/330,1800/330,0/1000" },
-		  /* STUTTER not specified */
-		  { ZT_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" },
-	  },
-	},
-	{ 26, "ee", "Estonia", { 1000, 4000 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  { ZT_TONE_DIALTONE, "425" }, 
-		  { ZT_TONE_BUSY, "425/300,0/300" }, 
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" }, 
-		  { ZT_TONE_CONGESTION, "425/200,0/200" },
-		  { ZT_TONE_CALLWAIT, "950/650,0/325,950/325,0/30,1400/1300,0/2600" }, 
-		  /* DIALRECALL - not specified */
-		  { ZT_TONE_DIALRECALL, "425/650,0/25" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "950/0,0/325,950/325,0/30,1400/1300,0/2600" },
-		  /* STUTTER not specified */
-		  { ZT_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" },
-	  },
-	},
-	{ 27, "mx", "Mexico", { 2000, 4000 }, 
-	  {
-		  { ZT_TONE_DIALTONE, "425" },
-		  { ZT_TONE_BUSY, "425/250,0/250" },
-		  { ZT_TONE_RINGTONE, "425/1000,0/4000" },
-		  { ZT_TONE_CONGESTION, "425/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "425/200,0/600,425/200,0/10000" },
-		  { ZT_TONE_DIALRECALL, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  { ZT_TONE_INFO, "950/330,0/30,1400/330,0/30,1800/330,0/1000" },
-		  { ZT_TONE_STUTTER, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-	  },
-	},
-	{ 28, "in", "India", {  400, 200, 400, 2000 }, 
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */
-		  { ZT_TONE_DIALTONE, "400*25" },
-		  { ZT_TONE_BUSY, "400/750,0/750" },
-		  { ZT_TONE_RINGTONE, "400*25/400,0/200,400*25/400,0/2000" },
-		  { ZT_TONE_CONGESTION, "400/250,0/250" },
-		  { ZT_TONE_CALLWAIT, "400/200,0/100,400/200,0/7500" },
-		  /* DIALRECALL - not specified */
-		  { ZT_TONE_DIALRECALL, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-		  /* RECORDTONE - not specified */
-		  { ZT_TONE_RECORDTONE, "1400/500,0/15000" },
-		  /* INFO - not specified */
-		  { ZT_TONE_INFO, "!950/330,!1400/330,!1800/330,0/1000" },
-		  /* STUTTER - not specified */
-		  { ZT_TONE_STUTTER, "!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" },
-	  },
-	},
-	{ 29, "de", "Germany", { 1000, 4000 },
-	  {
-		  /* Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf */

[... 7284 lines stripped ...]



More information about the aadk-commits mailing list