35 const Ieee80211Frame *macFrame = check_and_cast<
const Ieee80211Frame*>(phyFrame->getEncapsulatedPacket());
36 uint16_t macFrameLength = macFrame->getByteLength();
38 unsigned char *buffer =
new unsigned char[macFrameLength + 1000];
39 memset(buffer, 0, macFrameLength + 1000);
41 Buffer b(buffer, macFrameLength);
44 int serializedLength =
b.getPos();
46 uint32_t crc =
ethernetCRC(buffer, serializedLength);
47 BitVector *bits =
new BitVector();
48 bits->appendByte(serializedLength >> 8);
49 bits->appendByte(serializedLength >> 0);
50 bits->appendByte(crc >> 24);
51 bits->appendByte(crc >> 16);
52 bits->appendByte(crc >> 8);
53 bits->appendByte(crc >> 0);
54 for (
int i = 0; i < serializedLength; i++)
55 bits->appendByte(buffer[i]);
uint32_t ethernetCRC(const unsigned char *buf, unsigned int bufsize)
Definition: EthernetCRC.cc:67
const value< double, compose< units::m, pow< units::s,-1 > > > c(299792458)
Converts between Ieee802.11Frame and binary (network byte order) Ieee802.11 header.
Definition: Ieee80211Serializer.h:34
void serializePacket(const cPacket *pkt, Buffer &b, Context &context)
Definition: SerializerBase.cc:34
Buffer for serializer/deserializer.
Definition: Buffer.h:37
class for data transfer from any serializers to subserializers e.g.
Definition: SerializerBase.h:57
value< double, units::m > b
Definition: Units.h:1054