SIP: Fix incoming re-invite
[lcr.git] / port.h
diff --git a/port.h b/port.h
index 061d94c..caf017a 100644 (file)
--- a/port.h
+++ b/port.h
@@ -18,6 +18,9 @@
 #define PORT_CLASS_DSS1                0x1100
 #define PORT_CLASS_DSS1_NT     0x1110
 #define PORT_CLASS_DSS1_TE     0x1120
+#define PORT_CLASS_POTS                0x1200
+#define PORT_CLASS_POTS_FXS    0x1210
+#define PORT_CLASS_POTS_FXO    0x1220
 #define PORT_CLASS_SS5         0x1300
 #define PORT_CLASS_SIP         0x2000
 #define PORT_CLASS_GSM         0x3000
@@ -27,6 +30,7 @@
 #define PORT_CLASS_MASK                0xf000
 #define PORT_CLASS_mISDN_MASK  0xff00
 #define PORT_CLASS_DSS1_MASK   0xfff0
+#define PORT_CLASS_POTS_MASK   0xfff0
 #define PORT_CLASS_GSM_MASK    0xff00
 #define PORT_CLASS_DIR_MASK    0x000f
 #define PORT_CLASS_DIR_IN      0x0001
        /* te-mode */
 #define        PORT_TYPE_DSS1_TE_IN    0x1121
 #define        PORT_TYPE_DSS1_TE_OUT   0x1122
+       /* FXS-mode */
+#define        PORT_TYPE_POTS_FXS_IN   0x1211
+#define        PORT_TYPE_POTS_FXS_OUT  0x1212
+       /* FXO-mode */
+#define        PORT_TYPE_POTS_FXO_IN   0x1221
+#define        PORT_TYPE_POTS_FXO_OUT  0x1222
        /* gsm */
 #define        PORT_TYPE_GSM_BS_IN     0x3101
 #define        PORT_TYPE_GSM_BS_OUT    0x3102
@@ -172,6 +182,11 @@ struct port_bridge {
 
 extern struct port_bridge *p_bridge_first;
 
+enum dov_type {
+       DOV_TYPE_PWM,
+       DOV_TYPE_PCM,
+};
+
 /* generic port class */
 class Port
 {
@@ -186,11 +201,13 @@ class Port
        virtual void set_tone(const char *dir, const char *name);
        virtual int read_audio(unsigned char *buffer, int length);
        virtual void update_load(void);
+       virtual void set_display(const char *text);
 
        struct port_settings p_settings;
        char p_interface_name[64];
        
        /* tone */
+       char p_tones_interface[256];            /* directory of tones of interface */
        char p_tone_dir[256];                   /* name of current directory */
        char p_tone_name[256];                  /* name of current tone */
        char p_tone_fh;                         /* file descriptor of current tone or -1 if not open */
@@ -260,6 +277,41 @@ class Port
        int p_record_vbox_email_file;
        virtual void update_rxoff(void);        /* inherited by mISDNport, to control rxoff */
 
+#ifdef WITH_VOOTP
+       vootp_t *p_vootp;                       /* VoOTP instance */
+       void set_vootp(struct param_vootp *vootp);
+#endif
+
+       /* DOV */
+       int p_dov_tx, p_dov_rx;
+       int p_dov_tx_sync, p_dov_rx_sync;
+       enum dov_type p_dov_tx_type, p_dov_rx_type;
+       unsigned char *p_dov_tx_data, *p_dov_rx_data;
+       int p_dov_tx_data_length;
+       int p_dov_tx_data_pos, p_dov_rx_data_pos;
+       int p_dov_tx_bit_pos, p_dov_rx_bit_pos;
+       int p_dov_tx_pwm_pos, p_dov_rx_pwm_pos;
+       int p_dov_rx_pwm_duration, p_dov_rx_pwm_polarity;
+       int p_dov_tx_up;
+       int p_dov_rx_sync_word;
+       unsigned char p_dov_up;
+       unsigned char p_dov_down;
+       void dov_init(void);
+       void dov_exit(void);
+       void dov_reset_tx(void);
+       void dov_reset_rx(void);
+       struct lcr_timer p_dov_tx_timer;
+       struct lcr_timer p_dov_rx_timer;
+       void dov_sendmsg(unsigned char *data, int length, enum dov_type type, int level);
+       int dov_tx(unsigned char *data, int length);
+       int dov_tx_pcm(unsigned char *data, int length);
+       int dov_tx_pwm(unsigned char *data, int length);
+       void dov_listen(enum dov_type type);
+       void dov_rx(unsigned char *data, int length);
+       void dov_rx_pcm(unsigned char *data, int length);
+       void dov_rx_pwm(unsigned char *data, int length);
+       void dov_message(unsigned char *data, int length);
+
        void free_epointlist(struct epoint_list *epointlist);
        void free_epointid(unsigned int epoint_id);
        struct epoint_list *epointlist_new(unsigned int epoint_id);