gsmopen: fix FS-4150 , deleted a spurious new_inbound_channel(), checked all gsmopen->fs->sip machinery, then I got problems with audio(only in gsmopen->fs->sip not the reverse): I was baffled by a snom bug for a week, then I tested with Xlite and worked, so I grow suspicious, I updated snom320 firmware and worked. Hate those things
This commit is contained in:
parent
40fff624df
commit
f28ba547df
|
@ -1093,9 +1093,9 @@ read:
|
||||||
DEBUGA_PBX("just sent GSMOPEN_CONTROL_ANSWER\n", GSMOPEN_P_LOG);
|
DEBUGA_PBX("just sent GSMOPEN_CONTROL_ANSWER\n", GSMOPEN_P_LOG);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
tech_pvt->interface_state = GSMOPEN_STATE_UP;
|
||||||
|
DEBUGA_PBX("just interface_state UP\n", GSMOPEN_P_LOG);
|
||||||
}
|
}
|
||||||
//tech_pvt->interface_state = GSMOPEN_STATE_UP;
|
|
||||||
//DEBUGA_PBX("just interface_state UP\n", GSMOPEN_P_LOG);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_calling) == 0)) {
|
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_calling) == 0)) {
|
||||||
|
@ -2528,7 +2528,6 @@ int gsmopen_answer(private_t *tech_pvt)
|
||||||
DEBUGA_PBX("call answered\n", GSMOPEN_P_LOG);
|
DEBUGA_PBX("call answered\n", GSMOPEN_P_LOG);
|
||||||
res = 0;
|
res = 0;
|
||||||
|
|
||||||
new_inbound_channel(tech_pvt);
|
|
||||||
if (tech_pvt->owner) {
|
if (tech_pvt->owner) {
|
||||||
DEBUGA_PBX("going to send GSMOPEN_STATE_UP\n", GSMOPEN_P_LOG);
|
DEBUGA_PBX("going to send GSMOPEN_STATE_UP\n", GSMOPEN_P_LOG);
|
||||||
ast_setstate(tech_pvt->owner, GSMOPEN_STATE_UP);
|
ast_setstate(tech_pvt->owner, GSMOPEN_STATE_UP);
|
||||||
|
@ -2549,13 +2548,10 @@ int gsmopen_ring(private_t *tech_pvt)
|
||||||
switch_core_session_t *session = NULL;
|
switch_core_session_t *session = NULL;
|
||||||
switch_channel_t *channel = NULL;
|
switch_channel_t *channel = NULL;
|
||||||
|
|
||||||
if (option_debug) {
|
|
||||||
//DEBUGA_PBX("ENTERING FUNC\n", GSMOPEN_P_LOG);
|
|
||||||
}
|
|
||||||
|
|
||||||
session = switch_core_session_locate(tech_pvt->session_uuid_str);
|
session = switch_core_session_locate(tech_pvt->session_uuid_str);
|
||||||
if (session) {
|
if (session) {
|
||||||
switch_core_session_rwunlock(session);
|
switch_core_session_rwunlock(session);
|
||||||
|
//DEBUGA_PBX("got session, let's exit\n", GSMOPEN_P_LOG);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2570,8 +2566,9 @@ int gsmopen_ring(private_t *tech_pvt)
|
||||||
switch_core_session_queue_indication(session, SWITCH_MESSAGE_INDICATE_RINGING);
|
switch_core_session_queue_indication(session, SWITCH_MESSAGE_INDICATE_RINGING);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
switch_channel_mark_ring_ready(channel);
|
switch_channel_mark_ring_ready(channel);
|
||||||
|
DEBUGA_GSMOPEN("switch_channel_mark_ring_ready(channel);\n", GSMOPEN_P_LOG);
|
||||||
} else {
|
} else {
|
||||||
ERRORA("no session\n", GSMOPEN_P_LOG);
|
ERRORA("no channel\n", GSMOPEN_P_LOG);
|
||||||
}
|
}
|
||||||
switch_core_session_rwunlock(session);
|
switch_core_session_rwunlock(session);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2579,9 +2576,6 @@ int gsmopen_ring(private_t *tech_pvt)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (option_debug) {
|
|
||||||
DEBUGA_PBX("EXITING FUNC\n", GSMOPEN_P_LOG);
|
|
||||||
}
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -296,7 +296,9 @@ switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *se
|
||||||
|
|
||||||
switch_core_timer_sync(&tech_pvt->timer_write);
|
switch_core_timer_sync(&tech_pvt->timer_write);
|
||||||
|
|
||||||
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_clear_flag(tech_pvt, TFLAG_HANGUP);
|
switch_clear_flag(tech_pvt, TFLAG_HANGUP);
|
||||||
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
DEBUGA_GSMOPEN("gsmopen_codec SUCCESS\n", GSMOPEN_P_LOG);
|
DEBUGA_GSMOPEN("gsmopen_codec SUCCESS\n", GSMOPEN_P_LOG);
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -474,7 +476,9 @@ static switch_status_t channel_on_init(switch_core_session_t *session)
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
switch_assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
//ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name);
|
//ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name);
|
||||||
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_set_flag(tech_pvt, TFLAG_IO);
|
switch_set_flag(tech_pvt, TFLAG_IO);
|
||||||
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
|
|
||||||
/* Move channel's state machine to ROUTING. This means the call is trying
|
/* Move channel's state machine to ROUTING. This means the call is trying
|
||||||
to get from the initial start where the call because, to the point
|
to get from the initial start where the call because, to the point
|
||||||
|
@ -549,9 +553,11 @@ static switch_status_t channel_on_hangup(switch_core_session_t *session)
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name);
|
DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name);
|
||||||
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_clear_flag(tech_pvt, TFLAG_IO);
|
switch_clear_flag(tech_pvt, TFLAG_IO);
|
||||||
switch_clear_flag(tech_pvt, TFLAG_VOICE);
|
switch_clear_flag(tech_pvt, TFLAG_VOICE);
|
||||||
switch_set_flag(tech_pvt, TFLAG_HANGUP);
|
switch_set_flag(tech_pvt, TFLAG_HANGUP);
|
||||||
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
|
|
||||||
gsmopen_hangup(tech_pvt);
|
gsmopen_hangup(tech_pvt);
|
||||||
|
|
||||||
|
@ -621,18 +627,18 @@ static switch_status_t channel_kill_channel(switch_core_session_t *session, int
|
||||||
switch (sig) {
|
switch (sig) {
|
||||||
case SWITCH_SIG_KILL:
|
case SWITCH_SIG_KILL:
|
||||||
DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_KILL\n", GSMOPEN_P_LOG, switch_channel_get_name(channel));
|
DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_KILL\n", GSMOPEN_P_LOG, switch_channel_get_name(channel));
|
||||||
//switch_mutex_lock(tech_pvt->flag_mutex);
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_clear_flag(tech_pvt, TFLAG_IO);
|
switch_clear_flag(tech_pvt, TFLAG_IO);
|
||||||
switch_clear_flag(tech_pvt, TFLAG_VOICE);
|
switch_clear_flag(tech_pvt, TFLAG_VOICE);
|
||||||
switch_set_flag(tech_pvt, TFLAG_HANGUP);
|
switch_set_flag(tech_pvt, TFLAG_HANGUP);
|
||||||
//switch_mutex_unlock(tech_pvt->flag_mutex);
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
break;
|
break;
|
||||||
case SWITCH_SIG_BREAK:
|
case SWITCH_SIG_BREAK:
|
||||||
DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_BREAK\n", GSMOPEN_P_LOG, switch_channel_get_name(channel));
|
DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_BREAK\n", GSMOPEN_P_LOG, switch_channel_get_name(channel));
|
||||||
//switch_set_flag(tech_pvt, TFLAG_BREAK);
|
//switch_set_flag(tech_pvt, TFLAG_BREAK);
|
||||||
//switch_mutex_lock(tech_pvt->flag_mutex);
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_set_flag(tech_pvt, TFLAG_BREAK);
|
switch_set_flag(tech_pvt, TFLAG_BREAK);
|
||||||
//switch_mutex_unlock(tech_pvt->flag_mutex);
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -728,7 +734,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
|
||||||
samples = 320;
|
samples = 320;
|
||||||
memcpy(tech_pvt->read_frame.data, buffer2, 320);
|
memcpy(tech_pvt->read_frame.data, buffer2, 320);
|
||||||
} else {
|
} else {
|
||||||
|
if (samples != 0) {
|
||||||
DEBUGA_GSMOPEN("read less than 320, samples=%d\n", GSMOPEN_P_LOG, samples);
|
DEBUGA_GSMOPEN("read less than 320, samples=%d\n", GSMOPEN_P_LOG, samples);
|
||||||
|
}
|
||||||
if (tech_pvt->buffer2_full) {
|
if (tech_pvt->buffer2_full) {
|
||||||
memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320);
|
memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320);
|
||||||
tech_pvt->buffer2_full = 0;
|
tech_pvt->buffer2_full = 0;
|
||||||
|
@ -744,10 +752,14 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
|
||||||
|
|
||||||
*frame = &tech_pvt->read_frame;
|
*frame = &tech_pvt->read_frame;
|
||||||
|
|
||||||
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_set_flag(tech_pvt, TFLAG_VOICE);
|
switch_set_flag(tech_pvt, TFLAG_VOICE);
|
||||||
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
|
|
||||||
if (samples != 320) {
|
if (samples != 320) {
|
||||||
|
if (samples != 0) {
|
||||||
DEBUGA_GSMOPEN("samples=%d, goto cng\n", GSMOPEN_P_LOG, samples);
|
DEBUGA_GSMOPEN("samples=%d, goto cng\n", GSMOPEN_P_LOG, samples);
|
||||||
|
}
|
||||||
goto cng;
|
goto cng;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -770,15 +782,17 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
|
||||||
switch_channel_queue_dtmf(channel, &dtmf);
|
switch_channel_queue_dtmf(channel, &dtmf);
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
NOTICA("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", GSMOPEN_P_LOG, digit_str, (unsigned int) new_dtmf_timestamp,
|
DEBUGA_GSMOPEN("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", GSMOPEN_P_LOG, digit_str, (unsigned int) new_dtmf_timestamp,
|
||||||
(unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp));
|
(unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp));
|
||||||
tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp;
|
tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (switch_test_flag(tech_pvt, TFLAG_IO)) {
|
while (switch_test_flag(tech_pvt, TFLAG_IO)) {
|
||||||
if (switch_test_flag(tech_pvt, TFLAG_BREAK)) {
|
if (switch_test_flag(tech_pvt, TFLAG_BREAK)) {
|
||||||
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_clear_flag(tech_pvt, TFLAG_BREAK);
|
switch_clear_flag(tech_pvt, TFLAG_BREAK);
|
||||||
DEBUGA_GSMOPEN("CHANNEL READ FRAME goto CNG\n", GSMOPEN_P_LOG);
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
|
DEBUGA_GSMOPEN("BREAK: CHANNEL READ FRAME goto CNG\n", GSMOPEN_P_LOG);
|
||||||
goto cng;
|
goto cng;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -788,7 +802,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
|
||||||
}
|
}
|
||||||
|
|
||||||
if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) {
|
if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) {
|
||||||
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_clear_flag(tech_pvt, TFLAG_VOICE);
|
switch_clear_flag(tech_pvt, TFLAG_VOICE);
|
||||||
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
if (!tech_pvt->read_frame.datalen) {
|
if (!tech_pvt->read_frame.datalen) {
|
||||||
DEBUGA_GSMOPEN("CHANNEL READ CONTINUE\n", GSMOPEN_P_LOG);
|
DEBUGA_GSMOPEN("CHANNEL READ CONTINUE\n", GSMOPEN_P_LOG);
|
||||||
continue;
|
continue;
|
||||||
|
@ -799,11 +815,10 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
|
||||||
switch_swap_linear((int16_t *) (*frame)->data, (int) (*frame)->datalen / 2);
|
switch_swap_linear((int16_t *) (*frame)->data, (int) (*frame)->datalen / 2);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
//WARNINGA("HERE\n", GSMOPEN_P_LOG);
|
//DEBUGA_GSMOPEN("HERE\n", GSMOPEN_P_LOG);
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
WARNINGA("HERE\n", GSMOPEN_P_LOG);
|
|
||||||
DEBUGA_GSMOPEN("CHANNEL READ no TFLAG_VOICE\n", GSMOPEN_P_LOG);
|
DEBUGA_GSMOPEN("CHANNEL READ no TFLAG_VOICE\n", GSMOPEN_P_LOG);
|
||||||
return SWITCH_STATUS_FALSE;
|
return SWITCH_STATUS_FALSE;
|
||||||
|
|
||||||
|
@ -874,20 +889,23 @@ static switch_status_t channel_answer_channel(switch_core_session_t *session)
|
||||||
switch_assert(tech_pvt != NULL);
|
switch_assert(tech_pvt != NULL);
|
||||||
|
|
||||||
//ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name);
|
//ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name);
|
||||||
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_set_flag(tech_pvt, TFLAG_IO);
|
switch_set_flag(tech_pvt, TFLAG_IO);
|
||||||
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
|
|
||||||
gsmopen_serial_answer(tech_pvt);
|
gsmopen_serial_answer(tech_pvt);
|
||||||
|
|
||||||
/* Move channel's state machine to ROUTING. This means the call is trying
|
|
||||||
to get from the initial start where the call because, to the point
|
|
||||||
where a destination has been identified. If the channel is simply
|
|
||||||
left in the initial state, nothing will happen. */
|
|
||||||
switch_channel_set_state(channel, CS_ROUTING);
|
|
||||||
switch_mutex_lock(globals.mutex);
|
switch_mutex_lock(globals.mutex);
|
||||||
globals.calls++;
|
globals.calls++;
|
||||||
|
|
||||||
switch_mutex_unlock(globals.mutex);
|
switch_mutex_unlock(globals.mutex);
|
||||||
DEBUGA_GSMOPEN("%s CHANNEL ANSWER %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session));
|
DEBUGA_GSMOPEN("%s CHANNEL ANSWER %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session));
|
||||||
|
|
||||||
|
|
||||||
|
if (channel) {
|
||||||
|
switch_channel_mark_answered(channel);
|
||||||
|
}
|
||||||
|
|
||||||
DEBUGA_GSMOPEN("ANSWERED! \n", GSMOPEN_P_LOG);
|
DEBUGA_GSMOPEN("ANSWERED! \n", GSMOPEN_P_LOG);
|
||||||
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
@ -907,9 +925,22 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s
|
||||||
switch (msg->message_id) {
|
switch (msg->message_id) {
|
||||||
case SWITCH_MESSAGE_INDICATE_ANSWER:
|
case SWITCH_MESSAGE_INDICATE_ANSWER:
|
||||||
{
|
{
|
||||||
|
DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_ANSWER\n", GSMOPEN_P_LOG, switch_channel_get_name(channel));
|
||||||
|
if(tech_pvt->interface_state != GSMOPEN_STATE_UP && tech_pvt->phone_callflow != CALLFLOW_CALL_ACTIVE){
|
||||||
DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id);
|
DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id);
|
||||||
channel_answer_channel(session);
|
channel_answer_channel(session);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SWITCH_MESSAGE_INDICATE_PROGRESS:
|
||||||
|
{
|
||||||
|
DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_PROGRESS\n", GSMOPEN_P_LOG, switch_channel_get_name(channel));
|
||||||
|
if(tech_pvt->interface_state != GSMOPEN_STATE_UP && tech_pvt->phone_callflow != CALLFLOW_CALL_ACTIVE){
|
||||||
|
DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id);
|
||||||
|
channel_answer_channel(session);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SWITCH_MESSAGE_INDICATE_AUDIO_SYNC:
|
case SWITCH_MESSAGE_INDICATE_AUDIO_SYNC:
|
||||||
|
|
||||||
|
@ -919,10 +950,21 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SWITCH_MESSAGE_INDICATE_TRANSFER:
|
||||||
|
DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_TRANSFER\n", GSMOPEN_P_LOG, switch_channel_get_name(channel));
|
||||||
|
break;
|
||||||
|
case SWITCH_MESSAGE_INDICATE_BRIDGE:
|
||||||
|
DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_BRIDGE\n", GSMOPEN_P_LOG, switch_channel_get_name(channel));
|
||||||
|
break;
|
||||||
|
case SWITCH_MESSAGE_INDICATE_TRANSCODING_NECESSARY:
|
||||||
|
DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_TRANSCODING_NECESSARY\n", GSMOPEN_P_LOG, switch_channel_get_name(channel));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
if(msg->message_id != SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC && msg->message_id != SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC_COMPLETE){
|
||||||
DEBUGA_GSMOPEN("MSG_ID=%d\n", GSMOPEN_P_LOG, msg->message_id);
|
DEBUGA_GSMOPEN("MSG_ID=%d\n", GSMOPEN_P_LOG, msg->message_id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1089,7 +1131,9 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
|
||||||
caller_profile = tech_pvt->caller_profile;
|
caller_profile = tech_pvt->caller_profile;
|
||||||
caller_profile->destination_number = rdest;
|
caller_profile->destination_number = rdest;
|
||||||
|
|
||||||
|
switch_mutex_lock(tech_pvt->flag_mutex);
|
||||||
switch_set_flag(tech_pvt, TFLAG_OUTBOUND);
|
switch_set_flag(tech_pvt, TFLAG_OUTBOUND);
|
||||||
|
switch_mutex_unlock(tech_pvt->flag_mutex);
|
||||||
switch_channel_set_state(channel, CS_INIT);
|
switch_channel_set_state(channel, CS_INIT);
|
||||||
gsmopen_call(tech_pvt, rdest, 30);
|
gsmopen_call(tech_pvt, rdest, 30);
|
||||||
switch_mutex_unlock(globals.mutex);
|
switch_mutex_unlock(globals.mutex);
|
||||||
|
@ -2029,11 +2073,8 @@ int new_inbound_channel(private_t *tech_pvt)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (channel) {
|
|
||||||
//switch_channel_mark_answered(channel);
|
|
||||||
}
|
|
||||||
|
|
||||||
DEBUGA_GSMOPEN("new_inbound_channel\n", GSMOPEN_P_LOG);
|
DEBUGA_GSMOPEN("EXITING new_inbound_channel\n", GSMOPEN_P_LOG);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2727,7 +2768,7 @@ void *gsmopen_do_gsmopenapi_thread_func(void *obj)
|
||||||
//FIXME }
|
//FIXME }
|
||||||
|
|
||||||
} else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_DIALING) {
|
} else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_DIALING) {
|
||||||
WARNINGA("WE'RE DIALING, let's take the earlymedia\n", GSMOPEN_P_LOG);
|
DEBUGA_GSMOPEN("WE'RE DIALING, let's take the earlymedia\n", GSMOPEN_P_LOG);
|
||||||
tech_pvt->interface_state = CALLFLOW_STATUS_EARLYMEDIA;
|
tech_pvt->interface_state = CALLFLOW_STATUS_EARLYMEDIA;
|
||||||
remote_party_is_early_media(tech_pvt);
|
remote_party_is_early_media(tech_pvt);
|
||||||
//new_inbound_channel(tech_pvt);
|
//new_inbound_channel(tech_pvt);
|
||||||
|
@ -2736,7 +2777,7 @@ void *gsmopen_do_gsmopenapi_thread_func(void *obj)
|
||||||
//FIXME }
|
//FIXME }
|
||||||
|
|
||||||
} else if (tech_pvt->interface_state == CALLFLOW_CALL_REMOTEANSWER) {
|
} else if (tech_pvt->interface_state == CALLFLOW_CALL_REMOTEANSWER) {
|
||||||
WARNINGA("REMOTE PARTY ANSWERED\n", GSMOPEN_P_LOG);
|
DEBUGA_GSMOPEN("REMOTE PARTY ANSWERED\n", GSMOPEN_P_LOG);
|
||||||
outbound_channel_answered(tech_pvt);
|
outbound_channel_answered(tech_pvt);
|
||||||
//new_inbound_channel(tech_pvt);
|
//new_inbound_channel(tech_pvt);
|
||||||
//FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) {
|
//FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) {
|
||||||
|
|
Loading…
Reference in New Issue