View | Details | Raw Unified | Return to bug 2410
Collapse All | Expand All

(-)1f2769a4f8ec (+158 lines)
Added Link Here 
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
 * This program is free software; you can redistribute it and/or modify
4
 * it under the terms of the GNU General Public License version 2 as
5
 * published by the Free Software Foundation;
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 * GNU General Public License for more details.
11
 *
12
 * You should have received a copy of the GNU General Public License
13
 * along with this program; if not, write to the Free Software
14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15
 *
16
 * Author: Hossam Khader <hossamkhader@gmail.com>
17
 */
18
19
#include "ns3/core-module.h"
20
#include "ns3/node-container.h"
21
#include "ns3/mobility-helper.h"
22
#include "ns3/mobility-model.h"
23
#include "ns3/basic-energy-source-helper.h"
24
#include "ns3/energy-source-container.h"
25
#include "ns3/uan-helper.h"
26
#include "ns3/uan-channel.h"
27
#include "ns3/acoustic-modem-energy-model-helper.h"
28
#include "ns3/uan-raw-application-helper.h"
29
#include "ns3/uan-raw-application.h"
30
31
using namespace ns3;
32
33
/**
34
 *
35
 * This example shows the usage of UanRawApplication to transfer data.
36
 * Two nodes are sending their remaining energy percentage (1 byte)
37
 * to a gateway node, that prints the received data.
38
 * The transmissions are scheduled at random times to avoid collisions
39
 *
40
 */
41
42
NS_LOG_COMPONENT_DEFINE ("UanRawApplicationExample");
43
44
void SetupPositions ();
45
void SetupEnergy ();
46
void SetupCommunications ();
47
void PrintReceivedPacket (Address src, Buffer data);
48
void SetupApplications ();
49
void SendPacket ();
50
void Run ();
51
52
NodeContainer nodeContainer;
53
54
void
55
SetupPositions ()
56
{
57
  MobilityHelper mobilityHelper;
58
  mobilityHelper.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
59
  mobilityHelper.Install (nodeContainer);
60
  nodeContainer.Get (0)->GetObject<MobilityModel> ()->SetPosition (Vector (0, 0, 0));
61
  nodeContainer.Get (1)->GetObject<MobilityModel> ()->SetPosition (Vector (100, 0, 0));
62
  nodeContainer.Get (2)->GetObject<MobilityModel> ()->SetPosition (Vector (-100, 0, 0));
63
}
64
65
void
66
SetupEnergy ()
67
{
68
  BasicEnergySourceHelper energySourceHelper;
69
  energySourceHelper.Set ("BasicEnergySourceInitialEnergyJ", DoubleValue (900000));
70
  energySourceHelper.Install (nodeContainer);
71
}
72
73
void
74
SetupCommunications ()
75
{
76
  Ptr<UanChannel> channel = CreateObject<UanChannel> ();
77
  UanHelper uanHelper;
78
  NetDeviceContainer netDeviceContainer = uanHelper.Install (nodeContainer, channel);
79
  EnergySourceContainer energySourceContainer;
80
  NodeContainer::Iterator node = nodeContainer.Begin ();
81
  while (node != nodeContainer.End ())
82
    {
83
      energySourceContainer.Add ((*node)->GetObject<EnergySourceContainer> ()->Get (0));
84
      node++;
85
    }
86
  AcousticModemEnergyModelHelper acousticModemEnergyModelHelper;
87
  acousticModemEnergyModelHelper.Install (netDeviceContainer, energySourceContainer);
88
}
89
90
void
91
PrintReceivedPacket (Address src, Buffer data)
92
{
93
  std::cout << "Time:" << Simulator::Now ().GetHours () << "|"
94
            << "Node:" << (int)(UanAddress::ConvertFrom (src).GetAsInt ())
95
            << "|Energy:" << (int)(data.Begin ().ReadU8 ()) << "%" << std::endl;
96
}
97
98
void
99
SetupApplications ()
100
{
101
  UanRawApplicationHelper uanRawApplicationHelper;
102
  ApplicationContainer applicationContainer;
103
  applicationContainer = uanRawApplicationHelper.Install (nodeContainer);
104
  applicationContainer.Start (Seconds (0));
105
  NodeContainer::Iterator node = nodeContainer.Begin ();
106
  while (node != nodeContainer.End ())
107
    {
108
      Ptr<UanRawApplication> uanRawApplication = (*node)->GetApplication (0)->GetObject<UanRawApplication> ();
109
      uanRawApplication->SetPacketReceivedCallback (MakeCallback<void, Address, Buffer>(&PrintReceivedPacket));
110
      node++;
111
    }
112
}
113
114
void
115
SendPacket ()
116
{
117
  Ptr<UniformRandomVariable> uniformRandomVariable = CreateObject<UniformRandomVariable> ();
118
  NodeContainer::Iterator node = nodeContainer.Begin ();
119
  node++;
120
  while (node != nodeContainer.End ())
121
    {
122
      uint8_t energy = ((*node)->GetObject<EnergySourceContainer> ()->Get (0)->GetEnergyFraction ()) * 100;
123
      Ptr<UanRawApplication> uanRawApplication = (*node)->GetApplication (0)->GetObject<UanRawApplication> ();
124
      Buffer dataBuffer;
125
      dataBuffer.AddAtEnd (sizeof (uint8_t));
126
      Buffer::Iterator i = dataBuffer.Begin ();
127
      double time = uniformRandomVariable->GetValue (0, 15);
128
      i.WriteU8 (energy);
129
      Simulator::Schedule (Seconds (time), &UanRawApplication::Send, uanRawApplication, UanAddress (0), dataBuffer);
130
      node++;
131
    }
132
  Simulator::Schedule (Minutes (5), &SendPacket);
133
}
134
135
void
136
Run ()
137
{
138
  Packet::EnablePrinting ();
139
  nodeContainer.Create (3);
140
  SetupPositions ();
141
  SetupEnergy ();
142
  SetupCommunications ();
143
  SetupApplications ();
144
  SendPacket ();
145
}
146
147
int
148
main (int argc, char *argv[])
149
{
150
  CommandLine cmd;
151
  cmd.Parse (argc, argv);
152
  Run ();
153
  Simulator::Stop (Days (20));
154
  Simulator::Run ();
155
  Simulator::Destroy ();
156
157
  return 0;
158
}
(-)a/src/uan/examples/wscript (+3 lines)
 Lines 6-8    Link Here 
