mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-25 06:00:36 +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 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_indicate(struct ast_channel *chan, int condition); | ||||
|  | ||||
| static const struct ast_channel_tech phone_tech = { | ||||
| 	.type = type, | ||||
| @@ -173,6 +174,7 @@ static const struct ast_channel_tech phone_tech = { | ||||
| 	.read = phone_read, | ||||
| 	.write = phone_write, | ||||
| 	.exception = phone_exception, | ||||
| 	.indicate = phone_indicate, | ||||
| 	.fixup = phone_fixup | ||||
| }; | ||||
|  | ||||
| @@ -189,11 +191,31 @@ static struct ast_channel_tech phone_tech_fxs = { | ||||
| 	.exception = phone_exception, | ||||
| 	.write_video = phone_write, | ||||
| 	.send_text = phone_send_text, | ||||
| 	.indicate = phone_indicate, | ||||
| 	.fixup = phone_fixup | ||||
| }; | ||||
|  | ||||
| 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) | ||||
| { | ||||
| 	struct phone_pvt *pvt = old->tech_pvt; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user