restart_request_server.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
3  */
4 
5 #ifndef UAVCAN_PROTOCOL_RESTART_REQUEST_SERVER_HPP_INCLUDED
6 #define UAVCAN_PROTOCOL_RESTART_REQUEST_SERVER_HPP_INCLUDED
7 
8 #include <uavcan/debug.hpp>
11 #include <uavcan/protocol/RestartNode.hpp>
12 
13 namespace uavcan
14 {
19 {
20 public:
22 
31  virtual bool handleRestartRequest(NodeID request_source) = 0;
32 };
33 
39 {
40  typedef MethodBinder<const RestartRequestServer*,
42  protocol::RestartNode::Response&) const> RestartNodeCallback;
43 
46 
48  protocol::RestartNode::Response& response) const
49  {
50  UAVCAN_TRACE("RestartRequestServer", "Request from snid=%i", int(request.getSrcNodeID().get()));
51  response.ok = false;
52  if (request.magic_number == protocol::RestartNode::Request::MAGIC_NUMBER)
53  {
54  if (handler_)
55  {
56  response.ok = handler_->handleRestartRequest(request.getSrcNodeID());
57  }
58  UAVCAN_TRACE("RestartRequestServer", "%s", (response.ok ? "Accepted" : "Rejected"));
59  }
60  else
61  {
62  UAVCAN_TRACE("RestartRequestServer", "Invalid magic number 0x%llx",
63  static_cast<unsigned long long>(request.magic_number));
64  }
65  }
66 
67 public:
69  : srv_(node)
70  , handler_(UAVCAN_NULLPTR)
71  { }
72 
77  IRestartRequestHandler* getHandler() const { return handler_; }
78  void setHandler(IRestartRequestHandler* handler) { handler_ = handler; }
79 
84  int start()
85  {
87  }
88 };
89 
90 }
91 
92 #endif // UAVCAN_PROTOCOL_RESTART_REQUEST_SERVER_HPP_INCLUDED
response
const std::string response
uavcan::RestartRequestServer::handleRestartNode
void handleRestartNode(const ReceivedDataStructure< protocol::RestartNode::Request > &request, protocol::RestartNode::Response &response) const
Definition: restart_request_server.hpp:47
UAVCAN_NULLPTR
#define UAVCAN_NULLPTR
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:51
uavcan::Noncopyable
Definition: templates.hpp:46
debug.hpp
uavcan::RestartRequestServer::RestartRequestServer
RestartRequestServer(INode &node)
Definition: restart_request_server.hpp:68
uavcan::IRestartRequestHandler::handleRestartRequest
virtual bool handleRestartRequest(NodeID request_source)=0
uavcan::NodeID
Definition: transfer.hpp:112
uavcan::RestartRequestServer
Definition: restart_request_server.hpp:38
uavcan::RestartRequestServer::srv_
ServiceServer< protocol::RestartNode, RestartNodeCallback > srv_
Definition: restart_request_server.hpp:44
uavcan::RestartRequestServer::start
int start()
Definition: restart_request_server.hpp:84
uavcan::ReceivedDataStructure
Definition: generic_subscriber.hpp:39
uavcan::RestartRequestServer::setHandler
void setHandler(IRestartRequestHandler *handler)
Definition: restart_request_server.hpp:78
UAVCAN_TRACE
#define UAVCAN_TRACE(...)
Definition: libuavcan/libuavcan/include/uavcan/debug.hpp:31
uavcan::ServiceServer
Definition: service_server.hpp:90
UAVCAN_EXPORT
#define UAVCAN_EXPORT
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:108
uavcan::IRestartRequestHandler::~IRestartRequestHandler
virtual ~IRestartRequestHandler()
Definition: restart_request_server.hpp:21
method_binder.hpp
uavcan::INode
Definition: abstract_node.hpp:19
uavcan::IRestartRequestHandler
Definition: restart_request_server.hpp:18
uavcan::ServiceServer::start
int start(const Callback &callback)
Definition: service_server.hpp:158
uavcan::RestartRequestServer::getHandler
IRestartRequestHandler * getHandler() const
Definition: restart_request_server.hpp:77
uavcan::MethodBinder
Definition: method_binder.hpp:20
pyuavcan_v0.introspect.node
node
Definition: introspect.py:398
uavcan
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:204
uavcan::ReceivedDataStructure::getSrcNodeID
NodeID getSrcNodeID() const
Definition: generic_subscriber.hpp:75
uavcan::RestartRequestServer::handler_
IRestartRequestHandler * handler_
Definition: restart_request_server.hpp:45
service_server.hpp


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