6
6
7
    obj = bld.create_ns3_program('uan-rc-example', ['internet', 'mobility', 'stats', 'applications', 'uan'])
7
    obj = bld.create_ns3_program('uan-rc-example', ['internet', 'mobility', 'stats', 'applications', 'uan'])
8
    obj.source = 'uan-rc-example.cc'
8
    obj.source = 'uan-rc-example.cc'
9
10
    obj = bld.create_ns3_program('uan-raw-application-example', ['internet', 'uan', 'mobility', 'energy'])
11
    obj.source = 'uan-raw-application-example.cc'
(-)1f2769a4f8ec (+80 lines)
Added Link Here 
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
 * This program is free software; you can redistribute it and/or modify
4
 * it under the terms of the GNU General Public License version 2 as
5
 * published by the Free Software Foundation;
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 * GNU General Public License for more details.
11
 *
12
 * You should have received a copy of the GNU General Public License
13
 * along with this program; if not, write to the Free Software
14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15
 * 
16
 * Author: Hossam Khader <hossamkhader@gmail.com>
17
 */
18
19
#include "uan-raw-application-helper.h"
20
#include "ns3/names.h"
21
#include "ns3/packet-socket-factory.h"
22
#include "ns3/packet-socket-helper.h"
23
#include "ns3/net-device.h"
24
#include "ns3/address.h"
25
26
27
namespace ns3 {
28
29
UanRawApplicationHelper::UanRawApplicationHelper ()
30
{
31
  m_factory.SetTypeId ("ns3::UanRawApplication");
32
}
33
34
void 
35
UanRawApplicationHelper::SetAttribute (std::string name, const AttributeValue &value)
36
{
37
  m_factory.Set (name, value);
38
}
39
40
ApplicationContainer
41
UanRawApplicationHelper::Install (Ptr<Node> node) const
42
{
43
  return ApplicationContainer (DoInstall (node));
44
}
45
46
ApplicationContainer
47
UanRawApplicationHelper::Install (std::string nodeName) const
48
{
49
  Ptr<Node> node = Names::Find<Node> (nodeName);
50
  return ApplicationContainer (DoInstall (node));
51
}
52
53
ApplicationContainer
54
UanRawApplicationHelper::Install (NodeContainer c) const
55
{
56
  ApplicationContainer apps;
57
  for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i)
58
    {
59
      apps.Add (DoInstall (*i));
60
    }
61
62
  return apps;
63
}
64
65
Ptr<Application>
66
UanRawApplicationHelper::DoInstall (Ptr<Node> node) const
67
{
68
  if(node->GetObject<PacketSocketFactory> () == NULL)
69
    {
70
      PacketSocketHelper packetSocketHelper;
71
      packetSocketHelper.Install (node);
72
    }
73
74
  Ptr<Application> app = m_factory.Create<Application> ();
75
  node->AddApplication (app);
76
77
  return app;
78
}
79
80
} // namespace ns3
(-)1f2769a4f8ec (+92 lines)
Added Link Here 
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
 * This program is free software; you can redistribute it and/or modify
