OSDN Git Service

Differentiate between buffer and data size
authorMarcel Holtmann <marcel@holtmann.org>
Thu, 15 Jan 2009 09:44:52 +0000 (10:44 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 15 Jan 2009 09:44:52 +0000 (10:44 +0100)
test/l2test.c

index 5c7955b..5b6e268 100644 (file)
@@ -72,6 +72,7 @@ static int omtu = 0;
 
 /* Default data size */
 static long data_size = -1;
+static long buffer_size = 2048;
 
 /* Default addr and psm */
 static bdaddr_t bdaddr;
@@ -305,8 +306,8 @@ static int do_connect(char *svr)
                opts.imtu, opts.omtu, opts.flush_to, opts.mode, conn.hci_handle,
                conn.dev_class[2], conn.dev_class[1], conn.dev_class[0]);
 
-       omtu = opts.omtu;
-       imtu = opts.imtu;
+       omtu = (opts.omtu > buffer_size) ? buffer_size : opts.omtu;
+       imtu = (opts.imtu > buffer_size) ? buffer_size : opts.imtu;
 
        return sk;
 
@@ -470,6 +471,9 @@ static void do_listen(void (*handler)(int sk))
                        ba, opts.imtu, opts.omtu, opts.flush_to, opts.mode, conn.hci_handle,
                        conn.dev_class[2], conn.dev_class[1], conn.dev_class[0]);
 
+               omtu = (opts.omtu > buffer_size) ? buffer_size : opts.omtu;
+               imtu = (opts.imtu > buffer_size) ? buffer_size : opts.imtu;
+
 #if 0
                /* Enable SO_TIMESTAMP */
                if (timestamp) {
@@ -525,6 +529,9 @@ static void dump_mode(int sk)
        socklen_t optlen;
        int opt, len;
 
+       if (data_size < 0)
+               data_size = imtu;
+
        if (defer_setup) {
                len = read(sk, buf, sizeof(buf));
                if (len < 0)
@@ -582,6 +589,9 @@ static void recv_mode(int sk)
        socklen_t optlen;
        int opt, len;
 
+       if (data_size < 0)
+               data_size = imtu;
+
        if (defer_setup) {
                len = read(sk, buf, sizeof(buf));
                if (len < 0)
@@ -685,6 +695,9 @@ static void do_send(int sk)
 
        syslog(LOG_INFO, "Sending ...");
 
+       if (data_size < 0)
+               data_size = omtu;
+
        if (filename) {
                fd = open(filename, O_RDONLY);
                if (fd < 0) {
@@ -1142,9 +1155,11 @@ int main(int argc, char *argv[])
        }
 
        if (data_size < 0)
-               data_size = (omtu > imtu) ? omtu : imtu;
+               buffer_size = (omtu > imtu) ? omtu : imtu;
+       else
+               buffer_size = data_size;
 
-       if (!(buf = malloc(data_size))) {
+       if (!(buf = malloc(buffer_size))) {
                perror("Can't allocate data buffer");
                exit(1);
        }