Руслан Урядинский / libuavcan

Dependents:   UAVCAN UAVCAN_Subscriber

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers get_node_info_mock_server.hpp Source File

get_node_info_mock_server.hpp

00001 /*
00002  * Copyright (C) 2015 Pavel Kirienko <pavel.kirienko@gmail.com>
00003  */
00004 
00005 #pragma once
00006 
00007 #include <iostream>
00008 #include <uavcan/protocol/dynamic_node_id_server/types.hpp>
00009 #include <uavcan/util/method_binder.hpp>
00010 #include <uavcan/node/service_server.hpp>
00011 #include <uavcan/protocol/GetNodeInfo.hpp>
00012 
00013 class GetNodeInfoMockServer
00014 {
00015     typedef uavcan::MethodBinder<GetNodeInfoMockServer*,
00016         void (GetNodeInfoMockServer::*)(const uavcan::ReceivedDataStructure<uavcan::protocol::GetNodeInfo::Request>&,
00017                                         uavcan::protocol::GetNodeInfo::Response&) const>
00018             GetNodeInfoCallback;
00019 
00020     uavcan::ServiceServer<uavcan::protocol::GetNodeInfo, GetNodeInfoCallback> server_;
00021 
00022     void handleRequest(const uavcan::ReceivedDataStructure<uavcan::protocol::GetNodeInfo::Request>& req,
00023                        uavcan::protocol::GetNodeInfo::Response& res) const
00024     {
00025         res = response;
00026         std::cout << "GET NODE INFO:\nREQUEST\n" << req << "RESPONSE\n" << res << std::endl;
00027     }
00028 
00029 public:
00030     uavcan::protocol::GetNodeInfo::Response response;
00031 
00032     GetNodeInfoMockServer(uavcan::INode& node) : server_(node) { }
00033 
00034     int start() { return server_.start(GetNodeInfoCallback(this, &GetNodeInfoMockServer::handleRequest)); }
00035 };