More changes from chan_dahdi that did not make it into sig_pri.
[asterisk/asterisk.git] / channels / sig_pri.h
index 2c9f7b6..11b1e9f 100644 (file)
@@ -64,12 +64,16 @@ struct sig_pri_callback {
        int (* const set_echocanceller)(void *pvt, int enable);
        int (* const train_echocanceller)(void *pvt);
 
-       struct ast_channel * (* const new_ast_channel)(void *pvt, int state, int startpbx, enum sig_pri_law law, int transfercapability, char *exten);
+       struct ast_channel * (* const new_ast_channel)(void *pvt, int state, int startpbx, enum sig_pri_law law, int transfercapability, char *exten, const struct ast_channel *chan);
 
        void (* const fixup_chans)(void *old_chan, void *new_chan);
 
        /* Note: Called with PRI lock held */
        void (* const handle_dchan_exception)(struct sig_pri_pri *pri, int index);
+       void (* const set_dialing)(void *pvt, int flag);
+       void (* const set_callerid)(void *pvt, const struct ast_party_caller *caller);
+       void (* const set_dnid)(void *pvt, const char *dnid);
+       void (* const set_rdnis)(void *pvt, const char *rdnis);
 };
 
 #define NUM_DCHANS             4       /*!< No more than 4 d-channels */
@@ -79,6 +83,10 @@ struct sig_pri_callback {
 #define SIG_BRI                (0x2000000 | DAHDI_SIG_CLEAR)
 #define SIG_BRI_PTMP   (0X4000000 | DAHDI_SIG_CLEAR)
 
+/* QSIG channel mapping option types */
+#define DAHDI_CHAN_MAPPING_PHYSICAL    0
+#define DAHDI_CHAN_MAPPING_LOGICAL     1
+
 /* Overlap dialing option types */
 #define DAHDI_OVERLAPDIAL_NONE 0
 #define DAHDI_OVERLAPDIAL_OUTGOING 1
@@ -90,7 +98,7 @@ struct sig_pri_callback {
 #define SRVST_DBKEY "service-state"
 /*! \brief The out-of-service SERVICE state */
 #define SRVST_TYPE_OOS "O"
-/*! \brief SRVST_INITIALIZED is used to indicate a channel being out-of-service 
+/*! \brief SRVST_INITIALIZED is used to indicate a channel being out-of-service
  *  The SRVST_INITIALIZED is mostly used maintain backwards compatibility but also may
  *  mean that the channel has not yet received a RESTART message.  If a channel is
  *  out-of-service with this reason a RESTART message will result in the channel
@@ -122,23 +130,20 @@ struct sig_pri_chan {
        char mohinterpret[MAX_MUSICCLASS];
        int stripmsd;
 
-       /* Options to be  checked by user */
+       /* Options to be checked by user */
        int cid_ani2;                                           /*!< Automatic Number Identification number (Alternate PRI caller ID number) */
-       char cid_num[AST_MAX_EXTENSION];
        int cid_ton;                                    /*!< Type Of Number (TON) */
+       int callingpres;                                /*!< The value of calling presentation that we're going to use when placing a PRI call */
+       char cid_num[AST_MAX_EXTENSION];
        char cid_name[AST_MAX_EXTENSION];
        char cid_ani[AST_MAX_EXTENSION];
-       char rdnis[AST_MAX_EXTENSION];
-       char dnid[AST_MAX_EXTENSION];
        char exten[AST_MAX_EXTENSION];
-       int callingpres;                                /*!< The value of callling presentation that we're going to use when placing a PRI call */
        char lastcid_num[AST_MAX_EXTENSION];
        char lastcid_name[AST_MAX_EXTENSION];
 
        /* Internal variables -- Don't touch */
        /* Probably will need DS0 number, DS1 number, and a few other things */
        char dialdest[256];                             /* Queued up digits for overlap dialing.  They will be sent out as information messages when setup ACK is received */
-       int mastertrunkgroup;
 
        unsigned int alerting:1;                /*!< TRUE if channel is alerting/ringing */
        unsigned int alreadyhungup:1;   /*!< TRUE if the call has already gone/hungup */
@@ -153,15 +158,19 @@ struct sig_pri_chan {
 
        struct ast_channel *owner;
 
-       struct sig_pri_pri *pri;                
+       struct sig_pri_pri *pri;
        q931_call *call;                                /*!< opaque libpri call control structure */
 
        int prioffset;                                  /*!< channel number in span */
        int logicalspan;                                /*!< logical span number within trunk group */
+       int mastertrunkgroup;                   /*!< what trunk group is our master */
 
        struct sig_pri_callback *calls;
-       void *chan_pvt;
+       void *chan_pvt;                                 /*!< Private structure of the user of this module. */
        ast_mutex_t service_lock;                                               /*!< Mutex for service messages */
+#if defined(HAVE_PRI_REVERSE_CHARGE)
+       int reverse_charging_indication;
+#endif
 };
 
 struct sig_pri_pri {
@@ -210,7 +219,7 @@ struct sig_pri_pri {
        int numchans;                                                           /*!< Num of channels we represent */
        struct sig_pri_chan *pvts[MAX_CHANNELS];        /*!< Member channel pvt structs */
        pthread_t master;                                                       /*!< Thread of master */
-       ast_mutex_t lock;                                                       /*!< Mutex */
+       ast_mutex_t lock;                                                       /*!< libpri access Mutex */
        time_t lastreset;                                                       /*!< time when unused channels were last reset */
        struct sig_pri_callback *calls;
 };
@@ -239,9 +248,9 @@ void pri_event_alarm(struct sig_pri_pri *pri, int index, int before_start_pri);
 
 void pri_event_noalarm(struct sig_pri_pri *pri, int index, int before_start_pri);
 
-struct ast_channel *sig_pri_request(struct sig_pri_chan *p, enum sig_pri_law law);
+struct ast_channel *sig_pri_request(struct sig_pri_chan *p, enum sig_pri_law law, const struct ast_channel *requestor);
 
-struct sig_pri_chan *sig_pri_chan_new(void *pvt_data, struct sig_pri_callback *callback, struct sig_pri_pri *pri, int logicalspan, int channo);
+struct sig_pri_chan *sig_pri_chan_new(void *pvt_data, struct sig_pri_callback *callback, struct sig_pri_pri *pri, int logicalspan, int channo, int trunkgroup);
 
 int pri_is_up(struct sig_pri_pri *pri);
 
@@ -252,6 +261,8 @@ void sig_pri_cli_show_span(int fd, int *dchannels, struct sig_pri_pri *pri);
 int pri_send_keypad_facility_exec(struct sig_pri_chan *p, const char *digits);
 int pri_send_callrerouting_facility_exec(struct sig_pri_chan *p, enum ast_channel_state chanstate, const char *destination, const char *original, const char *reason);
 
+#ifdef HAVE_PRI_SERVICE_MESSAGES
 int pri_maintenance_bservice(struct pri *pri, struct sig_pri_chan *p, int changestatus);
+#endif
 
 #endif /* _SIG_PRI_H */