4
 * it under the terms of the GNU General Public License version 2 as
5
 * published by the Free Software Foundation;
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 * GNU General Public License for more details.
11
 *
12
 * You should have received a copy of the GNU General Public License
13
 * along with this program; if not, write to the Free Software
14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15
 * 
16
 * Author: Hossam Khader <hossamkhader@gmail.com>
17
 */
18
19
#ifndef UAN_RAW_APPLICATION_HELPER_H
20
#define UAN_RAW_APPLICATION_HELPER_H
21
22
23
#include "ns3/object-factory.h"
24
#include "ns3/attribute.h"
25
#include "ns3/node-container.h"
26
#include "ns3/application-container.h"
27
28
namespace ns3 {
29
30
/**
31
 * \ingroup uan
32
 * \brief A helper to make it easier to instantiate an ns3::UanRawApplication 
33
 * on a set of nodes.
34
 */
35
class UanRawApplicationHelper
36
{
37
public:
38
  /**
39
   * Create an UanRawApplicationHelper to make it easier to work with UanRawApplication
40
   */
41
  UanRawApplicationHelper ();
42
43
  /**
44
   * Helper function used to set the underlying application attributes.
45
   */
46
  void SetAttribute (std::string name, const AttributeValue &value);
47
48
  /**
49
   * Install an ns3::UanRawApplication on each node of the input container
50
   * configured with all the attributes set with SetAttribute.
51
   *
52
   * \param c NodeContainer of the set of nodes on which an UanRawApplication 
53
   * will be installed.
54
   * \returns Container of Ptr to the applications installed.
55
   */
56
  ApplicationContainer Install (NodeContainer c) const;
57
58
  /**
59
   * Install an ns3::UanRawApplication on the node configured with all the 
60
   * attributes set with SetAttribute.
61
   *
62
   * \param node The node on which an UanRawApplication will be installed.
63
   * \returns Container of Ptr to the applications installed.
64
   */
65
  ApplicationContainer Install (Ptr<Node> node) const;
66
67
  /**
68
   * Install an ns3::UanRawApplication on the node configured with all the 
69
   * attributes set with SetAttribute.
70
   *
71
   * \param nodeName The node on which an UanRawApplication will be installed.
72
   * \returns Container of Ptr to the applications installed.
73
   */
74
  ApplicationContainer Install (std::string nodeName) const;
75
76
private:
77
  /**
78
   * Install an ns3::UanRawApplication on the node configured with all the 
79
   * attributes set with SetAttribute.
80
   *
81
   * \param node The node on which an UanRawApplication will be installed.
82
   * \returns Ptr to the application installed.
83
   */
84
  Ptr<Application> DoInstall (Ptr<Node> node) const;
85
86
  ObjectFactory m_factory; //!< Object factory.
87
};
88
89
} // namespace ns3
90
91
#endif /* UAN_RAW_APPLICATION_HELPER_H */
92
(-)1f2769a4f8ec (+184 lines)
Added Link Here 
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
 * This program is free software; you can redistribute it and/or modify
