⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packet.cpp

📁 RFID reader 语 tag 模拟器
💻 CPP
字号:
 #include "packet.hpp" const t_uint Packet::m_DEFAULT_SIZE_IN_BYTES = 512; const double Packet::m_DEFAULT_DATA_RATE = 1e6; const t_uint Packet::m_DEFAULT_DESTINATION = 0; t_ulong Packet::m_nextUniqueId = 1; Packet::Packet()    : m_dataRate(m_DEFAULT_DATA_RATE),    m_txPower(0.0), m_doMaxTxPower(false), m_hasError(false),    m_destination(m_DEFAULT_DESTINATION), m_uniqueId(0) { } Packet::~Packet() { } Packet::Packet(const Packet& rhs)    : m_dataRate(rhs.m_dataRate), m_txPower(rhs.m_txPower),    m_hasError(rhs.m_hasError),    m_destination(rhs.m_destination), m_uniqueId(rhs.m_uniqueId) {    // Create a deep copy of the packet's data    if(rhs.m_data.begin() != rhs.m_data.end()) {       DataTypeMap::const_iterator p;       for(p = rhs.m_data.begin(); p != rhs.m_data.end(); ++p) {          m_data[p->first] = PacketData::create(*(p->second));       }    } } PacketPtr Packet::clone() const {    PacketPtr p(new Packet(*this));    return p; } void Packet::addData(Packet::DataTypes dataType, const PacketData& data) {    PacketDataPtr deepCopy = PacketData::create(data);    m_data[dataType] = deepCopy; } PacketDataPtr Packet::getData(Packet::DataTypes dataType) {    DataTypeMap::iterator dataIterator = m_data.find(dataType);    bool dataFound = (dataIterator != m_data.end());    PacketDataPtr dataPtr;    if(dataFound) {       dataPtr = dataIterator->second;    }    return dataPtr; } bool Packet::removeData(Packet::DataTypes dataType) {    int numRemoved = m_data.erase(dataType);    bool wasSuccessful = (numRemoved > 0);    return wasSuccessful; } bool Packet::hasUpperLayerData(Packet::DataTypes dataType) {    bool hasUpperData = false;    if(dataType == Packet::DataTypes_Transport ||          dataType == Packet::DataTypes_Network ||          dataType == Packet::DataTypes_Link ||          dataType == Packet::DataTypes_Physical) {       bool hasApplicationData =          (getData(Packet::DataTypes_Application).get() != 0);       hasUpperData |= hasApplicationData;    }    if(!hasUpperData && (dataType == Packet::DataTypes_Network ||          dataType == Packet::DataTypes_Link ||          dataType == Packet::DataTypes_Physical)) {       bool hasTransportData =          (getData(Packet::DataTypes_Transport).get() != 0);       hasUpperData |= hasTransportData;    }    if(!hasUpperData && (dataType == Packet::DataTypes_Link ||          dataType == Packet::DataTypes_Physical)) {       bool hasNetworkData =          (getData(Packet::DataTypes_Network).get() != 0);       hasUpperData |= hasNetworkData;    }    if(!hasUpperData && (dataType == Packet::DataTypes_Physical)) {       bool hasLinkData =          (getData(Packet::DataTypes_Link).get() != 0);       hasUpperData |= hasLinkData;    }    return hasUpperData; } SimTime Packet::getDuration() const {    double seconds = getSizeInBits() / getDataRate();    SimTime packetDuration(seconds);    return packetDuration; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -