messaging stuff
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1902 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
7abfa425bd
commit
7712c6637c
|
@ -30,6 +30,9 @@
|
|||
*
|
||||
*/
|
||||
#include <libteletone.h>
|
||||
#define SMAX 32767
|
||||
#define SMIN -32768
|
||||
#define normalize_to_16bit(n) if (n > SMAX) n = SMAX; else if (n < SMIN) n = SMIN;
|
||||
|
||||
|
||||
|
||||
|
@ -163,6 +166,7 @@ int teletone_mux_tones(teletone_generation_session_t *ts, teletone_tone_map_t *m
|
|||
for (i = 0; i < freqlen; i++) {
|
||||
sample += ((teletone_process_t) 2 * (ts->volume > 0 ? ts->volume : 1) * cos(tones[i] * ts->samples * period));
|
||||
}
|
||||
normalize_to_16bit(sample);
|
||||
ts->buffer[ts->samples] = (teletone_audio_t)sample;
|
||||
|
||||
for (c = 1; c < ts->channels; c++) {
|
||||
|
|
|
@ -704,129 +704,134 @@ static void conference_loop(conference_member_t *member)
|
|||
switch_size_t file_sample_len = samples;
|
||||
char *digit;
|
||||
char msg[512];
|
||||
switch_event_t *event;
|
||||
|
||||
if (switch_core_session_dequeue_event(member->session, &event) == SWITCH_STATUS_SUCCESS) {
|
||||
switch_event_destroy(&event);
|
||||
}
|
||||
|
||||
if (switch_channel_has_dtmf(channel)) {
|
||||
switch_channel_dequeue_dtmf(channel, dtmf, sizeof(dtmf));
|
||||
}
|
||||
|
||||
for (digit = dtmf; *digit; digit++) {
|
||||
switch(*digit) {
|
||||
case '0':
|
||||
if (switch_test_flag(member, MFLAG_CAN_SPEAK)) {
|
||||
switch_clear_flag_locked(member, MFLAG_CAN_SPEAK | MFLAG_CAN_HEAR);
|
||||
if (member->conference->muted_sound) {
|
||||
conference_member_play_file(member, member->conference->muted_sound, 0);
|
||||
for (digit = dtmf; *digit; digit++) {
|
||||
switch(*digit) {
|
||||
case '0':
|
||||
if (switch_test_flag(member, MFLAG_CAN_SPEAK)) {
|
||||
switch_clear_flag_locked(member, MFLAG_CAN_SPEAK | MFLAG_CAN_HEAR);
|
||||
if (member->conference->muted_sound) {
|
||||
conference_member_play_file(member, member->conference->muted_sound, 0);
|
||||
} else {
|
||||
snprintf(msg, sizeof(msg), "Muted");
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
}
|
||||
} else {
|
||||
snprintf(msg, sizeof(msg), "Muted");
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
switch_set_flag_locked(member, MFLAG_CAN_SPEAK);
|
||||
if (member->conference->unmuted_sound) {
|
||||
conference_member_play_file(member, member->conference->unmuted_sound, 0);
|
||||
} else {
|
||||
snprintf(msg, sizeof(msg), "Un-Muted");
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
switch_set_flag_locked(member, MFLAG_CAN_SPEAK);
|
||||
if (member->conference->unmuted_sound) {
|
||||
conference_member_play_file(member, member->conference->unmuted_sound, 0);
|
||||
break;
|
||||
case '*':
|
||||
if (switch_test_flag(member, MFLAG_CAN_SPEAK)) {
|
||||
switch_clear_flag_locked(member, MFLAG_CAN_SPEAK|MFLAG_CAN_HEAR);
|
||||
if (member->conference->muted_sound) {
|
||||
conference_member_play_file(member, member->conference->muted_sound, 0);
|
||||
} else {
|
||||
snprintf(msg, sizeof(msg), "Muted");
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
}
|
||||
} else {
|
||||
snprintf(msg, sizeof(msg), "Un-Muted");
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
switch_set_flag_locked(member, MFLAG_CAN_SPEAK|MFLAG_CAN_HEAR);
|
||||
if (member->conference->unmuted_sound) {
|
||||
conference_member_play_file(member, member->conference->unmuted_sound, 0);
|
||||
} else {
|
||||
snprintf(msg, sizeof(msg), "UN-Muted");
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '*':
|
||||
if (switch_test_flag(member, MFLAG_CAN_SPEAK)) {
|
||||
switch_clear_flag_locked(member, MFLAG_CAN_SPEAK|MFLAG_CAN_HEAR);
|
||||
if (member->conference->muted_sound) {
|
||||
conference_member_play_file(member, member->conference->muted_sound, 0);
|
||||
} else {
|
||||
snprintf(msg, sizeof(msg), "Muted");
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '9':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->energy_level += 100;
|
||||
if (member->energy_level > 1200) {
|
||||
member->energy_level = 1200;
|
||||
}
|
||||
} else {
|
||||
switch_set_flag_locked(member, MFLAG_CAN_SPEAK|MFLAG_CAN_HEAR);
|
||||
if (member->conference->unmuted_sound) {
|
||||
conference_member_play_file(member, member->conference->unmuted_sound, 0);
|
||||
} else {
|
||||
snprintf(msg, sizeof(msg), "UN-Muted");
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '8':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->energy_level = member->conference->energy_level;
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '7':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->energy_level -= 100;
|
||||
if (member->energy_level < 0) {
|
||||
member->energy_level = 0;
|
||||
}
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '3':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_out_level++;
|
||||
normalize_volume(member->volume_out_level);
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '2':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_out_level = 0;
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '1':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_out_level--;
|
||||
normalize_volume(member->volume_out_level);
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '6':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_in_level++;
|
||||
normalize_volume(member->volume_in_level);
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '5':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_in_level = 0;
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '4':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_in_level--;
|
||||
normalize_volume(member->volume_in_level);
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '#':
|
||||
switch_clear_flag_locked(member, MFLAG_RUNNING);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case '9':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->energy_level += 100;
|
||||
if (member->energy_level > 1200) {
|
||||
member->energy_level = 1200;
|
||||
}
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '8':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->energy_level = member->conference->energy_level;
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '7':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->energy_level -= 100;
|
||||
if (member->energy_level < 0) {
|
||||
member->energy_level = 0;
|
||||
}
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '3':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_out_level++;
|
||||
normalize_volume(member->volume_out_level);
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '2':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_out_level = 0;
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '1':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_out_level--;
|
||||
normalize_volume(member->volume_out_level);
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '6':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_in_level++;
|
||||
normalize_volume(member->volume_in_level);
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '5':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_in_level = 0;
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '4':
|
||||
switch_mutex_lock(member->flag_mutex);
|
||||
member->volume_in_level--;
|
||||
normalize_volume(member->volume_in_level);
|
||||
switch_mutex_unlock(member->flag_mutex);
|
||||
snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
|
||||
conference_member_say(member->conference, member, msg, 0);
|
||||
break;
|
||||
case '#':
|
||||
switch_clear_flag_locked(member, MFLAG_RUNNING);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1509,9 +1509,12 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi
|
|||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "from", from);
|
||||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "subject", subject);
|
||||
switch_event_add_body(event, msg);
|
||||
|
||||
if (switch_core_session_queue_event(tech_pvt->session, &event) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "delivery-failure", "true");
|
||||
switch_event_fire(&event);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -1130,7 +1130,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_receive_event(switch_core_se
|
|||
SWITCH_DECLARE(switch_status_t) switch_core_session_queue_event(switch_core_session_t *session, switch_event_t **event)
|
||||
|
||||
{
|
||||
switch_status_t status = SWITCH_STATUS_SUCCESS;
|
||||
switch_status_t status = SWITCH_STATUS_FALSE;
|
||||
|
||||
assert(session != NULL);
|
||||
|
||||
|
@ -1138,10 +1138,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_queue_event(switch_core_sess
|
|||
switch_queue_create(&session->event_queue, SWITCH_EVENT_QUEUE_LEN, session->pool);
|
||||
}
|
||||
|
||||
if ((status = (switch_status_t) switch_queue_push(session->event_queue, *event) == SWITCH_STATUS_SUCCESS)) {
|
||||
*event = NULL;
|
||||
}
|
||||
|
||||
if (session->event_queue) {
|
||||
if (switch_queue_trypush(session->event_queue, *event) == SWITCH_STATUS_SUCCESS) {
|
||||
*event = NULL;
|
||||
status = SWITCH_STATUS_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue