summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-01-03 18:33:43 (UTC)
committer mickeyl <mickeyl>2004-01-03 18:33:43 (UTC)
commit27b84ed363fd7fc52092e3c2d1e49dca079b7ffd (patch) (side-by-side diff)
tree932806dc83d84720bcb259df8711d894932580e1
parent3889c8f853aa2d128f54389b17f08fc7b9150788 (diff)
downloadopie-27b84ed363fd7fc52092e3c2d1e49dca079b7ffd.zip
opie-27b84ed363fd7fc52092e3c2d1e49dca079b7ffd.tar.gz
opie-27b84ed363fd7fc52092e3c2d1e49dca079b7ffd.tar.bz2
slightly improve the speed reading the manufacturers list
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opienet/omanufacturerdb.cpp13
-rwxr-xr-xlibopie2/tools/regen.py198
-rw-r--r--noncore/net/wellenreiter/ChangeLog9
3 files changed, 205 insertions, 15 deletions
diff --git a/libopie2/opienet/omanufacturerdb.cpp b/libopie2/opienet/omanufacturerdb.cpp
index 595633d..f61270b 100644
--- a/libopie2/opienet/omanufacturerdb.cpp
+++ b/libopie2/opienet/omanufacturerdb.cpp
@@ -84,2 +84,5 @@ OManufacturerDB::OManufacturerDB()
QString extManu;
+ #ifdef OPIE_IMPROVE_GUI_LATENCY
+ int counter = 0;
+ #endif
while (!s.atEnd())
@@ -92,7 +95,13 @@ OManufacturerDB::OManufacturerDB()
manufacturersExt.insert( addr, extManu );
- odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl;
+ // odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl;
#ifdef OPIE_IMPROVE_GUI_LATENCY
- if ( qApp ) qApp->processEvents();
+ counter++;
+ if ( counter == 50 )
+ {
+ qApp->processEvents();
+ counter = 0;
+ }
#endif
}
+ odebug << "OManufacturerDB: manufacturer list completed." << oendl;
}
diff --git a/libopie2/tools/regen.py b/libopie2/tools/regen.py
index 3779896..89385e1 100755
--- a/libopie2/tools/regen.py
+++ b/libopie2/tools/regen.py
@@ -2,8 +2,13 @@
-#
-# regenerate ioctl_table.h
-#
+"""Regenerate C++ mapping classes"""
+
+#---------------------------------------------------------------------------#
+# #
+#---------------------------------------------------------------------------#
+
+def regenDebugMapper( basename ):
+ """
+ Debug Mapper - maps ioctl numbers to names, e.g. 0x4x5a -> SIOCGIWNAME
+ """
-import sys
-import os
result = os.popen( 'find /usr/include -name "*.h" |xargs grep -h SIOC|grep 0x' ).readlines()
@@ -11,3 +16,3 @@ result = os.popen( 'find /usr/include -name "*.h" |xargs grep -h SIOC|grep 0x' )
try:
- tablehfile = file( sys.argv[1]+".h", "w" )
+ tablehfile = file( basename+".h", "w" )
except:
@@ -16,3 +21,3 @@ except:
try:
- tablecfile = file( sys.argv[1]+".cpp", "w" )
+ tablecfile = file( basename+".cpp", "w" )
except:
@@ -22,3 +27,3 @@ print >>tablehfile,"""
/*
- * debug value mapper - generated by regen.py - (C) Michael 'Mickey' Lauer <mickey@vanille.de>
+ * debug value mapper - generated by %s - (C) Michael 'Mickey' Lauer <mickey@vanille.de>
*/
@@ -45,3 +50,3 @@ class DebugMapper
#endif
-"""
+""" % sys.argv[0]
@@ -49,3 +54,3 @@ print >>tablecfile,"""
/*
- * debug value mapper - generated by regen.py - (C) Michael 'Mickey' Lauer <mickey@vanille.de>
+ * debug value mapper - generated by %s - (C) Michael 'Mickey' Lauer <mickey@vanille.de>
*/
@@ -60,3 +65,3 @@ DebugMapper::DebugMapper()
-""" % (tablehfile.name)
+""" % ( sys.argv[0], tablehfile.name )
@@ -96 +101,172 @@ const QString& DebugMapper::map( int value ) const
"""
+
+#---------------------------------------------------------------------------#
+# #
+#---------------------------------------------------------------------------#
+
+def regenManufacturerDB( basename ):
+
+ try:
+ h = file( basename+".h", "w" )
+ except:
+ h = sys.stdout
+
+ try:
+ cpp = file( basename+".cpp", "w" )
+ except:
+ cpp = sys.stdout
+
+ print >>h,"""
+#ifndef OMANUFACTURERDB_H
+#define OMANUFACTURERDB_H
+
+#include <qmap.h>
+
+/**
+ * @brief A Ethernet card vendor database.
+ *
+ * This class encapsulates the lookup of Ethernet vendor given a
+ * certain Mac Address. Only the first three bytes define the vendor.
+ */
+class OManufacturerDB
+{
+ public:
+ /**
+ * @returns the one-and-only @ref OManufacturerDB instance.
+ */
+ static OManufacturerDB* instance();
+ /**
+ * @returns the short manufacturer string given a @a macaddr.
+ */
+ const QString& lookup( const QString& macaddr ) const;
+ /**
+ * @returns the enhanced manufacturer string given a @a macaddr.
+ */
+ const QString& lookupExt( const QString& macaddr ) const;
+
+ protected:
+ OManufacturerDB();
+ virtual ~OManufacturerDB();
+
+ private:
+ QMap<QString, QString> manufacturers;
+ QMap<QString, QString> manufacturersExt;
+ static OManufacturerDB* _instance;
+};
+
+#endif
+"""
+
+ print >>cpp,"""
+#include "%s.h"
+
+/* OPIE CORE */
+#include <opie2/odebug.h>
+
+/* QT */
+#include <qapplication.h>
+#include <qstring.h>
+
+#define OPIE_IMPROVE_GUI_LATENCY 1
+
+OManufacturerDB* OManufacturerDB::_instance = 0;
+
+OManufacturerDB* OManufacturerDB::instance()
+{
+ if ( !OManufacturerDB::_instance )
+ {
+ odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl;
+ _instance = new OManufacturerDB();
+ }
+ return _instance;
+}
+
+
+OManufacturerDB::OManufacturerDB()
+{
+""" % basename
+
+ count = 0
+ for line in sys.stdin:
+ if line[0] == "#": # skip comments
+ continue
+ #print line.strip()
+ entries = line.strip().split()
+ #print "number of entries =", len( entries )
+ #print entries
+ if len( entries ) < 2:
+ continue
+ elif len( entries ) == 2:
+ count += 1
+ print "2-line detected."
+ print >>cpp, ' manufacturers.insert( "%s", "%s" );' % ( entries[0], entries[1] )
+ print >>cpp, ' manufacturersExt.insert( "%s", "%s" );' % ( entries[0], entries[1] )
+ elif len( entries ) > 2:
+ count += 1
+ print "3-line detected."
+ print >>cpp, ' manufacturers.insert( "%s", "%s" );' % ( entries[0], entries[1] )
+ print >>cpp, ' manufacturersExt.insert( "%s", "%s" );' % ( entries[0], "_".join( entries[3:] ) )
+ else:
+ assert( false )
+ if not (count % 1000):
+ print >>cpp,"""
+#ifdef OPIE_IMPROVE_GUI_LATENCY
+ if (qApp) qApp->processEvents();
+#endif
+"""
+ print "successfully parsed", count, "manufacturer lines"
+ print >>cpp,"""
+}
+
+
+OManufacturerDB::~OManufacturerDB()
+{
+}
+
+
+const QString& OManufacturerDB::lookup( const QString& macaddr ) const
+{
+ return manufacturers[macaddr.upper().left(8)];
+}
+
+
+const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const
+{
+ QMap<QString,QString>::ConstIterator it = manufacturersExt.find( macaddr.upper().left(8) );
+ return it == manufacturersExt.end() ? lookup( macaddr ) : *it;
+}
+"""
+
+#---------------------------------------------------------------------------#
+# #
+#---------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------#
+# #
+#---------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------#
+# #
+#---------------------------------------------------------------------------#
+
+import sys
+import os
+import copy
+
+if __name__ == "__main__":
+ if len( sys.argv ) != 3:
+ print """
+Usage: %s <table> <basename>
+
+Available tables: %s
+""" % ( sys.argv[0], [ str(k)[5:] for k in copy.copy( locals() ) if k.startswith( "regen" ) ] )
+ sys.exit( -1 )
+
+ try:
+ func = locals()["regen%s" % sys.argv[1]]
+ except KeyError:
+ print "Table '%s' unknown." % sys.argv[1]
+ sys.exit( -1 )
+ else:
+ func( sys.argv[2] )
+ sys.exit( 0 ) \ No newline at end of file
diff --git a/noncore/net/wellenreiter/ChangeLog b/noncore/net/wellenreiter/ChangeLog
index 1ce25d5..55e13fc 100644
--- a/noncore/net/wellenreiter/ChangeLog
+++ b/noncore/net/wellenreiter/ChangeLog
@@ -1 +1,6 @@
+2004-??-?? Michael Lauer <mickey@Vanille.de>
+
+ * Improved the speed reading the manufacturer list
+ * GPS coordinates are now presented in the DMS (as opposed to decimal) format
+
2003-12-18 Michael Lauer <mickey@Vanille.de>
@@ -3,6 +8,6 @@
* Released as Version 1.0.2 (Development Snapshot)
- * Add automatic uploading of capture files to "The Capture Dump" site at
+ * Added automatic uploading of capture files to "The Capture Dump" site at
http://www.Vanille.de/projects/capturedump.spy
* Initial reading of the manufacturer database happens now in background
- * Remove deprecated setMonitorMode() API ==> Use setMode( "monitor" ) now.
+ * Removed deprecated setMonitorMode() API ==> Use setMode( "monitor" ) now.
The monitor mode now tries to use the standard IW_MODE_MONITOR first. If that