Adding bridge between protocol handlers (ports)
[lcr.git] / port.h
diff --git a/port.h b/port.h
index 0d6a5f9..066ace7 100644 (file)
--- a/port.h
+++ b/port.h
@@ -111,6 +111,8 @@ enum { /* event list from listening to tty */
 #define RECORD_BUFFER_LENGTH   1024 // must be a binary border & must be greater 256, because 256 will be written if buffer overflows
 #define RECORD_BUFFER_MASK     1023
 
+#define PORT_TRANSMIT          256 // how much to transmit via bridge, if it is not defined by received data length
+
 /* structure of epoint_list */
 struct epoint_list {
        struct epoint_list      *next;
@@ -147,6 +149,16 @@ struct port_settings {
        int no_seconds;
 };
 
+/* 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 */
+};
+
+extern struct port_bridge *p_bridge_first;
+
 /* generic port class */
 class Port
 {
@@ -189,6 +201,12 @@ class Port
        /* endpoint relation */
        struct epoint_list *p_epointlist;       /* endpoint relation */
 
+       /* audio bridging */
+       struct port_bridge *p_bridge;           /* linked to a port bridge or NULL */
+       void bridge(unsigned int bridge_id);    /* join a bridge */
+       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 */
+
        /* state */
        int p_state;                            /* state of port */
        void new_state(int state);              /* set new state */