INET Framework for OMNeT++/OMNEST
inet::physicallayer::Ieee802154UwbIrMode Class Reference

#include <Ieee802154UwbIrMode.h>

Public Types

enum  UwbPrf { PRF_OFF, NOMINAL_4_M, NOMINAL_16_M, NOMINAL_64_M }
 
enum  Ranging { NON_RANGING, ALL_RANGING, PHY_HEADER_ONLY }
 
enum  UwbPreambleSymbolRepetitions { PSR_SHORT = 16, PSR_DEFAULT = 64, PSR_MEDIUM = 1024, PSR_LONG = 4096 }
 
enum  DataRate {
  DATA_RATE_0, DATA_RATE_1, DATA_RATE_2, DATA_RATE_3,
  DATA_RATE_4
}
 

Public Member Functions

int s (int n) const
 
int getHoppingPos (int sym) const
 

Public Attributes

int channel
 
UwbPrf prf
 
Ranging ranging
 
UwbPreambleSymbolRepetitions NSync
 
int CLength
 
int spreadingdL
 
int Ncpb
 
bps bitrate
 
int nbPulsesPerBurst
 
double sync_symbol_duration
 
double data_symbol_duration
 
double shift_duration
 
double pulse_duration
 
double burst_duration
 
double preambleLength
 
Hz centerFrequency
 
Hz bandwidth
 

Static Public Attributes

static const double maxPulse = 1
 Total triangular pulse peak energy in mW (0 dBm / 50 MHz over 500 MHz) More...
 
static const double mandatory_pulse = 0.000000002003203125
 
static const short C31 [8][31]
 
static const short Ci = 5
 
static const short shortSFD [8] = { 0, 1, 0, -1, 1, 0, 0, -1 }
 
static const int MaxPSDULength = 128
 Maximum size of message that is accepted by the Phy layer (in bytes). More...
 
static const int maxS = 20000
 
static short s_array [maxS] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }
 
static int last_s = 15
 
static const Ieee802154UwbIrMode cfg_mandatory_4M
 
static const Ieee802154UwbIrMode cfg_mandatory_16M
 

Member Enumeration Documentation

◆ DataRate

Enumerator
DATA_RATE_0 
DATA_RATE_1 
DATA_RATE_2 
DATA_RATE_3 
DATA_RATE_4 

◆ Ranging

Enumerator
NON_RANGING 
ALL_RANGING 
PHY_HEADER_ONLY 
53  {
55  };

◆ UwbPreambleSymbolRepetitions

Enumerator
PSR_SHORT 
PSR_DEFAULT 
PSR_MEDIUM 
PSR_LONG 
57  {
58  PSR_SHORT = 16, PSR_DEFAULT = 64, PSR_MEDIUM = 1024, PSR_LONG = 4096
59  };

◆ UwbPrf

Enumerator
PRF_OFF 
NOMINAL_4_M 
NOMINAL_16_M 
NOMINAL_64_M 
49  {
51  };

Member Function Documentation

◆ getHoppingPos()

int inet::physicallayer::Ieee802154UwbIrMode::getHoppingPos ( int  sym) const
107 {
108  // int m = 3; // or 5 with 4M
109  int pos = 0;
110  int kNcpb = sym * Ncpb;
111  switch (prf) {
112  case NOMINAL_4_M:
113  pos = s(kNcpb) + 2 * s(1 + kNcpb) + 4 * s(2 + kNcpb) + 8 * s(3 + kNcpb) + 16 * s(4 + kNcpb);
114  break;
115  case NOMINAL_16_M:
116  pos = s(kNcpb) + 2 * s(1 + kNcpb) + 4 * s(2 + kNcpb);
117  break;
118  case NOMINAL_64_M:
119  pos = s(kNcpb);
120  break;
121  case PRF_OFF:
122  default:
123  ASSERT(0 == 1); // unimplemented or invalid PRF value
124  break;
125  }
126  // ASSERT(pos > -1 && pos < 8); // TODO update to reflect number of hopping pos for current config
127  return pos;
128 }

Referenced by inet::physicallayer::Ieee802154UwbIrReceiver::decode(), and inet::physicallayer::Ieee802154UwbIrTransmitter::generateIEEE802154AUWBSignal().

