-rw-r--r-- | libopie2/opienet/omanufacturerdb.cpp | 13 | ||||
-rwxr-xr-x | libopie2/tools/regen.py | 198 | ||||
-rw-r--r-- | noncore/net/wellenreiter/ChangeLog | 9 |
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 |