Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: UAVCAN UAVCAN_Subscriber
restart_request_server.cpp
00001 /* 00002 * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com> 00003 */ 00004 00005 #include <gtest/gtest.h> 00006 #include <uavcan/protocol/restart_request_server.hpp> 00007 #include "helpers.hpp" 00008 00009 00010 struct RestartHandler : public uavcan::IRestartRequestHandler 00011 { 00012 bool accept; 00013 00014 bool handleRestartRequest(uavcan::NodeID request_source) 00015 { 00016 std::cout << "Restart request from " << int(request_source.get()) << " will be " 00017 << (accept ? "accepted" : "rejected") << std::endl; 00018 return accept; 00019 } 00020 }; 00021 00022 00023 TEST(RestartRequestServer, Basic) 00024 { 00025 InterlinkedTestNodesWithSysClock nodes; 00026 00027 uavcan::RestartRequestServer rrs(nodes.a); 00028 00029 ServiceClientWithCollector<uavcan::protocol::RestartNode> rrs_cln(nodes.b); 00030 00031 uavcan::GlobalDataTypeRegistry::instance().reset(); 00032 uavcan::DefaultDataTypeRegistrator<uavcan::protocol::RestartNode> _reg1; 00033 00034 ASSERT_LE(0, rrs.start()); 00035 00036 uavcan::protocol::RestartNode::Request request; 00037 request.magic_number = uavcan::protocol::RestartNode::Request::MAGIC_NUMBER; 00038 00039 /* 00040 * Rejected - handler was not set 00041 */ 00042 ASSERT_LE(0, rrs_cln.call(1, request)); 00043 nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(10)); 00044 00045 ASSERT_TRUE(rrs_cln.collector.result.get()); 00046 ASSERT_TRUE(rrs_cln.collector.result->isSuccessful()); 00047 ASSERT_FALSE(rrs_cln.collector.result->getResponse().ok); 00048 00049 /* 00050 * Accepted 00051 */ 00052 RestartHandler handler; 00053 handler.accept = true; 00054 rrs.setHandler(&handler); 00055 00056 ASSERT_LE(0, rrs_cln.call(1, request)); 00057 nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(10)); 00058 00059 ASSERT_TRUE(rrs_cln.collector.result->isSuccessful()); 00060 ASSERT_TRUE(rrs_cln.collector.result->getResponse().ok); 00061 00062 /* 00063 * Rejected by handler 00064 */ 00065 handler.accept = false; 00066 00067 ASSERT_LE(0, rrs_cln.call(1, request)); 00068 nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(10)); 00069 00070 ASSERT_TRUE(rrs_cln.collector.result->isSuccessful()); 00071 ASSERT_FALSE(rrs_cln.collector.result->getResponse().ok); 00072 00073 /* 00074 * Rejected because of invalid magic number 00075 */ 00076 handler.accept = true; 00077 00078 ASSERT_LE(0, rrs_cln.call(1, uavcan::protocol::RestartNode::Request())); 00079 nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(10)); 00080 00081 ASSERT_TRUE(rrs_cln.collector.result->isSuccessful()); 00082 ASSERT_FALSE(rrs_cln.collector.result->getResponse().ok); 00083 }
Generated on Tue Jul 12 2022 17:17:33 by