◆ s()

int inet::physicallayer::Ieee802154UwbIrMode::s ( int  n) const
96 {
97  ASSERT(n < maxS);
98  for (; last_s < n; last_s = last_s + 1) {
99  // compute missing values as necessary
100  s_array[last_s] = (s_array[last_s - 14] + s_array[last_s - 15]) % 2;
101  }
102  ASSERT(s_array[n] == 0 || s_array[n] == 1);
103  return s_array[n];
104 }

Referenced by getHoppingPos().

Member Data Documentation

◆ bandwidth

◆ bitrate

bps inet::physicallayer::Ieee802154UwbIrMode::bitrate

◆ burst_duration

◆ C31

const short inet::physicallayer::Ieee802154UwbIrMode::C31
static
Initial value:
= {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ -1, 0, +1, -1, 0, 0, +1, +1, +1, -1, +1, 0, 0, 0, -1, +1, 0, +1, +1, +1, 0, -1, 0, +1, 0, 0, 0, 0, -1, 0, 0 },
{ +1, +1, 0, 0, +1, 0, 0, -1, -1, -1, +1, -1, 0, +1, +1, -1, 0, 0, 0, +1, 0, +1, 0, -1, +1, 0, +1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
}

Referenced by inet::physicallayer::Ieee802154UwbIrTransmitter::generateSFD(), and inet::physicallayer::Ieee802154UwbIrTransmitter::generateSyncPreamble().

◆ centerFrequency

◆ cfg_mandatory_16M

const Ieee802154UwbIrMode inet::physicallayer::Ieee802154UwbIrMode::cfg_mandatory_16M
static
Initial value:
= {
3,
31,
16,
16,
bps(850000),
16,
993.6E-9,
1023.64E-9,
512.82E-9,
2.003E-9,
32.05E-9,
71.5E-6,
MHz(4492.8),
MHz(499.2)
}

Referenced by inet::physicallayer::Ieee802154UwbIrReceiver::initialize(), and inet::physicallayer::Ieee802154UwbIrTransmitter::initialize().

◆ cfg_mandatory_4M

const Ieee802154UwbIrMode inet::physicallayer::Ieee802154UwbIrMode::cfg_mandatory_4M
static
Initial value:
= {
3,
31,
64,
4,
bps(850000),
4,
3974.36E-9,
1023.64E-9,
512.82E-9,
2.003E-9,
8.01E-9,
286.2E-6,
MHz(4492.8),
MHz(499.2)
}

◆ channel

int inet::physicallayer::Ieee802154UwbIrMode::channel

◆ Ci

const short inet::physicallayer::Ieee802154UwbIrMode::Ci = 5
static

◆ CLength

◆ data_symbol_duration

◆ last_s

int inet::physicallayer::Ieee802154UwbIrMode::last_s = 15
static

Referenced by s().

◆ mandatory_pulse

const double inet::physicallayer::Ieee802154UwbIrMode::mandatory_pulse = 0.000000002003203125
static

◆ MaxPSDULength

const int inet::physicallayer::Ieee802154UwbIrMode::MaxPSDULength = 128
static

Maximum size of message that is accepted by the Phy layer (in bytes).

Referenced by inet::physicallayer::Ieee802154UwbIrTransmitter::getMaxFrameDuration().

◆ maxPulse

const double inet::physicallayer::Ieee802154UwbIrMode::maxPulse = 1
static

◆ maxS

const int inet::physicallayer::Ieee802154UwbIrMode::maxS = 20000
static

Referenced by s().

◆ nbPulsesPerBurst

int inet::physicallayer::Ieee802154UwbIrMode::nbPulsesPerBurst

◆ Ncpb

int inet::physicallayer::Ieee802154UwbIrMode::Ncpb

Referenced by getHoppingPos().

◆ NSync

◆ preambleLength

◆ prf

UwbPrf inet::physicallayer::Ieee802154UwbIrMode::prf

◆ pulse_duration

◆ ranging

Ranging inet::physicallayer::Ieee802154UwbIrMode::ranging

◆ s_array

short inet::physicallayer::Ieee802154UwbIrMode::s_array = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }
static

