centralized/server.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Pavel Kirienko <pavel.kirienko@gmail.com>
3  */
4 
5 #include <gtest/gtest.h>
8 #include "../../helpers.hpp"
9 #include "../event_tracer.hpp"
10 #include "../../helpers.hpp"
11 #include "../memory_storage_backend.hpp"
12 
14 
15 
16 TEST(dynamic_node_id_server_centralized_Server, Basic)
17 {
18  using namespace uavcan::dynamic_node_id_server;
19  using namespace uavcan::protocol::dynamic_node_id;
20  using namespace uavcan::protocol::dynamic_node_id::server;
21 
26 
27  EventTracer tracer;
28  MemoryStorageBackend storage;
29 
30  // Node A is Allocator, Node B is Allocatee
32 
33  UniqueID own_unique_id;
34  own_unique_id[0] = 0xAA;
35  own_unique_id[3] = 0xCC;
36  own_unique_id[7] = 0xEE;
37  own_unique_id[9] = 0xBB;
38 
39  /*
40  * Server
41  */
42  uavcan::dynamic_node_id_server::CentralizedServer server(nodes.a, storage, tracer);
43 
44  ASSERT_LE(0, server.init(own_unique_id));
45 
46  ASSERT_EQ(1, server.getNumAllocations()); // Server's own node ID
47 
48  /*
49  * Client
50  */
51  uavcan::DynamicNodeIDClient client(nodes.b);
52  uavcan::protocol::HardwareVersion::FieldTypes::unique_id unique_id;
53  for (uavcan::uint8_t i = 0; i < unique_id.size(); i++)
54  {
55  unique_id[i] = i;
56  }
57  const uavcan::NodeID PreferredNodeID = 42;
58  ASSERT_LE(0, client.start(unique_id, PreferredNodeID));
59 
60  /*
61  * Fire
62  */
64 
65  ASSERT_TRUE(client.isAllocationComplete());
66  ASSERT_EQ(PreferredNodeID, client.getAllocatedNodeID());
67 
68  ASSERT_EQ(2, server.getNumAllocations()); // Server's own node ID + client
69 }
70 
71 
72 TEST(dynamic_node_id_server_centralized, ObjectSizes)
73 {
74  using namespace uavcan::dynamic_node_id_server;
75  std::cout << "centralized::Storage: " << sizeof(centralized::Storage) << std::endl;
76  std::cout << "centralized::Server: " << sizeof(centralized::Server) << std::endl;
77  std::cout << "NodeDiscoverer: " << sizeof(NodeDiscoverer) << std::endl;
78 }
centralized.hpp
uavcan::DefaultDataTypeRegistrator
Definition: global_data_type_registry.hpp:186
uavcan::DynamicNodeIDClient::start
int start(const UniqueID &unique_id, const NodeID preferred_node_id=NodeID::Broadcast, const TransferPriority transfer_priority=TransferPriority::OneHigherThanLowest)
Definition: uc_dynamic_node_id_client.cpp:147
uavcan::NodeID
Definition: transfer.hpp:112
uavcan::DurationBase< MonotonicDuration >::fromMSec
static MonotonicDuration fromMSec(int64_t ms)
Definition: time.hpp:41
TEST
TEST(dynamic_node_id_server_centralized_Server, Basic)
Definition: centralized/server.cpp:16
uavcan::DynamicNodeIDClient::isAllocationComplete
bool isAllocationComplete() const
Definition: dynamic_node_id_client.hpp:94
uavcan::dynamic_node_id_server::centralized::Storage
Definition: storage.hpp:24
uavcan::dynamic_node_id_server::NodeDiscoverer
Definition: node_discoverer.hpp:68
uavcan::uint8_t
std::uint8_t uint8_t
Definition: std.hpp:24
uavcan::DynamicNodeIDClient
Definition: dynamic_node_id_client.hpp:31
InterlinkedTestNodes
Definition: test_node.hpp:149
uavcan::NodeID::Broadcast
static const NodeID Broadcast
Definition: transfer.hpp:122
uavcan::DynamicNodeIDClient::getAllocatedNodeID
NodeID getAllocatedNodeID() const
Definition: dynamic_node_id_client.hpp:102
dynamic_node_id_client.hpp
InterlinkedTestNodes::a
TestNode a
Definition: test_node.hpp:155
InterlinkedTestNodes::spinBoth
int spinBoth(uavcan::MonotonicDuration duration)
Definition: test_node.hpp:176
MemoryStorageBackend
Definition: memory_storage_backend.hpp:10
uavcan::dynamic_node_id_server
Definition: abstract_server.hpp:16
uavcan::GlobalDataTypeRegistry::instance
static GlobalDataTypeRegistry & instance()
Definition: uc_global_data_type_registry.cpp:128
uavcan::dynamic_node_id_server::centralized::Server::init
int init(const UniqueID &own_unique_id, const TransferPriority priority=TransferPriority::OneHigherThanLowest)
Definition: centralized/server.hpp:127
uavcan::dynamic_node_id_server::centralized::Server
Definition: centralized/server.hpp:28
InterlinkedTestNodes::b
TestNode b
Definition: test_node.hpp:156
uavcan::dynamic_node_id_server::UniqueID
protocol::dynamic_node_id::server::Entry::FieldTypes::unique_id UniqueID
Definition: protocol/dynamic_node_id_server/types.hpp:22
uavcan::dynamic_node_id_server::centralized::Server::getNumAllocations
uint8_t getNumAllocations() const
Definition: centralized/server.hpp:173


uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:03