added bearer capability reject support. we send release instead of disconnect in...
[asterisk/asterisk.git] / channels / misdn / isdn_lib.h
index 7590b3e..a127c8f 100644 (file)
 
 #define MAX_BCHANS 30
 
-enum bc_state_e {
-       STATE_NOTHING=0,
-       STATE_NULL,
-       STATE_CALL_INIT,
-       STATE_CONNECTED,
-       STATE_HOLD_ACKNOWLEDGE
+enum bchannel_state {
+       BCHAN_CLEANED=0,
+       BCHAN_EMPTY,
+       BCHAN_SETUP,
+       BCHAN_SETUPED,
+       BCHAN_ACTIVE,
+       BCHAN_ACTIVATED,
+       BCHAN_BRIDGE,
+       BCHAN_BRIDGED,
+       BCHAN_RELEASE,
+       BCHAN_RELEASED,
+       BCHAN_CLEAN,
+       BCHAN_ERROR
 };
 
+
 enum misdn_err_e {
        ENOCHAN=1
 };
 
 
-
 enum mISDN_NUMBER_PLAN {
        NUMPLAN_UNINITIALIZED=-1,
        NUMPLAN_INTERNATIONAL=0x1,
@@ -54,7 +61,6 @@ enum event_response_e {
 };
 
 
-
 enum event_e {
        EVENT_NOTHING,
        EVENT_TONE_GENERATE,
@@ -94,6 +100,7 @@ enum event_e {
        EVENT_DTMF_TONE,
        EVENT_NEW_L3ID,
        EVENT_NEW_BC,
+       EVENT_NEW_CHANNEL,
        EVENT_UNKNOWN
 }; 
 
@@ -175,7 +182,8 @@ struct misdn_bchannel {
        int l3_id;
        int pid;
        int ces;
-  
+
+       int restart_channel;
        int channel;
        int channel_preselected;
        
@@ -201,6 +209,10 @@ struct misdn_bchannel {
        /* get setup ack */
        int need_more_infos;
 
+       /* may there be more infos ?*/
+       int sending_complete;
+
+
        /* wether we should use jollys dsp or not */
        int nodsp;
        
@@ -210,6 +222,7 @@ struct misdn_bchannel {
        enum mISDN_NUMBER_PLAN dnumplan;
        enum mISDN_NUMBER_PLAN rnumplan;
        enum mISDN_NUMBER_PLAN onumplan;
+       enum mISDN_NUMBER_PLAN cpnnumplan;
 
        int progress_coding;
        int progress_location;
@@ -242,11 +255,16 @@ struct misdn_bchannel {
 
        int generate_tone;
        int tone_cnt;
-  
-       enum bc_state_e state;
+       enum bchannel_state bc_state;
+       enum bchannel_state next_bc_state;
 
+       int conf_id;
+       
        int holded;
        int stack_holder;
+
+       struct misdn_bchannel *holded_bc;
        
        int pres;
        int screen;
@@ -267,6 +285,7 @@ struct misdn_bchannel {
        unsigned char oad[32];
        unsigned char rad[32];
        unsigned char dad[32];
+       unsigned char cad[32];
        unsigned char orig_dad[32];
        unsigned char keypad[32];
 
@@ -308,6 +327,8 @@ struct misdn_lib_iface {
        enum event_response_e (*cb_event)(enum event_e event, struct misdn_bchannel *bc, void *user_data);
        void (*cb_log)(int level, int port, char *tmpl, ...);
        int (*cb_jb_empty)(struct misdn_bchannel *bc, char *buffer, int len);
+       
+       int l1watcher_timeout;
 };
 
 /***** USER IFACE **********/
@@ -329,7 +350,7 @@ void manager_bchannel_deactivate(struct misdn_bchannel * bc);
 
 int misdn_lib_tx2misdn_frm(struct misdn_bchannel *bc, void *data, int len);
 
-void manager_ph_control(struct misdn_bchannel *bc, int c1, int c2);
+void manager_ph_control(struct misdn_bchannel *bc, long c1, long c2);
 
 
 int misdn_lib_port_restart(int port);
@@ -337,6 +358,8 @@ int misdn_lib_get_port_info(int port);
 
 int misdn_lib_port_up(int port, int notcheck);
 
+int misdn_lib_get_port_down(int port);
+
 int misdn_lib_get_port_up (int port) ;
      
 int misdn_lib_maxports_get(void) ;
@@ -356,18 +379,6 @@ void manager_ec_disable(struct misdn_bchannel *bc);
 void get_show_stack_details(int port, char *buf);
 
 
-/** Ibuf interface **/
-int misdn_ibuf_usedcount(void *buf);
-int misdn_ibuf_freecount(void *buf);
-void misdn_ibuf_memcpy_r(char *to, void *from, int len);
-void misdn_ibuf_memcpy_w(void *buf, char *from, int len);
-
-void misdn_free_ibuffer(void *ibuf);
-void misdn_clear_ibuffer(void *ibuf);
-void *misdn_init_ibuffer(int len);
-
-/** Ibuf interface End **/
-
 void misdn_lib_tone_generator_start(struct misdn_bchannel *bc);
 void misdn_lib_tone_generator_stop(struct misdn_bchannel *bc);
 
@@ -377,7 +388,7 @@ void misdn_lib_setup_bc(struct misdn_bchannel *bc);
 void misdn_lib_bridge( struct misdn_bchannel * bc1, struct misdn_bchannel *bc2);
 void misdn_lib_split_bridge( struct misdn_bchannel * bc1, struct misdn_bchannel *bc2);
 
-unsigned char * flip_buf_bits ( unsigned char * buf , int len);
+void misdn_lib_echo(struct misdn_bchannel *bc, int onoff);
 
 int misdn_lib_is_ptp(int port);
 
@@ -387,4 +398,11 @@ int misdn_lib_is_ptp(int port);
 #define PRI_TRANS_CAP_3_1K_AUDIO                                0x10
 #define PRI_TRANS_CAP_7K_AUDIO                                  0x11
 
+
+
+char *bc_state2str(enum bchannel_state state);
+void bc_state_change(struct misdn_bchannel *bc, enum bchannel_state state);
+
+
+
 #endif