Changed bridge structure to hold 1..n members instead of only 1..2
[lcr.git] / port.h
diff --git a/port.h b/port.h
index 066ace7..90b7239 100644 (file)
--- a/port.h
+++ b/port.h
 #define PORT_CLASS_DSS1                0x1100
 #define PORT_CLASS_DSS1_NT     0x1110
 #define PORT_CLASS_DSS1_TE     0x1120
-#define PORT_CLASS_GSM         0x1200
-#define PORT_CLASS_GSM_BS      0x1210
-#define PORT_CLASS_GSM_MS      0x1220
 #define PORT_CLASS_SS5         0x1300
-#define PORT_CLASS_REMOTE      0x1400
-#define PORT_CLASS_SIP         0x1500
+#define PORT_CLASS_SIP         0x2000
+#define PORT_CLASS_GSM         0x3000
+#define PORT_CLASS_GSM_BS      0x3100
+#define PORT_CLASS_GSM_MS      0x3200
+#define PORT_CLASS_REMOTE      0x4000
 #define PORT_CLASS_MASK                0xf000
 #define PORT_CLASS_mISDN_MASK  0xff00
 #define PORT_CLASS_DSS1_MASK   0xfff0
-#define PORT_CLASS_GSM_MASK    0xfff0
+#define PORT_CLASS_GSM_MASK    0xff00
 #define PORT_CLASS_DIR_MASK    0x000f
 #define PORT_CLASS_DIR_IN      0x0001
 #define PORT_CLASS_DIR_OUT     0x0002
 #define        PORT_TYPE_DSS1_TE_IN    0x1121
 #define        PORT_TYPE_DSS1_TE_OUT   0x1122
        /* gsm */
-#define        PORT_TYPE_GSM_BS_IN     0x1211
-#define        PORT_TYPE_GSM_BS_OUT    0x1212
-#define        PORT_TYPE_GSM_MS_IN     0x1221
-#define        PORT_TYPE_GSM_MS_OUT    0x1222
+#define        PORT_TYPE_GSM_BS_IN     0x3101
+#define        PORT_TYPE_GSM_BS_OUT    0x3102
+#define        PORT_TYPE_GSM_MS_IN     0x3201
+#define        PORT_TYPE_GSM_MS_OUT    0x3202
        /* ss5 */
 #define        PORT_TYPE_SS5_IN        0x1311
 #define        PORT_TYPE_SS5_OUT       0x1312
 #define        PORT_TYPE_SS5_IDLE      0x1313
        /* remote */
-#define        PORT_TYPE_REMOTE_IN     0x1411
-#define        PORT_TYPE_REMOTE_OUT    0x1412
+#define        PORT_TYPE_REMOTE_IN     0x4001
+#define        PORT_TYPE_REMOTE_OUT    0x4002
        /* SIP */
-#define        PORT_TYPE_SIP_IN        0x1511
-#define        PORT_TYPE_SIP_OUT       0x1512
+#define        PORT_TYPE_SIP_IN        0x2001
+#define        PORT_TYPE_SIP_OUT       0x2002
        /* answering machine */
-#define        PORT_TYPE_VBOX_OUT      0x3111
+#define        PORT_TYPE_VBOX_OUT      0xf111
 
 
 enum { /* states of call */
@@ -149,12 +149,16 @@ struct port_settings {
        int no_seconds;
 };
 
+struct port_bridge_member {
+       struct port_bridge_member *next;
+       class Port *port;
+};
+
 /* port bridge instance */
 struct port_bridge {
        struct port_bridge *next;               /* next bridge node */
        unsigned int bridge_id;                 /* unique ID to identify bridge */
-       class Port *sunrise;                    /* one side of the bridge */
-       class Port *sunset;                     /* other side of the bridge */
+       struct port_bridge_member *first;       /* list of ports that are bridged */
 };
 
 extern struct port_bridge *p_bridge_first;
@@ -204,6 +208,7 @@ class Port
        /* audio bridging */
        struct port_bridge *p_bridge;           /* linked to a port bridge or NULL */
        void bridge(unsigned int bridge_id);    /* join a bridge */
+       class Port *bridge_remote(void);        /* get remote port */
        int bridge_tx(unsigned char *data, int len); /* used to transmit data to remote port */
        virtual int bridge_rx(unsigned char *data, int len); /* function to be inherited, so data is received */