Simplify some code in sig_analog.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@286905 65c4cc65-6c06-0410-ace0-fbb531ad65f3
certified/1.8.6
Richard Mudgett 15 years ago
parent a6c9f0aadc
commit cbb2327e6d

@ -2810,14 +2810,19 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
case ANALOG_SIG_SF_FEATD: case ANALOG_SIG_SF_FEATD:
case ANALOG_SIG_SF_FEATDMF: case ANALOG_SIG_SF_FEATDMF:
case ANALOG_SIG_SF_FEATB: case ANALOG_SIG_SF_FEATB:
if (ast->_state == AST_STATE_PRERING) { switch (ast->_state) {
case AST_STATE_PRERING:
ast_setstate(ast, AST_STATE_RING); ast_setstate(ast, AST_STATE_RING);
} /* Fall through */
if ((ast->_state == AST_STATE_DOWN) || (ast->_state == AST_STATE_RING)) { case AST_STATE_DOWN:
case AST_STATE_RING:
ast_debug(1, "Ring detected\n"); ast_debug(1, "Ring detected\n");
p->subs[index].f.frametype = AST_FRAME_CONTROL; p->subs[index].f.frametype = AST_FRAME_CONTROL;
p->subs[index].f.subclass.integer = AST_CONTROL_RING; p->subs[index].f.subclass.integer = AST_CONTROL_RING;
} else if (p->outgoing && ((ast->_state == AST_STATE_RINGING) || (ast->_state == AST_STATE_DIALING))) { break;
case AST_STATE_RINGING:
case AST_STATE_DIALING:
if (p->outgoing) {
ast_debug(1, "Line answered\n"); ast_debug(1, "Line answered\n");
if (analog_check_confirmanswer(p)) { if (analog_check_confirmanswer(p)) {
p->subs[index].f.frametype = AST_FRAME_NULL; p->subs[index].f.frametype = AST_FRAME_NULL;
@ -2827,12 +2832,17 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
p->subs[index].f.subclass.integer = AST_CONTROL_ANSWER; p->subs[index].f.subclass.integer = AST_CONTROL_ANSWER;
ast_setstate(ast, AST_STATE_UP); ast_setstate(ast, AST_STATE_UP);
} }
} else if (ast->_state != AST_STATE_RING) { break;
}
/* Fall through */
default:
ast_log(LOG_WARNING, "Ring/Off-hook in strange state %d on channel %d\n", ast->_state, p->channel); ast_log(LOG_WARNING, "Ring/Off-hook in strange state %d on channel %d\n", ast->_state, p->channel);
break;
} }
break; break;
default: default:
ast_log(LOG_WARNING, "Don't know how to handle ring/off hook for signalling %d\n", p->sig); ast_log(LOG_WARNING, "Don't know how to handle ring/off hook for signalling %d\n", p->sig);
break;
} }
break; break;
#ifdef ANALOG_EVENT_RINGBEGIN #ifdef ANALOG_EVENT_RINGBEGIN

Loading…
Cancel
Save