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;
}