Referenced by s().

◆ shift_duration

◆ shortSFD

const short inet::physicallayer::Ieee802154UwbIrMode::shortSFD = { 0, 1, 0, -1, 1, 0, 0, -1 }
static

◆ spreadingdL

◆ sync_symbol_duration

double inet::physicallayer::Ieee802154UwbIrMode::sync_symbol_duration

The documentation for this class was generated from the following files:
inet::physicallayer::Ieee802154UwbIrMode::PSR_DEFAULT
@ PSR_DEFAULT
Definition: Ieee802154UwbIrMode.h:58
inet::physicallayer::Ieee802154UwbIrMode::PSR_LONG
@ PSR_LONG
Definition: Ieee802154UwbIrMode.h:58
inet::physicallayer::Ieee802154UwbIrMode::PSR_MEDIUM
@ PSR_MEDIUM
Definition: Ieee802154UwbIrMode.h:58
inet::physicallayer::Ieee802154UwbIrMode::ALL_RANGING
@ ALL_RANGING
Definition: Ieee802154UwbIrMode.h:54
inet::physicallayer::Ieee802154UwbIrMode::DATA_RATE_2
@ DATA_RATE_2
Definition: Ieee802154UwbIrMode.h:62
inet::units::units::bps
compose< b, pow< s, -1 > > bps
Definition: Units.h:1169
inet::physicallayer::Ieee802154UwbIrMode::PHY_HEADER_ONLY
@ PHY_HEADER_ONLY
Definition: Ieee802154UwbIrMode.h:54
inet::physicallayer::Ieee802154UwbIrMode::PSR_SHORT
@ PSR_SHORT
Definition: Ieee802154UwbIrMode.h:58
inet::physicallayer::Ieee802154UwbIrMode::s_array
static short s_array[maxS]
Definition: Ieee802154UwbIrMode.h:44
inet::physicallayer::Ieee802154UwbIrMode::NOMINAL_16_M
@ NOMINAL_16_M
Definition: Ieee802154UwbIrMode.h:50
inet::physicallayer::Ieee802154UwbIrMode::prf
UwbPrf prf
Definition: Ieee802154UwbIrMode.h:66
inet::physicallayer::Ieee802154UwbIrMode::DATA_RATE_0
@ DATA_RATE_0
Definition: Ieee802154UwbIrMode.h:62
inet::physicallayer::Ieee802154UwbIrMode::maxS
static const int maxS
Definition: Ieee802154UwbIrMode.h:43
inet::physicallayer::Ieee802154UwbIrMode::NOMINAL_4_M
@ NOMINAL_4_M
Definition: Ieee802154UwbIrMode.h:50
inet::physicallayer::Ieee802154UwbIrMode::NOMINAL_64_M
@ NOMINAL_64_M
Definition: Ieee802154UwbIrMode.h:50
inet::physicallayer::Ieee802154UwbIrMode::PRF_OFF
@ PRF_OFF
Definition: Ieee802154UwbIrMode.h:50
inet::physicallayer::Ieee802154UwbIrMode::DATA_RATE_4
@ DATA_RATE_4
Definition: Ieee802154UwbIrMode.h:62
inet::physicallayer::Ieee802154UwbIrMode::DATA_RATE_1
@ DATA_RATE_1
Definition: Ieee802154UwbIrMode.h:62
inet::physicallayer::Ieee802154UwbIrMode::s
int s(int n) const
Definition: Ieee802154UwbIrMode.cc:95
inet::physicallayer::Ieee802154UwbIrMode::DATA_RATE_3
@ DATA_RATE_3
Definition: Ieee802154UwbIrMode.h:62
inet::physicallayer::Ieee802154UwbIrMode::NON_RANGING
@ NON_RANGING
Definition: Ieee802154UwbIrMode.h:54
inet::units::units::MHz
mega< Hz >::type MHz
Definition: Units.h:1083
inet::physicallayer::Ieee802154UwbIrMode::Ncpb
int Ncpb
Definition: Ieee802154UwbIrMode.h:71
inet::physicallayer::Ieee802154UwbIrMode::last_s
static int last_s
Definition: Ieee802154UwbIrMode.h:45