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 }
std::uint8_t uint8_t
Definition: std.hpp:24
int init(const UniqueID &own_unique_id, const TransferPriority priority=TransferPriority::OneHigherThanLowest)
static const NodeID Broadcast
Definition: transfer.hpp:122
protocol::dynamic_node_id::server::Entry::FieldTypes::unique_id UniqueID
static GlobalDataTypeRegistry & instance()
static MonotonicDuration fromMSec(int64_t ms)
Definition: time.hpp:41
int spinBoth(uavcan::MonotonicDuration duration)
Definition: test_node.hpp:176
TEST(dynamic_node_id_server_centralized_Server, Basic)


uavcan_communicator
Author(s):
autogenerated on Wed Jan 11 2023 03:59:39