4
 * it under the terms of the GNU General Public License version 2 as
5
 * published by the Free Software Foundation;
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 * GNU General Public License for more details.
11
 *
12
 * You should have received a copy of the GNU General Public License
13
 * along with this program; if not, write to the Free Software
14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15
 * 
16
 * Author: Hossam Khader <hossamkhader@gmail.com>
17
 */
18
#include "uan-raw-application.h"
19
#include "ns3/log.h"
20
#include "ns3/socket-factory.h"
21
#include "ns3/packet-socket-address.h"
22
#include "ns3/packet-socket.h"
23
24
namespace ns3 {
25
26
NS_LOG_COMPONENT_DEFINE ("UanRawApplication");
27
28
NS_OBJECT_ENSURE_REGISTERED (UanRawApplication);
29
30
TypeId 
31
UanRawApplication::GetTypeId (void)
32
{
33
  static TypeId tid = TypeId ("ns3::UanRawApplication")
34
    .SetParent<Application> ()
35
    .SetGroupName ("Applications")
36
    .AddConstructor<UanRawApplication> ()
37
  ;
38
  return tid;
39
}
40
41
UanRawApplication::UanRawApplication ()
42
{
43
  NS_LOG_FUNCTION (this);
44
  m_socket = NULL;
45
  m_packetReceivedCallback.Nullify ();
46
}
47
UanRawApplication::~UanRawApplication ()
48
{
49
  NS_LOG_FUNCTION (this);
50
}
51
52
void
53
UanRawApplication::DoDispose (void)
54
{
55
  NS_LOG_FUNCTION (this);
56
  m_socket = NULL;
57
  m_packetReceivedCallback.Nullify ();
58
  Application::DoDispose ();
59
}
60
61
uint32_t
62
UanRawApplication::GetApplicationId (void) const
63
{
64
  NS_LOG_FUNCTION (this);
65
  Ptr<Node> node = GetNode ();
66
  for (uint32_t i = 0; i < node->GetNApplications (); ++i)
67
    {
68
      if (node->GetApplication (i) == this)
69
        {
70
          return i;
71
        }
72
    }
73
  NS_ASSERT_MSG (false, "forgot to add application to node");
74
  return 0;
75
}
76
77
78
void 
79
UanRawApplication::Send (Address dst, const Buffer dataBuffer)
80
{
81
  NS_LOG_FUNCTION (this);
82
  const uint8_t * data = dataBuffer.PeekData ();
83
84
  if(UanAddress::ConvertFrom (dst).GetAsInt () != 
85
     UanAddress::ConvertFrom (GetNode ()->GetDevice (0)->GetAddress ()).GetAsInt ())
86
    { 
87
      PacketSocketAddress socketAddress;
88
      socketAddress.SetSingleDevice (GetNode ()->GetDevice (0)->GetIfIndex ());
89
      socketAddress.SetPhysicalAddress (dst);
90
      socketAddress.SetProtocol (0);
91
      Ptr<Socket> socket = Socket::CreateSocket (GetNode (), TypeId::LookupByName ("ns3::PacketSocketFactory"));
92
      Ptr<Packet> packet = Create<Packet> (data, dataBuffer.GetSize ());
93
      NS_ASSERT (socket != NULL);
94
      socket->Bind ();
95
      socket->Connect (socketAddress);
96
      socket->Send (packet);
97
      socket->Close ();
98
    }
99
}
100
101
void
102
UanRawApplication::Receive (Ptr<Socket> socket)
103
{
104
  NS_LOG_FUNCTION (this << socket);
105
  NS_ASSERT (m_socket != NULL);
106
  while (m_socket->GetRxAvailable () > 0)
107
    {
108
      Ptr<Packet> packet = m_socket->Recv ();
109
      uint8_t *buffer = new uint8_t[packet->GetSize ()];
110
      packet->CopyData (buffer, packet->GetSize ());
111
      Address srcAddress;
112
      PacketTagIterator i = packet->GetPacketTagIterator ();
113
      while (i.HasNext ())
114
        {
115
          PacketTagIterator::Item item = i.Next ();
116
          if (item.GetTypeId () == TypeId::LookupByName ("ns3::SocketAddressTag"))
117
            {
118
              SocketAddressTag tag;
119
              item.GetTag (tag);
120
              Address address = tag.GetAddress ();
121
              uint8_t *addressBuffer = new uint8_t[address.GetLength ()];
122
              address.CopyTo (addressBuffer);
123
              srcAddress = UanAddress (addressBuffer[address.GetLength () -1]);
124
              delete [] addressBuffer;
125
            }
126
        }
127
      if(!m_packetReceivedCallback.IsNull ())
128
        {
129
          Buffer dataBuffer;
130
          dataBuffer.AddAtEnd ( packet->GetSize ());
131
          Buffer::Iterator iterator = dataBuffer.Begin ();
132
          iterator.Write (buffer, packet->GetSize ());
133
          m_packetReceivedCallback (srcAddress, dataBuffer);
134
        }
135
      delete[] buffer;
136
    }
137
138
} 
139
140
void 
141
UanRawApplication::StartApplication (void)
142
{
143
  NS_LOG_FUNCTION (this);
144
  PacketSocketAddress socketAddress;
145
  socketAddress.SetSingleDevice (GetNode ()->GetDevice (0)->GetIfIndex ());
146
  socketAddress.SetPhysicalAddress (UanAddress (UanAddress::GetBroadcast ()));
147
  socketAddress.SetProtocol (0);
148
  if (!m_socket)
149
    {
150
      m_socket = Socket::CreateSocket (GetNode (), TypeId::LookupByName ("ns3::PacketSocketFactory"));
151
    }
152
  m_socket->Bind ();
153
  m_socket->Connect (socketAddress);
154
  m_socket->SetRecvCallback (MakeCallback (&UanRawApplication::Receive, this));
155
}
156
 
157
void 
158
UanRawApplication::StopApplication (void)
159
{
160
  NS_LOG_FUNCTION (this);
161
  if(m_socket != NULL)
162
    {
163
      m_socket->Close ();
164
    }
165
  else
166
    {
167
      NS_LOG_WARN ("UanRawApplication found null socket to close in StopApplication");
168
    }
169
}
170
171
void
172
UanRawApplication::SetPacketReceivedCallback (PacketReceivedCallback callback)
173
{
174
  NS_LOG_FUNCTION (this);
175
  if (callback.IsNull ())
176
    {
177
      NS_LOG_DEBUG ("UanRawApplication:Setting NULL packet received callback!");
178
    }
179
  m_packetReceivedCallback = callback;
180
}
181
182
183
184
} // namespace ns3
(-)1f2769a4f8ec (+102 lines)
Added Link Here 
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
 * This program is free software; you can redistribute it and/or modify
