initial bits of conference control changes.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3548 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Michael Jerris 2006-12-05 22:58:26 +00:00
parent aa926a5b86
commit efa2322670
1 changed files with 47 additions and 0 deletions

View File

@ -71,10 +71,44 @@ static struct {
uint32_t threads;
} globals;
typedef enum {
CALLER_CONTROL_MUTE,
CALLER_CONTROL_DEAF_MUTE,
CALLER_CONTROL_ENERGY_UP,
CALLER_CONTROL_ENERGY_EQU_CONF,
CALLER_CONTROL_ENERGEY_DN,
CALLER_CONTROL_VOL_TALK_UP,
CALLER_CONTROL_VOL_TALK_ZERO,
CALLER_CONTROL_VOL_TALK_DN,
CALLER_CONTROL_VOL_LISTEN_UP,
CALLER_CONTROL_VOL_LISTEN_ZERO,
CALLER_CONTROL_VOL_LISTEN_DN,
CALLER_CONTROL_HANGUP,
CALLER_CONTROL_MENU,
CALLER_CONTROL_DIAL,
} caller_control_t;
/* forward declaration for conference_obj and caller_control */
struct conference_member;
typedef struct conference_member conference_member_t;
typedef struct caller_control_fn_table {
char *key;
char *digits;
caller_control_t action;
void (*handler)(conference_member_t *, void *);
} caller_control_fn_table_t;
typedef struct caller_control_actions {
caller_control_fn_table_t *fndesc;
void *data;
} caller_control_action_t;
typedef struct caller_control_menu_info {
switch_ivr_menu_t *stack;
char *name;
} caller_control_menu_info_t;
typedef enum {
MFLAG_RUNNING = (1 << 0),
MFLAG_CAN_SPEAK = (1 << 1),
@ -130,6 +164,7 @@ typedef struct conference_obj {
char *kicked_sound;
char *caller_id_name;
char *caller_id_number;
switch_ivr_digit_stream_parser_t *dtmf_parser;
char *pin;
char *pin_sound;
char *bad_pin_sound;
@ -198,6 +233,14 @@ typedef struct conference_record {
switch_memory_pool_t *pool;
} conference_record_t;
/* API command parser */
typedef struct api_command {
char *pname;
void *pfnapicmd;
int fntype;
char *psyntax;
} api_command_t;
/* Function Prototypes */
static uint32_t next_member_id(void);
static conference_relationship_t *member_get_relationship(conference_member_t *member, conference_member_t *other_member);
@ -233,6 +276,10 @@ static conference_obj_t *conference_new(char *name, switch_xml_t profile, switch
static switch_status_t chat_send(char *proto, char *from, char *to, char *subject, char *body, char *hint);
static void launch_conference_record_thread(conference_obj_t *conference, char *path);
typedef int (*conf_api_args_cmd_t)(conference_obj_t*, switch_stream_handle_t*, int, char**);
typedef int (*conf_api_member_cmd_t)(conference_member_t*, switch_stream_handle_t*, void*);
typedef int (*conf_api_text_cmd_t)(conference_obj_t*, switch_stream_handle_t*, char*);
static void conference_member_itterator(conference_obj_t *conference,
switch_stream_handle_t *stream,
int (*pfncallback)(conference_obj_t*, conference_member_t*, int, switch_stream_handle_t*, void*),