summaryrefslogtreecommitdiff
path: root/cesar/maximus/channel/src/ChannelSettingsTest.cpp
blob: 1546c213f599cda349050fadf136c3aed559065f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "ChannelSettingsTest.h"

#include "ChannelSettings.h"
#include "CoreEngine.h"
#include "IChannel.h"

#include "Logger.h"
#include "Error.h"

#include "hal/phy/maximus/inc/maximus_defs.h" // for 'MAXIMUS_PHY_FC_RECEPTION_DELAY_TCK'

CPPUNIT_TEST_SUITE_REGISTRATION (ChannelSettingsTest);


void ChannelSettingsTest::setUp (void)
{
  logTest();

  mpChannelSettings = new ChannelSettings();
  CPPUNIT_ASSERT_MESSAGE ( "Channel Settings pointer is NULL", NULL != mpChannelSettings );
}


void ChannelSettingsTest::tearDown (void) 
{
  logTest();

  if (NULL != mpChannelSettings)
  {
    delete (mpChannelSettings);
    mpChannelSettings = NULL;
  }
}


void ChannelSettingsTest::getFirstSymbolStartDateTest (void) 
{
  logTest();

  try
  {
    mpChannelSettings->setFcReceptionDate(15*25);
    CPPUNIT_ASSERT_MESSAGE ( "getFirstSymbolStartDate failed",
                             10*25 == mpChannelSettings->getFirstSymbolStartDate() );
  }
  catch (Error & e)
  {
    e.display();
  }
}


void ChannelSettingsTest::getModulationTest (void) 
{
  logTest();

  try
  {
    Channel_Mod tonemapArray[PHY_CARRIER_NB + 1];
    for (int i=0; i<=PHY_CARRIER_NB; i++)
    {
      tonemapArray[i] = MAXIMUS_CHANNEL_MOD_NONE;
    }
    tonemapArray[50] = MAXIMUS_CHANNEL_MOD_QPSK;
    mpChannelSettings->setTonemap(tonemapArray);
    CPPUNIT_ASSERT_MESSAGE ( "getModulation failed",
                             MAXIMUS_CHANNEL_MOD_QPSK == mpChannelSettings->getModulation(50) );
  }
  catch (Error & e)
  {
    e.display();
  }
}


void ChannelSettingsTest::getSnrTest (void) 
{
  logTest();

  try
  {
    float snrArray[MAXIMUS_CHANNEL_INTERVAL_MAX_NB][PHY_CARRIER_NB + 1];
    memset(snrArray, '\0', MAXIMUS_CHANNEL_INTERVAL_MAX_NB * (PHY_CARRIER_NB + 1));
    snrArray[0][0] = 10000; // in ticks 25 MHz
    snrArray[1][0] = 20000;
    snrArray[2][0] = 30000;
    snrArray[3][0] = 40000;
    snrArray[0][1] = 10; // in dB
    snrArray[1][1] = 11;
    snrArray[2][1] = 12;
    snrArray[3][1] = 13;
    snrArray[0][1155] = 14;
    snrArray[1][1155] = 15;
    snrArray[2][1155] = 16;
    snrArray[3][1155] = 17;
    mpChannelSettings->setSnr(snrArray);
    Network_Clock_Tick beaconPeriod = 1000000; // in ticks 25 MHz

    CPPUNIT_ASSERT_MESSAGE ( "getSnr failed", 10 == mpChannelSettings->getSnr(beaconPeriod, 5150000, 0) );
    CPPUNIT_ASSERT_MESSAGE ( "getSnr failed", 11 == mpChannelSettings->getSnr(beaconPeriod, 5150000 + 260000, 0) );
    CPPUNIT_ASSERT_MESSAGE ( "getSnr failed", 12 == mpChannelSettings->getSnr(beaconPeriod, 5150000 + 520000, 0) );
    CPPUNIT_ASSERT_MESSAGE ( "getSnr failed", 13 == mpChannelSettings->getSnr(beaconPeriod, 5150000 + 780000, 0) );
    CPPUNIT_ASSERT_MESSAGE ( "getSnr failed", 14 == mpChannelSettings->getSnr(beaconPeriod, 5150000, 1154) );
    CPPUNIT_ASSERT_MESSAGE ( "getSnr failed", 15 == mpChannelSettings->getSnr(beaconPeriod, 5150000 + 260000, 1154) );
    CPPUNIT_ASSERT_MESSAGE ( "getSnr failed", 16 == mpChannelSettings->getSnr(beaconPeriod, 5150000 + 520000, 1154) );
    CPPUNIT_ASSERT_MESSAGE ( "getSnr failed", 17 == mpChannelSettings->getSnr(beaconPeriod, 5150000 + 780000, 1154) );
  }
  catch (Error & e)
  {
    e.display();
  }
}