4
 * it under the terms of the GNU General Public License version 2 as
5
 * published by the Free Software Foundation;
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 * GNU General Public License for more details.
11
 *
12
 * You should have received a copy of the GNU General Public License
13
 * along with this program; if not, write to the Free Software
14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15
 * 
16
 * Author: Hossam Khader <hossamkhader@gmail.com>
17
 */
18
19
#ifndef UAN_RAW_APPLICATION_H
20
#define UAN_RAW_APPLICATION_H
21
22
23
#include "ns3/application.h"
24
#include "ns3/packet.h"
25
#include "ns3/uan-address.h"
26
#include "ns3/socket.h"
27
28
namespace ns3 {
29
30
/**
31
 * \ingroup uan
32
 * \brief a simple Raw application to be used in UAN networks
33
 * 
34
 * The Application runs directly on top of the UAN data link layer, so raw data
35
 * is sent in the payload of the UAN frame.
36
 * 
37
 * The user interacts with the application mainly through two functions:
38
 * Send () : Used to send the data in the buffer parameter to the
39
 * destination UAN address.
40
 * SetPacketReceivedCallback (): Used to set a receive callback where the raw 
41
 * packet payload, and the source UAN address will be passed as
42
 * parameters.
43
 */
44
45
class UanRawApplication : public Application
46
{
47
public:
48
49
  typedef Callback<void, Address, Buffer> PacketReceivedCallback;
50
51
  /**
52
   * \brief Get the type ID.
53
   * \return the object TypeId
54
   */
55
  static TypeId GetTypeId (void);
56
57
  /**
58
   * create a uan application
59
   */
60
  UanRawApplication ();
61
  virtual ~UanRawApplication ();
62
63
  /**
64
   * \brief Send a packet to the destination
65
   * \param dst the destination UAN address
66
   * \param dataBuffer the data to be sent
67
   */
68
  void Send (Address dst, const Buffer dataBuffer);
69
70
  /**
71
   * \brief Set a callback when a packet is received
72
   * \param callback the packet received callback
73
   */
74
  void SetPacketReceivedCallback (PacketReceivedCallback callback);
75
76
private:
77
78
  // inherited from Application base class.
79
  virtual void StartApplication (void);
80
  virtual void StopApplication (void);
81
  virtual void DoDispose (void);
82
  /**
83
   * \brief Return the application ID in the node.
84
   * \returns the application id
85
   */
86
  uint32_t GetApplicationId (void) const;
87
  /**
88
   * \brief Receive a packet
89
   * \param socket the receiving socket
90
   *
91
   * This function is called by lower layers through a callback.
92
   */
93
  void Receive (Ptr<Socket> socket);
94
95
  Ptr<Socket> m_socket; //!< Associated socket
96
  PacketReceivedCallback m_packetReceivedCallback;
97
98
};
99
100
} // namespace ns3
101
102
#endif /* UAN_RAW_APPLICATION_H */
(-)a/src/uan/wscript (-1 / +5 lines)
 Lines 25-32    Link Here 
