Как получить пользовательское поле в файле сообщений INET - PullRequest
0 голосов
/ 10 мая 2019

Я хотел бы отправить пользовательские данные, поэтому я добавил поле в файл сообщения:

class MpeiMacHeader extends MacHeaderBase
{
    MPEIMacType   type;
    uint32_t data;
}

Вот как выглядит полученное сообщение: msg fields

Мне не удалось получить поле data в моем коде.Я попробовал несколько выражений, я мог только получить: MSG полей

Но когда я пытаюсь скомпилировать с msg->content в моем коде:

no member named 'content' in 'omnetpp::cMessage'

Как получитьэто поле в моем коде?В сгенерированных файлах есть getData(), но я не нашел, как его использовать.

1 Ответ

0 голосов
/ 14 мая 2019

Я пытался получить данные в handleSelfMessage(), я нашел решение, используя handleLowerPacket():

void MpeiMac::handleLowerPacket(Packet *packet)
{
    if (packet->hasBitError())
    {
        ...
    }
    else
    {
        const auto& hdr = packet->peekAtFront<MpeiMacHeader>();
        packet->setKind(hdr->getType());

        if( hostID == 0 )
            data = hdr->getData();
        // simply pass the massage as self message, to be processed by the FSM.
        handleSelfMessage(packet);
    }
}

Может быть, этот раздел может объяснить: inet_developers-guide :

...