//==========================================================================
// FDDI_DEF.H - Definitions for the FDDI MAC model for
// Discrete System Simulation in OMNeT++
//
// Simulated system: TUB Northern&Southern FDDI Rings
//
// Author: Gabor.Lencse@hit.bme.hu
//==========================================================================
//--------------------------------------------------------------*
// Copyright (C) 1996,97 Gabor Lencse,
// Technical University of Budapest, Dept. of Telecommunications,
// Stoczek u.2, H-1111 Budapest, Hungary.
//
// This file is distributed WITHOUT ANY WARRANTY. See the file
// `license' for details on this and other legal matters.
//--------------------------------------------------------------*/
#ifndef __FDDI_DEF_H
#define __FDDI_DEF_H
#define FDDI_MAC_HEAPSIZE 65535
// definitions for the FDDI model
// constants
#define byte_tr_time 8e-8 /* 8*(1/100 000 000)= 8e-8 */
//#define delay_bef_repeat 16*byte_tr_time /* 8+1+1+6=16 */
#define TokenLength 11 /* 8+1+1+1=11 */
#define token_time TokenLength*byte_tr_time
#define station_latency 100e-9 /* 100ns, taken from the OPNET FDDI modell */
#define idle_bytes 8 /* 16 idle symbols */
#define inorder_epsilon 1e-10 /* to assure that receive or repeat ends before the next packet arrives */
// types
typedef unsigned int MACState;
// The message types (possible values of msgkind):
#define FDDI_TOKEN 0
#define FDDI_FRAME 1
#define FDDI_MAC_MSG2SELF 100 /* this is a limit */
/* if msgkind >= FDDI_MAC_MSG2SELF then it is an FDDI_MAC event */
// The events are:
#define TOKEN_ARRIVED 100 /* The edge of a token arrived to the station */
#define TOKEN_RECEIVE_END 101 /* The receiving of the token was finished */
#define TRANSMISSION_END 102 /* The transmission of an own frame ended */
#define TOKEN_SEND_END 103 /* The transmission of the token was finished */
#define OWN_FRAME_ARRIVED 104 /* The edge of a frame from this station arrived back */
#define FRAME_STRIP_END 105 /* Finished stripping the own frame from the ring */
#define FR2ME_ARRIVED 106 /* The edge of a frame addressed to this station arrived */
#define FR2ME_RECEIVE_END 107 /* The frame addressed to this station completely received */
#define FR2REP_ARRIVED 108 /* The edge of a frame arrived, that should be repeated */
#define REPEAT_END 109 /* The repeating of a frame ended */
// #define WAIT4REPEAT_END /* Wait for REPEAT ended, delayed event can be processed */
#define TRT_EXPIRED 110 /* The TRT ContDownCounter expired */
#define REPEAT_BEGIN 111 /* The repeating of a frame may start now */
#define TOKEN_REPEAT_BEGIN 112 /* The repeating of the token starts now */
#define TOKEN_REPEAT_END 113 /* The repeating of the token ends now */
#define TOKEN_CAPTURE_END 114 /* The capturing of the token ends now */
#define TRANSMIT_OWN_BEGIN 115 /* An own frame will be transmitted from now */
// The states
// Remark:
// The system can be in more than one state at a time
// each state is a bit in the state variable
// if State&GIVEN_STATE then system is in GIVEN_STATE
// of course, the IDLE is not a real "state" of this manner
#define IDLE 0x0 /* The system is in no other states */
#define TOKEN_RECEIVE 0x1 /* A token is being received - but not captured, it will be repeated */
#define REPEAT 0x2 /* A frame is being repeated */
// #define WAIT4REPEAT 0x4 /* The processing of an event is delayed until the end of repeating */
#define TRANSMIT_OWN 0x8 /* An own frame is being transmitted */
#define TOKEN_SEND 0x10 /* A token is being sent */
#define FRAME_STRIP 0x20 /* A frame is being stripped out from the ring */
#define FR2ME_RECEIVE 0x40 /* A frame addressed to this station is being received */
// to model station_latency, before the repeating of a frame may start, the
// system is in the following state until the arrival of a REPEAT_BEGIN event
#define BEFORE_REPEAT 0x80 /* Waiting for a REPEAT_BEGIN event to start repeating a frame */
// A properly working FDDI MAC may never enter to the following state:
#define TOKEN_LOST 0x100 /* The token was lost (TRT_EXPIRED when LateCounter==1) */
#define TOKEN_CAPTURE 0x200 /* The token is being captured (stripped from the ring) for frame transmission */
#define BEFORE_TOKEN_REPEAT 0x400 /* If a token is not captured, MAC waits station_latency time befor repeating it */
#define TOKEN_REPEAT 0x800 /* The token is being repeated (retransmitted to the ring) */
#define BEFORE_TRANSMIT_OWN 0x1000/* before the first own frame is transmitted, MAC waits station_latency time */
#endif
syntax highlighted by Code2HTML, v. 0.9.1