25
        'model/uan-phy.cc',
25
        'model/uan-phy.cc',
26
        'model/uan-noise-model.cc',
26
        'model/uan-noise-model.cc',
27
        'model/acoustic-modem-energy-model.cc',
27
        'model/acoustic-modem-energy-model.cc',
28
        'model/uan-raw-application.cc',
28
        'helper/uan-helper.cc',
29
        'helper/uan-helper.cc',
29
        'helper/acoustic-modem-energy-model-helper.cc',
30
        'helper/acoustic-modem-energy-model-helper.cc',
31
        'helper/uan-raw-application-helper.cc',
30
        ]
32
        ]
31
33
32
    module_test = bld.create_ns3_module_test_library('uan')
34
    module_test = bld.create_ns3_module_test_library('uan')
 Lines 58-66    Link Here 
58
        'model/uan-header-rc.h',
60
        'model/uan-header-rc.h',
59
        'model/uan-mac-rc.h',
61
        'model/uan-mac-rc.h',
60
        'model/acoustic-modem-energy-model.h',
62
        'model/acoustic-modem-energy-model.h',
63
        'model/uan-mac-rc-gw.h',
64
        'model/uan-raw-application.h',
61
        'helper/uan-helper.h',
65
        'helper/uan-helper.h',
62
        'helper/acoustic-modem-energy-model-helper.h',
66
        'helper/acoustic-modem-energy-model-helper.h',
63
        'model/uan-mac-rc-gw.h',
67
        'helper/uan-raw-application-helper.h',
64
        ]
68
        ]
65
69
66
    if (bld.env['ENABLE_EXAMPLES']):
70
    if (bld.env['ENABLE_EXAMPLES']):

Return to bug 2410