BMacHeader.msg

Msg File src/inet/linklayer/bmac/BMacHeader.msg

Name Type Description
BMacType enum

@brief Types of messages (self messages and packets) the node can process TODO split to 2 enums: for packets / for self messages

BMacHeaderBase class

Base class for BMac headers.

BMacControlFrame class

Control Frame for BMac. Frame size is configurable in the MAC layer.

BMacDataFrameHeader class

Dataframe header for BMac. Frame size is configurable in the MAC layer.

Source code

//
// Copyright (C) 2012 OpenSim Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//

import inet.common.INETDefs;
import inet.common.packet.chunk.Chunk;
import inet.linklayer.common.MacAddress;

namespace inet;

// @brief Types of messages (self messages and packets) the node can process
//TODO split to 2 enums: for packets / for self messages
enum BMacType {
    // packet types
    BMAC_PREAMBLE = 191;
    BMAC_DATA = 192;
    BMAC_ACK = 193;
    // self message types
    BMAC_RESEND_DATA = 194;
    BMAC_ACK_TIMEOUT = 195;
    BMAC_START_BMAC = 196;
    BMAC_WAKE_UP = 197;
    BMAC_SEND_ACK = 198;
    BMAC_CCA_TIMEOUT = 199;
    BMAC_ACK_TX_OVER = 200;
    BMAC_SEND_PREAMBLE = 201;
    BMAC_STOP_PREAMBLES = 202;
    BMAC_DATA_TX_OVER = 203;
    BMAC_DATA_TIMEOUT = 204;
};

//
// Base class for ~BMac headers.
//
class BMacHeaderBase extends FieldsChunk
{
    MacAddress srcAddr;
    MacAddress destAddr;
    BMacType   type;
}

//
// Control Frame for ~BMac. Frame size is configurable
// in the MAC layer.
//
class BMacControlFrame extends BMacHeaderBase
{
}

//
// Dataframe header for ~BMac. Frame size is configurable
// in the MAC layer.
//
class BMacDataFrameHeader extends BMacHeaderBase
{
    long sequenceId; // Sequence Number to detect duplicate messages
    int networkProtocol = -1;
}