00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "micropackage.h"
00012
00013 #include <kdebug.h>
00014
00015 PicPin::PicPin()
00016 {
00017 pinID = "INVALID";
00018 type = PicPin::type_bidir;
00019 portName = "INVALID";
00020 portPosition = -1;
00021 }
00022
00023
00024 PicPin::PicPin( const QString &_pinID, PicPin::pin_type _type, const QString &_portName, int _portPosition )
00025 {
00026 pinID = _pinID;
00027 type = _type;
00028 portName = _portName;
00029 portPosition = _portPosition;
00030 }
00031
00032 MicroPackage::MicroPackage( const int pinCount )
00033 {
00034 m_numPins = pinCount;
00035 }
00036
00037 MicroPackage::~MicroPackage()
00038 {
00039 }
00040
00041 void MicroPackage::assignPin( int pinPosition, PicPin::pin_type type, const QString& pinID, const QString& portName, int portPosition )
00042 {
00043 if ( m_picPinMap.find(pinPosition) != m_picPinMap.end() )
00044 {
00045 kdError() << "PicDevice::assignBidirPin: Attempting to reset pin "<<pinPosition<<endl;
00046 return;
00047 }
00048 if ( !m_portNames.contains(portName) && !portName.isEmpty() )
00049 {
00050 m_portNames.append(portName);
00051 m_portNames.sort();
00052 }
00053
00054 m_picPinMap[pinPosition] = PicPin( pinID, type, portName, portPosition );
00055
00056 }
00057
00058 PicPinMap MicroPackage::pins( uint pinType, const QString& portName )
00059 {
00060 if ( pinType == 0 ) pinType = (1<<30)-1;
00061
00062 PicPinMap list;
00063
00064 const PicPinMap::iterator picPinListEnd = m_picPinMap.end();
00065 for ( PicPinMap::iterator it = m_picPinMap.begin(); it != picPinListEnd; ++it )
00066 {
00067 if ( (it.data().type & pinType) &&
00068 (portName.isEmpty() || it.data().portName == portName) )
00069 {
00070 list[it.key()] = it.data();
00071 }
00072 }
00073
00074 return list;
00075 }
00076
00077 QStringList MicroPackage::pinIDs( uint pinType, const QString& portName )
00078 {
00079 if ( pinType == 0 ) pinType = (1<<30)-1;
00080 QStringList list;
00081
00082 const PicPinMap::iterator picPinListEnd = m_picPinMap.end();
00083 for ( PicPinMap::iterator it = m_picPinMap.begin(); it != picPinListEnd; ++it )
00084 {
00085 if ( (it.data().type & pinType) &&
00086 (portName.isEmpty() || it.data().portName == portName) )
00087 {
00088 list.append( it.data().pinID );
00089 }
00090 }
00091
00092 return list;
00093 }
00094
00095 int MicroPackage::pinCount( uint pinType, const QString& portName )
00096 {
00097 if ( pinType == 0 ) pinType = (1<<30)-1;
00098 int count = 0;
00099
00100 const PicPinMap::iterator picPinListEnd = m_picPinMap.end();
00101 for ( PicPinMap::iterator it = m_picPinMap.begin(); it != picPinListEnd; ++it )
00102 {
00103 if ( (it.data().type & pinType) &&
00104 (portName.isEmpty() || it.data().portName == portName) ) count++;
00105 }
00106
00107 return count;
00108 }
00109