}; \
int state_name_num = sizeof(state_name) / sizeof(char *);
+int vbox_refresh(struct lcr_timer *timer, void *instance, int index);
+
extern class EndpointAppPBX *apppbx_first;
/* structure of an EndpointAppPBX */
~EndpointAppPBX();
class EndpointAppPBX *next;
- int handler(void);
int e_hold; /* is this endpoint on hold ? */
char e_tone[256]; /* save tone for resuming ports */
struct caller_info e_callerinfo; /* information about the caller */
struct dialing_info e_dialinginfo; /* information about dialing */
struct connect_info e_connectinfo; /* information about connected line */
- struct redir_info e_redirinfo; /* info on redirection (to the calling user) */
- struct capa_info e_capainfo; /* info on l3,l2 capacity */
+ struct redir_info e_redirinfo; /* info about redirection (to the calling user) */
+ struct capa_info e_capainfo; /* info about l3,l2 capacity */
+ struct rtp_info e_rtpinfo; /* info about rtp port forwarding and payload type */
time_t e_start, e_stop; /* time */
int e_origin; /* origin of call 0=incoming 1=outgoing */
struct route_ruleset *e_ruleset; /* current ruleset pointer (NULL=no ruleset) */
struct route_rule *e_rule; /* current rule pointer (NULL=no rule) */
struct route_action *e_action; /* current action pointer (NULL=no action) */
- double e_action_timeout; /* when to timeout */
int e_rule_nesting; /* 'goto'/'menu' recrusion counter to prevent infinie loops */
- double e_match_timeout; /* set for the next possible timeout time */
struct route_action *e_match_to_action; /* what todo when timeout */
char *e_match_to_extdialing; /* dialing after matching timeout rule */
int e_select; /* current selection for various selector options */
/* action */
char e_dialing_queue[32]; /* holds dialing during setup state */
- double e_redial; /* time when redialing 0=off */
- double e_powerdialing; /* on disconnect redial! 0=off, >0=redial time, -1=on */
double e_powerdelay; /* delay when to redial */
int e_powercount; /* power count */
int e_powerlimit; /* power limit */
- double e_callback; /* time when callback (when idle reached) 0=off */
- signed int e_cfnr_release; /* time stamp when to do the release for call forward on no response */
- signed int e_cfnr_call; /* time stamp when to do the call for call forward on no response */
- signed int e_password_timeout; /* time stamp when to do the release for password timeout */
+ struct lcr_timer e_action_timeout;
+ struct lcr_timer e_match_timeout;
/* port relation */
int e_multipoint_cause; /* cause value of disconnected multiport calls (highest priority) */
char e_cbcaller[256]; /* extension for the epoint which calls back */
char e_cbto[32]; /* override callerid to call back to */
struct caller_info e_callbackinfo; /* information about the callback caller */
+ struct lcr_timer e_redial_timeout;
+ int e_powerdial_on;
+ struct lcr_timer e_powerdial_timeout;
+ struct lcr_timer e_cfnr_timeout;
+ struct lcr_timer e_cfnr_call_timeout;
+ struct lcr_timer e_callback_timeout;
+ struct lcr_timer e_password_timeout;
/* dtmf stuff */
int e_connectedmode; /* if the port should stay connected if the enpoint disconnects or releases (usefull for callback) */
int e_vbox_state; /* state of vbox during playback */
int e_vbox_menu; /* currently selected menu using '*' and '#' */
char e_vbox_display[128]; /* current display message */
- int e_vbox_display_refresh; /* display must be refreshed du to change */
+ struct lcr_timer e_vbox_refresh; /* display must be refreshed du to change */
int e_vbox_counter; /* current playback counter in seconds */
int e_vbox_counter_max; /* size of file in seconds */
int e_vbox_counter_last; /* temp variable to recognise a change in seconds */
/* efi */
int e_efi_state; /* current spoken sample */
int e_efi_digit; /* current spoken digit */
-
+
+#ifdef WITH_CRYPT
/* crypt states and vars */
int e_crypt; /* current user level crypt state */
int e_crypt_state; /* current crypt manager state */
int e_crypt_rsa_iqmp_len;
int e_crypt_keyengine_busy; /* current job and busy state */
int e_crypt_keyengine_return; /* return */
+ struct lcr_timer e_crypt_handler; /* poll timer for crypt events */
+#endif
/* messages */
void hookflash(void);
void port_disconnect_release(struct port_list *portlist, int message_type, union parameter *param);
void port_timeout(struct port_list *portlist, int message_type, union parameter *param);
void port_notify(struct port_list *portlist, int message_type, union parameter *param);
+ void port_progress(struct port_list *portlist, int message_type, union parameter *param);
void port_facility(struct port_list *portlist, int message_type, union parameter *param);
+ void port_3pty(struct port_list *portlist, int message_type, union parameter *param);
+ void port_transfer(struct port_list *portlist, int message_type, union parameter *param);
void port_suspend(struct port_list *portlist, int message_type, union parameter *param);
void port_resume(struct port_list *portlist, int message_type, union parameter *param);
+ void port_enablekeypad(struct port_list *portlist, int message_type, union parameter *param);
+ void port_disable_dejitter(struct port_list *portlist, int message_type, union parameter *param);
+ void port_updatebridge(struct port_list *portlist, int message_type, union parameter *param);
+ void port_vootp(struct port_list *portlist, int message_type, union parameter *param);
+ void port_dov_indication(struct port_list *portlist, int message_type, union parameter *param);
void ea_message_join(unsigned int join_id, int message, union parameter *param);
void join_crypt(struct port_list *portlist, int message_type, union parameter *param);
void join_mISDNsignal(struct port_list *portlist, int message_type, union parameter *param);
+ void join_bridge(struct port_list *portlist, int message_type, union parameter *param);
void join_setup(struct port_list *portlist, int message_type, union parameter *param);
void join_information(struct port_list *portlist, int message_type, union parameter *param);
void join_overlap(struct port_list *portlist, int message_type, union parameter *param);
void join_disconnect_release(int message_type, union parameter *param);
void join_notify(struct port_list *portlist, int message_type, union parameter *param);
void join_facility(struct port_list *portlist, int message_type, union parameter *param);
+ void join_dtmf(struct port_list *portlist, int message_type, union parameter *param);
+ void join_disable_dejitter(struct port_list *portlist, int message_type, union parameter *param);
+ void join_dov_indication(struct port_list *portlist, int message_type, union parameter *param);
+ void join_dov_request(struct port_list *portlist, int message_type, union parameter *param);
+ void join_dov_listen(struct port_list *portlist, int message_type, union parameter *param);
/* epoint */
void new_state(int state);
- void release(int release, int joinlocation, int joincause, int portlocation, int portcause);
+ void release(int release, int joinlocation, int joincause, int portlocation, int portcause, int force);
void notify_active(void);
void keypad_function(char digit);
void set_tone(struct port_list *portlist, const char *tone);
- void out_setup(void);
- struct mISDNport *hunt_port(char *ifname, int *channel);
+ void out_setup(int cfnr);
char *apply_callerid_display(const char *id, int itype, int ntype, int present, int screen, const char *extension, const char *name);
void auth(int job, int bit_num);
void vbox_init(void);
void vbox_index_read(int num);
void vbox_index_remove(int num);
- void vbox_handler(void);
void efi_message_eof(void);
void vbox_message_eof(void);
void set_tone_vbox(const char *tone);
struct route_param *routeparam(struct route_action *action, unsigned long long id);
/* init / dialing / hangup */
- int _action_init_call(char *remote);
void action_init_call(void);
- void action_init_remote(void);
void action_dialing_internal(void);
void action_dialing_external(void);
void action_dialing_h323(void);
- void action_dialing_remote(void);
void action_dialing_vbox_record(void);
void action_init_partyline(void);
void action_hangup_call(void);
void action_init_play(void);
void action_init_vbox_play(void);
void action_init_efi(void);
+ void action_init_pots_retrieve(void);
+ void action_init_pots_release(void);
+ void action_init_pots_reject(void);
+ void action_init_pots_answer(void);
+ void action_init_pots_3pty(void);
+ void action_init_pots_transfer(void);
void action_dialing_vbox_play(void);
void action_dialing_calculator(void);
void action_dialing_timer(void);
void action_dialing_goto(void);
void action_dialing_menu(void);
void action_dialing_disconnect(void);
+ void action_dialing_release(void);
void action_dialing_help(void);
void action_dialing_deflect(void);
void action_dialing_setforward(void);
+ void action_init_execute(void);
void action_hangup_execute(void);
+ void action_execute(void);
void action_hangup_file(void);
void action_init_pick(void);
void action_dialing_password(void);
void action_dialing_password_wr(void);
- void process_dialing(void);
+ void process_dialing(int timeout);
void process_hangup(int cause, int location);
/* facility function */
void pick_join(char *extension);
- void join_join(void);
+ int join_join_dss1(int invoke_id);
+ int join_join_fxs(void);
+ int join_3pty_dss1(void);
+ int join_3pty_fxs(void);
+ int split_3pty(void);
void encrypt_shared(void);
void encrypt_keyex(void);
void encrypt_off(void);
/* crypt */
void cryptman_keyengine(int job);
- void cryptman_handler(void);
void cr_ident(int message, unsigned char *param, int len);
void cr_activate(int message, unsigned char *param, int len);
void cr_deactivate(int message, unsigned char *param, int len);
void cryptman_msg2crengine(int msg, unsigned char *buf, int len);
void cryptman_state(int state);
void cryptman_timeout(int secs);
- void message_disconnect_port(struct port_list *portlist, int cause, int location, const char *display);
+ int vootp_on(int enable);
+
+ void message_disconnect_port(struct port_list *portlist, int cause, int location, const char *display, const struct param_transfer *transfer);
void logmessage(int message_type, union parameter *param, unsigned int port_id, int dir);
void trace_header(const char *name, int direction);
+
+ /* DOV */
+ void dov_msg_write(union parameter *param, int sent);
};