X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=support%2Fsdk%2Fc%2Fblip%2Flibtcp%2Ftest_circ.c;h=a8a6edd7eadcb5be7de1dbcd0e1d00d0edea81c8;hb=3d5c78e867d6fd52e44894e93e4bd0c172071522;hp=b6ae8fc167d45b6f06078a3e7e6291ba50ee59c8;hpb=34dda4f22e2b435b6ddec072706809f158e60c7f;p=tinyos-2.x.git diff --git a/support/sdk/c/blip/libtcp/test_circ.c b/support/sdk/c/blip/libtcp/test_circ.c index b6ae8fc1..a8a6edd7 100644 --- a/support/sdk/c/blip/libtcp/test_circ.c +++ b/support/sdk/c/blip/libtcp/test_circ.c @@ -1,16 +1,38 @@ +/* + * "Copyright (c) 2008, 2009 The Regents of the University of California. + * All rights reserved." + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose, without fee, and without written agreement is + * hereby granted, provided that the above copyright notice, the following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF + * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." + * + */ #include +#include #include "circ.h" -void do_head_read(void *buf) { - char *read_data; - int i, data_len; - data_len = circ_buf_read_head(buf, (void **)&read_data); - printf("buf_read_head: %i\n", data_len); - for (i = 0; i < data_len; i++) - putc(((char *)read_data)[i], stdout); - putc('\n', stdout); -} +/* void do_head_read(void *buf) { */ +/* char *read_data; */ +/* int i, data_len; */ +/* data_len = circ_buf_read_head(buf, (void **)&read_data); */ +/* printf("buf_read_head: %i\n", data_len); */ +/* for (i = 0; i < data_len; i++) */ +/* putc(((char *)read_data)[i], stdout); */ +/* putc('\n', stdout); */ +/* } */ void do_read(void *buf, uint32_t sseqno) { char data[20]; @@ -29,7 +51,9 @@ int main(int argc, char **argv) { char data[20], readbuf[30]; int i = 20, data_len; char *read_data; - if (circ_buf_init(buf, 200, 0, 1) < 0) + memset(buf, 0, sizeof(buf)); + + if (circ_buf_init(buf, 200, 0) < 0) printf("cir_buf_init: error\n"); for (i=0;i<20;i++) @@ -38,29 +62,51 @@ int main(int argc, char **argv) { if (circ_buf_write(buf, 0, data, 20) < 0) printf("circ_buf_write: error\n"); + circ_buf_dump(buf); + if (circ_buf_write(buf, 10, data, 20) < 0) printf("circ_buf_write: error\n"); + circ_buf_dump(buf); + if (circ_buf_write(buf, 50, data, 20) < 0) printf("circ_buf_write: error\n"); - circ_buf_dump(buf); + // circ_buf_dump(buf); - do_head_read(buf); - circ_buf_dump(buf); + // do_head_read(buf); + // circ_buf_dump(buf); if (circ_buf_write(buf, 30, data, 20) < 0) printf("circ_buf_write: error\n"); - circ_buf_dump(buf); + // circ_buf_dump(buf); if (circ_buf_write(buf, 70, data, 20) < 0) printf("circ_buf_write: error\n"); circ_buf_dump(buf); - do_read(buf, 50); + circ_shorten_head(buf, 10); + circ_buf_dump(buf); + + memset(buf, 0, sizeof(buf)); + + if (circ_buf_init(buf, 200, 0) < 0) + printf("cir_buf_init: error\n"); + + printf("\n\nRESTART\n\n"); + + for (i = 0; i < 25; i++) { + circ_buf_write(buf, i * 20, data, 20); + do_read(buf, i * 20); + circ_shorten_head(buf, (i > 0) ? (i - 1) * 20 : 0 * 10); + circ_buf_dump(buf); + } + + // do_read(buf, 50); + /* do_head_read(buf); */ /* circ_buf_dump(buf); */