]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - wme_test/common.c
Merge branch 'master' of rtime:/var/git/frescor
[frescor/fwp.git] / wme_test / common.c
index 31a30c2a6b4ba4732d5196593262a235625b2237..cdbb7923fcb4558ff26162c082b3b863ed550bf8 100644 (file)
@@ -53,3 +53,48 @@ void block_signals(void)
                exit(1);
        }
 }
+
+static char *num_with_unit(char *buf, unsigned num, const char *units[])
+{
+       const int div[] = {100,10,1};
+       unsigned order = 0;
+       int d;
+
+       while (num > 999 && units[(order+3)/3] != NULL) {
+               num /= 10;
+               order++;
+       }
+
+       d = div[(order+2)%3];
+       if (d == 1)
+               sprintf(buf, "%4d %s", num, units[(order+2)/3]);
+       else
+               sprintf(buf, "%d.%.*d %s", num/d, (d==10) ? 1 : 2, num%d, units[(order+2)/3]);
+       return buf;
+}
+
+char *bandwidth_to_text(char *buf, unsigned bandwidth_bps)
+{
+       const char *unit[] = {"bps", "kbps", "Mbps", NULL};
+       return num_with_unit(buf, bandwidth_bps, unit);
+}
+
+char *usec_to_text(char *buf, unsigned usec)
+{
+       const char *unit[] = {"us", "ms", "s", NULL};
+       return num_with_unit(buf, usec, unit);
+}
+
+
+static void test_usec_to_text() __attribute__((unused));
+static void test_usec_to_text()
+{
+       int num=0;
+       char buf[1000];
+       int i;
+       for (i=1; i<11; i++) {
+               num = num*10 + i;
+               printf("%s = %d\n", usec_to_text(buf, num), num);
+       }
+}
+