mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-28 15:11:12 +00:00
Update chan_phone to indicate FLASH properley (#4935)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7947 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -160,6 +160,7 @@ static int phone_write(struct ast_channel *ast, struct ast_frame *frame);
|
|||||||
static struct ast_frame *phone_exception(struct ast_channel *ast);
|
static struct ast_frame *phone_exception(struct ast_channel *ast);
|
||||||
static int phone_send_text(struct ast_channel *ast, const char *text);
|
static int phone_send_text(struct ast_channel *ast, const char *text);
|
||||||
static int phone_fixup(struct ast_channel *old, struct ast_channel *new);
|
static int phone_fixup(struct ast_channel *old, struct ast_channel *new);
|
||||||
|
static int phone_indicate(struct ast_channel *chan, int condition);
|
||||||
|
|
||||||
static const struct ast_channel_tech phone_tech = {
|
static const struct ast_channel_tech phone_tech = {
|
||||||
.type = type,
|
.type = type,
|
||||||
@@ -173,6 +174,7 @@ static const struct ast_channel_tech phone_tech = {
|
|||||||
.read = phone_read,
|
.read = phone_read,
|
||||||
.write = phone_write,
|
.write = phone_write,
|
||||||
.exception = phone_exception,
|
.exception = phone_exception,
|
||||||
|
.indicate = phone_indicate,
|
||||||
.fixup = phone_fixup
|
.fixup = phone_fixup
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -189,11 +191,31 @@ static struct ast_channel_tech phone_tech_fxs = {
|
|||||||
.exception = phone_exception,
|
.exception = phone_exception,
|
||||||
.write_video = phone_write,
|
.write_video = phone_write,
|
||||||
.send_text = phone_send_text,
|
.send_text = phone_send_text,
|
||||||
|
.indicate = phone_indicate,
|
||||||
.fixup = phone_fixup
|
.fixup = phone_fixup
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct ast_channel_tech *cur_tech;
|
static struct ast_channel_tech *cur_tech;
|
||||||
|
|
||||||
|
static int phone_indicate(struct ast_channel *chan, int condition)
|
||||||
|
{
|
||||||
|
struct phone_pvt *p = chan->tech_pvt;
|
||||||
|
int res=-1;
|
||||||
|
ast_log(LOG_DEBUG, "Requested indication %d on channel %s\n", condition, chan->name);
|
||||||
|
switch(condition) {
|
||||||
|
case AST_CONTROL_FLASH:
|
||||||
|
ioctl(p->fd, IXJCTL_PSTN_SET_STATE, PSTN_ON_HOOK);
|
||||||
|
usleep(320000);
|
||||||
|
ioctl(p->fd, IXJCTL_PSTN_SET_STATE, PSTN_OFF_HOOK);
|
||||||
|
p->lastformat = -1;
|
||||||
|
res = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ast_log(LOG_WARNING, "Condition %d is not supported on channel %s\n", condition, chan->name);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
static int phone_fixup(struct ast_channel *old, struct ast_channel *new)
|
static int phone_fixup(struct ast_channel *old, struct ast_channel *new)
|
||||||
{
|
{
|
||||||
struct phone_pvt *pvt = old->tech_pvt;
|
struct phone_pvt *pvt = old->tech_pvt;
|
||||||
|
|||||||
Reference in New Issue
Block a user