mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-15 08:29:45 +00:00
Merge remote branch 'smgfs/master'
This commit is contained in:
commit
4e020e2f23
@ -380,6 +380,7 @@ void sngisdn_snd_setup_ack(ftdm_channel_t *ftdmchan);
|
|||||||
void sngisdn_snd_proceed(ftdm_channel_t *ftdmchan, ftdm_sngisdn_progind_t prog_ind);
|
void sngisdn_snd_proceed(ftdm_channel_t *ftdmchan, ftdm_sngisdn_progind_t prog_ind);
|
||||||
void sngisdn_snd_progress(ftdm_channel_t *ftdmchan, ftdm_sngisdn_progind_t prog_ind);
|
void sngisdn_snd_progress(ftdm_channel_t *ftdmchan, ftdm_sngisdn_progind_t prog_ind);
|
||||||
void sngisdn_snd_alert(ftdm_channel_t *ftdmchan, ftdm_sngisdn_progind_t prog_ind);
|
void sngisdn_snd_alert(ftdm_channel_t *ftdmchan, ftdm_sngisdn_progind_t prog_ind);
|
||||||
|
void sngisdn_snd_notify_req(ftdm_channel_t *ftdmchan);
|
||||||
void sngisdn_snd_connect(ftdm_channel_t *ftdmchan);
|
void sngisdn_snd_connect(ftdm_channel_t *ftdmchan);
|
||||||
void sngisdn_snd_disconnect(ftdm_channel_t *ftdmchan);
|
void sngisdn_snd_disconnect(ftdm_channel_t *ftdmchan);
|
||||||
void sngisdn_snd_release(ftdm_channel_t *ftdmchan, uint8_t glare);
|
void sngisdn_snd_release(ftdm_channel_t *ftdmchan, uint8_t glare);
|
||||||
@ -480,7 +481,7 @@ ftdm_status_t set_facility_ie(ftdm_channel_t *ftdmchan, FacilityStr *facilityStr
|
|||||||
ftdm_status_t set_facility_ie_str(ftdm_channel_t *ftdmchan, uint8_t *data, uint8_t *data_len);
|
ftdm_status_t set_facility_ie_str(ftdm_channel_t *ftdmchan, uint8_t *data, uint8_t *data_len);
|
||||||
ftdm_status_t set_user_to_user_ie(ftdm_channel_t *ftdmchan, UsrUsr *usrUsr);
|
ftdm_status_t set_user_to_user_ie(ftdm_channel_t *ftdmchan, UsrUsr *usrUsr);
|
||||||
ftdm_status_t set_cause_ie(ftdm_channel_t *ftdmchan, CauseDgn *causeDgn);
|
ftdm_status_t set_cause_ie(ftdm_channel_t *ftdmchan, CauseDgn *causeDgn);
|
||||||
|
ftdm_status_t set_not_ind_ie(ftdm_channel_t *ftdmchan, NotInd *notInd);
|
||||||
|
|
||||||
ftdm_status_t sngisdn_add_var(sngisdn_chan_data_t *sngisdn_info, const char* var, const char* val);
|
ftdm_status_t sngisdn_add_var(sngisdn_chan_data_t *sngisdn_info, const char* var, const char* val);
|
||||||
ftdm_status_t sngisdn_add_raw_data(sngisdn_chan_data_t *sngisdn_info, uint8_t* data, ftdm_size_t data_len);
|
ftdm_status_t sngisdn_add_raw_data(sngisdn_chan_data_t *sngisdn_info, uint8_t* data, ftdm_size_t data_len);
|
||||||
|
@ -361,8 +361,9 @@ void sngisdn_process_cnst_ind (sngisdn_event_data_t *sngisdn_event)
|
|||||||
(evntType == MI_CALLPROC)?"PROCEED":
|
(evntType == MI_CALLPROC)?"PROCEED":
|
||||||
(evntType == MI_PROGRESS)?"PROGRESS":
|
(evntType == MI_PROGRESS)?"PROGRESS":
|
||||||
(evntType == MI_SETUPACK)?"SETUP ACK":
|
(evntType == MI_SETUPACK)?"SETUP ACK":
|
||||||
(evntType == MI_INFO)?"INFO":"UNKNOWN",
|
(evntType == MI_NOTIFY)?"NOTIFY":
|
||||||
suId, suInstId, spInstId, ces);
|
(evntType == MI_INFO)?"INFO":"UNKNOWN",
|
||||||
|
suId, suInstId, spInstId, ces);
|
||||||
|
|
||||||
switch(evntType) {
|
switch(evntType) {
|
||||||
case MI_CALLPROC:
|
case MI_CALLPROC:
|
||||||
@ -493,7 +494,10 @@ void sngisdn_process_cnst_ind (sngisdn_event_data_t *sngisdn_event)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case MI_NOTIFY:
|
||||||
|
ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Processing NOTIFY (suId:%u suInstId:%u spInstId:%u)\n", suId, suInstId, spInstId);
|
||||||
|
/* Do nothing */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Unhandled STATUS event\n");
|
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Unhandled STATUS event\n");
|
||||||
|
@ -317,11 +317,7 @@ void sngisdn_snd_info_req(ftdm_channel_t *ftdmchan)
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(&cnStEvnt, 0, sizeof(cnStEvnt));
|
memset(&cnStEvnt, 0, sizeof(cnStEvnt));
|
||||||
//ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending INFO REQ\n");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "Sending INFO REQ (suId:%d dchan:%d ces:%d)\n", signal_data->cc_id, signal_data->dchan_id, sngisdn_info->ces);
|
ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "Sending INFO REQ (suId:%d dchan:%d ces:%d)\n", signal_data->cc_id, signal_data->dchan_id, sngisdn_info->ces);
|
||||||
|
|
||||||
if (sng_isdn_con_status(signal_data->cc_id, 0, 0, &cnStEvnt, MI_INFO, signal_data->dchan_id, sngisdn_info->ces)) {
|
if (sng_isdn_con_status(signal_data->cc_id, 0, 0, &cnStEvnt, MI_INFO, signal_data->dchan_id, sngisdn_info->ces)) {
|
||||||
@ -330,6 +326,32 @@ void sngisdn_snd_info_req(ftdm_channel_t *ftdmchan)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sngisdn_snd_notify_req(ftdm_channel_t *ftdmchan)
|
||||||
|
{
|
||||||
|
CnStEvnt cnStEvnt;
|
||||||
|
|
||||||
|
sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*) ftdmchan->call_data;
|
||||||
|
sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data;
|
||||||
|
|
||||||
|
if (!sngisdn_info->suInstId || !sngisdn_info->spInstId) {
|
||||||
|
ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Sending NOTIFY, but no call data, aborting (suId:%d suInstId:%u spInstId:%u)\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId);
|
||||||
|
sngisdn_set_flag(sngisdn_info, FLAG_LOCAL_ABORT);
|
||||||
|
ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(&cnStEvnt, 0, sizeof(cnStEvnt));
|
||||||
|
|
||||||
|
set_not_ind_ie(ftdmchan, &cnStEvnt.notInd);
|
||||||
|
|
||||||
|
ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "Sending NOTIFY (suId:%d suInstId:%u spInstId:%u dchan:%d ces:%d)\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, signal_data->dchan_id, sngisdn_info->ces);
|
||||||
|
|
||||||
|
if(sng_isdn_con_status(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId,&cnStEvnt, MI_NOTIFY, signal_data->dchan_id, sngisdn_info->ces)) {
|
||||||
|
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused NOTIFY request\n");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void sngisdn_snd_status_enq(ftdm_channel_t *ftdmchan)
|
void sngisdn_snd_status_enq(ftdm_channel_t *ftdmchan)
|
||||||
{
|
{
|
||||||
|
@ -168,7 +168,8 @@ void sngisdn_rcv_cnst_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, C
|
|||||||
(evntType == MI_CALLPROC)?"PROCEED":
|
(evntType == MI_CALLPROC)?"PROCEED":
|
||||||
(evntType == MI_PROGRESS)?"PROGRESS":
|
(evntType == MI_PROGRESS)?"PROGRESS":
|
||||||
(evntType == MI_SETUPACK)?"SETUP ACK":
|
(evntType == MI_SETUPACK)?"SETUP ACK":
|
||||||
(evntType == MI_INFO)?"INFO":"UNKNOWN",
|
(evntType == MI_NOTIFY)?"NOTIFY":
|
||||||
|
(evntType == MI_INFO)?"INFO":"UNKNOWN",
|
||||||
suId, suInstId, spInstId, ces);
|
suId, suInstId, spInstId, ces);
|
||||||
|
|
||||||
sngisdn_event = ftdm_malloc(sizeof(*sngisdn_event));
|
sngisdn_event = ftdm_malloc(sizeof(*sngisdn_event));
|
||||||
|
@ -1021,6 +1021,14 @@ ftdm_status_t set_restart_ind_ie(ftdm_channel_t *ftdmchan, RstInd *rstInd)
|
|||||||
return FTDM_SUCCESS;
|
return FTDM_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ftdm_status_t set_not_ind_ie(ftdm_channel_t *ftdmchan, NotInd *notInd)
|
||||||
|
{
|
||||||
|
notInd->eh.pres = PRSNT_NODEF;
|
||||||
|
notInd->notDesc.pres = PRSNT_NODEF;
|
||||||
|
notInd->notDesc.val = 0x71; /* Call information event */
|
||||||
|
return FTDM_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
void sngisdn_t3_timeout(void *p_sngisdn_info)
|
void sngisdn_t3_timeout(void *p_sngisdn_info)
|
||||||
{
|
{
|
||||||
sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*)p_sngisdn_info;
|
sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*)p_sngisdn_info;
|
||||||
|
@ -737,8 +737,16 @@ uint32_t sngisdn_decode_ie(char *str, uint32_t *str_len, uint8_t current_codeset
|
|||||||
calling_subaddr_string, (j-1), get_code_2_str(type, dcodQ931TypeOfSubaddressTable), type);
|
calling_subaddr_string, (j-1), get_code_2_str(type, dcodQ931TypeOfSubaddressTable), type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PROT_Q931_IE_REDIRECTION_NUMBER:
|
|
||||||
case PROT_Q931_IE_NOTIFICATION_IND:
|
case PROT_Q931_IE_NOTIFICATION_IND:
|
||||||
|
{
|
||||||
|
uint8_t desc;
|
||||||
|
|
||||||
|
desc = get_bits(OCTET(3),1,7);
|
||||||
|
*str_len += sprintf(&str[*str_len], "%s (%d)\n",
|
||||||
|
get_code_2_str(desc, dcodQ931NotificationIndTable), desc);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PROT_Q931_IE_REDIRECTION_NUMBER:
|
||||||
case PROT_Q931_IE_DATE_TIME:
|
case PROT_Q931_IE_DATE_TIME:
|
||||||
case PROT_Q931_IE_INFORMATION_REQUEST:
|
case PROT_Q931_IE_INFORMATION_REQUEST:
|
||||||
case PROT_Q931_IE_SIGNAL:
|
case PROT_Q931_IE_SIGNAL:
|
||||||
|
@ -591,4 +591,9 @@ struct code2str dcodQ931AssocInfoTable[] = {
|
|||||||
{ -1, "Invalid"},
|
{ -1, "Invalid"},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct code2str dcodQ931NotificationIndTable[] = {
|
||||||
|
{ 0x71, "Call Information/event"},
|
||||||
|
{ -1, "Invalid"},
|
||||||
|
};
|
||||||
#endif /* __FTMOD_SANGOMA_ISDN_TRACE_H__ */
|
#endif /* __FTMOD_SANGOMA_ISDN_TRACE_H__ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user