00001 /*************************************************************************** 00002 l1394bustopology.h - description 00003 ------------------- 00004 begin : Thu Jul 20 2000 00005 copyright : (C) 2000-2004 by Michael Repplinger 00006 email : repplinger@cs.uni-sb.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef L1394BUSTOPOLOGY_H 00019 #define L1394BUSTOPOLOGY_H 00020 00021 #include "l1394_toponode.h" 00022 #include "l1394_node.h" 00023 #include "l1394_message.h" 00024 00025 namespace L1394{ 00026 namespace internal{ 00027 /*! \class BusTopology 00028 * \ingroup Internal 00029 * \brief This class stores the topology map. 00030 * 00031 * The topology map represent the actual configuration of the FireWire bus. 00032 * All Card objects use this class to get information about the topology of the 00033 * bus after a bus reset.<BR> 00034 * This class translate the topology map in a topology-tree. To access the topology 00035 * tree use the method getRootNode(). 00036 * 00037 * @author Michael Repplinger 00038 */ 00039 00040 00041 class BusTopology { 00042 00043 public: 00044 00045 /*! \fn BusTopology(Node *parent) 00046 * \brief Constructor 00047 * \param Node* pointer to parent node. 00048 */ 00049 BusTopology(Node *parent); 00050 00051 00052 /*! \fn ~BusTopology() 00053 * \brief Destructor 00054 */ 00055 ~BusTopology(); 00056 00057 /*! \fn readTopoMap() 00058 * \brief This method reads the topology map and returns a pointer to it. 00059 * 00060 * If you call this method the old topology map is deleted and a new one is created. 00061 * \return QArray* : pointer to the topomap 00062 */ 00063 QArray* readTopoMap(); 00064 00065 /*! \fn getRootNode() 00066 * \brief Creates the topology tree and returns the root node; 00067 */ 00068 internal::TopoNode* getRootNode(); 00069 00070 void print(); 00071 00072 00073 private: 00074 BusTopology(const BusTopology&); 00075 internal::TopoNode* makeTree(internal::TopoNode *); 00076 QArray *rom_info; int rom_length; int node; 00077 internal::TopoNode *root_node; 00078 int start; 00079 Node *parent; 00080 Message* message; 00081 }; 00082 } 00083 } 00084 #endif