Handle HOLD/RETRIEVE notifications
[asterisk/asterisk.git] / channels / h323 / chan_h323.h
index 13296ed..c8bd6a3 100644 (file)
 #define H323_TUNNEL_CISCO      (1 << 0)
 #define H323_TUNNEL_QSIG       (1 << 1)
 
+#define H323_HOLD_NOTIFY       (1 << 0)
+#define H323_HOLD_Q931ONLY     (1 << 1)
+#define H323_HOLD_H450         (1 << 2)
+
 /** call_option struct holds various bits
  *         of information for each call */
 typedef struct call_options {
@@ -58,6 +62,7 @@ typedef struct call_options {
        int                             bridge;
        int                             nat;
        int                             tunnelOptions;
+       int                             holdHandling;
        struct ast_codec_pref   prefs;
 } call_options_t;
 
@@ -184,6 +189,9 @@ extern setcapabilities_cb on_setcapabilities;
 typedef void (*setpeercapabilities_cb)(unsigned, const char *, int, struct ast_codec_pref *);
 extern setpeercapabilities_cb on_setpeercapabilities;
 
+typedef void (*onhold_cb)(unsigned, const char *, int);
+extern onhold_cb on_hold;
+
 /* debug flag */
 extern int h323debug;
 
@@ -224,7 +232,8 @@ extern "C" {
                                        rfc2833_cb,
                                        hangup_cb,
                                        setcapabilities_cb,
-                                       setpeercapabilities_cb);
+                                       setpeercapabilities_cb,
+                                       onhold_cb);
        int h323_set_capabilities(const char *, int, int, struct ast_codec_pref *, int);
        int h323_set_alias(struct oh323_alias *);
        int h323_set_gk(int, char *, char *);
@@ -249,6 +258,7 @@ extern "C" {
        int h323_answering_call(const char *token, int);
        int h323_soft_hangup(const char *data);
        int h323_show_codec(int fd, int argc, char *argv[]);
+       int h323_hold_call(const char *token, int);
 
 #ifdef __cplusplus
 }