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*,
41  void (RestartRequestServer::*)(const ReceivedDataStructure<protocol::RestartNode::Request>&,
42  protocol::RestartNode::Response&) const> RestartNodeCallback;
43 
46 
47  void handleRestartNode(const ReceivedDataStructure<protocol::RestartNode::Request>& request,
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
IRestartRequestHandler * getHandler() const
virtual bool handleRestartRequest(NodeID request_source)=0
ServiceServer< protocol::RestartNode, RestartNodeCallback > srv_
int start(const Callback &callback)
void setHandler(IRestartRequestHandler *handler)
IRestartRequestHandler * handler_
void handleRestartNode(const ReceivedDataStructure< protocol::RestartNode::Request > &request, protocol::RestartNode::Response &response) const


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