Fix the wireless settings button for AirPCap devices in the
[obnox/wireshark/wip.git] / timestats.c
index 5593c26d89de00b14c4b89357f2e7b5d1e7b2f9f..67bda7a73fdc63aea66fce8a200cbf12733a85a5 100644 (file)
@@ -2,10 +2,10 @@
  * routines for time statistics
  * Copyrigth 2003 Lars Roland
  *
- * $Id: timestats.c,v 1.2 2003/09/03 10:10:17 sahlberg Exp $
+ * $Id$
  *
- * Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@ethereal.com>
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
  * Copyright 1998 Gerald Combs
  *
  * This program is free software; you can redistribute it and/or
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-#include "timestats.h"
-
-/*
- * function: get_timedelta
- * delta = b - a
- */
-
-void get_timedelta(nstime_t *delta, nstime_t *b, nstime_t *a )
-{
-       delta->secs = b->secs - a->secs;
-       delta->nsecs= b->nsecs - a->nsecs;
-       if(delta->nsecs<0){
-               delta->nsecs+=1000000000;
-               delta->secs--;
-       }
-}
-
-/*
- * function: addtime
- * sum += a
- */
-
-void addtime(nstime_t *sum, nstime_t *a)
-{
-       sum->secs += a->secs;
-       sum->nsecs += a->nsecs;
-       if(sum->nsecs>1000000000){
-               sum->nsecs-=1000000000;
-               sum->secs++;
-       }
-}
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
 
-/*
- * function: nstime_to_msec
- * converts nstime to gdouble, time base is milli seconds
- */
+#include "timestats.h"
 
-gdouble nstime_to_msec(nstime_t *time)
+/* Initialize a timestat_t struct */
+void
+time_stat_init(timestat_t *stats)
 {
-       return ((double)time->secs*1000 + (double)time->nsecs/1000000);
+       stats->num = 0;
+       stats->min_num = 0;
+       stats->max_num = 0;
+       nstime_set_zero(&stats->min);
+       nstime_set_zero(&stats->max);
+       nstime_set_zero(&stats->tot);
+       stats->variance = 0.0;
 }
 
-/* A Function to update a timestat_t struct with a new sample*/
-
+/* Update a timestat_t struct with a new sample */
 void
-time_stat_update(timestat_t *stats, nstime_t *delta, packet_info *pinfo)
+time_stat_update(timestat_t *stats, const nstime_t *delta, packet_info *pinfo)
 {
        if(stats->num==0){
-               stats->max.secs=delta->secs;
-               stats->max.nsecs=delta->nsecs;
+               stats->max=*delta;
                stats->max_num=pinfo->fd->num;
-       }
-
-       if(stats->num==0){
-               stats->min.secs=delta->secs;
-               stats->min.nsecs=delta->nsecs;
+               stats->min=*delta;
                stats->min_num=pinfo->fd->num;
        }
 
        if( (delta->secs<stats->min.secs)
        ||( (delta->secs==stats->min.secs)
          &&(delta->nsecs<stats->min.nsecs) ) ){
-               stats->min.secs=delta->secs;
-               stats->min.nsecs=delta->nsecs;
+               stats->min=*delta;
                stats->min_num=pinfo->fd->num;
        }
 
        if( (delta->secs>stats->max.secs)
        ||( (delta->secs==stats->max.secs)
          &&(delta->nsecs>stats->max.nsecs) ) ){
-               stats->max.secs=delta->secs;
-               stats->max.nsecs=delta->nsecs;
+               stats->max=*delta;
                stats->max_num=pinfo->fd->num;
        }
 
-       stats->tot.secs += delta->secs;
-       stats->tot.nsecs += delta->nsecs;
-       if(stats->tot.nsecs>1000000000){
-               stats->tot.nsecs-=1000000000;
-               stats->tot.secs++;
-       }
+       nstime_add(&stats->tot, delta);
 
        stats->num++;
 }
@@ -115,7 +79,7 @@ time_stat_update(timestat_t *stats, nstime_t *delta, packet_info *pinfo)
  * returns the average as a gdouble , time base is milli seconds
  */
 
-gdouble get_average(nstime_t *sum, guint32 num)
+gdouble get_average(const nstime_t *sum, guint32 num)
 {
        gdouble average;