00001 /*------------------------------------------------------------------------ 00002 *--------------------- WMPSNIFFER -------------------- 00003 *------------------------------------------------------------------------ 00004 * V7.0B 11/05/10 00005 * 00006 * 00007 * File: gct.cc 00008 * Authors: Danilo Tardioli 00009 * ---------------------------------------------------------------------- 00010 * Copyright (C) 2000-2012, Universidad de Zaragoza, SPAIN 00011 * 00012 * Contact Addresses: Danilo Tardioli dantard@unizar.es 00013 * 00014 * RT-WMP is free software; you can redistribute it and/or modify it 00015 * under the terms of the GNU General Public License as published by the 00016 * Free Software Foundation; either version 2, or (at your option) any 00017 * later version. 00018 * 00019 * RT-WMP is distributed in the hope that it will be useful, but 00020 * WITHOUT ANY WARRANTY; without even the implied warranty of 00021 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00022 * General Public License for more details. 00023 * 00024 * You should have received a copy of the GNU General Public License 00025 * distributed with RT-WMP; see file COPYING. If not, write to the 00026 * Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 00027 * 02111-1307, USA. 00028 * 00029 * As a special exception, if you link this unit with other files to 00030 * produce an executable, this unit does not by itself cause the 00031 * resulting executable to be covered by the GNU General Public License. 00032 * This exception does not however invalidate any other reasons why the 00033 * executable file might be covered by the GNU Public License. 00034 * 00035 *----------------------------------------------------------------------*/ 00036 #include "gct.h" 00037 #include <cmath> 00038 #include <cstdlib> 00039 #include "misc.h" 00040 static int previous_serial = 0, gct_initd = 0, act_gct = 0,max_consecutive = 0,idx1; 00041 00042 int greatest_clean_time_check(wmpFrame * p) { 00043 if (gct_initd == 0) { 00044 idx1 = p->hdr.serial; 00045 previous_serial = idx1 - 1; 00046 gct_initd = 1; 00047 } 00048 if (p->hdr.serial != previous_serial + 1) { 00049 if (abs(p->hdr.serial - idx1) > max_consecutive) { 00050 max_consecutive = abs(p->hdr.serial - idx1); 00051 } 00052 idx1 = p->hdr.serial; 00053 } 00054 act_gct = MAX(abs(p->hdr.serial - idx1), max_consecutive); 00055 previous_serial = p->hdr.serial; 00056 return max_consecutive; 00057 } 00058 00059 int get_actual_gct(int *best, int *act) { 00060 *best = act_gct; 00061 *act = abs(previous_serial - idx1); 00062 return act_gct; 00063 } 00064 00065 void reset_actual_gct(){ 00066 act_gct=0; 00067 previous_serial=idx1=0; 00068 }