From 7a60aff3b1a1533a702ec9da43986ddf91ba4939 Mon Sep 17 00:00:00 2001
From: Olle Johansson <oej@edvina.net>
Date: Sun, 4 Jun 2006 11:47:51 +0000
Subject: [PATCH] Make tonezone writeable in CHANNEL() (from my old
 func_tonezone.c)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@32018 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 funcs/func_channel.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/funcs/func_channel.c b/funcs/func_channel.c
index 66ea0d4650..dd51bb0a69 100644
--- a/funcs/func_channel.c
+++ b/funcs/func_channel.c
@@ -108,7 +108,14 @@ static int func_channel_write(struct ast_channel *chan, char *function,
 		locked_string_field_set(chan, language, value);
 	else if (!strcasecmp(data, "musicclass"))
 		locked_string_field_set(chan, musicclass, value);
-	else if (!strcasecmp(data, "callgroup"))
+	else if (!strcasecmp(data, "tonezone")) {
+		struct tone_zone *new_zone;
+		if (!(new_zone = ast_get_indication_zone(data))) {
+			ast_log(LOG_ERROR, "Unknown country code for tonezone. Check indications.conf for available country codes.\n");
+			ret = -1;	
+		} else 
+			chan->zone = new_zone;
+	} else if (!strcasecmp(data, "callgroup"))
 		chan->callgroup = ast_get_group(data);
 	else if (!strcasecmp(data, "txgain")) {
 		sscanf(value, "%hhd", &gainset);
@@ -149,7 +156,7 @@ static struct ast_custom_function channel_function = {
 		"R/W	musicclass 		class (from musiconhold.conf) for hold music\n"
 		"R/W	rxgain			set rxgain level on channel drivers that support it\n"
 		"R/O	state			state for channel\n"
-		"R/O	tonezone 		zone for indications played\n"
+		"R/W	tonezone 		zone for indications played\n"
 		"R/W	txgain			set txgain level on channel drivers that support it\n"
 		"R/O	videonativeformat 	format used natively for video\n"
 		"\n"
-- 
GitLab